MUGEN +12:46/次の課題
ごく一部で評判だったり、さん付け勢になりつつあるゆうこさん。
~ ~ ~
次の課題ですが、AIで出来に不満のある箇所があったのを思い出しました。
相手の攻撃間合い計測機能と主要牽制攻撃判別機能の2つです。
どちらも仕組み自体は大体同じなんですが、
「何故かEnemy,MoveContactが有効にならない相手」というのをちらほら見かけるんですよ。
Enemy,NumTargetは機能しているからProjectile打撃?とも考えたけど違うし・・・
なんて思いつつ中身を覗いたら、原因ぽいのを発見しました。
MoveHitReset
効果:ヒットフラグ(MoveContact、MoveGuarded、MoveHit、WinではMoveReversedも)を0にします。
これを攻撃が接触したところから実行することでMove~系トリガーにフラグが立たなくなるようです。
Enemy,MoveContactが有効にならなくて当然ですね。
しかしそうなると困ったなぁ。学習記述を基本から考え直さないといけない。
もう無視するには多い数の搭載予想キャラと出会ったし、
Enemy,HitDefAttrに頼るとしても誰かさんみたいにダミーを仕込んでるケースも考えられるし、
NumTargetと併用しても「別の攻撃が当たってて打撃は空振り」とかで誤認が有り得るし・・・
うーむ困った。
・・・でも逆に考えれば、これは相手AI記述への霍乱要素にもなり得るな。
~ ~ ~
+11:10
さて、どうしようか。
やはり基本はパターン1(MoveContact中心)の記述で計測/判断し、
1ラウンド目でこれがまるで反応しなかった場合のみ次のラウンド以降はパターン2で行く感じかね。
問題はそのパターン2をどうするかなんだけど。
・NumTarget
本体HitDefによる攻撃では本体のNumTargetは1になる。
Projectileによる攻撃では本体のNumTargetは1になる。
Helper側HitDefによる攻撃では本体のNumTargetは0になる。
単体では本体HitDefによる攻撃とProjectileによる攻撃両方の誤認が発生
・HitDefAttr
本体HitDefによる攻撃ではEnemy,HitDefAttrによる発生感知に引っかかる。
Projectileによる攻撃では本体のEnemy,HitDefAttrによる発生感知に引っかからない。
Helper側HitDefによる攻撃では本体のEnemy,HitDefAttrによる発生感知に引っかからない。
単体では接触/非接触の誤認が発生
・上記2つの併用
相手がProjを発生させていなければ、
この2つを併用することである程度の攻撃射程計測ができる気がする。
Helper依存の飛び道具は対象外なのでいくら出ていても問題なし。
ただ相手がProjを発生させている、もしくは相手がProjを接触させた場合、
相手本体の攻撃が接触していなくてもNumtarget=1とEnemy,HitDefAttr両方が
成立してしまうため誤認が発生する。
・上記2つ+Enemy,ProjContactTimeの併用
相手がTarget取得していてHitDefを実行している、
かつProjが接触していない(もしくは接触後に時間経過している)場合のみ計測。
これならHitDefAttrが成立かつ相手が空振りしていた場合の誤認は回避できる・・・か?
問題点は相手が常時的にProjを発生/存在させるタイプだった場合。
こうなると限られたタイミングでしか計測フラグが立たず、
そのタイミングで相手が直接攻撃してくれないと間合い計測が出来ない。
現状思いつくのはこの辺かなー・・・どこまで実用性あるだろ。
この問題を乗り越えたら、今度は幽霊ちゃんがMoveContact系統を無効化させる側に回ってやろう。
+12:46
試行結果報告。左側が現状活用している記述、右側が上記を元に新築した記述。
それぞれ3ラウンド目終了時の数値を記録×3セット。
bsk
115 111
129 129
137 137
ky
125 129
123 149
124 124
fdio
0 139
0 92
0 93
Rouga
0 124
0 141
0 146
Motochika
131 131
200 200
100 100
下から2つ目の200は背後に回るのと元親が千両箱を壊すタイミングが重なったせいと思われ。
カイ2ラウンド目の誤差はおそらくノックバック後の距離も参照したため。
一番大事なのは、今まで0行進だった狼牙・DIO戦での間合い記憶値に変動があったということ。
誤認の可能性は残るものの、これでMoveHitResetを使用しているキャラの攻撃間合いも
それなりに把握できるようになるでしょう。条件追加して誤認要素を出来る限り無くせば実用圏も。
~ ~ ~
次の課題ですが、AIで出来に不満のある箇所があったのを思い出しました。
相手の攻撃間合い計測機能と主要牽制攻撃判別機能の2つです。
どちらも仕組み自体は大体同じなんですが、
「何故かEnemy,MoveContactが有効にならない相手」というのをちらほら見かけるんですよ。
Enemy,NumTargetは機能しているからProjectile打撃?とも考えたけど違うし・・・
なんて思いつつ中身を覗いたら、原因ぽいのを発見しました。
MoveHitReset
効果:ヒットフラグ(MoveContact、MoveGuarded、MoveHit、WinではMoveReversedも)を0にします。
これを攻撃が接触したところから実行することでMove~系トリガーにフラグが立たなくなるようです。
Enemy,MoveContactが有効にならなくて当然ですね。
しかしそうなると困ったなぁ。学習記述を基本から考え直さないといけない。
もう無視するには多い数の搭載予想キャラと出会ったし、
Enemy,HitDefAttrに頼るとしても
NumTargetと併用しても「別の攻撃が当たってて打撃は空振り」とかで誤認が有り得るし・・・
うーむ困った。
~ ~ ~
+11:10
さて、どうしようか。
やはり基本はパターン1(MoveContact中心)の記述で計測/判断し、
1ラウンド目でこれがまるで反応しなかった場合のみ次のラウンド以降はパターン2で行く感じかね。
問題はそのパターン2をどうするかなんだけど。
・NumTarget
本体HitDefによる攻撃では本体のNumTargetは1になる。
Projectileによる攻撃では本体のNumTargetは1になる。
Helper側HitDefによる攻撃では本体のNumTargetは0になる。
単体では本体HitDefによる攻撃とProjectileによる攻撃両方の誤認が発生
・HitDefAttr
本体HitDefによる攻撃ではEnemy,HitDefAttrによる発生感知に引っかかる。
Projectileによる攻撃では本体のEnemy,HitDefAttrによる発生感知に引っかからない。
Helper側HitDefによる攻撃では本体のEnemy,HitDefAttrによる発生感知に引っかからない。
単体では接触/非接触の誤認が発生
・上記2つの併用
相手がProjを発生させていなければ、
この2つを併用することである程度の攻撃射程計測ができる気がする。
Helper依存の飛び道具は対象外なのでいくら出ていても問題なし。
ただ相手がProjを発生させている、もしくは相手がProjを接触させた場合、
相手本体の攻撃が接触していなくてもNumtarget=1とEnemy,HitDefAttr両方が
成立してしまうため誤認が発生する。
・上記2つ+Enemy,ProjContactTimeの併用
相手がTarget取得していてHitDefを実行している、
かつProjが接触していない(もしくは接触後に時間経過している)場合のみ計測。
これならHitDefAttrが成立かつ相手が空振りしていた場合の誤認は回避できる・・・か?
問題点は相手が常時的にProjを発生/存在させるタイプだった場合。
こうなると限られたタイミングでしか計測フラグが立たず、
そのタイミングで相手が直接攻撃してくれないと間合い計測が出来ない。
現状思いつくのはこの辺かなー・・・どこまで実用性あるだろ。
この問題を乗り越えたら、今度は幽霊ちゃんがMoveContact系統を無効化させる側に回ってやろう。
+12:46
試行結果報告。左側が現状活用している記述、右側が上記を元に新築した記述。
それぞれ3ラウンド目終了時の数値を記録×3セット。
bsk
115 111
129 129
137 137
ky
125 129
123 149
124 124
fdio
0 139
0 92
0 93
Rouga
0 124
0 141
0 146
Motochika
131 131
200 200
100 100
下から2つ目の200は背後に回るのと元親が千両箱を壊すタイミングが重なったせいと思われ。
カイ2ラウンド目の誤差はおそらくノックバック後の距離も参照したため。
一番大事なのは、今まで0行進だった狼牙・DIO戦での間合い記憶値に変動があったということ。
誤認の可能性は残るものの、これでMoveHitResetを使用しているキャラの攻撃間合いも
それなりに把握できるようになるでしょう。条件追加して誤認要素を出来る限り無くせば実用圏も。