2014–05–18 (Sun) 23:26
ARMAには
FSM形式でのスクリプト処理が導入されていることをご存知でしょうか?
FSM(有限状態機械、有限オートマトンとも)とは、予め決められた初期状態から条件によって分岐しつつ、有限個の状態へと遷移するシステムのモデルのことで、論理学や計算機科学、言語学などの分野で利用されているそうです。
語弊を承知で表現すれば、スゴロクみたいなものだと思います。
さて、ARMA1以降のARMAシリーズでは、このFSMをスクリプト処理方法としてサポートしており、条件に応じて分岐や繰り返しが視覚的に管理しやすいスクリプト作成が可能となっています。
FSMの編集には、BISから提供されている
FSM Editorかユーザー製の
FSM Editを利用することになります。
BIはModuleの動作にFSMを頻繁に利用しており、pboファイルを解凍することでその内容を把握することが出来ます。

FSMで記述された
High CommandのChain of Commandです。
FSM Editorは2014年5月現在で制約を抱えています。
sqfファイルなどをテキストエディタで編集する場合とは異なり、スクリプトコマンドの補完やハイライトが使えないほか、
各状態ごとに条件や実行内容を記述していくため、スクリプト全体の検索や置換などが出来ません。
sqfとfsmで実行できる内容には違いがありませんので、両者を目的に応じて使い分けることも必要ですし、
下図のようにfsmファイルをテキストエディタでも編集し、内容を精査する場合もあるかもしれません。

なお、
FSM Editではハイライトが可能なようです。
ARMAのFSMには8種類のアイテムが用意されています。
それらは条件分岐を行うCondition、スクリプトを実行するState、可読性向上のために線を折り曲げるknee(関節)の3つに大別できます。

State同士やCondition同士を直接繋ぐことは出来ず、必ずstateとconditionが交互に続くことになります。
Stateにはfsmの開始状態であるStart State、fsmを終了するEnd State、それ以外のUser Stateの3つがあります。
Conditionには、状態が遷移した直後に条件が判断されるCondition(黄)、他のConditionが満たされない限り、それが満たされるまで待ち続けるUser Condition(白)、
他のConditionが満たされなければ常に採用されるTrue Condition(ネズミ色)、機能不明なInput Condition(水色)があります。
各Conditionには優先度(priority)が設定されており、複数のConditionが同時に満たされている場合は、値の高いものが優先されます。
F1キーでアイテムの新規作成、F2で移動、F3キーでアイテム同士の接続ができます。
このあたりはARMAのミッションエディタと似た感触ではないでしょうか。
File→Page Setup→Enable Gridをチェックすることでアイテムをきれいに整列させることができます。
また、FsmAttributes→Compile ConfigからFSM Editorフォルダ内のscriptedFSM.cfgを指定することで、"No Compile Config Specified!"と表示されるエラーを回避できます。
fsm形式で保存したスクリプトをミッション内で実行するためには
execFSMコマンドを使用します。
正直なところ、私もまだ使い始めたばかりですのでFSM Editorのすべてを理解しているわけではありませんが、指揮官を含む人間の意思決定やミッションの状況判定の再現をはじめ、非常に多彩な表現を可能にするスクリプト作成方法だと思います。