레벨 스트리밍 볼륨은 레벨 스트리밍 프로세스를 보조하는 데 사용됩니다. 레벨 캡슐화는 물론, 플레이어의 볼륨 출입에 따라 메모리에서의 레벨 스트림 인/아웃 시기를 간단히 제어할 수 있습니다.

아래 그림과 같이 디테일(Details) 패널에서 프로퍼티를 조정하여 레벨 스트리밍 볼륨의 레벨 스트리밍 처리 방식을 조정할 수 있습니다.

프로퍼티 설명
스트리밍 레벨(Streaming Levels) 볼륨의 영향을 받는 레벨을 표시합니다.
에디터 사전 시각화 전용(Editor Pre Vis Only) 스트리밍 볼륨을 에디터 스트리밍 레벨의 시각화에만 사용할지를 결정합니다.
비활성화됨(Disabled) True인 경우, 스트리밍 볼륨 코드가 이 스트리밍 볼륨을 무시합니다. 또한, 레벨과의 연결을 끊지 않으면서 레벨 스트리밍 볼륨을 비활성화하거나 레벨 스트리밍 컨트롤을 블루프린트와 볼륨 스트리밍 간에 토글하는 용도로도 사용됩니다.
스트리밍 사용(Streaming Usage) 볼륨의 용도를 결정합니다(예: 로딩, 로딩과 비저빌리티, 비저빌리티(로드 시 차단) 중 어느 것을 제어할지 결정).

스트리밍 볼륨을 레벨과 연결하기

볼륨 기반 레벨 스트리밍은 다음과 같은 방식으로 작동합니다. 각 스트리밍 레벨은 한 세트의 레벨 스트리밍 볼륨과 연결될 수 있습니다. 매 프레임마다 엔진은 각 레벨을 반복작업하고 플레이어의 뷰포인트가 해당 레벨과 연관된 레벨 스트리밍 볼륨 안에 있는지 확인합니다. 플레이어의 뷰포인트가 최소 하나의 레벨 스트리밍 볼륨 안에 있는 경우, 해당 레벨의 로딩을 시작하도록 요청합니다. 뷰포인트가 모든 레벨 스트리밍 볼륨의 밖에 있는 경우, 레벨에는 언로딩이 예약됩니다.

중요 정보

스트리밍 볼륨 설정 테스트하기

볼륨 기반 레벨 스트리밍을 타깃 플랫폼의 게임에서 테스트해보는 것은 매우 중요합니다. 에디터에서 플레이(Play in Editor, PIE) 모드에서 스트리밍하면 로딩/언로딩이 발생하는 위치를 보여줍니다. 하지만 에디터에서 플레이(PIE) 스트리밍이 실제 게임 속 로딩/언로딩을 제대로 반영하지는 않습니다. 왜냐하면 PIE 모드에서는 레벨이 이미 메모리에 있으므로 레벨을 '로딩'하는 것은 단지 숨겼던 레벨을 즉시 보여주는 동작일 뿐이기 때문입니다.

스트리밍 설정이 제대로 작동하는지 확인할 때 타깃 플랫폼의 독립형 게임으로 레벨을 실행하는 것은 매우 중요합니다. 플랫폼에 따라 레벨에 스트리밍을 받는 작업은 몇 초 정도 걸릴 수 있습니다. 플레이어가 도달할 수 있을 만한 시간에 레벨이 로드되도록 레벨 스트리밍 볼륨의 크기를 적당히 조절해야 합니다. 레벨 로딩 동작은 레벨과 연관된 레벨 스트리밍 볼륨 크기를 조정하여 수정할 수 있습니다. 볼륨을 키우면 연관된 레벨이 빨리 로드되었다가 늦게 언로드되며, 볼륨을 줄이면 늦게 로드되었다가 빨리 언로드됩니다.

사전 시각화용 레벨 스트리밍 볼륨

레벨 스트리밍 볼륨에 에디터 사전 시각화 전용 플래그만 설정하면 레벨 스트리밍 볼륨을 에디터 사전 시각화 전용으로 예약할 수 있습니다. 이 방법으로 볼륨 기반 레벨 스트리밍을 에디터 사전 시각화용으로 사용하면서 동시에 다른 스트리밍 방법을 사용하여 게임 안으로 스트리밍을 받을 수도 있습니다.

레벨 스트리밍 볼륨 비용

각 프레임에서 UWorld::ProcessLevelStreamingVolumes 가 각 스트리밍 레벨을 반복작업하며, 각 레벨에서 로컬 플레이어가 해당 레벨과 연관된 볼륨 안에 있으면 레벨을 로드하기 시작합니다. 마찬가지로 모든 로컬 플레이어가 모든 볼륨의 밖에 있으면 레벨을 언로딩하기 시작합니다.

UWorld::ProcessLevelStreamingVolumes 는 다음과 같은 일관성 있는 방식으로 활용합니다. 각 레벨마다 가장 최근에 플레이어를 포함했던 볼륨을 캐시합니다. 이렇게 캐시된 볼륨부터 먼저 확인함으로써 플레이어가 현재 있거나 돌아온 레벨이 재빨리 허용되게 만듭니다.

볼륨의 모양은 무엇이든 괜찮지만 숫자는 당연히 적을수록 좋습니다. 레벨 스트리밍 볼륨의 비용 상한선은 언로드된 레벨과 연관된 레벨 스트리밍 볼륨 수의 합계로 근사치를 계산할 수 있습니다.