이번 프로젝트를 진행하면서 맵의 규모가 많이 커지다 보니 최적화가 필요하다고 생각하게 되어서 레벨 스트리밍 시스템을 적용하기로 했습니다.
레벨 구성
Persistent Level (메인 레벨)
- 기본 환경 : 전체 프로젝트의 월드 설정과 베이스 환경 담당
- 라이팅 : Sky Light, Directional Light, Sky Atmosphere, ExponetialHeightFog
- 월드 지오메트리 : VolumetircCloud, Plane
Environment Levels (환경 레벨)
각 챕터별 환경과 오브젝트를 담당하는 레벨.
- 01_Intro_Level : 인트로 씬에서 필요한 지형, 플레이어 모델링, 인트로 씨네 카메라
- 02_Tutorial_Level : 튜토리얼과 관련된 오브젝트 및 트리거 등
- 03_First_Chapter_Level : 첫 번째 챕터에 필요한 지형, 몬스터 스포너, 등
- 04_Second_Chapter_Level : 실내 레벨(연구소)이므로 완전히 별도의 환경과 오브젝트
- 05_Boss_Level : 보스 전용의 환경과 특정 효과
각 환경 레벨에서는 Static Mesh, Decal, Environment Sound 등을 포함, 사용하지 않는 레벨은 언로드
Gameplay Levels (게임 플레이 레벨)
- NavMesh : 내비게이션 메시를 독립된 서브 레벨로 관리해서 필요할 때만 로딩 (1 챕터 → 2 챕터 등)
- Interacation Objects : 아이템, 상호작용 오브젝트 등 동적으로 관리할 요소들(튜토리얼 오브젝트, 아이템 스포너 등)
레벨 스트리밍 설정 방법
- Distance Based Streaming : 플레이어 위치를 기준으로 챕터별 서브 레벨을 로딩.
- Trigger Based Streaming : 특정 지점에 들어갔을 때 언로드 / 로드
- Manual Streaming : 블루프린트를 통해 이벤트 기반으로 제어
해당 프로젝트에서는 게임을 시작할 때 3번 방법으로 로딩 후 234 챕터는 1, 2번 방법으로 진행 예정
상황에 따라서 새 구역에 진입할 때 로딩 스크린 보여줄 수 있습니다.
그리고 해당 레벨을 편하게 관리하기 위해서 레벨 매니저를 구현할 예정입니다.