내일배움캠프 77일차 - 언리얼 엔진 C++ 멀티플레이어: Property Replication
Replication
생성된 액터의 정보를 네트워크 내 다른 클라이언트에게 복제하는 작업을 말한다.
서버-클라이언트 모델 기준 서버→클라이언트로 복제되는 것이 기본 규칙이다.
레플리케이션하는 방법에는 두 가지가 있다.
1) RPC (Remote Procedure Call)
2) Property Replication
| 프로퍼티 레플리케이션은 항상 Authority→Proxy 방향으로만 가능하다. |
Property Replication
액터의 모든 속성의 변경된 값을 모든 클라이언트에게 복제하는 것은 비효율적이다.
우리가 원하는 속성만을 다른 클라이언트에게 복제하는 것을 프로퍼티 레플리케이션이라고 한다.
프로퍼티 레플리케이션 설정 방법
1) 액터의 bReplicates 속성을 true로 설정한다.
2) 네트워크로 복제할 액터의 속성을 키워드로 지정
- UPROPERTY(Replicated)
3) GetLifetimeReplicatedProps() 함수에 네트워크로 복제할 속성을 추가한다.
- #include "Net/UnrealNetwork.h" 헤더 추가한다.
- DOREPLIFETIME() 매크로를 사용해 복제할 속성을 명시한다.
프로퍼티 레플리케이션 가능여부
1) 액터가 클라이언트에 존재할 때, 클라이언트→서버로 프로퍼티 레플리케이션이 가능한가?
정답: 불가능
- 프로퍼티 레플리케이션은 서버→클라이언트로의 단방향성만을 가짐. 서버에 액터가 없어서 불가능.
2) 액터가 서버에 존재할 때, 서버→클라이언트로 프로퍼티 레플리케이션이 가능한가?
정답: 불가능- 서버의 액터가 클라이언트에도 복제가 되어있어야 함(bReplicates == true). 복제되어있지 않아서 불가능
3) 액터가 서버에 있고, 클라이언트로 복제가 되어있을 때 서버→클라이언트로 프로퍼티 레플리케이션이 가능한가?
정답: 가능
- 서버의 액터가 클라이언트에 복제되어있음(bReplicates == true)
댓글
댓글 쓰기