그게 아닌데...





싱크 (Sync).

이름만 봐도 이게 뭔진 알거다.

멀티플레이를 하려면 두명이 같은 게임을 하고 있어야 한다.

일단 싱크와 그 뒤의 모든걸 알려면, 림월드 멀티플레이어의 구조를 먼저 알아야 한다.


자. 이게 다른 보통 게임들의 작동 방식이다.

중간 서버가 있고 그걸 통해서 신호를 주고받으면서 게임이 된다.

이 서버가 좋지 않거나 하면 이제 유비소프트의 감자 서버 처럼 자주 튕기거나 한다.


하지만, 림월드 멀티플레이어는 "모드" 기 때문에 서버가 없고,

다른 사람과 직접 연결을 하는 P2P 형식을 가진다.

(아마도) 국민겜 스타크래프트와 똥망겜 포 아너 도 비슷한 방식을 쓴다.

하지만 이 방법은 싱크를 맞추기에는 적절하지 않다.

딱히 싱크를 뒤흔들만한건 보이지 않는다. 하지만 이 게임은 랜덤 이 존재한다...

이 "모드" 는 외부 프로그램이 아니라 게임을 완벽히 뒤엎고 완벽한 멀티플레이를 만들 수 없다.

멀티플레이 모드는 멀티플레이를 시키지 않고, 그냥 각각의 컴퓨터에서 하나의 림월드를 실행하는 것이다.

그러면 "랜덤"이 있다면 두 게임에서 다른 결과가 나올수 있다.

한쪽은 머팔로 사냥중 머팔로의 반격이 떠서 정착지가 터지는데

한쪽은 정착지가 평시대로 잘 흘러가고 있는 멀티플레이라고 부르지 못할 상황이 연출될 수 도 있다..

그러면, 멀티플레이 모드는 무엇을 하는가?

아비터는 이 모든 신호를 모니터링 한다.

출력과 입력부터 림월드까지.


그리고 나서 아비터는 이 정보들을 토대로 림월드를 한번 더 시뮬레이션 합니다.

이게 림월드 멀티플레이어 모드가 렉이 걸리는 이유입니다.

모니터에 출력을 하지 않아도 되니 리소스를 덜 잡아먹긴 합니다.

아비터가 돌아가고 있는 도중에 작업 관리자를 보면 RimworldWin64.exe 가 두개인 이유가 이것입니다.

그 후 아비터는 모든 호스트와 클라이언트와 시뮬레이션된 림월드를 비교합니다.

비교했을때 만약 다른 부분이 없다면, 그대로 처음부터 다시 진행합니다.

비교했을때 만약 다른 부분이 있다면, 아비터는 그 다른 컴퓨터에 디싱크를 날립니다.

게임을 멈추고, 처음부터 되짚어야 하게 되죠.

만약 모드 충돌 등 시뮬레이션으로 복구가 불가능한 경우, 아비터는 손을 놓게 됩니다.

사실상 아비터의 일은 그게 끝이고 그 뒤는 플레이어의 잘못이니까요.

저 상태에 빠지게 되면, 그냥 플레이어가 조작하지 못하는 상태로 마지막 장면만을 출력하게 됩니다.

만약 그렇다면 세이브파일 충돌이니 그 세이브파일은 버렸다고 생각하시면 됩니다.


그래서 아비터는 싱크를 관리하고 그러는데 그래서 디싱크 해결법은 무엇인가?

간단하다. 모드를 적게 쓰고 되도록 바닐라를 유지하며,

랜덤으로 뭔가가 생성되거나 하는 모드는 거의 쓰지 않는다.


또 디싱크를 해결하거나 접속시 걸리는 시뮬레이션에 대해 말해보겠다.

림월드 멀티플레이어 모드의 세이브 방식은 크게

퀵세이브와 오토세이브로 나뉜다.

결론부터 말하자면, 오토세이브가 훨씬 더 이득이고 좋다.

아비터가 디싱크를 내놓아서 시뮬레이션을 돌리는것도,

처음에 들어와서 시뮬레이션을 돌리는것도 모두 오토세이브부터 한 행동을 하나하나 되짚어가면서 싱크를 맞추는거다.

그렇다면 그냥 오토세이브부터 시작하면 시뮬레이션이 없다는것이다.

호스트는 게임 로드시 오토세이브를 로드하면 시뮬레이션이 없고,

디싱크나 사람이 들어오기 진전 오토세이브가 돼있었다면 시뮬레이션이 거의 없다.

이렇게 시뮬레이션을 해결할 수 있다.

그리고 채팅에 들어가서 /autosave 를 치면 오토세이브를 수동으로 할 수 있으니

게임을 끄기 전에 오토세이브를 하고 나중에 킬때 오토세이브를 로드하면 시뮬레이션이 없고

친구가 들어오기 직전에 오토세이브를 하면 시뮬레이션이 거의 없어 시간을 아낄 수 있다.


참고로, 호스트가 아닌 클라이언트가 디싱크가 걸렸다면 그냥 나간 상태로 호스트가 오토세이브를 하고 클라이언트가 다시 들어오는게 더 빠르다.