언리얼 네트워크 접속
UNetDriver :
Unreal Engine의 네트워킹 시스템에서 네트워크 연결 전반을 관리하는 클래스
역할
- 서버와 클라이언트 간의 연결 생성 및 유지
- 데이터를 패킷으로 만들어서 전송하고, 받은 패킷을 해석
- 리플리케이션을 통한 동기화 => 모든 클라이언트가 같은 게임 상태를 봄
- 연결된 클라이언트 리스트 관리
주요 프로퍼티

- ClientConnections : 서버일 경우, 연결된 클라이언트들을 나타냄
- 서버에서는 접속한 클라이언트 하나당 하나의 UNetConnection을 가짐
- ServerConnection : 클라이언트일 경우, 서버와의 연결을 나타냄
- 클라이언트에서는 자신과 서버를 잇는 하나의 UNetConnection을 가짐
UNetConnection :
Unreal Engine의 네트워킹 시스템에서 서버와 클라이언트 사이에서 네트워크 연결을 담당하는 클래스
역할
- 데이터 송수신 관리
- 데이터 전송 채널(Channel)들을 관리함
- 레플리케이션 상태 유지 및 추적
- 어떤 액터가 어떤 클라이언트에 복제됐는지 추적
주요 프로퍼티

- Channels : 현재 이 연결을 통해 열려 있는 모든 채널
- 각 채널은 하나의 네트워크 대상을 위한 것
- UActorChannel : 액터
- UControlChannel : 로그인/핸드셰이크 등의 제어 정보
- UVoiceChannel : 음성 데이터
- OwningActor : 이 연결의 대상(?), 주체(?)
- State : 현재 연결 상태
⊃ : 왼쪽이 오른쪽을 소유
UNetDriver ⊃ UNetConnection ⊃ PlayerController ⊃ Pawn
네트워크 접속
⭐ 서버 네트워크 초기화
⭐ 클라이언트 접속 흐름
클라 측 : UPendingNetGame
서버 측 : UWorld
- client -> server : Hello message
- server -> client : Challenge message
- client -> server : Login message
- server -> client : Welcome message
- client -> server : Netspeed/Join message
액터와 그 접속 소유
액터 리플리케이션 흐름
Actor Role
이후로는 ChatGPT를 통해 얻은 정보로 확실한 게 아님. 다만 나중에 저런 걸 쓸 상황이 올 때 아래와 같은 내용으로 이해를 하고 접근해볼 수 있으니 가볍게 정리해본 것
SimulatedProxy vs AutonomousProxy
LocalRole과 IsLocallyControlled()
“Owner 없이 AutonomousProxy일 수 있나?”
✅ 핵심 개념
- AutonomousProxy는 서버에서 "너 이거 조종해"라고 설정
- SetOwner(PlayerController) 또는 Possess() 호출
- "최초 설정 시에는 반드시 Owner가 필요하다"
- 그런데 클라이언트에서 Actor가 [복제된 시점]에서는...
- LocalRole == AutonomousProxy일 수 있음 (서버가 그걸로 복제했기 때문)
- 하지만 아직 GetOwner()는 nullptr일 수 있음
- 왜? Owner는 따로 리플리케이트되기 때문(즉, 아직 Owner 정보가 클라에 도착 안 했을 수도 있음)
🎯 요점:
- ✅ AutonomousProxy가 되기 위해서는 서버 측에서 Owner가 반드시 필요하다.
- ❗ 하지만 클라이언트에서 그 Owner가 아직 리플리케이트되지 않았을 수 있다.
=> "클라이언트에서 Owner 없이도 AutonomousProxy일 수 있다" → 이건 클라이언트 리플리케이션 타이밍에서 Owner가 도착 전일 수 있다는 뜻(정확히 말하면 "내부적으로는 Owner가 있어야 하고, 클라 입장에선 아직 그 정보가 안 왔을 수도 있다")
HasAuthority() : 서버인지
IsLocallyControlled() : 내가 조종 중인지
GetLocalRole() == ROLE_AutonomousProxy : 조종할 수 있는지
GetController()->IsLocalController() : 컨트롤러 기준 조종 여부
참고
1. https://designerd.tistory.com/entry/UE-Net-Actor-Connection-Handshaking