락스텝은 컴퓨터 프로그램의 같은 상태에 같은 입력을 주면 같은 결과가 나온다는 원리를 응용한 것으로, 구동 원리는 다음과 같습니다.
1. 각 플레이어는 다른 플레이어들에게 입력 명령을 보냅니다.
2. 플레이어의 입력 명령에 따라 모든 클라이언트가 동시에 씬 업데이트를 합니다.
이것으로 얻는 효과는 다음과 같습니다.
1. 각 클라이언트 플레이어의 입력 명령만 주고받으며, 씬을 구성하는 캐릭터의 이동 상태를 주고받지 않습니다.
2. 입력 명령은 통신량이 상대적으로 매우 적습니다.
락스텝 동기화가 어떻게 작동하는지 알아볼 텐데, 먼저 원시적인 방식부터 살펴봅시다. 원시적인 방식을 이해해야 실제로 사용되는 방식을 이해할 수 있으니까요.
우선 컴퓨터에는 네트워크 지연 시간이 전혀 없다 가정하고, 게임 월드는 1/60초마다 업데이트합니다. 게임 월드는 플레이어의 명령 입력 외 다른 입력은 전혀 받지 않는 폐쇄 공간입니다. 플레이어가 명령을 게임 월드에 내리면 그 명령은 즉시 실행됩니다. 그리고 명령은 네트워크를 통해 상대방 컴퓨터에 전송됩니다.
상대방 컴퓨터에는 명령 메시지가 지연 시간 없이 바로 도달하기 때문에 즉시 게임 월드에 가할 수 있습니다. 명령을 가하지 않아도 “명령을 안 가했다.”라는 메시지를 꼭 보내도록 합시다. 결국 각 컴퓨터의 게임 월드는 로컬 플레이어가 가한 명령과 다른 플레이어들이 가한 명령을 받으면서 업데이트됨으로써 항상 100% 같은 상태를 유지합니다.