ねこ巫女籠城ゲーム開発(敵が攻めてくるあたり)
建築できるようになったので、次は敵が攻めてくるあたりの最低限の実装をやります。
何を実装するか
敵がどんな風に存在して どう攻めてくるかは正直ちゃんと考えてなくて、いざ実装しようとするとつらいものがあります。なので、本当にとりあえずでいいので仕様を決めていきます。
考えた仕様
- 敵は巣から出てくる。巣はとりあえず手動でフィールドに配置する。
- 「巣」と表現したが見た目をどうするかは後で決める。
- 数日ごとに巣から敵がでてきて拠点に大攻勢をしかけてくる。
- 大攻勢でないときに敵がどう行動してどう攻めてくるかは後で決める。
そして日付と時刻の概念の実装もめんどいので、なんか開発用の「敵が攻めてくる」ボタンを用意して、それを押したら巣から敵が攻めてくるようにします。
実装すること
とりあえず1つの巣から1体の敵が出てきて、本拠地に攻めてくるようにします。なので、実装で必要になるのは
- 防衛すべき本拠地の定義
- 本拠地までの敵の経路探索
- 経路を敵が移動コストを反映させながら移動する。
とします。
敵が建物を攻撃したり壁を登ってくるのは後で追加します。
ただ、敵1体が目的地に移動するあたりは以前に実装したことがあるので、今回はそれのモジュール構成を見直して実装を組み直す作業になる予定です。
本拠地の定義
「本拠地は神社でしょ」という気持ちはあるのですが、建物の建築に時間がかかる仕様にしたいので、仮に神社を移築中に敵が大攻勢してくるタイミングになったらどうしよう? とかを考えて決めるのがめんどうです。なので「壊れてない建築済みの建物を本拠地にできる」という仕様にします。
とりあえず、セーブデータに「これが本拠地」という情報を追加しようとしたら実装済みでした。
敵の巣の位置はセーブデータ管理してなかったので追加してセーブとロードが行われるようにしました。
経路探索と敵の移動
普通に A* アルゴリズムの結果をもとに地面のタイルに「このタイルの上にいるユニットはこっちに移動する」という情報を定義して、敵ユニットがそれを参照して移動するようにします。
↓開発用の "Enemy Attack" ボタンを押したら敵が配置された様子
↓敵が下から2番めの拠点に移動している途中の様子
今の実装は、この記事で決めた仕様とは異なる挙動もあるのですが、とりあえず動作したので大変よいです。
まとめと今後の予定
移動コストや建物の有無を無視していますが、巣の位置に敵が配置され、そこから拠点に向かって移動するようになったので大変よいです。
次は、敵が移動コストを考慮して移動するあたりか、建築をワーカーが行うようにするあたりに着手しようと思います。がんばります。