결정론적 락스텝
- 각 클라이언트가 동일한 입력을 처리하면 동일한 결과를 보장하는 방식
ex) 스타크래프트 -> 마린의 이동을 프레임 단위로 동기화하는 것이 아닌 마우스 클릭하여 명령을 내린 정보만으로 각 클라이언트에서 동일한 위치로 이동
문제점
- 명령으로만 시뮬레이션을 진행하므로 각 인스턴스 별로 정확히 동기화하는 것이 핵심인데, 각 각 다른 프레임과 인터넷 접속환경은 다를 수 밖에 없다.
ex) 추측이지만 가끔 스타크래프트 관전의 경우 깨지는 경우가 있는데, 명령이 몇개가 누락되어서 생기는 경우인 것 같다.
보완책
턴타이머 방식
- 특정 시간단위로 턴을 정해서 그 사이의 시간동안 모든 명령을 버퍼에 쌓아두고 한번에 보낸 이후, 몇번의 턴 이후에 명령을 실행시키는 법
- 스타크래프트2 등 여러 RTS에서 검증된 방식
- 이 마저도 따라갈 수 없는 유저는 Disconnect를 시킨다. (스타크래프트를 많이 해봤다면 정말 많이 봤을 장면)
- 명령만 모아놨기 때문에 리플레이를 저장해도 메모리 용량이 엄청 커지지 않는다.