- 순서
- 네트워크 롤이란?
- 네트워크 롤의 종류
- 네트워크 롤의 속성
- 액터에 따른 롤의 특징
- 네트워크 롤이 중요한 이유
- 네트워크 롤이란?
- 액터의 네트워크 소유권 및 역할을 나타내는 중요한 속성으로, 서버와 클라이언트 간의 데이터 처리 및 권한을 정의함.
- 서버에 스폰 된 액터가 가진 NetRole 속성 값은 언제나 Authority로 서버에 스폰 된 액터에서 수행될 로직은 권한을 가지고 있다는 뜻임.
- 반대로 NetRole이 Authority인 액터가 클라이언트로 복제되었을 때, 클라이언트에 복제된 액터의 NetRole 속성 값은 Proxy
- 네트워크 롤의 종류
- None: 액터가 존재하지 않음 => 서버에서 스폰 되고 레플리케이션 되지 않는 액터. 클라이언트에서 스폰 된 액터
- Authority: 게임에 중대한 영향을 끼칠 수 있는 로직 작성 가능(ex) GameMode)
- AutonomouProxy: 서버로부터 수신 받아서 동기화되면서, 서버로 송신 가능(ex) PlayerController)
- 입력관련 로직을 수행시키는데 이를 위해 AController::IsLocalController() 와 APawn::IsLocallyControlled()함수를 제공함
- Simulated Proxy:서버로부터 수신 받아서 동기화 당하기만 함. (ex) 내 화면에 보이는 친구의 PlayerCharacter)
- 네트워크 롤의 속성
- 언리얼에서 기본적으로 Role과 RemoteRole 두 가지 속성을 제공하는데 어느 인스턴스에서 어떤 권한을 가지는지 구분할 때 사용함.
- Role:현재 이 Actor가 존재하는 인스턴스에서 가진 권한으로 이 Actor를 이 인스턴스가 제어할 수 있는지 여부
- RemoteRole: 현재 Actor가 다른 인스턴스에서 가진 권한으로 네트워크 상의 상대방에서 이 Actor를 어떻게 다루는지를 나타내는 속성
- 액터에 따른 롤의 특징
- 게임모드는 HasAuthority()함수를 호출할 필요가 없음
- 폰은 Authority, Autonomous Proxy, Simulated Proxy가 혼재되어 있음
- 애니메이션이나 UI 관련 로직은 클라이언트에서 수행되며 로컬, 원격 플레이어 따라 Autonomouse Proxy, Simulated Proxy가 사용됨.
- 네트워크 롤이 중요한 이유
- 권한 구분: 멀티플레이 환경에서 서버와 클라이언트 간 권한을 명확히 구분하여 게임 상태 결정권한을 확실하게 해야함
- 클라이언트와 서버 동기화: Role을 통해 어떤 Actor가 서버를 제어하고, 어떤 Actor를 클라이언트가 시뮬레이션할지 결정하는것을 기반으로 Replication과 RPC 호출 처리를 함
- 성능 최적화: Role 정보를 통해 불필요한 연산을 제한 가능함. 서버/클라이언트가 각자 필요한 로직만 수행함으로서 네트워크 트래픽과 CPU 낭비를 최소화 할 수 있음
- 코드 구조 명확화: Role 기반 분기로 서버/클라이언트 코드 혼동을 방지하며, Actor별 책임 명확화하게 됨.
'Unreal Engine' 카테고리의 다른 글
| [UE]Pawn/Character (0) | 2025.09.11 |
|---|---|
| [UE]RPC (0) | 2025.09.04 |
| [UE]네트워크 넷 모드 (0) | 2025.09.03 |
| [UE] 비헤이비어 트리와 FSM (0) | 2025.08.29 |
| [UE] UE의 string 클래스 (1) | 2025.08.29 |