Unreal Engine 멀티플레이어 게임 개발 1-5,6
1. WHAT
- NetMode
👉현재 게임 프로세스가 네트워크에서 어떤 역할을 하는지를 나타내는 값
즉, 해당 코드가 서버에서 실행되는지, 클라이언트에서 실행되는지, 싱글플레이인지를 구분하는 기준
- NM_Standalone : 싱글플레이 (서버와 클라이언트가 같은 프로세스)
- NM_Client : 서버에 접속한 클라이언트
- NM_ListenServer : 플레이어가 직접 서버를 열고 플레이하는 서버
- NM_DedicatedServer : 플레이어 없이 서버 기능만 수행하는 전용 서버
멀티플레이에서는 게임 결과에 영향을 주는 로직(예: 데미지 계산)은 서버에서 처리해야 하므로,
코드가 어느 환경에서 실행되는지 확인(디버깅)하기 위해 NetMode를 사용!
- NetConnection
👉서버와 클라이언트 사이의 실제 네트워크 연결을 나타내는 객체
멀티플레이에서 다른 PC와 연결되면 해당 연결에 대응하는 UNetConnection 객체가 생성됨
- 서버
- 접속한 클라이언트 수만큼 ClientConnection을 가짐
- 클라이언트
- 서버와 연결된 ServerConnection 하나만 가짐
PlayerController는 자신의 NetConnection을 통해 서버와 통신하며,
Actor → Pawn → PlayerController와 같은 Ownership 체인을 통해 NetConnection에 접근할 수 있다.

- Unreal의 Ownership
멀티플레이에서는 Ownership 관계가 매우 중요하다.
ClientConnection
↓
PlayerController
↓
Pawn (Character)
↓
Weapon
이처럼 연결된 관계를 패밀리(Family) 라고 부름.
이 구조 덕분에 무기 액터에서도 자신의 Owning Connection을 찾을 수 있다.
AActor::GetNetConnection()
이 Ownership 구조는 이후 RPC와 Replication을 이해하는 데 매우 중요
- NetDriver
👉언리얼 네트워크 시스템의 전체 통신을 관리하는 클래스
- 네트워크 통신 관리
- NetConnection 생성 및 관리
- Actor Replication 처리
- RPC 전달
멀티플레이가 시작되면 각 PC마다 UNetDriver가 생성
- 서버의 NetDriver
- 여러 ClientConnection 관리
- 클라이언트의 NetDriver
- ServerConnection 하나 관리
NetDriver
├ NetConnection (Client1)
├ NetConnection (Client2)
└ NetConnection (Client3)
- NetMode 추가 설명
NetMode는 World의 속성입니다.
Standalone
- 네트워크 연결이 없는 상태
- 싱글플레이
- 서버 로직과 클라이언트 로직이 모두 실행됨
Client
- 서버에 연결된 클라이언트
- 서버 로직은 실행하지 않음
- 서버에서 복제된 데이터를 표시하는 역할
Listen Server
- 서버가 직접 플레이도 하는 방식
- 로컬 플레이어가 존재
- 캐주얼 멀티플레이에서 많이 사용
Dedicated Server
- 플레이어가 없는 서버
- 그래픽 / 사운드 / 입력 없음
- 대규모 멀티플레이에서 사용
- NetMode에 따른 액터 위치
서버에만 존재
- GameMode
서버와 모든 클라이언트에 존재
- 배경 Actor
- Pawn
서버와 해당 클라이언트에 존재
- PlayerController
클라이언트에만 존재
- UI
- NetRole
👉액터가 네트워크에서 어떤 권한을 가지고 동작하는지를 나타내는 값
NetMode가 월드 기준(서버/클라이언트)이라면, NetRole은 액터 기준의 네트워크 권한
즉, 해당 액터가 서버 권한을 가진 객체인지, 단순히 복제된 객체인지를 구분하는 역할
- Authority와 Proxy

- Authority
- 서버에 스폰된 액터가 가지는 역할
- 게임 결과에 영향을 주는 중요 로직을 실행할 수 있는 권한을 가짐
- 예: 데미지 계산, 스폰 처리
- Proxy
- 서버 액터가 클라이언트로 복제된 객체
- 서버 데이터를 받아 동기화만 하는 역할
- 중요한 로직을 수행하면 안 됨
- Local Role과 Remote Role

멀티플레이에서는 현재 컴퓨터 기준의 역할과 반대편 컴퓨터 기준의 역할이 존재한다.
- LocalRole
- 현재 실행 중인 PC에서의 액터 역할
- RemoteRole
- 네트워크로 연결된 다른 PC에서의 액터 역할
이 두 정보를 통해 액터의 네트워크 상태를 정확히 판단할 수 있다.
- NetRole 종류
None
- 레플리케이션되지 않는 액터
Authority
- 서버에서 실행되는 액터
- 게임 로직을 처리하는 권한을 가짐
Autonomous Proxy
- 서버 액터의 복제본
- 서버와 양방향 통신 가능
- 예: 플레이어가 조작하는 캐릭터
Simulated Proxy
- 서버 액터의 복제본
- 서버 데이터를 수신하여 동기화만 수행
- 예: 다른 플레이어의 캐릭터
- NetRole 관련 주요 함수
`HasAuthority()` : 서버 권한을 가진 액터인지 확인하는 함수
`IsLocallyControlled()` : 현재 클라이언트가 직접 조작하는 액터인지 확인

'내배캠Unreal_TIL > UE' 카테고리의 다른 글
| [TIL] 2026-03-10 | Remote Procedure Call 기초 (2) | 2026.03.10 |
|---|---|
| [TIL] 2026-03-10 | 아웃라인, 역광효과 머티리얼 만들기, Rim Light Effect, World Position Offset (0) | 2026.03.10 |
| [TIL] 2026-03-09 | 서버의 종류, 데디케이티드 서버 환경 설정 (0) | 2026.03.09 |
| [TIL] 2026-02-28 | UE5 Environment Lighting (2) | 2026.02.28 |
| [TIL] 2026-02-19 | UE5 Sound Cue (0) | 2026.02.19 |