Language:
Page Info
Engine Version:
The translation of this page is out of date. Please see the English version for the latest version of the page.

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

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

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

Level Streaming Volumes については レベル ストリーミング ボリューム を参照してください。

プロパティ

説明

Streaming Levels

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

Editor Pre Vis Only

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

Disabled

true の場合、ストリーミング ボリュームはストリーミング ボリューム コードで無視されます。

レベルから切り離さないで Level Streaming Volume を無効化するか、または Blueprints と Volume Streaming 間でのレベルのストリーミングの切り替えのためにも使用されます。

Streaming Usage

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

Streaming Volume とレベルの関連づけ

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

重要な詳細情報

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

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

  • たった 1 つの Level Streaming Volume でも複数のレベルに影響を与えることができます。同様に、たった 1 つのレベルでも複数の Level Streaming Volume から影響を受けることがあります。

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

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

ボリューム ベースのレベル ストリーミングをターゲットとするプラットフォーム上のゲームでテストすることは非常に重要です。Play in Editor モード (PIE) でのストリーミングはロード / アンロードが行われる

場所

を示しますが、 PIE でのストリーミングは、実際のインゲームでのロード / アンロードとは異なります。なぜなら、PIE ではレベルはすでにメモリ内にあるため、 レベルを「ロードすること」はレベルの非表示を解除するだけの瞬間的な動作になります。

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

Level Streaming Volume を使ってプレビジュアル化をする

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

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

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

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

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

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

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

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

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

Level Streaming Volume を無効にする

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

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

ブループリントでも C++ でも、Level Streaming Volumes の無効ステートの切り替えができます。