멀티 플레이어 게임을 처음 개발할 때 듣게되는 단어중 심리스/논심리스 게임 서버가 있다. 이 두개의 차이는 무엇일까?
- 논 심리스 서버
클라이언트는 서버로부터 연결을 끊으면, 다시 같은 서버에 접속할 수 있는 서버이다.
만약 맵을 처음으로 로딩하는 경우나, 서버에 처음 접속하는 경우, 그리고 멀티 플레이어 게임이 끝나고 다시 새로운 것을 시작하는 경우 언리얼 엔진 기반 게임의 경우 논 심리스 Travel이 일어난다고 한다.
- 심리스 서버
더욱 더 매끄러운 경험을 하게 하기 위해서, 클라이언트는 서버로부터 끊김이 없는 방식을 말한다. 이를 통해서 서버를 찾을 수 없거나, 또는 서버가 갑자기 많은 인원을 수용하거나 다시 들어오는 유저의 재접속 이슈를 해결할 수 있다.
이 기능을 사용하기 위해선 언리얼 코드 기반 서버 코드에서는 다음과 같은 옵션을 true로 지정해야 한다.
bUseSeamlessTravel = true;
그리고 우리는 맵을 전환시키거나 레벨을 전환시키기 위한 Transition map을 필요로 합니다. Transition map은 하나의 맵에서 다른 맵으로 전환시키기 위한 맵입니다. 이 맵은 항상 주어진 시간에 로딩이 되는 것을 보장합니다. 그래서 만약 A라는 맵에서 B라는 맵 사이에 Transition map이 없다면 우리는 A 맵이 로딩되는 동안 B 맵을 불러와야할 것입니다. 그리고 이것은 엄청난 양의 리소스를 필요로 할 것입니다. 그래서 우리는 우리가 이전에 이미 로딩한 것을 해제하는 동안 Transition map을 사용하는 식으로 합니다. 그리고 우리가 Transition map을 사용하는 동안, 우리는 새로운 맵을 로딩할 수 있습니다.
이제 언리얼에서 사용하는 Travel 기법을 정리해봅시다.
UWorld::ServerTravel는 다음과 같은 특징을 가지고 있습니다.
- 서버 코드에만 돌아가는 코드입니다.
- 서버를 새로운 레벨로 점프시킵니다.
- 그러면 접속한 클라이언트도 전부 같이 따라갑니다.
- 서버는 APlayerController::ClientTravel을 실행합니다.
그러면 APlayerController::ClientTravel는 다음과 같은 것을 진행합니다.
- 클라이언트가 이것을 실행합니다. -> 이는 새로운 서버로 이동합니다.
- 서버에서 이것을 호출하면 다음과 같은 일이 일어납니. -> 플레이어들이 새로운 맵으로 이동할 수 있게합니다.
'Unreal Engine' 카테고리의 다른 글
[언리얼 엔진/서버] 온라인 서브시스템과 세션 (0) | 2022.09.02 |
---|---|
[언리얼 엔진/서버] 온라인 서브시스템 (0) | 2022.09.02 |
멀티 플레이어 게임의 컨셉 (0) | 2022.09.01 |
[언리얼 엔진] 월드와 액터 (0) | 2022.06.06 |
[언리얼 엔진4] TEXT 재정의 문제 (0) | 2022.06.04 |