19
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

お題は不問!Qiita Engineer Festa 2023で記事投稿!

【Unity】Terrainをオープンワールド化するための公式分割ツール TerrainToolbox の使い方【OpenWorld】【Terrain】

Last updated at Posted at 2023-07-20

TL;DR

  • Unityでオープンワールドゲームを作るならTerrainの分割が必須
  • 昔は有志のAssetしかなかったが、現在は公式がサポート
  • Terrainを分割してロードすることで負荷を低減させることが可能

概要

UE5だと WorldPartition によってGrid単位でObjectのload/unload を管理することができます。
これにより、必要最低限のGridのリソースのみがメモリに載るため、パフォーマンスを稼ぐことが可能になります。
このような機能が最初から公式でサポートしているがために、UEではオープンワールドゲーム開発がしやすい環境があります。

一方Unity では一昔前までは地形モデルであるTerrain が生成しっぱなしで、分割・編集が非常に難しく、有志が公開しているツールを用いない限り分割ができず、巨大な1つのマップとして表示するしかありませんでした。
これにより、ただでさえPCゲームでなんとか動かせる状態なため、スマホ等モバイル環境ではTerrainを使うことが禁忌になるくらい重いため、自作のMeshによる地形データを作るしかありませんでした。

しかし、最近ではUnity公式に提供されている TerrainToolbox により、Terrainの地形メッシュを任意サイズに分割→Prefab化をしてくれるようになりました。

これにより、プレイヤーの位置情報に基づいて必要なPrefab のみLoadすることで地形データのランタイムのパフォーマンスを稼ぐことが可能になりました。

Terrain Toolbox

Unity2019 あたりから公式が開発してきたツールです。

Unity2021LTS・Unity2022LTS現在では、オープンワールドゲーム制作支援のためのTerrainの分割ツールがサポートされるようになりました。

導入方法

  1. ToolBar からWindow → PackageManager を選択
    スクリーンショット 2023-07-20 13.24.32.png
  2. +マーク右を選択して Unity Registry に変更
    スクリーンショット 2023-07-20 13.24.13.png
  3. 画面右上の検索バーに terrain と入力すると候補が出てくるので Terrain toolbox を選択→画面右下のInstallボタンを選択
    スクリーンショット 2023-07-20 13.24.46.png

使い方

  1. Window → Terrain → Toolbox を選択
    スクリーンショット 2023-07-20 13.29.10.png
  2. CreateNewTerrain タブを選択して一番下のCreateボタンを押してTerrain基盤を作成
    スクリーンショット 2023-07-20 13.29.22.png
  3. HierarchyにTerrainが生成されているので Terrainコンポーネント が付属しているObjectを選択して、Terrainを自由に編集します。
  4. 編集後、再度ToolBox ウィンドウに戻り TerrainUtilities タブを選択します。
  5. SplitTiles の数値を2の冪乗に設定してSplitボタンを押す(1辺の分割数を設定します)
    スクリーンショット 2023-07-20 16.06.00.png
  6. 成功するとHierarchy 及び Assets/Terrain/ 以下にObject/Assetファイルが生成されます
    スクリーンショット 2023-07-20 16.33.26.png
    スクリーンショット 2023-07-20 16.33.33.png

オープンワールドへの適応

先ほど生成した分割Terrainファイルを元に1アセット 1Prefab/1Scene に設定します。
(現状公式ツール等はないのでEditor拡張等で自動化することをおすすめです)

そして、作ったPrefab/Scene を動的にLoad/Unload することによってオープンワールド化ができます。

自作でシステムを構築してランタイムでロードするDemoを作ってみました。
(アンロードは実装してません)

まとめ

オープンワールドゲームを作るには必須のテクニックになっています。
Terrainを用いる場合は今回紹介したツールをうまく利用しましょう。

19
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?