レベル ストリーミングの概要

ストリーミング レベルは、レベル ストリーミング ボリュームあるいはブループリントまたは C++ でプログラム的にロードすることができます。

レベル ストリーミング機能を使用すると、マップファイルをメモリへロードまたはアンロードして、プレイ中にその可視性をトグルすることができます。これにより、 ワールドをさらに小さなチャンクに分割して、ワールドの関連する部分のみがリソースを使用し、任意の時点でレンダリングされるようにすることができます。適切な処理がされると、とても大きくシームレスなレベルが作成されて、 ワールド内でプレイするプレイヤーのサイズがとても小さく感じてしまうほどです。

パーシスタント レベル

レベルをシームレスにブレンドするために、まず パーシスタント レベルを作成します。主にストリームが出入りするレベルの管理のために 使用するマスター レベルとみなされます。

ストリーミング レベル

ストリーミング レベルは Levels ウィンドウ で管理します。パーシスタント レベルをオーバーラップまたはオフセットすることで、さらに大きいワールドを作成することができます。各ストリーミング レベルは
[Always Loaded (常にロード)] または [Blueprint (ブループリント)] に設定することができます。この設定は、サブレベルを右クリックして表示される [Levels (レベル)] ウィンドウで切り替えることができます。

ストリーミング レベルを [Always Loaded (常にロード)] に設定した場合、パーシスタント レベルも一緒にロードされます。同時にパーシスタント レベルとして表示もされます。 ブループリントまたは C++ から送られたロード / アンロード要求、および割り当てられたストリーミング ボリュームを無視します。このタイプのサブレベルは、アーティスト同士が邪魔することなく同時に共同作業ができるように、 通常はパーシスタント レベルで複数の「レイヤー」にするためにコンテンツの分割に使われることが多いです。このワークフローの詳細は、 「複数のレベルを管理する」を参照してください。ゲームでは、ゲームがパーシスタント レベルを変更しない限り、Always Loaded サブレベルは決してストリーミングされません。

パーシステントレベルのみ

レベルへストリーミング後

ダイナミック ストリーミング メソッド

Blueprint ストリーミング タイプのあるストリーミング レベルは実際、レベル ストリーミング ボリューム、ブループリント、C++ コードで制御することができます。これらのレベルは、 動的にロード / アンロードすることができます。

レベル ストリーミング ボリューム

レベル ストリーミング ボリューム を使うとレベル ストリーミングがとても簡単になります。発想はシンプルです。視点がレベルと関連づいているレベル ストリーミング ボリューム内にあるかどうかによって、 ストリーミング レベルに対するロード / アンロードのリクエストが発行されます。

具体的には、レベル ストリーミング ボリュームは 2 通りの使い方があります。

  • ゲーム でレベル ストリーミング ボリュームを使う場合、プレイヤーの視点がボリューム内にあればレベルがロードし、プレイヤーの視点がボリューム外にあればアンロードします。

  • エディタ でレベル ストリーミング ボリュームを使う場合、パースペクティブ ビューポート カメラの位置に合わせてレベルを自動的に表示 / 非表示にしてレベル ストリーミングをプレビューすることができます。

ボリューム ベースのレベル ストリーミングは使い方が簡単な上にスクリプト処理が必要ないので、レベル ストリーミングの制御には理想的です。さらに、ボリューム ベースはスクリプト処理に比べてはるかに管理が容易です。 システムのロード要求が変化しても、ストリーミング ボリュームの大きさを変更すればレベルのロード / アンロードの挙動を修正できます。

スクリプト レベル ストリーミング

レベルのロード / アンロードをより複雑な設定にしたい場合は、ドアを解除する上記の例と同様に、 レベルのロード / アンロードに対してブループリントあるいは C++ ロジックを設定することができます。主要な機能は Load Stream LevelUnload Stream Level です。ロードするレベルを名前で指定します。

Load Stream LevelUnload Stream Level の他に、Get Streaming Level 関数を使うと、ストリーミングの挙動をさらに動的にすることができます。実際のレベル ストリーミング オブジェクトへのアクセスが可能になるので、 そのステートの修正とクエリが可能になります。Create Instance と一緒に使えば、特定のサブレベルの作成とストリーミングが可能になります。 これらのコピーにトランスフォームを適用し、パラメータを送れば、プロシージャルなワールドを作成することができます。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル