MUGENの処理は1P側→2P側の順番になっている。
例えば、相手キャラクターAが攻撃を行い、
キャラクターBのAIが超反応で反撃するという状況を作った場合。
Aが1P側、Bが2P側だった場合
1F目=1P側のAが攻撃開始→2P側のBが反撃開始
Bが1P側、Aが2P側だった場合
1F目=1P側のBはAの攻撃を認識できない→2P側のAが攻撃開始
2F目=2P側のBがAの攻撃を認識し反撃開始
となり、Bの反応に1Fの遅れが生じる結果となる。
これは同じキャラクターで対戦した場合、特に相手の行動を見てから
自分の行動を決めるタイプのAIを使っている場合顕著になる。
2P側は1P側の行動を見てから対処できる。
これは2P有利に見えるが、攻撃に対してガードを固めるAIだった場合
2P側が行動するより早く1Pが攻撃を開始し2Pは防戦が増えることになる。
とまぁ、ここまでは知ってた。
しかしついさっき分かったのは、
enemy,time=1を認識可能かが1P2Pで異なるということ。
キャラクターAが攻撃したとき、
キャラクターBがenemy,time=1なら反撃というAIを作ったとする。
Aが1P側、Bが2P側のとき。
1F目=1P側のAが攻撃1F目開始→BがAの攻撃1F目を認識し、反撃。
Bが1P側、Aが2P側のとき。
1F目=1P側のBはAの攻撃を認識できない→2P側のAが攻撃1F目開始
2F目=1P側のBがAの攻撃を認識するが、2F目のためtime=1を認識できない※
結果、Bは2P側のときのみ反撃可能になる。
まぁ、こんな特異な反撃の書き方をしようとするのは薙くらいだと思うけど。
ちなみになんでこんな記述をしようとしたかというと、
発生の遅い当身技を持つキャラのAIを作るとしたら、相手の攻撃を
できるだけ素早く察知して当身技を出さなければいけないし、
相手の攻撃が始まってから5F目や6F目に当身技を出しても食らってしまう。
だから、相手の攻撃動作1F目にだけ当身を発動し、2F目以降は
当身技を出すことを諦めるというAIを作ろうと考えたわけだ。
しかしご覧の通りenemy,time=1では1P2Pで当身を発動可能かどうかが異なる。
ならenemy,time<=2にすれば、1P側は2F目とやや遅れるが当身が発動する。
でも、これだと2P側にいたとき1F目、2F目と2回の判定が行われてしまう。
よって、1P2Pで動作が公平になるようにするには、enemy,time=2とするのが
いいのではないか。これなら1P側、2P側ともに相手の攻撃2F目で当身を出す。
それにしてもまったくこんなしちめんどくさいことを細かく気にする薙は
きっと損をする人間なのだと感じました。
※enemy,time=2って書いたとしても、
1F目=BはAの攻撃を認識できない→Aが攻撃1F目開始
2F目=BはAが攻撃1Fであることを認識→Aが攻撃2F目開始
3F目=BはAが攻撃2F目であることを認識…
という流れになって、1P側は反応が1Fずつ遅れるんじゃないの?
という疑問について一応。
部屋で考えてみる。
部屋Aと部屋Bにそれぞれ、人が数人、入っている。
2つの部屋は移動に10分かかる。
AからBに一方通行の電話が繋がっている。
Bは、Aが仕事を始めてからちょうど5分たったらCさんに電話をかける。
この場合、Aが仕事を始めると同時にBに電話がかかる。
Bは電話を受けた5分後にCに電話をかけることができる。
逆の状態を考える。
Aは、Bが仕事を始めてからちょうど5分たったらCさんに電話をかける。
この場合、Bが仕事を始めると同時に部屋Bの人間が部屋Aに伝えにいく。
10分後に部屋Aの人間は、10分前に部屋Bで仕事が始まったことを知るが
そのとき既に「Bが仕事を始めてから5分後にCに電話をかける」は不可能である。
しかし「仕事を始めてから15分後にCに電話をかける」という状況の場合。
Aが仕事を始めると同時にBに電話をかければ、
Bはその15分後にCに電話をかければいい。
Bが仕事を始めると同時に10分かけてAに仕事の開始を伝えた場合、
Aは差し引き5分後にCに電話をかければ、仕事が開始してから15分で電話ができる。
MUGENでも同じような処理がされていて、
「攻撃1F目で反撃」という記述は2P側しか認識できないが、
「攻撃2F目で反撃」という記述では1P側が3F目にずれ込むことも無く、
1P側も2P側も、「相手の攻撃2F目」で反撃を開始する。
難しい仕様だな~
PR