フラッピー ( Flappy ) :敵キャラの AI


Flappy (フラッピー) のクローンを製作続行中。ゲームとしての機能実装はオマケとして作ったマップエディタも含めて 9 割方終ったため製作の山場は越した。

敵キャラの AI なども作ったので、登場する敵の数が少ないとは言えエディタからマップ上に配置すれば勝手に動き出すキャラクタ達を見てるとちょっとうれしい。しかし問題は HTML5 エクスポータでまったく動かなくなってきたこと。


HTML5 エクスポータで動かなくなるのはたぶん AI が背景やオブジェクトとのコリジョンを頻繁に検出していることとなにか関係があると睨んでいる。 エクスポータはいまこのコリジョン関連でフリーズするバグを抱えていて、AI を実装するまではちゃんとエクスポータで出力しても動いていたのに、実装後には動かなくなったのだから原因はたぶんコリジョンだと思う。内部で AI に関連した特定のイベントを削除すると 5 秒間だけ動いたりもするし、そしてあるいは複雑な地形をエディタで描かなければ動くというジレンマ。

上記問題があるためコリジョンによる判定を最小限にしたアルゴリズムを作ってみた。すると複雑な地形と込み入ったキャラの配置でも問題なく動くように改善された。オブジェクト数を考えたらまぁまぁの速度で動いていると思う。

[ 最新版 ]

完成版(眺めるだけ、操作しないこと:あくまでもAIのテスト動作です)
HTML5 / FlappyCloneGameEngineV03b

ほぼ完成版(眺めるだけ、操作しないこと)
HTML5 / FlappyCloneGameEngineV02y

大幅刷新:追跡アルゴリズムを省いてある
HTML5 / FlappyCloneGameEngineV02x

[ 旧版 ]
HTML5 / FlappyCloneGameEngineV02u

HTML5 / FlappyCloneGameEngineV02o

デバッグ中だった旧版。敵キャラ同士が互いに衝突したり重複しない位置を探しながら動いている。ヘビは左右にしか動かないが、カニは上下左右ランダムかつプレイヤーの方へ最終的には接近するというアルゴリズムになってる。プレイヤーへの最短経路を取らずに積極的に寄り道しながら最後はプレイヤー位置へ到達するのがポイント。セキュリティは多めにしたので、万が一ヘビと重複してもカニが自力で避けるようになってる。だがまれに斜め移動してしまう。

敵キャラの AI は CF2.5 のイベントエディタでは表現に縛りが多いため苦労する部分となる。背景とのコリジョンだけなら比較的簡単なのだけど、経路探索に似たランダム動作や他オブジェクトとの位置関係を把握しながらの協調動作を定義する際に、「言語使って表現できたらこの程度の記述で苦労することは無いのに…」という愚痴が出やすい。

Leave a comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です