network authority

클라이언트는 요청하고 서버가 상태를 확정한다

멀티플레이어 구조는 입력, 판정, 복제, 표현을 서로 다른 책임으로 분리해야 흔들리지 않습니다.

GameMode서버 전용 규칙과 승패 판정
GameState모두가 공유하는 경기 상태 복제
PlayerState플레이어별 점수와 이름 복제
client 입력 발생

발사, 상호작용, 이동 같은 의도를 로컬에서 만든다.

Server RPC 요청 검증

소유권, 거리, 쿨다운, 치트 가능성을 서버가 확인한다.

GameMode 규칙 확정

데미지, 점수, 스폰처럼 결과를 바꾸는 로직을 실행한다.

Replication 상태 전파

GameState와 PlayerState가 확정 값을 클라이언트에 보낸다.

client view 표현 반영

OnRep, UI, 이펙트가 복제된 결과를 화면에 보여준다.

서버만 알아도 되는 규칙 매치 시작 조건, 승패 판정, 스폰 규칙은 GameMode에 둡니다.
모두가 봐야 하는 경기값 남은 시간, 팀 점수, 현재 라운드는 GameState에 둡니다.
플레이어별로 유지할 값 이름, 킬 수, ping, 재접속 후에도 남을 값은 PlayerState에 둡니다.
권한 HasAuthority 위치를 먼저 정합니다.
소유권 Client RPC 대상 액터의 Owner를 확인합니다.
복제 범위 전체, 소유자, 초기 전송 조건을 분리합니다.
표현 UI와 이펙트는 클라이언트 후처리로 둡니다.