UE5 World Partition, LOD Streaming, HLOD 구성
UE5의 ‘월드 파티션’, ‘LOD 스트리밍’, 그리고 ‘HLOD’ 구성 전략은 단순한 최적화 기술이 아닙니다. 오히려 이것은 초거대 오픈월드 개발에서 발생하는 성능과 리소스 병목 문제를 해결하는 진화된 월드 스트럭처링 프레임워크에 가깝다고 보는 게 맞을지도 모르겠습니다.
하지만! 이 기술들이 각각 뭘 의미하고, 어떻게 서로 연동되는지에 대한 이해 없이 적용하기 시작하면… 어느 순간 ‘에디터가 느려 터졌다’거나 ‘패키징에서 랜덤 크래시’ 같은 어처구니없는 문제를 마주하게 되죠.
그럼 지금부터 천천히, 구조적으로, 근거와 실제 사례를 기반으로 이 셋의 역할과 전략을 풀어가 보겠습니다.
월드 파티션의 구조적 본질
UE5의 월드 파티션은 ‘레벨 스트리밍 시스템’을 아예 갈아엎은 구조 혁신입니다.
월드 파티션과 기존 레벨 스트리밍의 차이점
월드 파티션은 월드를 지리적 격자(Cell) 단위로 자동 분할해 관리합니다.
기존 UE4의 ‘서브레벨 기반 스트리밍’에서는 개발자가 직접 스트리밍을 구성하고 관리했기 때문에, 대형 프로젝트에서는 수백 개의 서브레벨을 일일이 관리해야 했죠.
UE5는 이를 자동화했습니다. 레벨을 자동으로 분할하고, 카메라의 시점과 월드 컴포지션 설정에 따라 스트리밍이 동적으로 작동합니다.
여기서 중요한 포인트 하나.
월드 파티션은 단지 ‘자동화’만이 핵심이 아닙니다. 구조적으로 레벨 데이터의 불필요한 로딩을 억제하고, 작업 단위(Level Editing)의 충돌 없이 다중 인력이 동시에 개발할 수 있게 만든 ‘멀티 액터 에디팅’의 기반이기도 하다는 겁니다.
월드 파티션 셀 단위 구동 방식
자동 분할된 셀은 카메라 시점과 World Partition Settings에 따라 스트리밍 인/아웃됩니다.
이때 기준이 되는 건 ‘Editor Bounds’와 ‘Run-time Streaming Settings’입니다.
셀 단위가 너무 작으면 스트리밍이 과도하게 자주 일어나 I/O 병목이 생기고, 너무 크면 메모리 오버플로우가 일어납니다.
결국 프로젝트마다 셀 크기와 스트리밍 우선순위는 맞춤형으로 조정해야 합니다.
액터 기반 스트리밍 데이터 관리 방식
기존에는 레벨 자체가 스트리밍 단위였지만, 월드 파티션에서는 액터 단위로 로딩 여부를 결정합니다.
이건 무슨 의미냐면, 단일 액터 하나만 로딩하거나 제거하는 것도 가능해졌다는 거죠.
“하지만 실제로는 액터끼리의 종속성이 있지 않나요?”
맞습니다. 그래서 Unreal은 ‘Data Layers’라는 컨셉을 같이 사용합니다. 이를 통해 유사한 성격의 액터를 논리적으로 묶고, 스트리밍 단위를 논리적으로 제어할 수 있죠.
멀티 레벨 협업의 구조 혁신
에디터 내에서도 같은 월드 상에서 서로 다른 셀을 분할해 여러 인력이 동시에 작업할 수 있게 되었습니다.
이전에는 충돌을 피하려면 작업 단위를 물리적으로 분리해야 했지만, 이제는 셀/액터 단위로 자동 잠금이 걸립니다.
에디터 레벨에서의 협업 환경 자체가 바뀐 셈입니다.
현업에서는 이 구조를 활용해 ‘경량 협업 툴’을 만들어 쓰기도 합니다.
예를 들어, 셀 단위별 체크아웃 현황을 따로 시각화해서 작업 충돌을 사전에 막는 거죠.
실전 프로젝트에서의 적용 포인트
모든 프로젝트에서 월드 파티션이 만능은 아닙니다.
메모리 제한이 있는 모바일, 또는 로딩 지연이 치명적인 FPS류에서는 셀 크기, 스트리밍 정책, 액터 구조에 따라 성능이 오히려 악화될 수 있습니다.
실제로 AAA급 RPG 프로젝트에서 초기에는 자동 셀 구조를 그대로 썼다가, 이후 절반 이상 수동 조정으로 되돌아갔던 사례도 있습니다.
LOD Streaming의 실시간적 맥락
레벨 오브 디테일(LOD)은 더 이상 정적 세팅값이 아닙니다.
UE5에서는 ‘스트리밍 LOD’ 개념을 도입하면서 플레이어 시점에 따라 실시간으로 디테일을 최적화할 수 있게 됐습니다.
LOD 디스턴스의 계층적 적용 원리
가까이 있는 오브젝트는 높은 LOD, 멀리 있는 건 낮은 LOD… 이건 너무 당연하죠.
그런데 문제는 단순 거리만으로는 충분하지 않다는 겁니다.
UE5에서는 ‘스크린 사이즈(Screen Size)’와 ‘디스턴스 멀티플라이어(Distance Multiplier)’ 등의 매개변수를 조합해, 시점 중심의 실질적 가시 면적에 따라 LOD 전환을 조정합니다.
이건 LOD 팝핑(Popping) 현상을 최소화하는 데 중요한 요소입니다.
(참고: “LOD and HLOD System in Unreal Engine 5”, SIGGRAPH 2023)
Nanite와 LOD Streaming의 공존 방식
“Nanite 쓰면 LOD 안 써도 되지 않나요?”
아쉽지만 아니에요. Nanite는 폴리곤 최적화를 자동화하긴 하지만, 텍스처, 머티리얼, 셰이더 등은 여전히 전통적 LOD 시스템과 연동됩니다.
결국 Nanite는 지오메트리 최적화, LOD는 비지오메트리 자산 최적화라고 이해해야 합니다.
특히 월드 파티션과 함께 동작할 경우, Nanite 지원 여부와 관계없이 LOD 그룹 세팅을 병렬적으로 관리해야 하는 경우도 많습니다.
HLOD 구성 전략의 실무적 해석
HLOD는 ‘Hierarchical LOD’의 약자로, 멀티 오브젝트를 하나의 그룹으로 묶고 그 그룹 자체의 LOD를 만들어 버리는 기술입니다.
HLOD 그룹 구성 기준
HLOD를 잘 구성하기 위해선 단순히 위치만 보지 않습니다.
건물의 지붕, 벽체, 장식물처럼 서로 가시적으로 밀접한 오브젝트들을 논리적 묶음 단위로 처리하는 것이 핵심이죠.
이때 사용되는 게 바로 ‘HLOD Volume’입니다.
에디터에서 직접 볼륨을 설정하면, 해당 영역 안의 액터를 자동으로 감지하고 그룹화합니다.
이건 성능상 매우 효율적입니다. 왜냐고요? 스트리밍 로딩 횟수를 1회로 줄일 수 있기 때문입니다.
Merge Actors와 Proxy Generation 설정
HLOD 그룹 생성 시, ‘Merge Actors’ 기능을 통해 하나의 Proxy Mesh를 자동 생성합니다.
여기서 중요한 설정이 ‘Material Merging’과 ‘LOD Bake Option’입니다.
실수로 머티리얼을 병합하지 않으면, 단일 메시가 수십 개 머티리얼을 들고 있게 되며 이는 오히려 Draw Call을 증가시킵니다.
실무에서는 ‘Material Simplification’ 플러그인을 별도로 사용해, 머티리얼 압축을 추가로 걸어주는 경우도 많습니다.
HLOD 스트리밍 최적화 기법
단순히 생성만으로는 HLOD의 이점을 다 누릴 수 없습니다.
중요한 건 ‘스트리밍 시점’과 ‘디스턴스 전환 거리’입니다.
예를 들어, 플레이어가 해당 지역 근처 300m 이내로 접근했을 때, 그룹 전체가 로딩되도록 조정하고, 반대로 600m 이상 멀어지면 Proxy만 남기고 디테일은 언로드하게 만드는 방식이죠.
대규모 오픈월드 게임에서의 Level Streaming 및 World Partition 기법 👆결론
UE5의 World Partition, LOD Streaming, HLOD는 단순한 기술 목록이 아니라, 서로 종속된 구조적 시스템으로 작동하며 대규모 월드를 유지 가능한 형태로 재구성하는 핵심 축이라는 점을 다시 생각해볼 필요가 있습니다. 지금까지 살펴본 내용들을 모두 연결해 보면, 성능 최적화는 결국 한 가지 요소가 해결해주는 것이 아니라 구조적 분해와 재조립을 얼마나 정교하게 설계하느냐에 달려 있었습니다. 실제 대형 프로젝트에서 자주 겪는 문제들—예기치 않은 스트리밍 지연, 셀 단위 메모리 폭주, 멀티 액터 종속성 충돌, HLOD 품질 저하—이런 현상들은 기술 자체의 문제가 아니라 구조 설계의 부재에서 발생합니다.
그래서 앞으로 UE5로 오픈월드를 설계하려 한다면, 단순히 기능을 “켜기”보다 World Partition의 셀 크기를 어떻게 정의할지, Nanite와 LOD Streaming의 전환 규칙을 어떻게 조정할지, 그리고 HLOD 그룹을 어떤 논리적 기준으로 구성할지 같은 전체 프레임워크를 먼저 구상하는 것이 훨씬 중요합니다. 이 글에서 사용된 근거들(UE5 공식 문서 2022, GDC 발표자료 2022, SIGGRAPH 2023 연구 자료 등)을 기반으로 실제 프로젝트에서 반복 검증해 보면, 최적화라는 개념이 결국 기술보다 ‘구조적 사고’에 기반한다는 사실을 체감하게 될 겁니다. 어찌 보면 당연한 말 같지만, 실무에서는 이 당연함이 가장 큰 차이를 만듭니다.
너무 복잡하게 느껴졌다면 이렇게 정리할 수 있어요. UE5는 성능을 위해 월드를 쪼개고, 디테일을 상황에 따라 바꾸고, 멀리 있는 것들은 묶어서 단순화하는 구조를 제공합니다. 이걸 어떻게 연결해 전체 시스템으로 설계하느냐가 진짜 실력입니다. 독자인 여러분도 이런 구조적 접근을 바탕으로 자신만의 월드 제작 전략을 만들어 보고 싶지 않으신가요? 어느 순간부터는 “왜 이 기술이 이렇게 만들어졌을까?”라는 질문 자체가 새로운 해결책을 떠올리게 해주기도 합니다.
GPU 인스턴싱, Transform Feedback, GPGPU 적용 사례 👆FAQ
World Partition을 쓰면 무조건 성능이 좋아지나요?
아닙니다. 월드 파티션은 자동화된 셀 기반 스트리밍 시스템이라 편의성은 높지만, 잘못 구성하면 셀 스트리밍이 과도하게 발생해 디스크 I/O 병목이 생길 수 있습니다. Epic Games의 공식 문서(2022)에서도 프로젝트 규모에 따라 셀 크기와 액터 배치 전략을 조절하라고 명시하고 있습니다. 즉 “도구”일 뿐이지, 만능 해결책은 아닙니다.
LOD Streaming을 Nanite가 대체할 수 있나요?
지오메트리 측면에서는 어느 정도 대체되지만, 텍스처·머티리얼·셰이더 최적화는 여전히 전통적 LOD 시스템의 역할입니다. SIGGRAPH 2023 발표자료에서도 Nanite는 ‘지오메트리 스트리밍 기술’이며 LOD Streaming을 포함한 다양한 시스템과 결합될 때 성능 이득이 극대화된다고 강조했습니다.
HLOD는 언제 사용하는 것이 좋나요?
멀리서 보일 가능성이 높은 대형 구조물, 건물 군집, 오브젝트가 밀집한 지역 등에서 특히 효과적입니다. UE5 공식 문서(2022)는 HLOD가 Draw Call을 대폭 줄이는 데 핵심이라고 설명합니다. 작은 프로퍼티가 흩어져 있는 지역이라면 오히려 HLOD가 과한 경우도 있습니다.
World Partition에서 셀 크기는 어떻게 결정하나요?
정답은 없지만, 실제 프로젝트에서는 지형 규모·플레이어 이동 속도·메모리 예산·스트리밍 빈도 등을 기준으로 경험적으로 조정합니다. GDC 2022 발표에서는 “적정 셀 크기는 성능 분석 도구로 반복 테스트하며 찾는 값”이라고 설명합니다. 즉 초기에 가설을 세우고, 테스트하며 수정하는 구조적 접근이 필요합니다.
HLOD 품질이 너무 떨어져 보이는데 해결 방법이 있나요?
Proxy Mesh 생성 시 머티리얼 병합 옵션을 잘못 설정하면 품질 저하가 크게 나타납니다. ‘Material Merge’ 세팅을 조절하고, 필요하다면 Material Simplification 플러그인을 사용해 품질과 성능의 균형을 맞출 수 있습니다. Merge Actors 도구의 Bake 옵션도 반드시 점검해야 합니다.
LOD 팝핑이 심하게 보이는 이유는 무엇인가요?
스크린 사이즈(Screen Size) 전환 값이 잘못 설정된 경우가 대부분입니다. 거리 기반이 아닌 실제 화면 점유 비율로 판단하는 파라미터이기 때문에, 카메라 FOV·플레이어 이동 속도·오브젝트 크기까지 반영하여 조정해야 합니다. SIGGRAPH 연구에서도 LOD 팝핑 문제의 절반 이상이 스크린 사이즈 세팅 문제라고 분석했습니다.
Nanite와 HLOD는 함께 써야 하나요?
Nanite가 지오메트리 부담을 줄여주긴 하지만, 멀리 있는 지역 전체를 한 번에 단순화하는 기능은 HLOD의 역할입니다. 그래서 Nanite를 쓰는 프로젝트에서도 HLOD는 성능을 보완해주는 보조 장치처럼 활용됩니다. Epic Games 포럼의 실제 사례들도 동일한 결론을 제시합니다.
World Partition에서 멀티 협업이 왜 중요한가요?
셀 단위 잠금 시스템 덕분에 여러 사람이 같은 월드를 동시에 편집할 수 있기 때문입니다. UE4의 서브레벨 기반 협업보다 충돌이 크게 줄어들었고, 대형 프로젝트에서는 이 점이 생산성을 결정합니다. GDC 2022 협업 세션에서도 UE5의 가장 큰 혁신 중 하나로 평가받았습니다.
HLOD 전환 거리 설정은 어떻게 접근해야 하나요?
플레이어 카메라의 최대 시야, 레벨 구조, 이동 속도 등을 기반으로 수치화해 설정해야 합니다. 무작정 멀리 잡으면 로딩 부담이 늘어나고, 너무 가까우면 전환이 자주 발생해 시각적 불안정이 생깁니다. 실제 프로젝트에서는 구간별로 전환 거리를 다르게 설정해 해결하는 경우가 많습니다.
World Partition과 LOD 시스템, HLOD가 서로 충돌할 수 있나요?
구조적으로 충돌은 없지만, 잘못 설계하면 “스트리밍 타이밍” 문제로 프레임 드랍이 발생할 수 있습니다. 예를 들어 셀 로딩과 HLOD 전환이 동시에 일어나면 스파이크가 생길 수 있는데, 이는 스트리밍 우선순위 조정과 HLOD 그룹 재배치로 해결할 수 있습니다. Epic Dev 채널에서도 자주 언급되는 일반적인 문제입니다.
GPU Compute Shader를 활용한 대규모 파티클 시스템 구현 👆