레벨 스트리밍 볼륨

플레이어 시점에 따라 레벨의 스트리밍을 제어하는 데 사용되는 Level Streaming Volume, 레벨 스트리밍 볼륨 안내서입니다.

Windows
MacOS
Linux

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

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

레벨 스트리밍 볼륨 관련 자세한 내용은 레벨 스트리밍 볼륨 문서를 참고하세요.

프로퍼티

설명

Streaming Levels

스트리밍 레벨 - 볼륨에 영향받는 레벨을 표시합니다.

Editor Pre Vis Only

에디터 미리보기 전용 - 스트리밍 볼륨이 에디터 스트리밍 레벨 미리보기 전용인지 나타냅니다.

Disabled

비활성화 - true 면 이 스트리밍 볼륨은 스트리밍 볼륨 코드에서 무시됩니다. 레벨 스트리밍 볼륨을 레벨에서 연결 해제하지 않고 비활성화시키거나, 레벨의 스트리밍 제어를 블루프린트 / 볼륨 스트리밍 토글 전환할 때도 사용됩니다.

Streaming Usage

스트리밍 용도 - 볼륨을 어디에 사용하는지 결정합니다. 예: 로드 제어, 로드 및 표시여부, 표시여부만 (로드시 블록).

스트리밍 볼륨에 레벨 연결

볼륨 기반 레벨 스트리밍 작동방식은 다음과 같습니다: 각 스트리밍 레벨은 일정한 세트의 레벨 스트리밍 볼륨을 연결할 수 있습니다. 각 프레임마다 엔진에서는 각 레벨에 대해 플레이어 시점이 그 레벨에 연결된 레벨 스트리밍 볼륨 안에 있는지 확인하는 작업을 반복 처리합니다. 시점이 최소 하나의 레벨 스트리밍 볼륨 안에 있으면, 해당 레벨을 로드하라는 요청을 합니다. 시점이 모든 레벨 스트리밍 볼륨 밖에 있으면, 레벨을 언로드 하도록 마킹합니다.

중요 디테일

  • 모든 레벨 스트리밍 볼륨은 반드시 퍼시스턴트 레벨 안에 존재해야 합니다. 다른 레벨에 들어있는 레벨 스트리밍 볼륨은 레벨 스트리밍에 사용할 수 없으며, 그런 경우 맵 오류 검사를 할 때 경고가 납니다.

  • 레벨에 연결된 스트리밍 볼륨이 있는 경우, 해당 레벨을 스트리밍하는 다른 방법은 정상 작동하지 않습니다.

  • 하나의 레벨 스트리밍 볼륨이 다수의 레벨에 영향을 끼칠 수 있습니다. 마찬가지로, 하나의 레벨이 다수의 레벨 스트리밍 볼륨에도 영향을 끼칠 수 있습니다.

  • 볼륨 기반 스트리밍 방식은 분할 화면에서 작동합니다. 모든 로컬 플레이어의 시점을 고려한 후 로드/언로드 요청이 내려집니다.

스트리밍 볼륨 구성 테스트

볼륨 기반 레벨 스트리밍은 타겟 플랫폼의 게임 내에서 테스트하는 것이 매우 중요합니다. 에디터에서 플레이 (PIE) 모드에서의 스트리밍은 로드/언로드 발생 지점이 표시되기는 하지만, 실제 게임내 로드/언로드를 제대로 반영하지는 못합니다. 왜냐하면 PIE 에서는, 레벨은 이미 메모리 안에 있으므로, 레벨을 "로드"한다는 것은 단순히 즉시 숨김 해제한다는 뜻이기 때문입니다.

타겟 플랫폼에서 독립형 게임으로 레벨을 실행해 보는 것은, 스트리밍 구성이 정상 작동하는지 확인하는 데 있어서 매우 중요합니다. 참고로 일부 플랫폼에서는, 레벨 스트리밍에 몇 초씩 걸릴 수도 있습니다. 레벨 스트리밍 볼륨 크기를 적당히 조절하여, 플레이어가 레벨에 도달할 때 쯤에는 로드가 끝날 수 있도록 하세요. 레벨 로드 작동방식은 레벨에 연결된 레벨 스트리밍 볼륨 크기를 조절하여 변경할 수 있습니다. 볼륨을 키우면 연결된 레벨을 로드는 일찍 언로드는 늦게 하도록 하는 반면, 볼륨을 줄이면 로드는 늦게 언로드는 일찍 하도록 합니다.

미리보기용 레벨 스트리밍 볼륨

레벨 스트리밍 볼륨은 Editor Pre Vis Only (에디터 미리보기 전용) 옵션을 설정하여 에디터 시각화 전용으로 만들 수 있습니다. 이런 식으로, 볼륨 기반 레벨 스트리밍은 에디터 미리보기는 물론 그와 동시에 다른 게임내 스트리밍 방식을 사용하도록 할 수도 있습니다.

레벨 스트리밍 볼륨 비용

매 프레임마다 UWorld::ProcessLevelStreamingVolumes 는 각각의 스트리밍 레벨을 대상으로 반복 처리하여, 로컬 플레이어가 어느 한 레벨에 연결된 볼륨 안에 있는 경우 해당 레벨의 로드를 시작합니다. 마찬가지로 모든 로컬 플레이어가 모든 볼륨 밖에 있는 경우 레벨 언로드를 시작합니다.

UWorld::ProcessLevelStreamingVolumes 에서 동시 간섭을 처리하는 방식은 다음과 같습니다: 각 레벨에 대해 가장 최근에 플레이어가 들어있던 볼륨을 캐시에 담습니다. 이렇게 캐시에 담은 레벨을 먼저 검사하여, 플레이어가 있거나 돌아올 레벨을 빠르게 받을 수 있도록 합니다.

어떤 모양의 볼륨도 괜찮습니다만, 확실한 것은 작을 수록 좋습니다. 레벨 스트리밍 볼륨 비용 상한선은 언로드된 레벨에 연결된 레벨 스트리밍 볼륨 수의 합으로 추정할 수 있습니다.

레벨 스트리밍 퍼포먼스 모니터링을 위한 "Streaming" 통계 그룹 아래에는 두 가지 통계가 존재합니다. "Streaming Volumes" 통계는 프레임 당 플레이어 시점에 대해 테스트한 레벨 스트리밍 볼륨 수를 기록하고, "Volume Streaming Tick" 통계는 프레임 당 UWorld::ProcessLevelStreamingVolumes 에서 소모된 시간을 기록합니다.

언로드 요청에 히스테리시스 추가

플레이어가 레벨 스트리밍 볼륨 경계를 앞뒤로 왔다갔다 움직이면 불필요한 로드/언로드 요청이 발생합니다. 이러한 문제의 처리를 위해, 언로드 요청에 히스테리시스(hysteresis, 대기시간)를 추가합니다. 로드 요청은 가급적 빠르게 로드를 하는 것이 좋으므로 히스테리시스를 추가하지 않습니다.

언로드 히스테리시스 양은 레벨 창 에서 스트리밍 레벨의 Min Time Between Volume Unload Requests (언로드 재요청 대기 시간) 옵션으로 변경할 수 있습니다. 언로드 히스테리시스 기본값은 2.0 초입니다.

레벨 스트리밍 볼륨 끄기

레벨 스트리밍 볼륨에 bDisabled 라는 프로퍼티가 있습니다. true 로 설정된 볼륨은 에디터와 게임 양쪽에서 코드에 무시됩니다. bDisabled 를 통해 레벨에 연결된 레벨 스트리밍 볼륨을 제거하지 않고도 비활성화시킬 수 있습니다.

bDisabled 옵션이 유용하게 쓰이는 경우라면, 스트리밍 레벨로 제어되는 레벨로 나가는 문이 있다고 칩시다. 스트리밍 볼륨은 문 너머까지 확장되어 있어, 플레이어가 문에 근접하여 열 때 쯤이면 스트림 인 될것입니다. 하지만 애초에 문은 잠겨있고, 플레이어가 레벨의 다른 부분에서 목표를 완수해야지만 잠긴 문이 열리도록 합니다. 그래서 스트리밍 볼륨은 문 너머까지 확장시켜 두었어도, 문 반대편에 있는 레벨은 실제로 열기 전까지는 스트림 인 되지 않도록 하는 것이 좋습니다.

블루프린트와 C++ 어느 것으로도 레벨 스트리밍 볼륨 의 활성화 상태를 전환할 수 있습니다.

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼