Posts
拡張エンジンとカノンリベンジャー
KAZU キャラ再公開の流れで久しぶりにカノンリベンジャーシリーズのあゆあゆを動かしたら、KFX の奇妙な振る舞いに遭遇することになったので、忘れないよう記しておくことにした。
このキャラは通常状態の「あゆあゆ」とスタンド状態の「はねあゆ」を切り替えて戦うのが特徴となっている。
説明書には、キャラの状態によってゲージ技の内容が切り替わると書かれているが、KFM 上では何をやっても「はねあゆ」の技しか発動せず、KFA でも同じ結果となった。
原因を特定するには先に「キャラの状態をどうやって管理しているのか」を知る必要がある。motion.lst を見たところ「はねあゆ」時は Ci が 41 (屈み通常技)、C が 0 (リバーサル) の行をループさせていたので、リバーサルキャンセルが可能かどうかでキャラの状態を判断している模様。
次は問題の本丸と思われる command.lst。
CmdNum--Command--Cancel--Std-AmnNum--Vx--Comment 119 26p 00100 001 480 0 ;ayuayu 120 26p 00100 001 470 0 ;ayuayu 121 24p 00100 001 970 0 ;ayuayu 122 24p 00100 001 470 0 ;ayuayu 123 2n2p 00100 001 480 0 ;ayuayu 124 2n2p 00100 001 470 0 ;ayuayu 125 26p 00001 001 1260 0 ;ayuayu 126 24p 00001 001 1140 0 ;ayuayu 127 2n2p 00001 001 1063 0 ;ayuayu
Cancel にリバーサルが設定されている最後の 3 行が「はねあゆ」用のゲージ技となっている。これを見て一番最初に思ったのは「正しく動いている」だった。「はねあゆ」用のコマンドはゲージ以外の制約がなく、優先度も高いので、常にこれらの行が発動するのは当然の結果である。
逆に何故 KFX だと意図した動作になるのか。KFX は「優先度の低い行からゲージを消費しながら走査していく」というアルゴリズムのため、先に「あゆあゆ」用のコマンドが処理される、というのが答えだった。こんな書き方をすると「え、KFX って CmdNum が小さい行が優先されるの?」と誤解してしまうが、ポイントは優先順位の低い行から走査はするものの、発動可能な行を見つける度に候補を上書きするため、結果的に CmnNum の大きい行が優先される。
優先順位の扱いが同じとなると「拡張エンジンと同じ結果になるのでは?」という疑問が出てきて、話が振り出しに戻ってしまう。KFX だけ結果が異なるのは「ゲージを消費しながら走査してく」という処理の特殊性に因るもので、「あゆあゆ」用のコマンドを処理した時点でゲージは消費し尽くされるため、「はねあゆ」用のコマンドはゲージ不足で発動できなくなる。
KFX の最大ゲージ量は 2 なので、どう頑張っても「はねあゆ」用コマンドには到達しないが、理論上はゲージさえあれば KFX でも「はねあゆ」用の技を発動できるということになる。これは実験するしかない。
結論。カノンリベンジャーやばい。