혹은 이렇게 해야 합니다.
1. 클라이언트는 플레이어 캐릭터의 명령 정보를 서버에 보냅니다. 클라이언트에서는 자기 플레이어 캐릭터를 일방적으로 움직입니다. 그러나 캐릭터 이동 정보 메시지는 서버에 보내지 않습니다.
2. 서버는 명령 정보에 따라 플레이어 캐릭터를 이동 처리합니다. 플레이어 캐릭터의 이동 정보 메시지를 클라이언트에 보냅니다.
3. 클라이언트는 서버에서 이동 정보 메시지를 받으면, 앞서 일방적으로 움직였던 플레이어 캐릭터 위치를 무시하고 서버에서 메시지에 따라 캐릭터를 이동시킵니다.
▲ 그림 5-11 클라이언트와 서버 양쪽 모두가 캐릭터 이동 처리를 하고 있음
두 가지 방법은 일장일단이 있습니다. 두 번째 방법은 해킹을 막는 데는 가장 좋지만, 레이턴시가 100밀리초를 넘을 때마다 캐릭터 움직임이 손상됩니다. 따라서 두 번째 방법은 각 주고받는 메시지의 레이턴시가 다소 균일하고 레이턴시가 낮은 경우(50밀리초 이하)에 한해 채택하는 것이 일반적입니다.