lock-step

Lock Step

2개 이사의 프로세서에서 동일한 명령어를 실행시키고, 그 결과를 비교를 해서 오류를 검출하는 기술

Use case: 멀티 게임

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