Unreal Engine 멀티플레이어 게임 개발 1-3,4
1. WHY
- 멀티플레이 학습 전 기초 상식 학습
- 멀티플레이 프로젝트에 필요한 설정들을 학습
- 깊이 있는 멀티플레이 개념 학습에 필요한 선수 지식 학습
2. WHAT
- 서버 종류
a. P2P Server(Peer to Peer Server)
👉각각의 컴퓨터가 클라이언트이자 서버인 구조.

b. Listen Server
👉방장(Host, 클라이언트+서버)이 있고 나머지 참가자(Guest, 클라이언트) 형태. P2P 일종

c. Dedicated Server
👉서버-클라이언트 구조. 서버를 담당하는 컴퓨터가 따로 존재.

- Dedicated Server의 실행 흐름도

1️⃣ 서버 실행
- PIE 실행 또는 Server.exe 실행으로 서버 프로세스 시작
- 실행 시 다음 명령어 전달
Open {LevelName}?Listen
- Listen 옵션이 있으면
- 서버가 Socket을 생성
- 다른 클라이언트가 IP + Port로 접속 가능
- Listen 옵션이 없으면
- 싱글 플레이 모드로 실행

2️⃣ Level 로드 및 핵심 액터 생성
- Level에는 WorldSettings가 존재하며 여기에는 GameMode와 GameState 정보가 있음
- Level이 열리면 서버에서 GameMode, GameState 엑터 생성
| GameMode | Server에만 존재 |
| GameState | Server + Client 모두 존재 |
👉 그래서 GameMode = 서버 로직이라고 생각해도 됨.

3️⃣ 클라이언트 접속 요청
- 클라이언트는 다음 정보를 이용해 서버에 접속
IP 주소
Port 번호
접속 과정
- 클라이언트가 서버에 접속 요청
- 서버는 클라이언트에게 Level 정보 전달
- 클라이언트는 해당 Level을 로드
- 로드 성공 시 서버에 로드 완료 메시지 전송

4️⃣ 서버에서 플레이어 관련 액터 생성
- 클라이언트가 Level 로딩을 완료하면 서버에서 해당 클라이언트 전용 액터를 생성함.
생성되는 액터
- PlayerController
- PlayerState
- PlayerCharacter (Pawn)
생성 위치👉Server
그리고 이 액터들이 Client1으로 복제(Replication) 됨.
또한 GameState도 Client1으로 복제

5️⃣ 두 번째 클라이언트 접속
- Client2가 동일한 방식으로 접속
- 서버 접속
- Level 정보 전달
- Level 로드
- 로드 완료 알림

6️⃣ Client2용 액터 생성 및 복제
- PlayerController
- PlayerState
- PlayerCharacter
그리고 Client2로 복제
7️⃣ 클라이언트 간 정보 동기화
- 서버는 각 클라이언트의 플레이어 정보를 서로에게 복제함.
복제되는 주요 정보
- PlayerState
- PlayerCharacter
Client1 ↔ Client2 서로의 캐릭터가 보이게 됨
- 서버–클라이언트 구조의 중요한 특징
언리얼의 멀티플레이는 서버 권한(Server Authority) 기반 구조로 동작
- 클라이언트 ↔ 클라이언트 직접 통신은 불가능
- 모든 통신은 서버를 반드시 거쳐야 함
- 즉, 클라이언트 → 서버 → 다른 클라이언트 구조로 데이터가 전달
- 데디케이티드 서버 환경 설정
- Toolbar > Edit > Editor Preferences에서 아래 옵션들을 체크합니다.
1️⃣ Allow Late Joining 체크 하면 Add another cliner 버튼으로 클라이언트 추가 가능합니다.
2️⃣ Always on top 체크하면 새 클라이언트 화면이 항상 위에 뜹니다.
3️⃣ Multiplayer Options에서 추가적인 설정 가능합니다.
📌Launch Seperate Server
- 체크 시 서버 따로 띄워줍니다.
- 안 하면 에디터 화면이 클라이언트이자 서버입니다.
📌Run Under One Process
- 체크하면 같은 프로세스 내라서 공유하는 에셋이 생깁니다.
- 따라서 확실한 멀티플레이 환경이라고 보기엔 무리입니다.
- 다만 성능상의 이점이 있습니다. 체크하지 않으면 서버와 각 클라이언트들이 다른 프로세스로 분기됩니다.
- 추후에 멀티플레이 디버깅 시 체크하고 로깅을 찍어볼 수 있습니다.
📌“Net Mode”는 “Play as Client”로 설정합니다.
4️⃣플레이 버튼 우측에 점 세개 기호 클릭 > Number of Players에 2를 설정합니다.
'내배캠Unreal_TIL > UE' 카테고리의 다른 글
| [TIL] 2026-03-10 | 아웃라인, 역광효과 머티리얼 만들기, Rim Light Effect, World Position Offset (0) | 2026.03.10 |
|---|---|
| [TIL] 2026-03-09 | UE NetMode, NetConnection, NetDriver, NetRole (2) | 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 |
| [TIL] 2026-02-05 | 머티리얼 실습 NPR 재질 만들기, 카툰 효과 (0) | 2026.02.05 |