Level, Sub Level, World Partition
Level
게임 내에서 플레이어가 상호작용할 수 있는 공간인 ‘월드’의
‘전부’ 이거나 ‘일부’라 표현 가능
(‘맵’ 혹은 ‘씬’ 등의 개념과 유사)
- .umap 확장자를 가지는 파일
- 게임에서 보이는 모든 것(지형,액터,빛,소리 등)을 배치하는 공간
World와 Level?
Level은 각각의 다양한 공간을 표현하며 (ex : Factory.umap, forest.umap 등)
World는 이러한 Level들의 집합이며 최종적으로 구현된 게임 세상
Persistent Level 과 SubLevel
- Persistent Level
- 하나의 월드에 항상 존재하는 기본 레벨
- Sub Level을 스트리밍하거나 관리하는 레벨
- 프로젝트 실행 시, 가장 먼저 로딩
- Level Blueprint 포함
- 하나의 월드에 항상 존재하는 기본 레벨
- Sub Level
- Persistent Level에 종속되는 레벨
- 필요할 때 로드/언로드 (스트리밍) 가능
- 구역/기능별 분할을 위해 사용
- Persistent Level에 종속되는 레벨
저장시 각 레벨들 모두 .umap으로 저장되며
Persistent Level 에서 ‘레벨 스트리밍’을 통하여
Sub Level들을 조건부로 로드 / 언로드 한다
이러한 Sub Level의 구현으로
- 작업 분담
- 레벨 스트리밍을 통한 ‘필요한 것만’ 로딩/언로딩을 통해 메모리 용량과 성능의 효율적 관리
가 가능해진다
World Partition
기존의 UE4 레벨 관리 방식은 ‘수동’으로 레벨 스트리밍을 진행
UE5의 월드 파티션은 ‘맵’을 ‘그리드 기반 셀’로 자동으로 나누어 레벨 스트리밍을 진행한다
또한 기존의 ‘파일 관리’ 및 ‘협업 방식’에 대한 다른 기능들도 제공
두 시스템의 차이점?
항목 | SubLevel 시스템 | World Partition 시스템 |
---|---|---|
구역 나누기 | 수동 .umap 분할 |
자동 셀 분할 |
스트리밍 | 수동 제어 필요 | 자동 (또는 수동) |
협업 | .umap 단위 편집 |
액터 단위 편집 |
관리 편의성 | 명확한 분리지만 수작업 | 자동화되어 편함, 초기엔 구조 이해 필요 |
혼용 가능 여부 | ✅ UE4 방식 | ❌ SubLevel과 혼용 불가 |
External Actors
각 액터가 별도의 ‘.uasset’ 파일로 저장되는 시스템
(One File Per Actor(OFPA)라고도 불림)
MyWorld.umap
MyWorld_ExternalActors/
└── 1A2B3C4D/
└── Actor_9F2F1D24A.uasset
이러한 방식으로 .umap과 별도로 각각의 Actor를 저장하기에 협업과 작업 분할에 이용
Data Layers
액터들을 논리적으로 그룹화하여 조건적으로 로딩/ 언로딩 하는 기능
ex : 밤,낮,전투,평화 등의 조건을 걸고 그에 따라 등장하는 Actor 조절 가능
- 월드 파티션이 활성화 되면 Sub Level 시스템을 사용할 수 없기에
Data Layer로 그 역할을 대체 - 하나의 맵에서 다른 상태나 조건을 표현할 때 사용
Runtime Grid
World Partition 의 맵을 ‘셀(Grid)’로 분할하는 기준이 되는 스트리밍 단위
플레이어 위치를 기준으로 셀을 자동으로 로딩/언로딩
(필요시 지상/지하 등 다중 그리드의 구성이 가능하다 함)
HLOD (Hierarchical Level of Detail)
상호작용하기 ‘힘든 거리’지만 계속 보여야 하는 ‘경치’등을 표현할 때
여러 ‘액터’들을 하나의 ‘메시’로 대체하여 성능 향상
World Partition이 HLOD를 빌드하여 각 셀에 포함
(자동 생성 되나, HLOD Layer 에셋을 통해 커스텀 설정이 가능)
-
- Level of Detatil?
- 하나의 메시에 대하여 거리별로 디테일을 낮춘(폴리곤 수가 적은) 버전을 사용하는 시스템
폴리곤 수가 적을수록 드로우 콜이 줄어들기에 렌더링 측면에서 성능 향상을 기대 가능
- Level of Detatil?
댓글남기기