Property Replication
Replication
생성된 액터의 정보를 ‘네트워크’ 내의 ‘다른 클라이언트’에 복제하는 작업을 뜻함
-
서버 - 클라이언트 모델에선
서버에서 클라이언트로 복제되는 것이 기본 규칙 - 권한을 가진(Authority) 서버가 진짜 결정을 내리고
클라이언트로 필요한 값을 ‘복사’
- Replicates = true; 설정된 Actor만 네트워크에 실리며
Component는 Actor의 옵션에 종속됨
- Replicates = true; 설정된 Actor만 네트워크에 실리며
- 이러한 Replication에는 2가지 방식이 존재
- RPC(Remote Procedure Call) : 지난 포스팅에 다룬 것
- Property Replication : 이번 포스팅에 다룰 것
- RPC(Remote Procedure Call) : 지난 포스팅에 다룬 것
Property Replication
액터의 모든 속성의 ‘변경 상태’를 ‘모든 클라’에 복제하는 것은 비효율적
따라서 서버가 원하는 속성만을 클라이언트들에 복제하는 것을
Property Replication 이라 함
-
- UPROPERTY(Replicated)
- 서버가 변수 값을 바꾸면 ‘클라이언트’에게 자동 동기화
클라이언트에 별도의 Callback은 없음
(값만 동기화하는 방식임)
- UPROPERTY(Replicated)
- 보통 AI State, 카운팅용 변수 등에 사용
UPROPERTY(Replicated)
int32 Health;
-
- UPROPERTY(ReplicatedUsing = OnRep_XXX)
- 클라 동기화 + 클라 쪽에서 OnRep 콜백 실행하기
(Health 값이 바뀌면 클라쪽에서 OnRep_ 실행)
- UPROPERTY(ReplicatedUsing = OnRep_XXX)
-
OnRep 함수의 네이밍은 임의로 지정 가능하며
UPROPERTY에서 지정한 함수 이름과 같으면 됨 -
서버에서 값 변경이 일어난 후, 1번 호출
- 변경에 따라 ‘실행할 동작’이 존재할 때 사용
- UI 업데이트
- Mesh 변경
- 이펙트 변경
- 애니메이션의 파라미터 동기화 등등
- UI 업데이트
UPROPERTY(ReplicatedUsing = OnRep_Health)
int32 Health;
UFUNCTION()
void OnRep_Health();
댓글남기기