쾌락없는 책임 (공부)/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
반응형