再建を繰り返す街作りゲーム開発(ワーカーの実装に着手する)
ゲーム上でなんか動きがほしいので、ワーカーまわりの実装に着手します。
やること
ワーカーは、いろんな建物に配属されて運搬やクラフトを行います。
このゲームはワーカーどもが甲斐甲斐しく働くのを眺めて悦に浸るのも目的の1つなので、ワーカーがそれっぽく働くようにしたいです。
ワーカーの基本仕様
- 自宅から仕事場に行く。
- 気力があるかぎり働き続ける。
- 気力がなくなったら市場によって食事して薪を自宅に持ち帰って寝る。
ワーカーの仕事について
- 仕事場に必要な資材を集める。
- 範囲内の資材を自動で集めたり、指定した建物から運んだりする。
- 仕事場に資材が揃ったらクラフトして別の資材にする。
くらいです。
最初は「資材置き場」を実装しようと思います。
- 建物: 資材置き場
- 運搬元: 範囲内にある瓦礫
- 変換: 瓦礫を建築資材にする
このゲームでは敵が攻めてきて建物の多くが瓦礫になるようにしたくて、資材置き場はその瓦礫を建築資材に戻すための建物です。
やったこと
いろいろな機能を後回しにしつつ、淡々と実装していきます。実装する要素は
- フィールドにある瓦礫を資材置き場に割り当てる。
- 探索する処理を実装する。
- 仕事場に割り当てたワーカーが瓦礫を回収しにいくようにする。
- ワーカーが仕事場でクラフトするようにする。
です。
なんというか、最初に動き出すまでの実装は重いです。
今回は「ワーカーが所定の場所まで移動する」という機能を実装します。これ自体は移動経路を与えて時間ごとに位置を変えるようにします。
移動の最初の実装
とりあえず List<Vector2Int> を与えるとその点列に沿って移動するコードを実装して動作させました。
↓ 実装したコード
↓ 動作した様子
よいです。
このキャラクター描画をアニメーションさせたり、移動している方向を向かせるのはまた後の作業でやります。
まとめと今後の予定
ワーカーをどうしたいかを検討して、与えた経路を移動するあたりまで実装しました。よいです。
私の作る街づくりゲーの基本的なシステム要素は
- 建物を配置する操作まわり
- ワーカーの制御
- 建物の管理
- 敵の侵攻と防衛
くらいで、どれもが微妙な小難しさです。
次回も、とりあえずはワーカーの制御を実装していこうと思います。がんばります。