- 일반 게임 접속을 통하지 않고 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 |