https://dev.epicgames.com/documentation/ko-kr/unreal-engine/using-online-beacons-in-unreal-engine?application_version=5.3

  • 일반 게임 접속을 통하지 않고 RPC를 통해 서버와 접촉해 가벼운 상호작용을 제공하는 Actor
  • Project에 맞는 상호작용, 로직, 정보 요청을 위한 Custom Class 확장을 권장
    • 특수한 경우에 내장 Class를 그대로 사용 하기도 함.

 

OnlineBeacon

  • 대표적인 사용 예시는 다음과 같다.
    • 서비스 품질 정보 요청
    • Client가 참여하고자 하는 Game의 Slot 예약
    • Player 이름 목록
    • 진행 중인 Game의 진행 시간 및 점수

AOnlineBeacon

  • AOnlineBeaconHost, AOnlineBeaconClient의 BaseClass

AOnlineBeaconHost

  • 별도의 NetDriver를 사용해 Remote Client에서 들어오는 OnlineBeacon Access를 Listen.
  • Access를 받으면 등록된 OnlineBeaconHostObject 인스턴스를 대상으로 일치하는 Client를 탐색,
    해당 Object에 Access를 넘겨준다.
  • 이 Class는 파생 Class를 만들 필요가 없다.
    • Client와 등록된 OnlineBeaconHostObject 사이의 초기 접속만 관리하기 때문이다.

AOnlineBeaconClient

  • Host에 접속하여 실제 RPC를 생성
    • 하나는 Client에서 생성
    • 다른 하나는 Server의 OnlineBeaconHost에 등록된 적합한 OnlineBeaconHostObject에 의해 생성
  • GetBeaconType 함수를 사용해 적합한 Host Object Class의 Register Instance에 일치시킨다.
    • 이 방식은 일반적으로 Server가 Spawn하고 Client에 Replicate하는 Actor Spawning 방식과 다르다.
    • 하지만 Client Object와 Server Object 사이에 접속이 이루어진 후,
      어느 한 쪽이 다른 쪽에 RPC를 할 수 있게 되면서 Object Replicate가 정상적으로 이루어지게 되며,
      Server Actor는 Property Replicate와 관련해 Authority를 가지게 된다.
  • OnConnected와 OnFailure 함수를 통해 접속 시 RPC를 호출하거나, 접속 실패 처리를 할 수 있다.
  • Beacon에서 요구하는 Client쪽 작업이 필요할 시 이 Class에서 구현되어야 한다.

AOnlineBeaconHostObject

  • OnlineBeaconClient Class와 짝을 이루도록 만들어져야 하는 Class
    •  Client의 GetBeaconType() 함수의 반환값과, BeaconTypeName에 저장된 값을 일치 시켜 짝을 이룬다.
  • OnlineBeaconHost에 Access를 요구하는 OnlineBeaconClient에 대응하는 OnlineBeaconHostObject가 탐지 되면,
    OnlineBeaconHostObject::SpawnBeaconActor를 통해 OnlineBeaconClient의 사본을 Spawn
    • SpawnBeaconActor로 ClientBeaconActorClass 변수를 사용해 Sapwn 할 Actor Class를 결정
    • 이 CleintBeaconActorClass가 짝을 이룬 OnlineBeaconClient Class로 설정 되어야 함.
  • Spawn 된 OnlineBeaconClient에서 SetBeaconOwner도 호출해야 Client와 통신을 할 수 있다.
  • 위의 기능들은 대부분 BaseClass에서 이루어지기 때문에 Override 할 필요가 없다.

PartyBeacon

  • Party 기반 매치메이킹을 위해 특별히 설계된 클래스
  • Multiplay Game에서 파티 형성 및 GameSession 접속을 관리

PartyBeaconClient

  • Server에 있는 PartyBeaconHost와 통신해 Party 매치메이킹을 요청
    • Server에 Party 정보 전송
    • 성공 여부를 받아 처리하는 Client Interface

PartyBeaconHost

  • Server에서 각 Party의 요청에 따라 GameSession 할당

PartyBeaconState

  • 현재 Party의 상태와 Session의 예약 정보를 관리
    • Party 크기
    • Session에 접속된 Party 수
    • 가능한 최대 Party 수
  • Server로부터 예약 요청 처리에 필요한 정보들을 제공

SpectatorBeacon

  • 관전자 모드를 위한 특수 구성 요소
  • Multiplayer Game에서 관전자가 게임을 관찰할수 있도록 한다.
    • 관전자가 Server에 효율적으로 접속하고, 게임 진행을 관찰할 수 있게하는 과정을 관리

SpectatorBeaconClient

  • Client에서 관전자가 GameServer에 접속 요청을 할 때 사용
  • Server의 SpectatorBeaconHost와 통신해 관전 가능한 세션을 요청, 입장 승인 여부를 확인

SpectatorBeaconHost

  • Server에서 실질적인 관전자의 접속 요청을 수신, 관리
  • 관전자에게 제공할 GameSession을 관리
  • 관전자의 접속을 허가하거나 거부할 수 있는 권한이 있음

SpectatorBeaconState

  • 관전자 접속 상태와 관려 정보를 관리
    • 관전 가능한 GameSession의 상태
    • 현재 관전자 수
    • 최대 관전자 수
  • SpectatorBeaconHost가 이 정보를 기반으로 판단을 내린다.

VoiceSynthSystem

  • 음성 통신 기능을 담당하는 구성 요소
  • Game 내에서 Player간의 실시간 음성 커뮤니케이션이 가능하도록 한다.

VoiceEnvineImpl

  • Unreal Engine의 음성 엔진 구현 Class
    • Hardware와 OS에 특화된 음성 처리를 담당
  • 음성 데이터의 Capture, 처리, 재생을 관리

VoiceInterfaceImpl

  • 음성 데이터 인터페이스의 구현을 제공
  • 다양한 Network 환경에서 음성 데이터의 Reliable 한 전송을 보장
  • 음성 데이터 Pakcet의 생성과 송수신 Interface를 정의

VoicePacketBuffer

  • 음성 데이터 Packet을 임시로 저장하는 버퍼 역할
    • Network 지연, Data Packet 손실을 관리하는데 유용

VoicePacketImpl

  • 실제 음성 데이터 Packet의 구현체
  • 음성 데이터를 압축해 Packet 형태로 만드는 역할

VoiceListenerSynthComponent

  • Unreal Engine의 합성 음성 Component
  • 게임 내 음성 데이터를 재생하는 기능 제공

'UE5 > Network' 카테고리의 다른 글

[Network] Property Replication  (1) 2024.06.28
[Network] Network Property  (0) 2024.06.25
[Network] Network Driver  (0) 2024.06.18
[Network] DemoNetDriver 및 Streamer  (0) 2024.06.17
[Network] Replication Graph  (1) 2024.06.13

+ Recent posts