버튼, 이동 입력, 조준 같은 즉각 반응은 화면에서 먼저 표현하지만 결과의 진실은 확정하지 않는다.
클라이언트 입력: 요청이고, 서버 상태가 기준
멀티플레이에서는 클라이언트가 화면을 그리더라도 위치, 데미지, 아이템 같은 권한이 필요한 상태는 서버가 검증하고 확정합니다.
Server truth holder
규칙, 데미지, 아이템, 위치 보정처럼 게임 결과를 바꾸는 값을 최종 확정한다.
서버 함수에서 값 검증과 상태 변경이 함께 있는지 본다.
Client input surface
입력을 모으고 서버 상태를 화면, 사운드, UI 피드백으로 표현한다.
클라이언트 단독으로 점수나 인벤토리를 확정하면 동기화와 보안이 흔들린다.
Ownership rpc gate
자신이 소유한 액터를 통해 보낸 Server RPC만 정상 요청으로 본다.
호출이 묵살되면 소유권, NetMode, RPC 선언, 액터 복제 여부를 순서대로 확인한다.
Prediction feel layer
서버 응답을 기다리는 동안 이동감이 끊기지 않도록 임시 결과를 보여준다.
서버 결과와 다르면 튕김을 숨기기 위해 보간이나 보정으로 맞춘다.
서버 권위 설계
권한이 필요한 상태 변경은 클라이언트에서 확정하지 말고 서버 RPC와 서버 검증을 거쳐 처리합니다.
디버그 기준
동기화가 안 되면 bReplicates, 소유권, RPC 방향, Replicated 변수 등록 여부를 순서대로 확인합니다.