Unityで3Dゲームを作っていると、やはり一度はオープンワールドゲームを作ってみたくなります。しかしオープンワールドというと地形を作るだけでも大変そうなイメージがあると思うので、なかなか手を出せないという方も多いのではないでしょうか?
そこで今回はアセットを駆使してリアルなオープンワールド風の風景を短時間で作る方法を紹介します。
ちなみに今回の方法で作れる地形のイメージは冒頭の画像のとおり。だいたい3時間くらいで作ることができました。今回は手抜きをしたのでやや殺風景ですが、手間をかければさらに美しい風景を作れると思います。
この記事で使用しているUnityのバージョン:2019.1
今回使用するアセット
まず前提条件として、ここでは次のアセットを使用するものとします(いずれも有料)。
- Gaia
- Gena
- AQUAS
これらはオープンワールドの風景を短時間で作るためには欠かせません。
※なお、この記事では個々のアセットの使い方は説明しません。
Gaia
Gaiaはリアルな地形を簡単に作れる人気のアセットです。Unity標準の地形システムがベースですが、こちらは地形を「スタンプ」して作るのが最大の特徴。標準のTerrainエディタのように地形をいちいち「描く」必要がないのでリアルな地形をわずか数クリックで作ることができます。
Gena
Genaは地形の上にゲームオブジェクトを配置するのに便利なアセットです。指定した位置に岩や草木などを配置するときに使います。
AQUAS
AQUASは透明感のある綺麗な水面を手軽に作れるアセットです。Gaiaに対応しているので、連携して簡単に水面を作ることが可能。ちなみに、水面に潜ったときのエフェクトも付属しています。
オープンワールドの風景を作る手順・コツ
それではオープンワールドの風景を作る具体的な手順やコツを紹介していきます。作業の手順については次の通りです。
- Terrain(地形)を作る
- 水面を作る
- 岩や草木を配置する
- ライティングをベイクする
以下、それぞれ詳しく見ていきましょう。
Terrain(地形)を作る
何よりもまずは地形を作ります。今回はGaiaのスタンダードな地形作成手順を踏んだので、地形の作り方としては「Gaia Manager」に従って進めればOKです(※この辺について知りたい場合はGaiaの使い方をググってください)。ただし地形を作るにあたっては次のポイントを意識して作りました。
- 周囲を山で囲う
- 木は別途配置する
- 草を生やしすぎない
周囲を山で囲う
オープンワールドゲームを作るうえで重要なことの一つとして、「世界の端が見えないようにする」ことが挙げられます。そこで今回は地形の切れ目が見えないように周囲を山で囲うことにしました(下図)。
こうすればプレイヤーキャラが地形から落ちることも防げるので一石二鳥です。
ただし、Gaiaでこのような地形を作るのには少し工夫が必要です。私の場合、下図の火口のスタンプをスケールや角度を変えて何度か押しました。
木は別途配置する
次にGaiaでは自動で地形に木を配置できるのですが、ここではあえてこの機能を使わないことにしました。というのは、自分が思っていたのとは違う場所に木が生えてしまう場合が多かったからです。木に関しては面倒でなければ別途手動で配置するほうが良いように思います。
草を生やしすぎない
一方で草についてはすべて手動で配置すると非常に手間がかかるし、見た目もあまりよくないので自動生成を使ったのですが、デフォルトだとモッサリと草が生えてしまうので草が生えすぎないように調整しました。
草はSpawnerの「Location Increment」の値を増やすことでまばらにすることができます(下図)。
水面を作る
次に水面を作ります。といってもこの工程はAQUASがあればとても簡単で、Gaia Managerから「Add Aquas」をクリックすればOKです。
岩や草木を配置する
そうしたら、Genaを使って岩や草木を配置していきます。好きな位置に好きなゲームオブジェクトを配置していきましょう。
ただし、ここでのポイントは「配置しすぎない」ということです。調子に乗ってゲームオブジェクトをガンガン配置するとその分描画コストがかかってしまいます。なのでゲームオブジェクトの数が少なくてもボリュームがあるように見えるように配置してみましょう(例えば、ゲームオブジェクト間の距離やゲームオブジェクトのスケールを工夫してみてください)。
ライティングをベイクする
地形の作成や草木などの配置ができたら最後にライティングをベイクします。ここで、オープンワールドのように広大な地形の場合、デフォルトの設定では膨大な時間がかかってしまうので設定を工夫する必要があります。そこでライティング設定ウィンドウを開いて、「ライトマップ設定」の中の次の項目の値を小さくしてみてください。
- 直接サンプル
- 関節サンプル
- 環境サンプル
- 関節解像度
- ライトマップ解像度
これで2㎞四方の巨大な地形でも5分かからないくらいでベイクすることができます。
今回の風景の描画の重さ
ところで、オープンワールドの場合気になるのが描画の重さです。今回作った風景はどうなのかというと、性能やや低めの私のデスクトップPCの場合、プロファイラーの値は次のような感じになりました。
最悪でも100FPS出ているのでギリギリ悪くはない、といったところでしょうか。ほぼ地形だけでこれくらいのコストなので、ゲームシステムのほうであまり無茶な処理はできない気がしますが何とかなるレベルでしょう。
おわりに
以上、オープンワールドの風景を作る手順などについて紹介しました。Unityとアセットを駆使すれば今回のような風景を比較的簡単に・短時間で作ることができるので、よかったらぜひ試してみてください。