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

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

[INCLUDE:understanding-the-basics/actors/actors-reference/volume-actors#LSV]

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

プロパティ

説明

Streaming Levels

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

Editor Pre Vis Only

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

Disabled

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

Streaming Usage

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

ストリーミング ボリュームとレベルの関連づけ

ボリューム ベースのレベル ストリーミングは以下のように使用します。各ストリーミング レベルはレベル ストリーミング ボリューム一式と関連づけることができます。フレームごとに、エンジンは各レベルをイタレートし、 プレイヤーの視点がそのレベルに関連づいているレベル ストリーミング ボリューム内にあるかを確認します。視点が少なくとも 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 のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル