今回は コンピュータプレイヤーの詳細とこれからについて独り言をぶちまけます。
ひぢの作ったコンピュータプレイヤーのアルゴリズム…どんなものかといいますと、 まず条件ごとに複数の命令リストを持っておきます。 命令リストにはキー入力のタイミングとか相手がここまで来るのを待つとかそういうものの集まりです。 相手がジャンプしたとき、相手が攻撃モーションに入ったときなどなど。 またそれらの命令が終わったときは、距離に応じて近距離命令郡、中距離命令郡、遠距離命令郡と 別れている三つの中から選んで再生します。 たとえば遠距離命令の中にはダッシュして相手に近づいていき、 その間相手が距離 100 以内に入ったら次の行、すなわち攻撃を行ったりするわけです。
友人が考えたアルゴリズムはすべてスクリプトで制御すると言うものでした。 これも普通に使えるとは思うんですが、デバッグが大変そうなのでパス…。
で、ここで考えないといけないのは、その場合わけ命令郡です。 相手が空中にいても地上と同じ判定ではまずいわけです。 相手との X 軸の距離だけではからぶることも多いと思うので Y 軸距離も考えて 作らなければなりません。
| OnEnemyAttack | 相手が攻撃モーションに入った瞬間 |
| OnIdle | どの命令にも該当しなかったとき |
| OnDistanceS | アイドル状態になったとき相手が近距離内 |
| OnDistanceM | アイドル状態になったとき相手が中距離内 |
| OnDistanceL | アイドル状態になったとき相手が遠距離内 |
| OnEnemyJump | 相手がジャンプした瞬間 |
| OnAerialRecoveryEnable | 空中で受身可能になった瞬間 |
| OnEnemyWaza | 相手が必殺技を発動した瞬間 |
| OnEnemyFinishAttack | 相手が攻撃モーションまたは必殺技を終了した瞬間 |
| pkey | 発生時刻, キー番号, 持続時間 キー番号に該当するキーを持続時間の間おしっぱにする。 |
| pbutton | 発生時刻, ボタン文字, 持続時間 ボタン文字に該当するボタンを持続時間の間おしっぱにする。 |
| wait | 発生時刻, 距離, 持続時間 持続時間の間、相手が距離内に入ったら次の行へ進む。入らなかったら終了する。 |
| keyclear | |
| wait2 | 発生時刻 相手の攻撃モーションが終わるまで待機する。永遠に待って、相手からモーション終了イベントが送られてきたら次の行へ進む。(OnEnemyFinishAttackの存在は?) |
| end | 発生時刻 そのリストを終了する。 |
| wait3 | 発生時刻, 持続時間 持続時間がゼロになったら次の行へ進む。 |
と、仕様を列挙してしまいました。これは…大変なことになりそうです。 まぁでも作業だけで、あまり考える必要はないかもしれません。 それよりイベントメッセージを増やさないといろいろ感知できませんね。 まずはイベントメッセージを増やすところからはじめましょう。