Unreal 멀티플레이 클래스

GameMode/GameState/PlayerState 범위

멀티플레이 구조는 이름이 비슷해도 존재 위치가 다르다. GameMode는 서버 전용 규칙, GameState는 모두가 보는 경기 상태, PlayerState는 플레이어별 복제 상태를 맡는다.

01

규칙 배치

승리 조건, 스폰 규칙, 점수 계산의 권한은 GameMode에 둔다.

클라이언트 접근 불가
02

공개 상태

남은 시간, 팀 점수, 경기 phase처럼 모두가 봐야 하는 값은 GameState에 복제한다.

전체 클라이언트
03

개인 상태

이름, 점수, ping, team id처럼 플레이어별 공개 데이터는 PlayerState에 둔다.

Pawn 교체에도 유지
04

입력 요청

클라이언트 입력은 PlayerController/Pawn에서 서버 RPC로 요청하고 서버가 검증한다.

권한 분리
GameMode
서버 권위 규칙 클라이언트에서 GetGameMode가 null일 수 있으므로 UI 데이터 소스로 쓰지 않는다.
서버 전용
GameState
경기 전역 상태 모든 클라이언트에 복제되어 스코어보드와 매치 타이머의 기준이 된다.
RepNotify
PlayerState
플레이어 지속 정보 Pawn이 죽거나 바뀌어도 유지되어야 하는 플레이어 정보를 둔다.
소유와 공개 구분
Pawn
월드 안 조작 대상 위치, 체력, 애니메이션처럼 물리적 존재 상태를 가진다.
소멸 가능

클라이언트 접근 · 복제 조건 · 서버 검증 점검

클라이언트 접근 클라이언트 UI가 GameMode를 읽으려 하지 않는지 확인한다.
복제 조건 모두가 봐야 하는 값과 소유자만 봐야 하는 값을 구분한다.
서버 검증 점수·승패·아이템 획득 같은 결과를 클라이언트가 직접 결정하지 않는지 본다.