MUGENのこととかいろいろ
未分類 | AI関連 | パレット | ポトレ | キャラ紹介 | MUGEN以外 | AI講座的なもの | その他 | キャラ | 
名の無限
≪2017.05  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  2017.07≫
プロフィール

名無し/Nanashi

Author:名無し/Nanashi
MUGENのAIをつくったり

あと自分が他所で名前出すときはこの呼び名に統一します。
他の方が呼ぶ分には名無しで構いません。

公開中のブツのリストなど

AI講座一覧

このブログはリンクフリーです。お気軽にどうぞ。

↓バナー


最新記事
Twitter
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
FC2カウンター
FC2カウンター
現在の閲覧者数:
検索フォーム
リンク
ブロとも申請フォーム
QRコード
QRコード
--.--.-- --
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スポンサー広告    Top↑

2010.07.06 Tue
AI暴発について
投げでのAI暴発が解明されたようなので、それを含め自分の知ってるAI暴発についてまとめてみた
(ただし間違ってるor他の原因もある可能性あり)




1・開幕でなにかコマンド入力してるとAIが暴発するケース

分かりやすいケースだと、ラウンド開始前から十字キーのどれかを連打してると起こるキャラが結構居ます。

開幕ダッシュやバクステをしようとしても起こるため、結構な問題です。


正体

command.buffer.timeが設定されているために起こる、ヘルパー式AI起動の誤作動


原因

buffer.timeは一度入力されたコマンド判定を設定したTime分持続させるものですが、

持続中に新たに発生したヘルパーは、コマンド自体入力されてないのでコマンド判定持続を受け付けません

このため、
本体がコマンドを受け付けた後、そのbuffer.time効果中にAI起動用ヘルパーが出現した場合、

「本体にはコマンドが判定されているが、ヘルパーにはコマンドが判定されていない」瞬間が出来るため、
ここでヘルパー式AIが暴発してしまいます。


対策

ヘルパーも出現してからcommand.buffer.time分の時間さえ過ぎれば本体と同様にコマンド入力がなされるはずなので、

ヘルパーのAI起動判定に、time>(起動用のコマンドのcommand.buffer.time値)
を条件に加えましょう。

(ただ、他の原因もあるかも…)





2・キャラが振り返るとAIが暴発するケース

開幕で相手を飛び越した後、相手が十字キー左右を押しただけでAIが暴発することがあります。

意外と起こるAIは多いです。


正体

本体とヘルパーの向きが異なるため起こるヘルパー式AI起動の誤作動


原因

単純な話で、本体とAI起動用ヘルパーの向き(Facing)が違うと
本体が右を押した時、ヘルパーは左を押した判定になってしまうので、

本体とヘルパーのコマンドが食い違い、AIが暴発するという話です。


対策

AI起動用ヘルパーのFacingを常にroot,Facingに合わせましょう





3・キャラが投げられるなどでAIが暴発するケース

投げなどのステートを奪われる技を食らったときにAIが暴発することがあります。
ごく一部のキャラのAIに頻繁にみられるほか、他のキャラでも稀にみられます。


正体

「ステートを奪われてる時、相手のcmdのコマンド内容に対応してこちらのコマンドが反応する」というMUGENのバグによって起こるAI誤作動



原因

lunatic氏がブログで敵のコマンド感知として解説してもいる、あるバグのせいです。

具体的には、

ステート奪われてる間に相手キャラのコマンドをこっちが入力すると、
そのコマンドの並び順に対応したこっちのコマンドが入力されたことになるというバグで、

例えば相手の上から3番目のコマンドが波動拳で、こっちの上から3番目のコマンドが昇竜拳だった場合、
投げられてる時にこちらが波動拳コマンドを入れるとなぜか昇竜拳コマンドが入力されたという判定になってしまいます。


で、なぜこのバグでAIが暴発するかというと、

もしも、相手の上から3番目のコマンドが波動拳で、
こっちの上から3番目のコマンドがAI起動用コマンドだった場合、

投げられてる時にこちらが波動拳コマンドを入れると
AI起動用コマンドが入力されたという判定になってしまいます。

さらにその波動拳コマンドにcommand.buffer.timeによるコマンド判定持続が設定されてた場合、
ステートが返される直前にコマンドが入力されることで

ステートが返された瞬間にもAI起動用コマンドが判定され、AIが起動する
。というものです。


性質的に、このAI暴発を起こさせやすいキャラ(投げる側)は、

・command.buffer.timeが長く設定されている

・AI起動用コマンドを一番上に置いていない

・簡単なコマンドが上の方に置かれている

という感じになります。

特に「buffer.timeを設定しているワンボタンのコマンドを上の方に配置している」と非常に起こしやすいと思います。


AI暴発が起きやすい(投げられる側)キャラは、AI起動用コマンドを下の方に置いているキャラでしょう。



対策

ステートを奪われているという判断はしにくいうえ、MUGEN自体のバグに起因するため、完全な対策は難しいです。
起きにくいだけで、コマンド式AI起動を使ってるほぼ全てのキャラが起こす可能性を持っているのでは…?


対策としては、上の原因の欄に書いた「暴発を起こしやすい要素」をできるだけ無くすこと。

あとは、人操作かどうかのスイッチを用意し、人操作と判断したあとはけっしてAIが起動しないようにすると、とても有効です。

ただし何かしら直接入力した時点でAIを起動させることができなくなってしまうのと、
なにか入力する前に投げられたりすると(人操作かどうかの判断が間に合わないために)暴発する危険はあり、
完璧な対策ではないです。



ちなみに本体がステートを奪われていてもヘルパーは関係ないので、
これも本体とヘルパーのコマンド判定のズレを生じさせ、ヘルパー式AI起動の誤作動を起こす可能性があります

ただしヘルパー式AI起動はもともと上に書いた「人操作と判断したあとはけっしてAIが起動しないように」というのを含んでいる記述が多いので、一応ほとんど問題ないです。


スポンサーサイト

AI講座的なもの    Comment(1)   TrackBack(0)   Top↑

Comment
承認待ちコメント Posted by
このコメントは管理者の承認待ちです
2012.10.27 Sat 23:22 [ Edit ]

管理者にだけ表示を許可する

Top↑

TrackBack
TrackBackURL
http://nanomugen644.blog54.fc2.com/tb.php/179-8e1f85f4

Top↑

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。