쾌락없는 책임 (공부)/Unreal

[Unreal] Seamless, non Seamless

허스크 2023. 6. 20. 15:19
반응형

개요

언리얼에서 씬을 옮기는걸 Travel이라고 하는데 여기서 방식이 Seamless, non-Seamless로 나뉘게 됩니다. 여기서 Seamless는 이름처럼 non-blocking이고 non-Seamless는 blocking입니다.

 

 

둘의 차이

분류 Seamless non-Seamless
blocking 여부
(연산을 위해 멈출지 여부)
non-blocking blocking
Transition level 여부
(중간 로딩창)
있음 (엔진에서 설정해줘야 함) 없음

게임을 해본 입장에서 간단하게 이야기하면 Seamless는 로딩창을 가지는 것이고 non은 가지지 않는 것입니다. 그리고 보통은 Seamless 이동이 더 원활하고 연결 시에 문제가 있어도 대처할 방법들이 있어 선호된다고 합니다.

 

non-Seamless의 경우 클라이언트가 서버와 한번 연결을 끊은 뒤 레벨을 로딩하고 동일한 서버에 다시 연결을 한다고 합니다.

 

추가 정보

  • Transision level은 언리얼에서 따로 지정을 해줘야 하는데 Project Setting에서 Transition map을 검색한 뒤 지정해야 합니다.
  • Seamless Travel을 사용하기 위해서는 이를 사용하는 GameMode에서 bUseSeamlessTravel = true로 지정해줘야 합니다.
  • Seamless Travel을 사용하면 액터를 다른 레벨로 이동시킬 수도 있습니다. (persist) 이를 통해 인벤토리 아이템들을 옮기기 유용합니다.
    • 아래 액터들은 자동으로 해당이 됩니다. 
    • AGameModeBase::GetSeamlessTravelActorList의 액터들이 해당됩니다. (서버에서만)
    • 적법한 PlayerState를 가진 컨트롤러들 (서버에서만)
    • 모든 PlayerControllers (서버에서만)
    • 로컬의 PlayerController들 (서버와 클라이언트 모두)
      • 여기서 다른 액터들을 APlayerController::GetSeamlessTravelActorList에 추가하면 persist 하게 가져갈 수 있습니다.

 

 

참고 자료

https://wizardcell.com/unreal/persistent-data/

 

Travelling in Multiplayer

An overview of how travelling works in multiplayer.

docs.unrealengine.com

 

반응형