World Partition 기초
UE5의 혁신적인 대규모 월드 관리 시스템 이해하기
World Partition 개요
기존 레벨 스트리밍의 한계를 극복한 새로운 패러다임
World Partition은 UE5에서 도입된 자동 데이터 관리 및 거리 기반 레벨 스트리밍 시스템입니다. 기존 UE4의 World Composition을 대체하여 단일 퍼시스턴트 레벨에서 대규모 월드를 효율적으로 관리합니다.
- 단일 퍼시스턴트 레벨 - 전체 월드를 하나의 레벨로 관리
- One File Per Actor (OFPA) - 각 액터가 개별 파일로 저장되어 버전 관리 충돌 최소화
- 자동 그리드 분할 - 수동 서브레벨 설정 불필요
- 거리 기반 스트리밍 - 플레이어 위치에 따른 자동 로드/언로드
팀원들이 동시에 같은 월드에서 작업해도 파일 충돌이 최소화됩니다. 각 액터가 별도 파일로 저장되므로 Git/Perforce에서의 병합 작업이 훨씬 수월해집니다.
그리드 설정 및 스트리밍 거리
World Settings에서의 런타임 그리드 구성
World Partition의 핵심 설정은 World Settings > World Partition > Runtime Settings > Grids에서 찾을 수 있습니다.
| 파라미터 | 설명 | 권장값 |
|---|---|---|
Cell Size |
스트리밍 그리드 셀의 크기 (cm) | 랜드스케이프 컴포넌트 크기와 일치 |
Loading Range |
셀 로딩 시작 거리 | 12800 ~ 51200 |
Priority |
로딩 우선순위 | 0 (기본) |
Cell Size는 랜드스케이프 컴포넌트 크기와 일치시키는 것이 좋습니다. 불일치 시 랜드스케이프 스트리밍에서 시각적 아티팩트가 발생할 수 있습니다.
프로젝트 설정
World Partition 활성화 및 초기 설정
1. 새 프로젝트에서 활성화
UE5에서 새 프로젝트를 생성할 때 Open World 템플릿을 선택하면 World Partition이 자동으로 활성화됩니다.
2. 기존 프로젝트 변환
기존 레벨을 World Partition으로 변환하려면 레벨 에디터에서 다음 단계를 따릅니다:
// 메뉴에서 변환
Tools > Convert Level... > World Partition
// 또는 커맨드렛 사용
UnrealEditor.exe YourProject -run=WorldPartitionConvertCommandlet
-Map=YourMap
-ConversionSuffix=_WP
3. 에디터에서의 작업 영역 관리
World Partition이 활성화된 레벨에서는 에디터가 전체 월드를 로드하지 않습니다. 대신 작업에 필요한 영역만 선택적으로 로드합니다:
// World Partition 에디터 창 열기
Window > World Partition > World Partition Editor
// 영역 선택 및 로드
- 그리드 셀 드래그로 영역 선택
- 우클릭 > Load Selected Cells
- 또는 Ctrl+L로 빠른 로드
스트리밍 소스 개념
어떤 위치를 기준으로 셀을 로드할지 결정
스트리밍 소스는 World Partition이 어떤 셀을 로드해야 할지 결정하는 기준점입니다. 기본적으로 플레이어 캐릭터가 스트리밍 소스로 작동합니다.
기본 스트리밍 소스
// PlayerController는 기본적으로 스트리밍 소스
// 별도 설정 없이 플레이어 위치 기반 스트리밍 작동
// 커스텀 스트리밍 소스가 필요한 경우:
// - 플레이어가 아닌 다른 위치 기준 로딩
// - 미리 로딩(프리로딩) 구현
// - 컷신 등 특수 상황
스트리밍 동작 원리
로드 조건
스트리밍 소스가 셀의 Loading Range 내에 진입하면 해당 셀의 액터들이 비동기로 로드됩니다.
언로드 조건
스트리밍 소스가 Loading Range를 벗어나면 셀의 액터들이 언로드되어 메모리를 해제합니다.
World Composition과의 비교
UE4 레거시 시스템과의 차이점
| 기능 | World Composition (UE4) | World Partition (UE5) |
|---|---|---|
| 상태 | 레거시 (지원 종료 예정) | 현재 표준 |
| 레벨 구조 | 다중 서브레벨 | 단일 퍼시스턴트 레벨 |
| 스트리밍 | 수동 타일 관리 | 자동 그리드 기반 |
| 협업 | 레벨 파일 락 필요 | OFPA로 동시 작업 가능 |
| HLOD | 수동 프록시 메시 생성 | 자동 HLOD 레이어 |
World Composition과 World Partition은 동시 사용이 불가능합니다. 기존 프로젝트 변환 시 반드시 백업을 수행하고, 대규모 맵은 메모리 이슈(E_OUTOFMEMORY)가 발생할 수 있으니 단계적으로 변환하세요.
핵심 요약
- World Partition은 UE5의 대규모 월드 관리 표준으로, 자동 그리드 기반 스트리밍 제공
- OFPA (One File Per Actor)로 팀 협업 시 버전 관리 충돌 최소화
- Cell Size는 랜드스케이프 컴포넌트 크기와 일치시켜 설정
- Loading Range로 셀 로딩 거리를 제어하여 성능 최적화
- 기존 World Composition 프로젝트는 커맨드렛으로 변환 가능
도전 과제
배운 내용을 직접 실습해보세요
UE5에서 Open World 템플릿으로 새 프로젝트를 만들고, World Partition Editor 창을 열어 그리드 셀을 확인하세요. Cell Size와 Loading Range를 조정하며 영역 로드/언로드 동작을 테스트하세요.
World Partition 레벨에서 다수의 Actor를 배치하고, One File Per Actor가 활성화된 상태에서 각 Actor가 별도 파일로 저장되는 것을 확인하세요. Source Control 상태에서 파일 단위 락/병합을 테스트하세요.
기존 UE4 스타일의 서브레벨 기반 맵을 WorldPartitionConvertCommandlet으로 변환하세요. 변환 전후의 액터 구조, 스트리밍 동작, 메모리 사용량을 비교 분석하고, 변환 시 발생하는 이슈를 문서화하세요.