서버: 경로의 중간 지점(웨이포인트)까지 함께 보내기, 주기적으로 위치 맞추기. 클라이언트: 어긋남은 부드럽게 수렴, 서버와 같은 지형 데이터 사용.
그래프에서는
가끔 무작위로 튐 · 개체별 위치 보정 횟수·거리
확인할 곳
서버가 보낸 위치와 클라이언트가 계산한 위치의 차이를 개체마다 기록하고 보정이 일어난 좌표를 지도 위에 찍어 봄. 양쪽의 경로 결과나 위치를 체크섬으로 요약해 주기적으로 비교하면 어긋나기 시작한 시점을 찾을 수 있음
이러면 맞음
보정이 특정 지형(문턱, 좁은 통로, 경사)이나 붐비는 곳에 몰리고 네트워크 지표가 정상인 유저에게도 같은 자리에서 반복됨
이러면 아님
장소와 상관없이 손실·지터가 튄 순간에만 보정되면 회선 문제. 몬스터 한 마리가 여러 사람 화면에서 함께 튀면 몬스터 제어 권한이 느린 클라이언트에 있는지 봄
확인 수단
게임 서버·클라이언트의 로그·지표가 필요
더 알아보기
이 방식은 클릭 이동·탭 타겟 게임이 핑에 둔감한 이유 중 하나입니다. 대신 양쪽 결과가 같다는 보장이 없어서 가끔 위치를 맞춰 주는 장치가 꼭 필요합니다. 부동소수점 계산은 CPU 종류, 컴파일러와 그 최적화 설정(디버그·릴리스 빌드 차이 포함)에 따라 결과가 조금씩 달라질 수 있습니다. 락스텝·롤백처럼 입력만 주고받고 양쪽 계산 결과가 똑같다고 가정하는 구조에서는 이 작은 차이가 쌓여 두 화면의 게임 상태가 갈라지는 어긋남(desync)이 생길 수 있습니다.
출처
Deterministic LockstepGaffer On Games 같은 기계에서 결정적이어도 컴파일러·OS·CPU가 다르면 부동소수점 결과가 달라질 수 있음