オープンワールド系のゲーム開発を経験したので色々話す#2 街づくり編

![スクリーンショット (337).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1207332/c56f0953-e6ef-0a65-cb9c-1fd4f5f4e168.png)


おはようございますてんぺんです。
今回はオープンワールド制作話第2弾ということで街づくりの話をしていこうと思います。
~~書きながら何話そうかなーって考えてたので文脈がちょっと怪しい部分があるかもしれません~~

まだ前回の記事を読んでない人とかはこちらが目次になりますので見ていってください。

https://qiita.com/hemmiyuya/items/3768f6ff18303a23a822


#アセットを用意する




RPGでは生活の基盤となる街ですが、どのように作っていけばいいでしょうか。
~~正直僕も分かってません~~←え

そもそも今回のゲームを作る際、ステージ用にアセットを購入し、それをそのまま使ったろ！って思ってたんですが、この考えが甘々の甘ちゃんだったんですよね。

![スクリーンショット (355).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1207332/6593a0b4-3d42-ccee-be0b-bfa7ab5b4eb7.png)

こちらが実際に買ったアセットとなります。

かなり細かく作られており見ていて飽きないアセットなのですが、**アクションゲームをするには向いていない**構造になっているんですよね。
色んな小さなオブジェクトにぶつかったり、判定を持っていかれたり、見通しが悪かったり...etc

そんなこんなでそのまま使うには中々に厳しいものがあったので、となりに広げていく形で街を作ることになりました。
今回はこのアセットを軸にして、どのようなことを考えながら街づくりをしたのかを話して行こうと思います。

#コンセプトを決める
街を作り始める前に決めなきゃいけないのが、その街のコンセプトです。
人通りが盛んな繁華街なのか、のどかで平和な村なのか、それとも何かが原因で滅んでしまった王都なのか...
街単体を作るだけならあまり気にしなくてもいいのかもしれませんが、オープンワールドという性質上各地に街を配置することになるので、その街の役割や立地、イベントなどなど何をするのかできるのかなども気にして作る必要があります。

今回のアセットは、スチームパンクな雰囲気で水路や港のようなものが存在するので、海のあるヨーロッパ風な街を作ることになりました。

#作るべきものを決める
コンセプトが決まったら実際に作り始めるわけですが、いきなり作り始めるのは大変だと思います。
というわけで、作るべきものについて**機能**と**世界観構築**の2つの観点からお話します。

##機能について
ここで言う機能とは、その街でプレイヤーに何をさせたいか、何をさせるかということになります。
RPGゲームなら、宿屋があったり、武具屋があったり、イベント進行に必要なNPCがいたり....
このような機能を実装することをを心がけると、街づくりを進めながらゲームに必要なものも揃えることが出来ます。

今回は、上で話したとおり街全体がごちゃごちゃしていてアクションゲームをするのは厳しい。という課題があるので、これを解決するために大きな商店街を最初に作ることとしました。

![スクリーンショット (356).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1207332/4d0c453c-c7f6-a92c-882a-1fc64f631e42.png)

こちらが実際に作った商店街の一部となります。(鳥も映っちゃった)
制作のヒントは東京に行ったときにこんな感じの並木通り(もっと狭いけど)があって、良さげだったなぁと思って作りました。東京ヌーブなのでどこらへんかは覚えていません。

ちょっと本題の趣旨とは逸れますが、こういった街づくりをするために普段から自分が住んでいるところとか、旅行で行ったところとか色々観察してみるといいと思います。
意外と良さげな場所が身近にもあって、ゲーム作りをする際に参考になるのかなと。
この記事を見ている方であんまり知られてないけどめっちゃいい場所とか知ってる人がいたら是非コメントしていってください。

　
話は戻りますが、商店街ということでRPG要素の宿屋や武具屋(未実装)などもここで用意できると思います。
見晴らしもよく、街中でイベント戦闘を実装したい！というときも使えるものとなりました。

このように、街を作りながらゲームの中身も作っていけるのが機能重視制作のいいところだと思います。

##世界観構築について
その名の通り、ゲームの中の世界観を作ることを前提とした街づくりです。
当初、このゲームを作っていたときはスチームパンクでワイヤーアクション！ぐらいしか考えておらず、この世界観構築を経て今のオープンワールド型という形に落ち着きました。

![スクリーンショット (357).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1207332/66912df4-9680-d650-122d-987ca9c50f5e.png)

この街の象徴となる巨大な水晶です。
不思議なエネルギーを発生させており、この街の人たちはこのエネルギーを蒸気機関の代わりに利用して生活している...という設定です。

街全体の設定を決められる他、プレイヤーが倒されてもこの水晶のおかげで復活できるといった機能面での役割もあり、こういった街の象徴となる~~よくわからない~~巨大なオブジェクトを用意するのは効果的だと思います。(見栄えもよくなるしね)

![スクリーンショット (358).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1207332/7a717b5b-5963-cd0c-5bc9-2482e8f90214.png)

港町要素になります。

https://tori-dori.com/europe/2019/08/14/27377/

この記事の「ニューハウン」という港町をバチバチに参考にして作っています。
ゲーム内の機能としてはあまり役割がありませんが、海側の見栄えを整えるといった意味で制作しました。
街づくりの途中で心が折れてた時期に作ったものなので、もう少し時間と余裕があれば第二の繁華街っぽい感じで作りたかったです。
機能をもたせるとしたら船を使って他の街とか離れ島とかに行けるって感じですかね？

こんな感じで世界観を意識して街を作っていくと、ストーリーの構築や諸々の設定の補完をしたり、街の端の余りがちな部分を埋めて行くことができると思います。
水晶のところにあった「調べる」コマンドなどを利用してプレイヤーに情報を与えることで、プレイヤーの中の世界も広げることができるのかと思います。(調べるコマンドの実装はNPCとの会話と被る部分なので次回お話します)

#その他意識すると良いこと
機能と世界観構築を利用した街づくりの話をしてきましたが、最後にプレイヤーが探索したくなる街を作るために意識することをお話します。
##動きをつける
これは街に限ったことではありませんが、世界が生きているように見せるために必要なことだと思います。
世界が生きているっていう表現がふわふわしすぎていて伝わりにくいと思いますが...要はのっぺりとした感じにならないようにしよう！っていう話です。(口で説明するのはほんとに難しい)

と言うわけで実装したものを軽く紹介していきます。

###鳥
![tori.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1207332/1750707e-f563-0390-7681-b8b4fe68d9e4.png)


街中を自由に飛び回るのでかなり動きを感じることができ、普段の移動から風景を眺めているときまでいろいろな場面で登場してくれます。
　
　
###時間の概念

![スクリーンショット (338).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1207332/fff68422-b929-a0c3-b189-16f2ca9081ee.png)
![スクリーンショット (339).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1207332/642a814c-3a08-0e5f-1b29-ad8fb7a4c803.png)

ゲーム全体に動きをつけられる超良さげな機能だと思います。
昼夜の景色の変化だけでなく、夜にしか発生しないイベントなどを用意してあげるとゲームとして広がりができるのかなと思います。
今回はあまり深く説明はしませんが、もし要望があれば実装の仕方を別の記事にして紹介しようかなと思います。

　
　
他には意味もなく飛行船や飛行機を飛ばすなどしています。
あまりコストのかからない要素なので、余裕があるなら積極的に実装していくといいと思います。


##調べるコマンドを用意する前提で作る
街の探索というのは、ただ見て回るだけでもいいのですが、色々なところに調べられるオブジェクトを用意することでそのオブジェクトのバックストーリーをプレイヤーに想像させたり、少しずつ設定を組み上げていくことであとからストーリー本編に関わらせることもできるのかなと思います。
![スクリーンショット (340).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1207332/684f47f7-7692-206f-0ae8-bd3a4baa4854.png)
セイヴァリさんの肖像画です。このゲームのタイトルが「セイヴァリの街」という風になっており、ストーリーとの関係が気になります。
![スクリーンショット (341).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1207332/731d08cc-c06b-c34b-0f7f-1d0b0307aec2.png)
ほんとにゲームに関係ないけど意味深なオブジェクトです。こーゆーものを用意しておくと、あとからこの写真の様な街を実装！などがやりやすく、伏線としても活用できるのかなと思います。

![スクリーンショット (359).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1207332/3d9f0bcb-5b46-e4df-608e-bc6da69e6498.png)
骨董品屋さんです。隣には骨董品好きな男がおり、興味深そうに商品を眺めています。
ゲーム中では、この男にとある骨董品を探してほしいと依頼されることになりますが、このようにオブジェクトとNPCとを関連付けることで簡単にストーリーを生み出すことができます。

#まとめ
というわけで街づくり編でしたがいかがでしたか？
せっかく頑張って作った街なので、プレイヤーにはいっぱい探索してもらいたい！と思うのはクリエイターとして自然なことだと思います。
少しでも工夫して、プレイヤーが探索していて楽しくなるような街を作っていきましょう。

他にもこんな工夫をしているよ！とか、街づくりをする上でこれは外せないでしょというものがあったら是非コメントしていってください。

次回はNPCの実装についてお話します。

ではノシ

　
　
　
前　

https://qiita.com/hemmiyuya/items/b9bc17d65cc629f07500

次

12/19投稿予定