RPG制作の準備ができたところで、UnityのTerrain機能を使ってプレイヤーが歩き回れるマップを作っていきましょう。Terrainの基本的な使い方については他の作例で何度も紹介していますし、姉妹サイトの方でも解説していますので、ここでは負荷軽減などもう少し詳しい話をしていきます。
※Terrainの基本的な使い方については次のページをご覧ください:
Terrainの負荷軽減&ライティングのベイク時間短縮設定
ではTerrainでマップを作るにあたって、今までの作例ではあまり気にしていなかった部分について触れようと思います。それはTerrainの処理負荷とライティングのベイク時間についてです。
Terrainの負荷を小さくする設定方法
まずTerrainの処理負荷についてですが、Terrainは地形という都合上、どうしても巨大になりがちでその分描画にかかるコストも大きくなってしまいます。しかも草や木などを大量に配置することも多いのでさらに重くなりがちです。
幸い、Terrainの重さは設定次第で多少改善することができます。デフォルト設定のまま使うと相当な負荷がかかることがあるので、ゲームの都合に合わせて適切に設定しておいた方が負荷か少なくて済みます。
では、ここでTerrainの負荷を小さくする設定方法を見ていきましょう。設定するグループは次の3つです。
- 基本設定
- 樹木とディティールのオブジェクト
- メッシュ解像度
基本設定
「ピクセル許容誤差」と「ベースマップ距離」を変更します。
- ピクセル許容誤差:
大きいほど遠くの地形の描画が荒くなりますが、負荷が小さくなります。 - ベースマップ距離:
小さいほど遠くのテクスチャの表示が荒くなりますが、負荷が小さくなります。
樹木とディティールのオブジェクト
赤枠の部分の設定を変更します。
- 詳細表示されるカメラの距離:
この距離より遠くの草などが非表示になります。つまり値が小さいほど軽くなります。 - ディティールオブジェクト密度:
ユニット内にどれだけの草を表示するか。値が小さいほど軽くなります。 - 樹木の距離:
この距離より遠くの木が非表示になります。 - ビルボード開始距離:
木をビルボード表示(=ハリボテ)にする距離。値が小さいほど低負荷。 - メッシュ描画する最大数:
この数値を超えた分の木はビルボード表示されます。
メッシュ解像度
横幅・奥行・高さを小さくすることで負荷を低減できます。必要以上に大きくしないようにしましょう。なお、ここの設定は絶対に地形を編集する前に行い、設定したら変更しないようにしてください。後でいじると地形がおかしくなります。
ここまで設定しておけば安心です。あとは設定ではないのですが、なるべく草木を減らす・地形の起伏を小さくするなどすると更に負荷を低減させることができます。
ライティングのベイク時間を短縮する方法
さて、次はライティングのベイク時間についてです。一般的にライティングのベイク(=つまり、動かない部分の光の当たり方や影をテクスチャ化すること)は時間のかかる処理です。巨大&たくさんの草木が乗っているTerrainならなおさら時間がかかりそうだ、というのはご想像の通りです。
しかし、幸いこちらも設定次第で大幅にベイク時間を短縮することが可能です。ではその設定を見ていきましょう(メニューバー→「ウィンドウ」→「レンダリング」→「ライティング設定」)。
環境リフレクション
「解像度」を下げます。
ライトマップ設定
- 「○○サンプル」の値を下げます。
- 「ライトマップ解像度」の値を小さくします。
- 「アンビエントオクルージョン」のチェックをOFFにします。
これでどうなるのかというと、今回のゲームのマップではベイク時間が「35分」から「1分」になり大幅短縮されました。見た目もパッと見では全く違いが分かりません。これでベイク地獄から脱出できますね!
Terrainでマップを作る
これで設定ができたのでいよいよマップを作っていきましょう。といっても地形を作ってオブジェクトを配置するだけなので、実は説明することがほとんどありません。お好きなように作ってください。
ちなみに、今回は次のようなマップを作りました。