Unityで放置街づくりゲームを作っています!|建物を配置して資源を生産する仕組み

ゲーム制作

こんにちは、とまゲーム開発室です!

最近、Unityを使って放置ゲームと街づくりを組み合わせたゲームを制作しています。

まだ開発途中ではありますが、少しずつゲームとして遊べる形になってきたので、今回は現在どんなゲームを作っているのか、そしてどのような仕組みで動かしているのかを紹介していきます。

どんなゲームを作っているの?

今回制作しているのは、建物を配置して街を発展させていくタイプの放置街づくりゲームです。

プレイヤーはマップ上にさまざまな施設を配置します。

例えば、木材を生産する施設や鉱石を採掘する施設などを建てることで、時間経過に応じて資源を獲得できます。

集めた資源を使って新しい施設を建てたり、生産量を増やしたりしながら、少しずつ街を大きくしていくことを目指しています。

イメージとしては、

建物を配置する
↓
時間が経過する
↓
資源が生産される
↓
資源を使って新しい建物を建てる
↓
さらに多くの資源を生産する

というサイクルです。

「放置しているだけでも少しずつ街が成長していく」という部分を、このゲームの大きな特徴にしたいと考えています。

街はグリッドを使って配置

街づくりゲームなので、建物を配置するためのマップが必要になります。

今回は、マップをグリッド状に区切って建物を配置する方式にしました。

例えば、マップを10×10のマスに分けた場合、それぞれのマスを建物の配置場所として利用できます。

グリッドを使うことで、

「建物が半端な位置に配置されてしまう」

といった問題を防ぐことができます。

また、今後建物が大きくなった場合にも、

「この建物は2×2マスを使用する」

といった管理がしやすくなります。

このグリッド部分については、GridManager というスクリプトを使って管理しています。

ゲーム内のマップを管理する役割を一つのスクリプトにまとめることで、建物の配置処理などと分離できるようにしています。

建物を配置すると資源を生産する

今回のゲームで重要になるのが、生産設備です。

例えば木材を生産する施設を配置すると、一定時間ごとに木材を獲得できます。

単純化すると、

「木材生産施設を建てる」

↓

「一定時間待つ」

↓

「木材が増える」

という仕組みです。

この処理を担当しているのが ProductionBuilding というスクリプトです。

生産設備ごとに、

  • 何を生産するのか
  • どのくらいの間隔で生産するのか
  • どれくらいの量を生産するのか

といった情報を持たせることで、同じ仕組みをさまざまな建物に利用できるようにしています。

例えば、

「木材を生産する施設」

と

「鉱石を生産する施設」

があったとしても、それぞれに別の生産システムを作る必要はありません。

生産する資源の設定を変更するだけで、同じ仕組みを利用できます。

資源の情報は別で管理する

ゲームには木材や鉱石など、さまざまな資源が登場します。

ここで、それぞれの資源についてスクリプトに直接情報を書いてしまうと、資源が増えたときに管理が大変になります。

そこで今回は、資源そのものの情報を ResourceData として分離しています。

例えば、

  • 木材
  • 石材
  • 鉱石

などの情報を、それぞれ個別のデータとして管理できます。

こうしておくことで、今後新しい資源を追加するときも、既存の生産システムを大きく変更する必要がありません。

このように、

「ゲームの処理」と「ゲーム内のデータ」を分ける

という考え方を意識して制作しています。

Unityでゲームを作り始めたばかりの頃は、すべての処理を一つのスクリプトに書いてしまいがちでした。

しかし、ゲームの規模が大きくなるほど、処理を役割ごとに分けておいたほうが管理しやすくなります。

今回の制作では、そのあたりも意識して設計しています。

現在は基本的な生産システムまで完成

現在のところ、ゲームの基本となる部分が少しずつ形になってきました。

現時点では、

  • グリッドを使ったマップ
  • 建物を配置する仕組み
  • 生産設備
  • 資源データの管理
  • 時間経過による資源生産

といった部分を制作しています。

まだゲーム全体としては開発途中ですが、実際に建物を配置して、時間が経つと資源が増えていくところまで確認できるようになっています。

最初はただのグリッドだったマップに建物を配置できるようになり、さらにそこから資源が生まれるようになると、かなり「ゲームを作っている」という感覚が出てきます。

今後は街をさらに発展させたい

今後は、現在作っている基本システムを使って、さらにゲームらしい要素を追加していく予定です。

例えば、

  • 新しい生産施設
  • より多くの資源
  • 建物のアップグレード
  • 生産量の増加
  • 上位の生産設備
  • 街の人口
  • 建物同士の関係
  • セーブ・ロード
  • 放置中に貯まった資源の受け取り
  • UIの改善

などを考えています。

特に放置ゲームなので、ゲームを閉じている間にも資源が貯まり、次にゲームを起動したときに「これだけ増えている!」という仕組みは入れたいと思っています。

また、単純に建物を増やすだけではなく、

「どの施設を先に建てるか」

「どの資源を優先して生産するか」

といった、ちょっとした戦略性も持たせたいと考えています。

一つずつ仕組みを作っていく

今回のゲーム制作では、最初からすべての機能を完成させようとはせず、まずはゲームの基本となる仕組みから作っています。

最初にグリッドを作り、

グリッド
→ 建物配置
→ 生産設備
→ 資源
→ 放置による生産

というように、一つずつ機能を追加していきました。

こうして小さな機能を組み合わせていくと、最初は何もなかった状態から少しずつゲームらしくなっていくのが分かります。

個人開発では、いきなり大規模なシステムを作ろうとすると途中で何をしているのか分からなくなってしまうこともあります。

そのため今回は、まず「動くもの」を作って、そこから少しずつ拡張することを意識しています。

まとめ

今回は、現在制作している放置街づくりゲームについて紹介しました。

まだ開発途中ではありますが、

建物を配置する
↓
施設が資源を生産する
↓
資源を使って街を発展させる

というゲームの基本的な部分が、少しずつ形になってきています。

Unityでゲームを作るのは大変な部分もありますが、実際に自分で作ったシステムが動いて、ゲームとして遊べるようになっていく過程はかなり楽しいです。

これからさらに施設や資源を増やしていき、最終的には「放置しているだけでも街がどんどん成長していく」ようなゲームにしていきたいと思います。

今後も制作の進捗や、Unityで実際にどのような仕組みを作っているのかを紹介していく予定です。

今回作ったゲームも、いつか仕組みや素材なども
まとめて公開する予定ですので、よろしくお願いいたします!

今回はここまでです!お付き合いいただきありがとうございました!

それでは、また次回でお会いしましょう~

コメント

タイトルとURLをコピーしました