今回は、レベルの概念について紹介します。
Unreal Engineでは、必ず使用する機能なので、重要な部分でありながら、概念を理解するのが少し難しい部分かと思います。
特にBlednerやMayaなどを既に使用されている方は、シーンファイルと似つつも、異なるものなので混乱する部分でもあると思います。
UE5で追加されたWorld PartitionやOne File Per Actorなどにも触れながら解説します。
レベル とは?
レベルは、キャラクターや背景などの3Dオブジェクトやエフェクト、ライトなどを配置する場所、空間です。
ゲームで言うとマップに当たります。
このマップに前述したようにあらゆるオブジェクトやライトなどのアクターを配置し、ゲームのマップ、世界を作っていきます。
例えば、ゲームのマップを移動する際(外から家の中に入ったりなど)にローディング中になることがあるかと思います。
これは、外の世界と家の中を別のマップ(レベル)で作成されており、「外の世界のレベル」と「家の中のレベル」を切り替える作業をしています。
※全てのロードが必ずしもマップを切り替えるものとは限りません。他にも色々なデータを読み込んだりしています。
ちなみに、レベルを読み込むことをロードと言います。
ロードの逆は、アンロードです。
なので、上記の外から家の中に入る例だと、「外の世界のレベル」をアンロードし、「家の中のレベル」をロードするというイメージです。
このようにゲーム、そしてUE5では、一つのレベルで全ての世界、マップ作成するのではなく、複数のレベルに分けて、世界を構築していきます。
また、BlednerやMayaなどのDCCツールを使っている方であれば、わかるかと思いますが、シーンファイルに近いです。
ただ、DCCツールでの、シーンファイルは1つしか開けませんが(リファレンスは別として)、UE5では、サブレベル(詳しくは、後述)という概念で複数同時に読み込むことができます。
UE5でのレベル
UE5を開くと必ず、何かしらのレベルを開いています。
例えば、Starter Contentを含んで(テンプレートはなしで)プロジェクトを作成すると、このような画面になるかと思います。
これは、Content/StarterContent/Mapsの中にある「Minimal_Default」というレベルが開かれているからです。
このプロジェクトを開いたときに開かれるレベルは、Project Settings→Maps&Modes→Editor Startup Mapで設定することができます。
レベルアセットと作成方法
レベルも他のアセットと同様にContent Browserにアセットとして保存されます。
このようにひとつのUE5のプロジェクトに何個も作成、保存しておくことができます。
ダブルクリックで別のレベルを開くことができます。
新たにレベルを作成したい場合は、File→New Levelでも作成することができます。
Empty Levelは、何もない空のレベルで、その他のDefaultなどはライトなどがあらかじめ配置されたレベルです。
また、Content Browserで右クリックして、レベル作成することができます。
こちらは、Fileから作成した場合の「Empty Level」と同じものが作成されます。
パーシスタントレベルとサブレベル
レベルをロードする際に、「パーシスタントレベル」と「サブレベル」という2種類のどちらかで扱うことができます。
パーシスタントレベルは、必ず読み込まれているレベルで、一つしか開く(ロードする)ことができません。
Content Browserでレベルをダブルクリックして開いた際は、そのレベルは、パーシスタントレベルとしてロードされています。
サブレベルは、パーシスタントレベルの子供のようなもので、パーシスタントレベルは、複数のサブレベルを持つことができます。
そして、サブレベルもげーム中に個々で随時、表示したり、非表示にしたりすることができます。これをストリーミングと言います。
上記の画像のLevelsタブは、Windowメニューから開くことができます。
サブレベルの使い方
レベルタブにレベルをD&Dすることでサブレベルとして読み込むことができます。
または、レベルタブからLevels→Create New…でも新たなレベルを作成し、サブレベルとして読み込むことができます。
ちなみにサブレベルがサブレベルを持つことはできないので、サブレベル下にサブレベルはできません。
プレイすると、サブレベルが表示されない
サブレベルを読み込み、アクターなどを配置し、いざプレイすると…
サブレベルが読み込まれない!表示されない!
ということがあるかと思います。
これは、デフォルトのストリーミングの設定がブループリントでストリーミング、ロードする設定になっているからです。
なので、自分でブループリントでサブレベルをストリーミングする必要があります。
これは、メモリなどを節約するために、任意のタイミングでサブレベルをロードさせることができるためです。
しかし、常にサブレベルをストリーミングさせておきたい場合や一旦、BPを使わずにロードしたい場合は
該当のサブレベルを右クリックし、Change Streaming Method→Always Loaded に設定することで常にロードさせておくことができます。
サブレベルの用途
では、サブレベルはどのような時に使うのでしょうか?
- 広大なマップを作成する際のメモリの制限
- 複数人で同じプロジェクトを作業する際にバッティングにしないようにするためなどの管理用途
- ライティングの切り替え
などなど
これだけではありませんが主にこういった用途があげられるので、順番に説明していきます。
正直、上記の用途は、UE4での話で、UE5では新たな機能が追加され、あまり必要としなくなっています。
そういったことにも触れつつ、一応、解説していきます。
広大なマップを作成する時
ひとつは、外や家の中でマップを分けるというのもありますが、広大なマップを作るときなども、1つのマップに多くの背景オブジェクトなどを置くのは、メモリ的に厳しいことがあります。
そういった場合に複数のレベルに分けて、メモリに載るように作成します。
しかし、UE5では、World Partitionという機能が登場したので、上記のように地続きの広大なマップをサブレベルで分ける必要性は減りました。
World Patitionを使えば、一つのレベルに地形や背景を作成しても、UE5がグリッドに分けてくれます。
そして、このグリッド毎にサブレベルのようにストリーミングすることができるため、ユーザーはわざわざ自分でサブレベルに分けて背景を作成しなくても良くなりました。
また、複数のアクターで構成しているような建物を1つレベルに入れて作成し、World Partitionでロースすることなどができる Level Instance という機能もあります。
その使い方は、こちらで解説しています。
複数人で同じプロジェクトで作業する時
仕事では、複数人が1つのUE5プロジェクトを触ることがほとんどだと思います。
そして、プロジェクトを共有するのにGitやPerforceなどのバージョン管理ソフトを使うことも多いかと思います。
背景アセットをレベルに配置する人、キャラクターを配置する人、ライティングする人などが1つのレベルで作業すると、レベルは、バイナリファイルなので、複数人が同時に作業し、保存して、サーバーに上げることができません。作業がバッティングすることになります。
そういったときにサブレベルで分けておくことでバッティングしないようにします。
例えば、背景、キャラクター、ライティング、エフェクトなど各セクションで分けることが多いです。
パーシスタントレベルには、基本的に何も配置しない場合もあります。
しかし、UE5では、One File Per Actor というシステムが導入されました。
今まではレベル内のアクターを配置や移動などした際は、そのレベルを保存しなくてはいけなかったのですが、このシステムがあることでレベルではなく、個々のアクターで配置の情報を保存することができ、レベル自体を保存しなくても大丈夫になりました。
なので、上記のようにキャラクターや背景毎にレベルを分けないでも済むようになりました。
もちろん、管理しやすくするために上記のように分けても問題ありません。
ライティングの切り替え(ライティングシナリオ)
同じシーンで、昼と夜のライティングを切り替えたい時などは、ライティングシナリオという機能も使うことができます。
これは、ライティングごとにサブレベルで分けておき、ライティングごとにライトベイクをしておき、プレイ中に切り替えられるというものです。
ただ、こちらもこれまでは、処理負荷の問題や綺麗なGIが得られないなどの理由で、ライトベイクが必要でしたが、UE5では、動的で安価なLumenがあるので、今後は、昼と夜をシームレスに、かつクオリティ高く遷移できる、完全に動的なライティングの変更も増えてくるのではないかと思います。
まとめ
今回は、レベルについて紹介しました。
この記事で重要な部分は、下記の3つです。
- レベルは、3Dモデルやライトなどのアクターを配置する空間で、ゲームでいうマップ
- サブレベルは、広大なマップなどを作る際(以前は)やライティングなど毎にレベルを分ける際に使い、逐一、ロードやアンロードなどができるマップ
- World Partitionは、広大なマップを作る際に、UE5が自動でグリッドで分けてくれ、グリッド毎にストリーミングできる機能
レベルは、UE5を使っていると、必ず使う機能でありながら、最初は、中々理解するのが難しい部分ではあると思います。
ただ、上記のことを頭に入れつつ、使っていくうち、だんだんと理解できるようになっていくかと思います。
特にサブレベルの概念は、難しい部分ではあると思いますが、UE5では、使わなくても大丈夫な感じになってきているので、なんとなく覚えておく程度でOKだと思います。
最後までご覧頂きありがとうございました!
コメント
[…] Unreal Engine 4 を使いこなすためのリソース完全版 メタタイムCG 【UE5】レベル とは?概念やサブレベルなどを解説 レベル、サブレベルの概念や使い方について紹介します。 Unreal […]