Replication
OnRep는 값 수신 뒤의 반응이다
서버 값 변경, 수명 등록, 조건 필터, 클라이언트 수신, OnRep 실행을
한 프레임처럼 착각하지 않는다.
판정 축
Server · Net Driver · Client
권한 있는 변경과 클라이언트 표시 갱신을 분리해 추적한다.
| 순서 | 엔진에서 일어나는 일 | 확인할 코드 | 흔한 오해 |
|---|---|---|---|
| 01 서버권한 값 변경 | Authority가 있는 서버 인스턴스에서 복제 변수를 바꾼다. | HasAuthority 분기와 실제 값 변경 위치 | 클라이언트 로컬 변경은 기준값이 아니다. |
| 02 수명복제 등록 | GetLifetimeReplicatedProps가 대상 필드를 등록한다. | DOREPLIFETIME 설정과 조건 | UPROPERTY만으로 항상 전송되지는 않는다. |
| 03 조건대상 필터 | Owner Only, Skip Owner 등이 클라이언트별 전송 여부를 정한다. | 복제 조건과 소유자 지정 | 모든 플레이어가 같은 값을 받는다고 보지 않는다. |
| 04 수신로컬 반영 | 클라이언트가 패킷을 받아 변수 값을 갱신한다. | 초기값과 이전 값 비교 | 같은 값이면 기대한 알림이 없을 수 있다. |
| 05 반응OnRep 실행 | UI, 이펙트, 캐시 갱신을 RepNotify 함수에서 처리한다. | OnRep 내부의 표시 전용 로직 | 서버 게임 규칙 실행 위치로 쓰지 않는다. |