1. 개요
오픈 월드 생존 게임을 개발 중이며, 메인 메뉴에서 인게임으로 넘어갈 때 자연스럽고 끊김 없는 레벨 전환을 구현하고 싶어서 레벨 로딩 방식에 대해 정리하게 되었습니다. 이를 위해 언리얼 엔진에서 제공하는 다양한 레벨 로딩 방식을 조사하였습니다.
2. 언리얼 엔진의 레벨 전환 방식들
- OpenLevel(): 전통적인 동기적 방식, 전체 레벨 교체
- Level Streaming: 비동기 방식, 필요한 레벨을 불러오거나 제거
- Seamless Travel:서버와 클라이언트의 상태를 유지한 채 전환하는 방식
3. OpenLevel - 동기적 레벨 전환
- Level을 완전히 교체하는 방식
- 호출 시 현재 레벨 언로드 후 새로운 레벨 로드
- 새로운 레벨 로딩 완료까지 화면 렌더링 멈춤
장점 | 단점 |
구현이 가장 간단함 클린 상태에서 로딩되므로 디버깅 용이 |
로딩중 화면 멈춤(로딩 화면 구현 필요) 메모리 재로딩 비용 큼 네트워크 게임에서 클라이언트 재연결 필요 |
4. Level Streaming - 비동기적 레벨 전환
- 기존 레벨을 유지하고 백그라운드에서 다른 레벨 불러오기 가능
- LoadStreamLevel() / UnloadStreamLevel() 함수
- 원하는 시점에 해당 레벨을 보이게 만들거나 숨기기 가능
- LoadStreamLevel() / LevelStreamingDynamic의 파라미터 조절
- SetShouldBeVisible() / SetShouldBeLoaded() 함수로 처리
// 파라미터 조절 방식
LoadStreamLevel(LevelName = "Cave_Level",
MakeVisibleAfterLoad = false, // ← 핵심!
ShouldBlockOnLoad = false)
// 함수 사용 방식
if (StreamingLevel)
{
StreamingLevel->SetShouldBeVisible(false); // 일단 숨긴 상태로 로딩
StreamingLevel->SetShouldBeLoaded(true); // 로딩만 함
// 나중에 이 타이밍에서 보이게 만들기
StreamingLevel->SetShouldBeVisible(true);
}
장점 | 단점 |
비동기적 방식으로 자연스러운 로딩 가능 메모리 관리 효율적 |
레벨 간 의존성 주의 필요 면밀한 월드 구조 설계 필요 |
5. Seamless Travel - 네트워크 상태 유지 전환 방식
- 서버가 맵 이동 시 클라이언트와의 연결 유지해야 할 때 사용
- 매커니즘: Actor Preservation ("보존 가능한 액터" 목록을 만들고, 이 액터들을 파괴하지 않고 유지)
- APlayerController를 유지한 채로 레벨 전환.
- ServerTravel() 또는 ClientTravel()에서 ?Seamless 옵션 사용
- Transition Map: 전환 중 임시로 로딩되는 맵. Seamless Travel 중 발생하는 공백을 보완
- 목적: 원활한 레벨전환, 플레이어 상태 유지(캐릭터, 인벤토리 등), 경량화된 임시 맵
장점 | 단점 |
멀티플레이에서 상태 유지 가능 클라이언트 재접속 없이 전환 가능 여러 리소스를 병렬로 로딩 가능 |
Transition Map 구성 필요 디버깅 난이도 어려움 |
언리얼 엔진 공식 문서: Travellling in Multiplayer
6. BONUS: 더 부드러운 레벨 전환 방법
방법 | 설명 |
Preloading Assets | 게임 시작 시 미리 로딩할 리소스를 AssetManager로 관리 |
Camera Fade 연출 | PlayerController->ClientStartCameraFade() 사용해서 전환 부드럽게 보이기 |
'TIL > Unreal Engine' 카테고리의 다른 글
언리얼 사운드 시스템 기초 (0) | 2025.06.16 |
---|---|
언리얼 엔진의 입력 모드(FInputMode) (0) | 2025.05.21 |
언리얼 엔진의 맵 로딩 (0) | 2025.05.08 |
AI ROV(Reciprocal Velocity Obstacles) (0) | 2025.04.24 |
Unreal Engine에서 SFX 임포트 및 어테뉴에이션 세팅하기 (Feat. 발소리와 BGM) (0) | 2025.04.23 |