SRPG開発プロジェクト(15) 敵ユニットのAI実装(その1)

こんにちは、Pocachinです。
PCで動作するファイアーエムブレム(以下、FE)ライクなSRPG(シミュレーションロールプレイングゲーム)を作ろうというプロジェクトの15回目。今回は、敵ユニットの基本的なAIを実装しました。

これまでの敵ユニットのAIは、「①攻撃の射程範囲にプレイヤーのユニットがいれば攻撃」、「②射程範囲にプレイヤーのユニットがいなければ主人公ユニットに近づくように移動(移動先のマスは1マス移動するごとに主人公ユニットに近づくマスを判定している。判定が1マスごとのため、敵ユニット同士でも追い越して先のマスに移動することもできない)」というものだったんですが、前回実装した味方ユニットの移動ロジックも活用して改善しました。

改善点は以下のとおりです。

まず、移動先のマスを最初に決めて最短経路で移動するようにしました。これで敵ユニット同士の追い越し移動も可能になっています。

次にAIですが、敵ユニットの行動を決める条件として、「①最終目標(主人公、拠点(←ここへの到達がプレイヤーのクリア条件)、特になし等)」、「②移動範囲内にプレイヤーのユニットがいる場合に①の最終目標を無視して攻撃しにいくか」、「③最終目標を①で設定したものから基地(←HPを回復するマス)に切り替える条件」を持つようにしました。
で、①の最終目標が移動可能範囲内の場合はそのマス(または対象の攻撃射程範囲のマス)に移動、移動可能範囲外の場合は、そこから最も近いマスに移動するようにしました。ただし、②の条件によっては、最終目標を無視して攻撃可能なユニットを攻撃に行きます。なお、③が発動した場合は、隣に攻撃できるユニットがいる場合を除き、一目散に基地を目指します。

↓こんな感じ

ユニット選択時に表示される、ええ加減な手書き数字は「残りの移動力」です(^^;)

AIについて、まだまだやることはあるんですが、とりあえず今回はこんなところです。
実際のところ、このままだと「最終目標の手前に障害物があっても迂回しない」「プレイヤーユニットの移動範囲を先読みしない」などなど、貧弱でお話にならないんですよね。でも、これだけでも「行動を選んでるな」って感じがあり、かなり楽しくなりました!