AIの常時起動方法




AIスイッチの仕様

後述する新MUGEN1.0&1.1では問題ないが、旧来版(DOS版&WIN版)MUGENにはプレイヤー操作とCPUを区別するトリガーが存在しない。
ここでは旧来版(DOS版&WIN版)に関しての項目として、コマンド入力を監視し、その結果からキャラ独自のAIを起動するといった手法がAIスイッチの主流となっているが、
コマンド入力を監視する関係上、AIが起動するまでに避けることが出来ないタイムラグが発生する。

よって、トナメ動画用に対戦を撮影する際などに、AIが起動していない状態が長いとキャラの良さを発揮出来なかったり、
特にチーム戦では先に勝ち残りAIが起動しているキャラが、後続のAIが入ってない相手を無双してしまう場合がある。
このような事態を避けたい場合は常時AIONにしてから撮影すると良いだろう。

なお、プレイヤー操作とCPUを区別するトリガーを無視するので、当然プレイヤー操作が行えなくなるため注意すること

常時AION化

オプションを弄る

常時AION化をオプションとして設定しているキャラもいる。このようなキャラは指示に従えば、AIを常時起動させることができる。

例えばCMDファイルにtriggerにAIコマンドの書かれている欄の最後の部分に
trigger○○ = 1
という風に追加すればOK

トリガーを弄る(通常AIスイッチ)

注意:[StateDef -3]、[StateDef -2]、[StateDef -1]にkeyctrl=1が指定されたType=Helperのステコンがあるキャラは
ヘルパー式AIスイッチを併用している場合があります。下記のヘルパー式AIの項目も読んで下さい。

1. 常時AION化したいキャラのcmdファイルを開く

2. "AI**"や"CPU**"といった名前のコマンドが羅列されているので
 そのコマンド名でCNSファイル内の[StateDef -1]、[StateDef -2]、[StateDef -3]を検索する。
("AI**"や"CPU**"といったコマンド名が無い場合は下記の トリガーを弄る(ヘルパー式AIスイッチ) へ)

3. トリガーにcommand="AI**"が指定されているType=VarSetのステコンがあるので
 最も大きいtrigger(n)に+1した
  trigger(n+1)=1
 または
  trigger(n+1)=roundstate=2
  trigger(n+1)=ctrl
 を作成する
基本的には前者でいいが、分身が発生する場合は後者を試してみよう。
また後者の方法でも分身が発生するようなら、
  triggerall = !ishelper
を加えることで解決することもある。

例:
[STATE AIスイッチ]
type=VarSet
trigger1=command="AI1"||command="AI2"||command="AI3"||command="AI4"||command="AI5"
trigger2=command="AI6"||command="AI7"||command="AI8"||command="AI9"||command="AI10"
trigger3=command="AI11"||command="AI12"||command="AI13"||command="AI14"||command="AI15"
trigger4=1
var(59)=1;←var(XX)はどれでも構いませんが(var(1)とかvar(35)とかでもOK)、殆どの場合『 var(59) 』(整数varでは末端)が非常に多く使われているので本項目もそれに準拠し、var(59)をAIスイッチとして扱うものとします。

トリガーを弄る(ヘルパー式AIスイッチ)


"AI**"や"CPU**"のコマンドが存在しないキャラのAIスイッチは、ヘルパー式のAIスイッチを利用しています。

1. 常時AION化したいキャラのcmd、またはcnsファイルのAI記述を開く。
 (たいていの場合は[StateDef -1]または[StateDef -3]に記述されている)

2. 全てのAI記述に共通したvar(**)を探す。
例:
[STATE AI]
type=ChangeState
value=200
triggerall= var(59)
trigger1=random<100
trigger1=ctrl&&StateType=S
trigger1=p2bodydist x<90

3. 「var(**)」か、「v = **」でCNSファイルを検索すると、トリガーに
   command="a"!=root,command="a"
  のように、基本的なコマンドを比較しているType=VarSetか、Type=ParentVarSetのステコンがあるので
  最も大きいtrigger(n)に+1した
   trigger(n+1)=1
  を作成する
例:
[STATE AI]
type=ParentVarSet
trigger1=parent,command="a"!=command="a"
trigger2=parent,command="b"!=command="b"
trigger3=parent,command="c"!=command="c"
trigger4=parent,command="x"!=command="x"
trigger5=parent,command="y"!=command="y"
trigger6=parent,command="z"!=command="z"
trigger7=parent,command="start"!=command="start"
trigger8=1
var(59)=1

新MUGEN1.0&1.1での"AILevel"を用いた起動方法


なお新MUGEN1.0以降では新ステコン"AILevel"が追加されており、本来はMUGEN本体オプションでのレベル設定を1~8までの段階で参照するためのものである。
なおWinMUGENの本体オプションにもAIレベルを設定できる項目が既に存在していたが、
残念ながらそれを試合中にキャラ側で参照する為のトリガー"AILevel"が無かったために 事実上全く意味の成さない飾り 』でしか過ぎず、
その為本項目の上記の記述方法が必要であった。

なお1人プレイ等で片方をプレイヤー操作、もう片方をAI操作で対戦する場合においては何ら問題はないのだが、
しかしAI同士の対戦においては不便なことに片方を高く、もう片方を低くする、或いはお互いタッグ戦で1Pを高く、1Pパートナー(3P)を低く、2Pを低く、2Pパートナー(4P)を高くするといった、
所謂「 『個別』設定ができない 」という 致命的な欠点 がある。

むしろこのトリガーの『真価』は AI起動・停止スイッチに用いる ことにあり、本項目冒頭の「 プレイヤー操作とCPUを区別する 」という使い方が可能でそれにより即座にON/OFFとなるのでタイムラグは全く発生しなくなる上、従来の記述が大幅に省けるといった大変便利なコントローラーである。よって新MUGEN専用キャラとして作成する場合、上記の様な記述は一切不要となる。下記にその例を記述。

例:
[STATE AI起動スイッチ]
type=VarSet
triggerAll=!var(59) ;AI停止中の状態
trigger1=AILevel ;AI操作フラグ
trigger1=RoundState=2 ;試合中
trigger1=Alive ;生存中
trigger1=Ctrl ;行動可能状態
var(59)=1;AI起動開始
上記の4つの条件が全て満たされればAIが起動する。
trigger1=Ctrlは記述しなくても特に問題は無いが、入れておけば万が一のフライング防止に役立つ。

[STATE AI停止スイッチ]
type=VarSet
triggerAll=var(59) ;AI起動中の状態
trigger1=!AILevel ;プレイヤー操作フラグ
trigger2=RoundState!=2 ;試合中以外(開始前・終了以降)の状態
trigger3=!Alive ;死亡
var(59)=0;AI停止
上記の3つの内どれか1つでも条件が満たされればAIが停止する。ゾンビ化バグもこれで防げる。

たったこれだけの記述で準備完了。新MUGEN専用キャラの特権。