Unreal Engine - Actor Channel
Replicated 그리고 RPC 이용한 네트워크 실습까지 모두 완료하였다.
네트워크 대상으로 Actor로 사용하였는데, 어떤 역할을 하는지 알아보자.
레플리케이션은 Actor와의 긴밀한 연관이 깊은데. Actor 대상으로 레플리케이션으로 인해 클라이언트마다 복제본이 생성된다. Actor가 변동사항 생기는 즉시 레플리케이션으로 인해 모든 클라이언트에게 네트워크로 패킷이 전파되어 동기화된다.
RPC는 Actor 대상으로 함수를 호출하여 다른 서버와 클라이언트에게 실행하도록 명령을 내렸다.
이러한 과정을 통해 네트워크와 Actor로 자주 활용하는 것을 볼 수 있는데, 내부적으로 어떻게 Actor를 구별하고 있는 것일까?
먼저 네트워크 채널에 대해서 알아보자.
Network Channel
네트워크 채널은 게임을 시작하면 접속한 클라이언트 갯 수만큼 생성된다.
네트워크 채널 내부에는 여러가지 채널로 구성한다.
Network Channel 내부 구성
- Actor Channel
- Voice Channel
- Controller Channel
- ...
이 중에 Actor Channel은 처음 게임 구동 시 Pawn 클래스로 인해 클라이언트가 접속하면 직접 조종이 가능한 Actor가 스폰된다.
Actor Channel
액터는 레플리케이션과 RPC 대상으로 네트워크 통신이 가능하게 된다. 네트워크 통신에는 서버와 클라이언트 간 정보를 교류해야하므로 Actor Channel이라는 통로로 통해 여러가지 서로의 정보를 교환한다.
또한, 본인이 직접 조종하는 Pawn 외의 다른 사용자의 Pawn도 Actor Channel와 새롭게 생성된다.
- Actor Channel 로 통해 네트워크 데이터를 주고 받음
Relevancy
이 용어 이전에 MMORPG 에서는 Area Of Interest 가 있었다. 나의 관심 범위라는 뜻이다.
언리얼 엔진은 본인이 직접 조종한 Pawn 주위에는 특정 범위를 가리키는 Relevancy 영역이 있다. 이 영역 밖에 있는 다른 사용자의 Pawn은 관심을 두지 않겠다는 뜻이다.
Relevancy 시야각 또는 영역 안으로 들어온 Pawn이 있다면 서버와 클라이언트에서 신규로 Actor와 Actor Channel이 생성되고 네트워크 통신할 수 있도록 한다.
반대의 경우, 시야각 또는 영역 밖으로 나간 Pawn은 생성한 Actor와 Actor Channel 제거하는 작업이 이루어진다.
- Pawn의 Relevancy 영역이 있음
- Relevancy 영역에 들어온 Pawn은 Actor와 Actor Channel 신규 생성
- Relevancy 영역 밖으로 나간 Pawn은 Actor와 Actor Channel 제거
Replicate Rule
레플리케이션은 Actor 마다 서로 다른 규칙으로 적용하고 있다.
Replicate Rule
- AGameMode
- 게임 모드 액터는 레플리케이션 되지 않는다.
- APlayerController
- 플레이어 컨트롤러는 소유자외의 제3자가 패킷을 전송하면 안된다.
- Owning Client 규칙
- AGameState
- 게임 스테이트는 모든 클라이언트에게 정보를 전파한다.
- Everyone 규칙
- APlayerState
- 플레이어 스테이트는 모든 클라이언트에게 정보를 전파한다.
- Everyone 규칙
- APawn
- 폰은 Relevancy 영역이 생김.
- 영역 안의 Pawn 에게만 정보를 전파하고, 영역 밖의 Pawn에게는 전파하지 않음
- Relevancy Client 규칙