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

プレイヤーの視点に合わせてレベルのストリーム入力を制御するボリュームの使用方法

Choose your operating system:

Windows

macOS

Linux

レベル ストリーミング ボリューム (Level Streaming Volume) レベル ストリーミング プロセスを支援するために使用します。また、プレイヤーのボリュームの出入りに合わせてレベルがメモリに入出力される際、レベルを簡単にカプセル化および制御できるようにします。

以下の画像のように、 [Details (詳細)] パネルからプロパティを調整すれば、レベル ストリーミング ボリュームのレベル ストリーミング処理方法を調整できます。

プロパティ

説明

Streaming Levels

ボリュームの影響を受けるレベルを表示します。

Editor Pre Vis Only

ストリーミング ボリュームをエディタ ストリーミング レベルのプレビズ用にのみ使用するかを判断します。

Disabled

true の場合、ストリーミング ボリュームはストリーミング ボリューム コードで無視されます。
レベルから切り離さないで Level Streaming Volume を無効化するか、またはブループリントとボリューム ストリーミング間でのレベルのストリーミングの切り替えのためにも使用されます。

Streaming Usage

ボリュームを何に使うのか、ロードの制御、ロードと可視性または可視性のみなのか (ロード時にブロック) などを判断します。

Streaming Volume とレベルの関連づけ

ボリューム ベースのレベル ストリーミングは、以下のように使用します。各ストリーミング レベルは レベル ストリーミング ボリュームと関連づけることができます。フレームごとに、エンジンは各レベルをイタレートし、 プレイヤーの視点がそのレベルに関連づいているレベル ストリーミング ボリューム内にあるかを確認します。視点が少なくとも 1 つのレベル ストリーミング ボリューム内にあれば、 そのレベルのロード開始要求が発行されます。視点がすべてのレベル ストリーミング ボリュームの外にある場合、レベルはアンロードとしてマークされます。

重要な詳細情報

  • ストリーミング ボリュームは、すべてパーシスタント レベルに存在しなければなりません。他のレベルに存在するレベル ストリーミング ボリュームは、レベル ストリーミングには使用することはできません。 マップがエラー状態と判断されると警告が出されます。

  • レベルに関連付けられたストリーミング ボリュームがある場合、その他のレベル ストリーミングの方法では正しく動作しません。

  • 1 つのレベル ストリーミング ボリュームが複数のレベルに影響を与えることができます。同様に、1 つのレベルだけが複数のレベル ストリーミング ボリュームから影響を受けることもできます。

  • ボリューム ベースのストリーミングは分割画面で機能します。すべてのローカル プレイヤーの視点は、ロード / アンロードのリクエスト発行前に考慮されます。

ストリーミング ボリューム設定をテストする

ボリューム ベースのレベル ストリーミングをターゲットとするプラットフォーム上のゲームでテストすることは非常に重要です。 Play in Editor モード (PIE) でのストリーミングはロード / アンロードが行われる 場所を示しますが、 PIE でのストリーミングは、実際のインゲームでのロード / アンロードとは異なります。なぜなら、PIE ではレベルはすでにメモリ内にあるため、 レベルを「ロードすること」はレベルの非表示を解除するだけの瞬間的な動作になります。

ターゲットとするプラットフォーム上のスタンドアローンでレベルを実行することは、ストリーミング設定がきちんと動作していることの確認をする上で非常に重要になります。プラットフォームが複数の場合は、 レベル内のストリーム処理に数秒かかることがあることに留意してください。レベル ストリーミング ボリュームを適切な大きさに調整して、プレイヤーの到達時までにレベルがロードされるようにします。レベル ロードのビヘイビアの修正は、 レベルに関連付けられたレベル ストリーミング ボリュームの大きさを変更して行います。ボリュームを大きくすると、関連付けられたレベルはロードが先でアンロードが後になります。 逆にボリュームを小さくすると、ロードが後でアンロードが先に行われます。

レベル ストリーミング ボリュームを使ってプレビジュアル化をする

レベル ストリーミング ボリューム上に Editor Pre Vis Only フラグを設定すれば、レベル ストリーミング ボリュームをエディタ プレビューのみとしてマークすることができます。こうすると、インゲーム ストリーミング用に別のメソッドを使いながら、 ボリューム ベースのレベル ストリーミングを使ってエディタのプレビジュアル化ができます。

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

フレームごとに UWorld::ProcessLevelStreamingVolumes はそれぞれのストリーミング レベルをイタレートし、 各レベルに関連付けられたボリュームのどれかにローカル プレイヤーがいる場合、そのレベルはロードを開始します。同様に、すべてのローカル プレイヤーがすべてのボリュームの外にいる場合、レベルはアンロードを開始します。

UWorld::ProcessLevelStreamingVolumes は次の方法で一貫性を利用します。レベルごとに、一番最後にプレイヤーが入ったボリュームをキャッシュします。キャッシュされたボリュームを最初にチェックして、 プレイヤーが出入りするレベルをすぐに許可します。

ボリュームはどんな形状でも構いませんが、少ない方が良いことは確かです。レベル ストリーミング ボリュームの負荷の上限は、 アンロードされるレベルに関連付けられた レベル ストリーミング ボリュームの合計と近似されます。

「Streaming」統計グループの中にある 2 種類の統計で、レベル ストリーミングのパフォーマンスをモニタリングすることができます。「Streaming Volumes」統計は、フレームごとにプレイヤーの視点に対してテストされたレベル ストリーミング ボリューム数を追跡します。 「Volume Streaming Tick」統計はフレームごとに UWorld::ProcessLevelStreamingVolumes にかかった時間の合計を追跡します。

ヒステリシスをロード リクエストに追加する

プレイヤーがレベル ストリーミング ボリュームの境界を行ったり来たりすると、誤ったロード / アンロード リクエストを発行する原因となります。それを防ぐために、 アンロード リスエストにヒステリシスを追加します。レベルをロードする必要がある時は常に緊急を要しているので、ロード リクエスト用のヒステリシスは存在していません。

アンロードされるヒステリシスの量は レベル ウィンドウ のストリーミング レベルの Min Time Between Volume Unload Requests プロパティを変更して調整することができます。 ヒステリシスのアンロードはデフォルトで 2.0 秒です。

レベル ストリーミング ボリュームを無効にする

レベル ストリーミング ボリュームには bDisabled と呼ばれるプロパティがあります。これを true に設定すると、ストリーミング ボリューム コードによって、インゲームとエディタ内の両方でボリュームが無視されます。 bDisabled は、レベルとの関連付けを解除せずにレベル ストリーミング ボリュームを無効にします。

bDisabled フラグが便利なケースとしては、ストリーミング ボリュームでストリーミングを制御するレベルにドアがつながることを想像してください。ストリーミング ボリュームはドアを通り過ぎて左方向に延びるので、 プレイヤーがドアに到達して開けるまでにレベルはストリームされます。ただし、最初はドアは鍵がかかっています。 プレイヤーがレベルの別の個所でオブジェクトに到達すると鍵が解除されます。従って、ストリーミング ボリュームが伸びてドアを通りこしても、ドアの鍵が実際に解除される (「開けることができる状態」) までは、 ドアの反対側のレベルはストリームインしたくありません。

ブループリントでも C++ でも、 レベル ストリーミング ボリューム の無効ステートの切り替えができます。

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