PART 6 - 강의 1/4

Fortnite 분석

Chapter 4/5의 World Partition 활용 사례

01

Fortnite 기술 개요

대규모 배틀로얄 맵의 기술 스택

Fortnite Chapter 4/5는 100,000개 이상의 Actor 파일을 World Partition으로 관리합니다. Epic Games의 내부 프로덕션 검증 사례입니다.

Fortnite 기술 스택 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
02

자동 스트리밍 활용

기존 커스텀 솔루션 대체

Chapter 3 이전

커스텀 스트리밍 솔루션 사용. 개발자 시간 소모, HLOD 전환 불안정.

Chapter 4 이후

World Partition 자동 스트리밍. 개발 시간 절감, HLOD 전환 안정성 향상.

개선 효과 World Partition 도입 효과: 1. 개발자 시간 절감 ├── 수동 스트리밍 관리 제거 ├── 레벨 아티스트의 스트리밍 고려 감소 └── 자동화된 HLOD 생성 2. HLOD 전환 안정성 ├── 이전: 팝인/팝아웃 아티팩트 └── 이후: 부드러운 LOD 전환 3. 메모리 효율성 ├── 필요한 셀만 로드 └── 서버 스트리밍으로 서버 메모리 절감 4. 팀 협업 ├── OFPA로 소스 컨트롤 충돌 최소화 └── 대규모 팀 동시 작업 가능
03

NavMesh World Partition

대규모 월드 네비게이션

Fortnite NavMesh 전략 NavMesh World Partition 활용: 1. 셀별 NavMesh 생성 ├── 각 World Partition 셀에 대응하는 NavMesh 타일 └── 독립적으로 직렬화 및 로드/언로드 2. 동적 로딩 ├── 월드 셀 로드 시 NavMesh도 함께 로드 └── 언로드 시 NavMesh도 언로드 3. AI 고려사항 ├── AI가 언로드된 영역으로 이동 시도 방지 ├── NavMesh 경계 인식 └── 경로 탐색 시 로드된 영역만 고려 4. 빌드 파이프라인 └── WorldPartitionNavigationDataBuilder로 자동화
04

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+ 파일)
05

이벤트/시즌 콘텐츠

Data Layers로 라이브 서비스

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를 활용합니다. 이를 통해 기본 게임을 안정적으로 유지하면서 새 콘텐츠를 빠르게 배포할 수 있습니다.

SUMMARY

핵심 요약

  • Fortnite는 100,000+ 액터를 World Partition으로 관리
  • 자동 스트리밍으로 개발 시간 절감, HLOD 안정성 향상
  • NavMesh World Partition으로 대규모 AI 네비게이션
  • OFPA로 대규모 팀 동시 작업, 충돌 최소화
  • Data Layers로 시즌/이벤트 콘텐츠 관리
PRACTICE

도전 과제

배운 내용을 직접 실습해보세요

실습 1: Fortnite 스타일 그리드 설정 재현

Fortnite Chapter 4/5의 World Partition 설정을 참고하여 유사한 그리드 구성(CellSize, LoadingRange, 다중 그리드)을 재현하세요. 배틀로얄 맵 규모(약 4km x 4km)에서 테스트합니다.

실습 2: 동적 이벤트 영역 로딩

Fortnite의 이벤트 시스템처럼 특정 게임 이벤트 시 맵의 일부 영역이 변경(건물 파괴, 새 지형 등장)되는 시스템을 Data Layer로 구현하세요.

심화 과제

100명 동시 접속 배틀로얄 시나리오에서 World Partition 설정을 최적화하세요. 서버 스트리밍, 클라이언트 스트리밍, HLOD 체인, 메모리 예산을 종합적으로 설계하고 성능 목표를 달성합니다.