TIL — Unreal Multiplayer 기초: NetMode, NetDriver, NetConnection, Ownership
1. 오늘 학습한 내용
NetMode란?
NetMode는 현재 UWorld가 네트워크에서 어떤 역할로 동작하고 있는지를 나타내는 개념이다.
대표적인 NetMode는 다음과 같다.
- NM_Standalone : 네트워크를 사용하지 않는 일반적인 독립 실행
- NM_Client : 서버에 연결된 클라이언트
- NM_ListenServer : 서버 역할과 로컬 플레이어 역할을 동시에 수행
- NM_DedicatedServer : 플레이어 없이 서버 역할만 수행
중요한 점은 NetMode가 단순히 "네트워크를 사용한다 / 안 한다"만 나타내는 것이 아니라, 현재 World의 네트워크상 역할을 나타낸다는 것이다.
UWorld와 NetMode
NetMode는 UWorld와 밀접하게 관련되어 있다.
UWorld
↓
현재 World의 네트워크 역할 확인
↓
NetMode
UWorld::InternalGetNetMode()는 현재 UWorld가 어떤 네트워크 모드로 동작하는지 내부적으로 확인하는 함수이다.
따라서 InternalGetNetMode()를 이해할 때는:
"현재 World는 네트워크에서 어떤 역할을 하고 있는가?"
를 확인하는 함수라고 이해하면 된다.
2. NetDriver란?
NetDriver는 Unreal Engine에서 네트워크 통신 전반을 관리하는 객체이다.
쉽게 표현하면:
UWorld가 게임 세계를 관리한다면, NetDriver는 네트워크와 관련된 일을 관리한다.
예를 들어 서버에서 플레이어의 상태가 변경되었을 때 다른 클라이언트에게 해당 정보를 전달하는 등 네트워크 처리를 담당하는 중심적인 역할을 한다.
UWorld
├── 게임 세계 관리
│
└── NetDriver
└── 네트워크 관련 처리
NetMode와 NetDriver의 차이
둘은 비슷해 보이지만 역할이 다르다.
NetMode
→ "나는 어떤 네트워크 역할인가?"
NetDriver
→ "네트워크를 어떻게 관리하는가?"
이 차이를 구분하는 것이 중요하다.
3. NetConnection이란?
NetConnection은 특정 네트워크 상대와의 연결을 나타내는 개념이다.
예를 들어 서버에 여러 명의 클라이언트가 접속한다면:
Server
│
└── NetDriver
├── NetConnection → Client A
├── NetConnection → Client B
└── NetConnection → Client C
처럼 생각할 수 있다.
따라서:
NetDriver는 네트워크 전반을 관리하고, NetConnection은 특정 네트워크 상대와의 연결을 관리한다.
둘의 차이
NetDriver
→ 네트워크 통신의 전반적인 관리
NetConnection
→ 특정 상대와의 네트워크 연결
여기서 중요한 것은 NetConnection이 게임의 Actor들 사이의 연결을 의미하는 것이 아니라는 것이다.
예를 들어:
Player ↔ Weapon
Monster ↔ Player
같은 게임 객체 간 관계를 의미하는 것이 아니다.
4. Ownership이란?
Ownership은 말 그대로 소유 관계를 의미한다.
멀티플레이에서는 특히:
특정 Actor가 어떤 네트워크 연결(Client)과 소유 관계를 가지고 있는가
라는 관점에서 중요하다.
예를 들어:
Client A
↓
Player A
Player A가 Client A와 소유 관계를 가지고 있을 수 있다.
반면 몬스터처럼 특정 플레이어가 소유하지 않고 서버가 관리하는 Actor도 존재할 수 있다.
Ownership이 중요한 이유
네트워크에서는 모든 Client가 모든 Actor에 대해 동일한 권한을 가지는 것이 아니다.
어떤 Client가 특정 Actor를 소유하고 있는지에 따라 네트워크상 권한이나 RPC 호출과 같은 동작이 달라질 수 있다.
따라서 Ownership은 단순히:
"이 Actor가 어느 컴퓨터에 있는가?"
를 의미하는 것이 아니다.
Actor는 여러 컴퓨터의 World에 존재할 수 있지만, 그 Actor가 어떤 네트워크 연결과 소유 관계를 가지는지가 Ownership의 핵심이다.
5. PlayerController와 Ownership
멀티플레이에서 PlayerController는 특정 플레이어를 대표하는 중요한 Actor이다.
개념적으로 다음과 같은 관계를 생각할 수 있다.
Client A
↓
NetConnection
↓
PlayerController A
↓
PlayerCharacter A
따라서 PlayerController는 특정 Client와 Actor의 Ownership 관계를 이해하는 데 중요한 역할을 한다.
아직 이 관계의 정확한 엔진 내부 동작까지는 학습하지 않았으며, 다음 학습에서 더 자세히 확인할 예정이다.
오늘 배운 핵심 정리
UWorld
│
├── NetMode
│ → "현재 World의 네트워크 역할은?"
│
└── NetDriver
→ "네트워크 전반을 어떻게 관리하지?"
│
└── NetConnection
→ "특정 네트워크 상대와 어떻게 연결되어 있지?"
│
↓
Ownership
→ "이 Actor와 어떤 네트워크 연결이
소유 관계를 가지고 있지?"
한 문장으로 정리
NetMode는 현재 World의 네트워크 역할을 나타내고, NetDriver는 네트워크 전반을 관리하며, NetConnection은 특정 상대와의 연결을 나타내고, Ownership은 Actor와 네트워크 연결 사이의 소유 관계를 나타낸다.
오늘의 학습 상태
- NetMode — 이해 완료
- UWorld::InternalGetNetMode() — 기본 개념 이해
- NetDriver — 기본 역할 이해
- NetConnection — 기본 역할 이해
- Ownership — 기본 개념 학습 중
- PlayerController와 Ownership의 관계 — 다음 학습에서 이어서 진행
'내일배움캠프_언리얼9기' 카테고리의 다른 글
| 내일배움캠프 70일차 TIL 2026/07/31 (0) | 2026.07.31 |
|---|---|
| 내일배움캠프 69일차 TIL 2026/07/30 (0) | 2026.07.30 |
| 내일배움캠프 67일차 TIL 2026/07/28 (0) | 2026.07.28 |
| 내일배움캠프 63일차 TIL 2026/07/22 (0) | 2026.07.22 |
| 내일배움캠프 61일차 TIL 2026/07/20 (0) | 2026.07.20 |