Unreal Engine

[UE] 언리얼 네트워크 롤

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