Fortnite 분석
Chapter 4/5의 World Partition 활용 사례
Fortnite 기술 개요
대규모 배틀로얄 맵의 기술 스택
Fortnite Chapter 4/5는 100,000개 이상의 Actor 파일을 World Partition으로 관리합니다. Epic Games의 내부 프로덕션 검증 사례입니다.
Fortnite Chapter 4/5 World Partition 구성:
핵심 시스템:
├── World Partition
│ └── 자동 스트리밍, 셀 기반 로딩
├── Data Layers
│ └── 이벤트/퀘스트 콘텐츠 분리
├── Level Instances
│ └── POI (Point of Interest) 재사용
├── HLOD
│ └── 원거리 렌더링 최적화
└── One File Per Actor (OFPA)
└── 100,000+ 액터 파일 관리
규모:
├── 맵 크기: ~4km x 4km
├── 액터 수: 100,000+
├── 동시 플레이어: 100명
└── 플랫폼: PC, Console, Mobile, Cloud
자동 스트리밍 활용
기존 커스텀 솔루션 대체
Chapter 3 이전
커스텀 스트리밍 솔루션 사용. 개발자 시간 소모, HLOD 전환 불안정.
Chapter 4 이후
World Partition 자동 스트리밍. 개발 시간 절감, HLOD 전환 안정성 향상.
World Partition 도입 효과:
1. 개발자 시간 절감
├── 수동 스트리밍 관리 제거
├── 레벨 아티스트의 스트리밍 고려 감소
└── 자동화된 HLOD 생성
2. HLOD 전환 안정성
├── 이전: 팝인/팝아웃 아티팩트
└── 이후: 부드러운 LOD 전환
3. 메모리 효율성
├── 필요한 셀만 로드
└── 서버 스트리밍으로 서버 메모리 절감
4. 팀 협업
├── OFPA로 소스 컨트롤 충돌 최소화
└── 대규모 팀 동시 작업 가능
NavMesh World Partition
대규모 월드 네비게이션
NavMesh World Partition 활용:
1. 셀별 NavMesh 생성
├── 각 World Partition 셀에 대응하는 NavMesh 타일
└── 독립적으로 직렬화 및 로드/언로드
2. 동적 로딩
├── 월드 셀 로드 시 NavMesh도 함께 로드
└── 언로드 시 NavMesh도 언로드
3. AI 고려사항
├── AI가 언로드된 영역으로 이동 시도 방지
├── NavMesh 경계 인식
└── 경로 탐색 시 로드된 영역만 고려
4. 빌드 파이프라인
└── WorldPartitionNavigationDataBuilder로 자동화
Changelist 관리
대규모 팀의 OFPA 활용
Fortnite 팀의 OFPA 활용:
1. Changelist 개선 (UE 5.x)
├── 새로운 UX
├── Uncontrolled Changelist 타입
└── Scene Outliner 및 메인 뷰포트와 통합
2. 워크플로우
├── 액터 수정 시 해당 파일만 체크아웃
├── 동시 수정 가능 (다른 액터)
└── 에디터 내에서 제출 권장
3. 충돌 해결
├── 동일 액터 수정 시에만 충돌
└── 기존 전체 레벨 충돌 대비 대폭 감소
파일 구조:
Content/
├── Maps/
│ └── Athena_Terrain.umap
└── __ExternalActors__/
└── Maps/
└── Athena_Terrain/
├── A/B/Actor1.uasset
├── C/D/Actor2.uasset
└── ... (100,000+ 파일)
이벤트/시즌 콘텐츠
Data Layers로 라이브 서비스
Fortnite 시즌/이벤트 관리:
Data Layer 구조 (예시):
├── DL_Season_Base (항상 활성)
├── DL_Season_5_Content (시즌 5 콘텐츠)
├── DL_Event_Halloween (할로윈 이벤트)
├── DL_Event_Christmas (크리스마스 이벤트)
└── DL_POI_TiltedTowers (특정 POI 변형)
런타임 활성화:
- 서버에서 현재 시즌/이벤트에 따라 Data Layer 활성화
- 클라이언트는 서버 상태에 따라 해당 콘텐츠 로드
- 패치 없이 콘텐츠 전환 가능
External Data Layers (5.5+):
- Game Feature Plugin으로 시즌 콘텐츠 주입
- 기본 맵 수정 없이 새 콘텐츠 추가
Fortnite의 지속적인 콘텐츠 업데이트는 Data Layers와 External Data Layers를 활용합니다. 이를 통해 기본 게임을 안정적으로 유지하면서 새 콘텐츠를 빠르게 배포할 수 있습니다.
핵심 요약
- Fortnite는 100,000+ 액터를 World Partition으로 관리
- 자동 스트리밍으로 개발 시간 절감, HLOD 안정성 향상
- NavMesh World Partition으로 대규모 AI 네비게이션
- OFPA로 대규모 팀 동시 작업, 충돌 최소화
- Data Layers로 시즌/이벤트 콘텐츠 관리
도전 과제
배운 내용을 직접 실습해보세요
Fortnite Chapter 4/5의 World Partition 설정을 참고하여 유사한 그리드 구성(CellSize, LoadingRange, 다중 그리드)을 재현하세요. 배틀로얄 맵 규모(약 4km x 4km)에서 테스트합니다.
Fortnite의 이벤트 시스템처럼 특정 게임 이벤트 시 맵의 일부 영역이 변경(건물 파괴, 새 지형 등장)되는 시스템을 Data Layer로 구현하세요.
100명 동시 접속 배틀로얄 시나리오에서 World Partition 설정을 최적화하세요. 서버 스트리밍, 클라이언트 스트리밍, HLOD 체인, 메모리 예산을 종합적으로 설계하고 성능 목표를 달성합니다.