ホームページ最新月全表示|携帯へURLを送る(i-modevodafoneEZweb

2012年4月
前の月 次の月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          
最新の絵日記ダイジェスト
2012/05/31 1年間の思想まとめ
2012/05/30 知 ら な い の ?
2012/05/24 ちち
2012/05/23 もち
2012/05/22 スタウラストルム ドルシデンティフェルム

直接移動: 20125 4 3 2 1 月  201112 11 10 9 8 7 6 5 4 3 2 1 月  201012 11 10 9 8 7 6 5 月 

2012/04/16(月) もっちりした食感が自慢の砂鉄
1:50




もくじ
・AI起動の管理が酷い




AI常時起動でしかテストしてなかったから気づかなかったんだけど、
AI起動関連の記述がぐちゅぐちゅだった。

発端は、穴クアをコンフィグでAIレベル0にしてWatchモードで観戦した場合、
PAUSEが暴発してしまっていたこと。
また、PAUSEが暴発しすぎる件について、ラウンド2になるとAIが0で固定されてしまうことも分かった。

冷静に見直してみよう。

■穴クアのAI起動関連の記述

@コンフィグ用ヘルパー発生
triggerall = NumHelper(10000) =0
trigger1 = roundstate = 0
trigger2 = RoundsExisted = 0
trigger2 = TeamMode = Turns
trigger2 = RoundNo > 0

「コンフィグ用ヘルパーが居ないとき」を大前提として、
1:ラウンド開始前
2:チームバトルで、自分の1回目の出番のとき
に、コンフィグ用ヘルパーが発生している。

コンフィグ用ヘルパーは、Var(59)を、常に指定した値に設定している。
今回は、この記述により、AIはラウンド開始時点で0になっている。


@AIの二重起動の予防

Var(59)が1以上になると、Var(49)が自動的に1になる。


@AIの自動起動

triggerall = var(59) = 0
triggerall = var(49) = 0
triggerall = RoundState = [1,2]
trigger1 = Command = "AI0"
trigger2 = Command = "AI1"
trigger3 = Command = "AI2"


trigger49 = Command = "AI48"
trigger50 = Command = "AI49"
trigger51 = Command = "AI50"

「AIが起動しておらず、かつ、AI二重起動予防スイッチも0で、イントロ中またはバトル中」を大前提として、
人間が入力不可能なコマンドが入力されたとき、Var(59)が1〜100になる。


@イニシャライズ

ラウンドコール中の挙動。
何も記述をしていなければ、MUGENのデフォルトの記述に従い
「自分が初めて登場したラウンドのとき」という条件で、Varが全て0になる。

その後、ラウンド1ならイントロのポーズ、それ以外なら立ちポーズになる。

この記述が曲者で、この記述のせいで、チームバトルでラウンド2以降に登場した場合、
イントロ開始前にコンフィグ用ヘルパーが発生してAIが起動するものの
「自分が初めて登場したラウンド」なので、AIが即座に0に戻されてしまう。

穴クアは記述を変更し、Varは全て、0にならずに引き継ぐ。


■以上を踏まえて、AIがどのように起動しているかを確認

@コンフィグでAIを75としたとき

ラウンド1で、コンフィグ用ヘルパーが発生。
AIレベル75で対戦が行われる。

ラウンド2に入る時も、コンフィグ用ヘルパーが発生。
AIレベル75で対戦が行われる。


@コンフィグでAIを0としたとき

ラウンド1で、コンフィグ用ヘルパーが発生。
AIレベル0で対戦が始まり、ランダムに1〜100のAIが起動する。
25が起動したとして、勝利か敗北でラウンド2へ移行する。

ラウンド2に入る時もコンフィグ用ヘルパーが発生。
AIレベルは0に戻る。
しかし、AIの二重起動予防スイッチは1のままなので、「ランダムでAIが起動する記述」が無効になる。
結果、AIは自動で起動もせず、完全にランダムのまま行動するようになる。


■対策

1:ラウンド2以降もAIがランダム起動するようにする
2:ラウンド2以降、AIレベルを引き継ぐようにする

ラウンド2以降もAIがランダム起動するようにする場合、
Var(59)とVar(49)が両方0であればいい。
コンフィグ用ヘルパーに、Var(49)を0にする記述をすればいい。
しかしラウンドごとに違うAIが起動したり、ラウンド開始時の挙動が甘くなるので、あまり良くないかもしれない。

ラウンド2以降、AIレベルを引き継ぐようにする。
このほうがいいだろう。

この場合の対策は、コンフィグのAI起動の記述に
「Var(59)が0のとき」という条件をつければいい。

AIが起動してようがしてまいが設定値に固定するのではなく、
AIが起動していないときだけオプションが適用されるのだ。


正直このAI起動絡みの記述は昔から問題があったんだよ。
多くの問題を抱えていたんだ。
チームバトルになるとAIが起動しなかったり。

このへんを改めて見直す必要があるかもしれない。
薙も穴こんも。




>2012/04/16 0:24

不合格かもしんない・・・;






 Copyright ©2003 FC2 Inc. All Rights Reserved.