1 분 소요

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에 종속되는 레벨
    • 필요할 때 로드/언로드 (스트리밍) 가능
    • 구역/기능별 분할을 위해 사용

저장시 각 레벨들 모두 .umap으로 저장되며
Persistent Level 에서 ‘레벨 스트리밍’을 통하여
Sub Level들을 조건부로 로드 / 언로드 한다

이러한 Sub Level의 구현으로

  • 작업 분담
  • 레벨 스트리밍을 통한 ‘필요한 것만’ 로딩/언로딩을 통해 메모리 용량과 성능의 효율적 관리
    가 가능해진다

World Partition

Image

기존의 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?
    하나의 메시에 대하여 거리별로 디테일을 낮춘(폴리곤 수가 적은) 버전을 사용하는 시스템
    폴리곤 수가 적을수록 드로우 콜이 줄어들기에 렌더링 측면에서 성능 향상을 기대 가능

댓글남기기