2026-06-23 NetConnection, Channel, Network Relevancy

조범근·2026년 6월 23일

TIL

목록 보기
73/81

C++ Week 17

Study

멀티플레이 개발



Today I Learned


Unreal Multiplay

NetConnection과 Channel

클라이언트 A와 서버가 연결되면 서버 쪽에 A를 위한 NetConnection이 하나 생긴다.

Server
└─ NetConnection A
   ├─ ControlChannel
   ├─ ActorChannel - PlayerCharacter A
   ├─ ActorChannel - PlayerState A
   ├─ ActorChannel - Boss
   └─ ActorChannel - Projectile

클라이언트 B도 접속하면 별도의 연결이 생긴다.

Server
├─ NetConnection A
└─ NetConnection B

이렇게 NetConnection클라이언트 한 며오가의 네트워크 관계라고 볼 수 있다. 서버와 특정 클라이언트 사이의 연결선.

Channel

하나의 연결을 여러 용도로 분리한 논리적 통로.

인터넷 선을 Actor마다 실제로 따로 연결하는 건 아니지만, 엔진 내부에서 데이터를 구분하기 위해 사용한다. 그래서 한 NetConnection 내부에 여러 Channel을 둔다.

ActorChannel

ActorChannel특정 Actor 하나를 특정 클라이언트에게 복제하기 위한 통로이다.

예를 들어 서버에 Boss가 있고 클라이언트 A와 B가 모두 Boss를 볼 수 있다면

Server Boss 원본
├─ NetConnection A의 Boss ActorChannel
└─ NetConnection B의 Boss ActorChannel

ActorChannel은 Actor마다 하나만 있는 게 아니라,

( Actor 하나 x 클라이언트 연결 하나 )마다 ActorChannel이 생길 수 있다.

ActorChannel은 특정 클라이언트에 대한 Actor의 네트워크 생명주기에 관여한다.

Network Relevancy

Relevancy는 특정 Actor가 현재 특정 클라이언트에게 복제될 필요가 있는지 판단하는 개념이다.

Relevant → 이 클라이언트에게 해당 Actor를 복제해야 함
Not Relevant → 현재는 이 클라이언트에게 복제할 필요가 없음

예를 들어 플레이어 A 주변의 몬스터가 플레이어 B에게는 매우 멀리 있을 수 있다.

플레이어 A
→ 몬스터가 가까움
→ Relevant
→ 몬스터 복제 데이터를 받음

플레이어 B
→ 몬스터가 너무 멂
→ Not Relevant
→ 몬스터 복제 데이터를 받지 않음

모든 클라이언트에게 맵 전체 Actor의 정보를 계속 전송하면 네트워크 비용이 지나치게 커지기 때문에, 서버는 Connection별로 Actor의 Relevancy를 판단한다.

NetConnection은 특정 클라이언트와의 연결이고, ActorChannel은 그 연결에서 특정 Actor의 복제 상태를 관리한다. Relevancy는 그 ActorChannel을 통해 현재 해당 Actor를 복제할 필요가 있는지를 판단하는 기준이다.

0개의 댓글