unreal에서 멀티플래이 맵 이동방식은 non-seamless travel과 seamless travel 두가지가 있다.
unreal에서는 아래와 같은 특징 때문에 seamless travel 방식을 권장하고 있다.
transition map
현재있는 맵이 메모리에 올라가 있는 상태에서 이동할 새로운 맵을 로드하려면 메모리를 너무 많이 사용하게 된다.
따라서 먼저 비어있는 맵에 이동을 시킨뒤 메모리에 올라가있던 맵을 해제하고 이동할 새로운 맵을 로드한다.
이때 사용되는 비어있는 맵이 transition map 이다.
void ALobbyGameMode::PostLogin(APlayerController* NewPlayer)
{
Super::PostLogin(NewPlayer);
int32 NumberOfPlayers = GameState.Get()->PlayerArray.Num();
if (NumberOfPlayers == 2)
{
UWorld* World = GetWorld();
if (World)
{
bUseSeamlessTravel = true;
World->ServerTravel(FString("/Game/Maps/BlasterMap?listen"));
}
}
}
로비 level에 참여한 player가 2명 이상이되면
ServerTravel을 통해 게임 level로 이동하는 함수입니다.