詳しく取り上げてくれてる他の記事はたくさんあるので
自分で書くというよりは、既存の定義ファイルを読み解いたり、いじったりするためのメモ
スペスペ作者の絶アレキサンダーの定義ファイルを参考に進めていきます
https://github.com/anoyetta/spespetime/blob/master/ult_VS_Alexander.xml
公式に丁寧なリファレンスもありました。
https://github.com/anoyetta/ACT.Hojoring/wiki/spespetime_reference
公式リファレンス内の文章は当然、XMLの書き方がわかる人向けなので
ここではできるだけくだけた感じで書けたらと思ってます。
sタグ (sub routine)
複数のactivityやtriggerをまとめるタグ。
リキッド、2体フェーズ、最終フェーズ、みたいな区切りを定義しています。
- name: サブルーチン名。(ex: リキッド)
- enabled: 有効かどうか。デフォルト
true
。false
の場合はコメント扱いになる
子要素にはa
,t
, import
が利用可能
aタグ (activity)
敵の攻撃とか、ギミック開始とかそういうのを定義する。
<a time="011" text="フルイドスイング" sync="リビングリキッドの「フルイドスイング」" notice="次、フルイド。" />
- time: このアクティビティが発生する時間。秒数でもいいし、分と秒でもいい(1分10秒後のイベントなら
70
or01:00
) - text: パネルにこのテキストが表示されます。
- sync: ACTが収集しているログとマッチングさせて、強制的に同期させるためのテキスト。
- notice: 通知。テキストならTTL(ゆっくりとか)wavファイル(音声ファイル)の指定も可能
- goto: 別のactivityやsub routineへジャンプさせる。フェイズ移行とかに使う
tタグ (trigger)
タイムライン中に、特定のログにマッチさせるのに利用します。
通知にランダムギミックに役立ちます。
<t text="エンボラス" sync="Added new combatant エンボラス" notice="エンボラス">
<v-notice
duration="5"
duration-visible="false"
icon="Bomb.png"
order="-1" />
</t>
v-noticeタグ
通常のタイムラインのパネルとは別にオーバーレイで通知する。
- icon: 通知するアイコンのファイル名
- text: 通知するテキスト
- duration: 表示する秒数
- duration-visible: 残り時間を表示するか
- order: オーバーレイの表示順。デフォルト0
- sync-to-hide: ログにマッチした場合に強制的に非表示にする
同じような用途でi-notice
というタグもあるみたいです。カンペを表示したりするのにいいかも。
expressions, set, preタグ
ちょっとむずかしい。基本的にはs
,a
,t
の3種類あれば
定義できるが、このタグは(多分)ちょっと慣れてる人向け。
expression
はt
またはa
内で利用できる。
set
,pre
はexpression
内で利用できる。
どういう用途に使えるか、というと
AとBという2種類のギミックがあった時に、
- 先にAがきたら、あとでBがくる
- 先にBがきたら、あとでAがくる
そういうのを判定できます。
<t text="ギミックA" sync="ギミックA">
<expression>
<set name="first_is_A" value="true">
</expression>
</t>
<t text="ギミックB" sync="ギミックB">
<expression>
<set name="first_is_B" value="true">
</expression>
</t>
<t text="ギミックA" sync="ギミックA">
<expression>
<pre name="first_is_B" value="true">
</expression>
</t>
<t text="ギミックB" sync="ギミックB">
<expression>
<pre name="first_is_A" value="true">
</expression>
</t>
絶アレキではtable
タグを利用して、サイコロの判定とかやってるっぽいけど
こればかりは全部説明するより、リファレンス読んだほうが早そうです。
https://github.com/anoyetta/ACT.Hojoring/wiki/spespetime_reference#table
更に上級者向け
あとスペスペタイムラインの定義ファイルであるXMLにはASP.NETのRazorという構文が
利用できるようです。
これも全て説明することは難しいので、公式リファレンスや既存の定義ファイルを参考にして
利用してみてください。
XMLとちょっとしたプログラミングができれば利用できると思います。
Razor構文のリファレンス
https://docs.microsoft.com/ja-jp/aspnet/core/mvc/views/razor?view=aspnetcore-6.0
定義ファイル内で利用できるモデル
https://github.com/anoyetta/ACT.Hojoring/wiki/spespetime_reference#razor%E3%81%AE%E6%A7%8B%E6%96%87
とくに
@if (Model.Player.InRole("DPS"))
この構文はロールに応じてtriggerを切り替えたりするのに便利そうです。
よくあるギミックです。
辺獄4層の線取,毒のギミックとか使えるかなー?
(おまけ)定義ファイルのもとになるログを見る
素のログの保存場所
ここに保存されているログを頑張って読むのもいいんですが、すごい量だし、いい感じにパースされていないしで
かなりしんどいです。
スペスペがいい感じにログを区切ってパースしてくれる機能があるので利用しましょう。
「自動タイムライン分析」と「分析結果の自動保存」をしておくと、ACT上でパースされたログを
見ることもできるし、あとからゆっくり確認することもできます。
(テキストファイルとエクセルのファイルを戦闘ごとに記録してくれます。)
ここでバトルログやら、バトルログには表示されないマーカーやデバフのIDが確認できると思います。