Network Role
내가 클라이언트라면 나의 클라이언트 머신 상에 내가 컨트롤하고 있는 폰이 존재한다. 그와 동시에 서버에도 이 폰이 있다. 여기서 다른 클라이언트도 서버에 연결되어 있다면, 그 클라이언트의 머신에도 이 폰이 존재한다.
즉, 현재 세 명이 게임에 들어와 있다면, 내 폰은 세 개가 각각의 머신에 존재한다. 이제 어떤 버전의 폰을 코드로 다룰 것인지가 중요해진다. 이런 점을 해결하기 위해, 언리얼 엔진은 ENetRole이라는 enum으로 Role이라는 개념이 있다. 캐릭터나 폰에 부여된 이 enum으로 Role을 식별할 수 있다.
ENetRole::ROLE_Authority
서버 머신에 존재하는 폰의 Role이다. 언리얼 엔진은 authoritative 서버 모델을 사용하기에, 서버에 존재하는 모든 폰은 권한의 역할을 갖는 것으로 간주한다.
ENetRole::ROLE_SimulatedProxy
이 폰을 컨트롤하지 않는 머신에 존재하는 폰에 해당하는 Role이다.
ENetRole::ROLE_AutonomousProxy
내가 컨트롤하는 폰에 해당하는 Role이다. 하지만 리슨 서버이면서, 내가 서버라면 내가 컨트롤하는 폰은 ROLE_Authority Role을 가진다.
ENetRole::ROLE_None
어떤 Role도 가지지 않는 폰을 위한 Role이다.
예시
서버에서는 모든 폰이 ENetRole::Authority를 가진다.
클라이언트에선 자신이 컨트롤하는 폰은 ENetRole::Autonomous_Proxy를 가지고 나머지 폰은 ENetRole::Simulated_Proxy를 가진다.
'Unreal Engine > 기타' 카테고리의 다른 글
[UE] RPC : Remote Procedure Calls (0) | 2023.12.21 |
---|---|
[UE] Variable Replication (0) | 2023.12.17 |
[UE] ServerTravel과 ClientTravel (0) | 2023.12.08 |
[UE] ThisClass (0) | 2023.12.02 |
[UE] 액션 RPG 코드분석 Melee Attack (0) | 2023.06.05 |