롤백 · 저장 → 복원 → 재실행
상대 입력을 늦게 배달하고, 같은 틱을 다시 계산한 결과와 효과 요청을 살펴보세요.
청록은 입력을 모두 아는 관찰용 기준, 주황은 늦은 입력을 받는 클라이언트입니다. 설정 변경은 처음부터 같은 입력을 재실행합니다.
상대는 6·18틱, 내 캐릭터는 8·20틱에 공격합니다. 공격 시작·명중 이벤트는 시각적 요청 횟수로 표시합니다.
각 틱의 시작 상태 S[k]와 두 입력으로 S[k+1]을 계산합니다. 상대 입력이 없으면 마지막 입력을 유지해 예측합니다. 실제 값이 다르면 가장 이른 틀린 틱의 상태를 복원하고 현재까지 게임 규칙을 다시 실행합니다.
이 장면은 두 전사의 정수 위치, 체력, 공격 남은 틱, 쿨다운, 이미 맞혔는지, 공격 시작 틱, 난수 상태를 저장합니다. ‘난수 상태 복원’을 끄면 같은 확정 입력에서도 피해와 해시가 어긋날 수 있습니다. 기준과 해시는 반드시 같은 확정 틱끼리 비교합니다.
게임 계산은 반복해도 같은 (공격 시작 틱, 행위자, 종류) ID의 효과는 한 번만 요청할 수 있습니다. 옵션을 끄면 재실행된 공격·명중 효과가 중복 집계됩니다. 이미 보여준 잘못된 예측 효과는 이 예제에서 그대로 끝내며, 사라진 이벤트 수를 별도로 표시합니다. ID만으로 효과가 자동 취소되지는 않습니다.
입력 대기는 예측과 재실행을 줄이지만 조작 반응을 늦춥니다. 예측 상한에 닿으면 진행을 기다립니다. 스냅샷의 실제 JSON UTF-8 길이 × 보관 개수를 표시하며 렌더링은 재실행 틱마다 반복하지 않습니다. 한 브라우저의 고정 정수 규칙을 검증하는 가상 전달 모델로, 다른 CPU·실제 인터넷의 결정론을 증명하지는 않습니다.
GGPO Developer Guide · 상태·결정론·효과 분리 ↗