トップ プロフィール 集会所 日記 翔天街 いろいろ リンクス

第二回 CPU 構想

今回は コンピュータプレイヤーの詳細とこれからについて独り言をぶちまけます。

ひぢの作ったコンピュータプレイヤーのアルゴリズム…どんなものかといいますと、 まず条件ごとに複数の命令リストを持っておきます。 命令リストにはキー入力のタイミングとか相手がここまで来るのを待つとかそういうものの集まりです。 相手がジャンプしたとき、相手が攻撃モーションに入ったときなどなど。 またそれらの命令が終わったときは、距離に応じて近距離命令郡、中距離命令郡、遠距離命令郡と 別れている三つの中から選んで再生します。 たとえば遠距離命令の中にはダッシュして相手に近づいていき、 その間相手が距離 100 以内に入ったら次の行、すなわち攻撃を行ったりするわけです。

友人が考えたアルゴリズムはすべてスクリプトで制御すると言うものでした。 これも普通に使えるとは思うんですが、デバッグが大変そうなのでパス…。

で、ここで考えないといけないのは、その場合わけ命令郡です。 相手が空中にいても地上と同じ判定ではまずいわけです。 相手との X 軸の距離だけではからぶることも多いと思うので Y 軸距離も考えて 作らなければなりません。

状況判断
OnEnemyAttack相手が攻撃モーションに入った瞬間
OnIdleどの命令にも該当しなかったとき
OnDistanceSアイドル状態になったとき相手が近距離内
OnDistanceMアイドル状態になったとき相手が中距離内
OnDistanceLアイドル状態になったとき相手が遠距離内
OnEnemyJump相手がジャンプした瞬間
OnAerialRecoveryEnable空中で受身可能になった瞬間
OnEnemyWaza相手が必殺技を発動した瞬間
OnEnemyFinishAttack相手が攻撃モーションまたは必殺技を終了した瞬間
命令
pkey発生時刻, キー番号, 持続時間
キー番号に該当するキーを持続時間の間おしっぱにする。
pbutton発生時刻, ボタン文字, 持続時間
ボタン文字に該当するボタンを持続時間の間おしっぱにする。
wait発生時刻, 距離, 持続時間
持続時間の間、相手が距離内に入ったら次の行へ進む。入らなかったら終了する。
keyclear
wait2発生時刻
相手の攻撃モーションが終わるまで待機する。永遠に待って、相手からモーション終了イベントが送られてきたら次の行へ進む。(OnEnemyFinishAttackの存在は?)
end発生時刻
そのリストを終了する。
wait3発生時刻, 持続時間
持続時間がゼロになったら次の行へ進む。

と、仕様を列挙してしまいました。これは…大変なことになりそうです。 まぁでも作業だけで、あまり考える必要はないかもしれません。 それよりイベントメッセージを増やさないといろいろ感知できませんね。 まずはイベントメッセージを増やすところからはじめましょう。