Articles
KFX の分岐機能を利用したエンジン判別
KFA で追加されたランダム分岐機能を使って実行中のエンジンを判別する。
ランダム分岐の内部構造
ランダム分岐は内部的にどう処理されているのか。パラメーター値 1 ~ 9 が分岐確率 10 ~ 90% に対応している点、デフォルト値である 0 を指定したときに分岐が発生しない点を踏まえると、以下のように変換されていると考えるのが自然だろう。
分岐確率 = パラメーター値 * 10
KFM では、モーション行が遷移する度に乱数 (0 ~ 99) が生成され、その値が上記式で算出した分岐確率未満になっていたら分岐する、という実装になっている。おそらく他のエンジンでも似たような処理が行われていると思われる。
パラメーター値の範囲
ランダム分岐を設定する Flag は言葉通り 2 進数のフラグを表す値だったが、機能拡張の過程で 16 進数相当に拡張されている。つまり、マニュアルに書かれている有効値が 1 ~ 9 だったとしても 16 進数の範囲内であれば読み取られる可能性が高い。
もし Flag に A という値を設定できた場合、分岐確率は 100% になり、ランダム分岐ではなく確定の分岐となる。ランダム分岐をサポートしているのは拡張エンジンのみなので、KFX と拡張エンジンを判別できる可能性がある。
各エンジンの挙動
ランダム分岐に A を設定したモーションの挙動は以下の通り。
| エンジン | 分岐 |
|---|---|
| KFX | しない |
| KFM | する |
| KFA | する |
| XPlus | しない |
XPlus は良くも悪くも真面目に処理をしているのか、想定した動作とは異なる結果となった。KFX を判別する用途としては使えなかったが、拡張エンジンに限定すれば XPlus 分岐として使うことができる。