AIの常時起動方法

「AIの常時起動方法」の編集履歴(バックアップ)一覧に戻る

AIの常時起動方法 - (2015/03/09 (月) 12:42:03) の編集履歴(バックアップ)





AIスイッチの仕様

後述する新MUGEN1.0&1.1では問題ないが、旧来版(DOS版&WIN版)MUGENにはプレイヤー操作とCPUを区別するトリガーが存在しない。
そのため現在では、コマンド入力を監視し、その結果からキャラ独自の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

トリガーを弄る(ヘルパー式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
v=59
value=1

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


なお新MUGEN1.0以降では新ステコン"AILevel"が追加されており、本来はMUGEN本体オプションでのレベル設定を1~8までの段階で参照するためのものであるが、別の使い方としてAI起動・停止に利用することができる。そのため即座にON/OFFとなるのでタイムラグは全く発生しなくなる上、従来の記述が大幅に省けるといった大変便利なコントローラーである。よって新MUGEN専用キャラとして作成する場合、上記の様な記述は一切不要となる。下記にその例を記述。

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

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


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