내일배움캠프_언리얼9기

내일배움캠프 68일차 TIL 2026/07/29

begin-play 2026. 7. 29. 23:34

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의 관계 — 다음 학습에서 이어서 진행