- 상황
- 서버가 주사위 값을 먼저 뽑고, 클라이언트는 별도 물리를 돌렸다. 그래서 실제로 멈춘 면과 서버 값이 어긋날 수 있었다.
- 검토한 대안
- (A) 서버 값에 맞춰 마지막에 주사위를 돌려 보정한다. 결과를 조작하는 것처럼 보여 제외했다. (B) 서버가 고정 스텝 물리로 결과를 정한다. 계획서와 로컬 구현, 자동 검증까지 마쳤다. (C) 서버가 결과와 프리셋(미리 시뮬레이션한 궤적)을 확정하고 클라이언트는 재생만 한다.
- 결정
- C안, 프리셋 베이킹을 채택했다. 서버가 결과값, 프리셋 번호, 시작 시각을 확정해 보내고 두 클라이언트가 같은 프레임부터 재생한다.
- 이유
- 서버 CPU 비용, 물리 결과의 재현·동기화 불안, 구현 복잡도와 일정 때문이다.
- 한계
- 서버 물리는 비공개 canary의 CPU 검증 전에 접어서 실제 비용을 측정하지 못했다. 계획서에는 온라인 수동 확인도 남아 있다.