Lock Step
2개 이사의 프로세서에서 동일한 명령어를 실행시키고, 그 결과를 비교를 해서 오류를 검출하는 기술
Use case: 멀티 게임
- 멀티 플레이어 게임을 만들 때,
lock step을 사용해서 서버의 자원을 최소한으로 사용하도록 클라이언트에 연산을 시킬 수 있다. - cheating을 방지하기 위해, 각 클라이언트의 게임 상태의 hash를 비교해서 위조를 감지한다.
- 각 클라이언트가 독립적으로 연산을 했을 때, 결과가 모두 같아야하기 때문에 결정론적인 로직이 필요하다. (랜덤 함수의 seed를 통일, 부동소수점 사용하지 않기, 순서 보장)
- 모든 게임의 상태가 각 클라이언트에 있어야하기 때문에, 맵핵이 가능하다.
- 클라이언트 중에 하나라도 연결이 끊기면, 검증을 할 수 없기 때문에 게임이 멈춘다. (Starcraft에서 한 사람이 팅기면 다 멈추는 이유)