티스토리 뷰
🟩 학습 목표
- 실습 프로젝트 생성 및 멀티플레이 기초 상식 학습
- 멀티플레이 프로젝트 필수 설정 파악
- 멀티플레이 심화 개념 학습을 위한 선수 지식 습득
🟧 서버의 종류 (P2P, Listen, Dedicated)
멀티플레이 게임 아키텍처는 데이터 권한과 통신 방식에 따라 크게 세 가지로 분류된다.
🟦 P2P Server (Peer to Peer Server)
각각의 컴퓨터가 클라이언트이자 서버 역할을 동시에 수행하는 구조다. 모든 플레이어가 서로 연결되어 권한을 나누어 갖는다.
- 예시: 다크소울, 토렌트
🟦 Listen Server
클라이언트이자 서버 역할을 하는 방장(Host)이 존재하고, 나머지 참가자(Guest)는 모두 클라이언트 역할만 맡는 형태다. P2P의 일종으로 볼 수 있다. 방장의 권한이 절대적이다.
- 예시: 마인크래프트, 어몽어스
🟦 Dedicated Server
서버 역할을 담당하는 컴퓨터가 따로 존재하는 서버-클라이언트 구조다. 서버 컴퓨터는 그래픽 렌더링 없이 오직 게임 로직과 데이터 검증만 처리한다. 가장 높은 신뢰도를 보장한다.
- 예시: 배틀그라운드
🟧 데디케이티드 서버 실행 흐름도
데디케이티드 서버의 실행과 연결 과정은 다음과 같은 순서로 진행된다.
🟦 서버 프로세스 실행 및 소켓 생성
- 에디터에서 PIE(Play in Editor)를 실행하거나 Server.exe를 구동하는 방식으로 서버 프로세스를 실행한다.
- 실행 시 인자로 Open {Level이름}?Listen 명령어가 전달되어 해당 레벨을 열고, 다른 PC가 접속할 수 있도록 소켓(Socket)을 생성한다. ?Listen 인자가 없으면 싱글플레이로 작동한다.
🟦 서버 전용 객체 생성 (GameMode, GameState)
- 레벨의 WorldSettings에 있는 정보를 바탕으로 GameMode와 GameState 액터가 생성된다.
- 핵심 포인트: GameMode 액터는 전체 컴퓨터 중 오직 **서버(Server)**에만 존재한다. 따라서 GameMode와 Server를 동일시해도 무방하다.
🟦 클라이언트 접속 및 레벨 동기화
- 클라이언트는 서버의 IP 주소와 포트 번호로 접속을 시도한다.
- 서버는 클라이언트에게 레벨 정보를 전달하고, 클라이언트는 해당 레벨을 성공적으로 여는 데 성공했다고 데디 서버에게 알린다.
🟦 클라이언트 전용 액터 생성 및 복제 (Replication)
- 레벨을 연 클라이언트 전용 PlayerState, PlayerController, PlayerCharacter가 서버에 생성된다.
- 이 객체들은 다시 해당 클라이언트에게 복제되며, GameState도 함께 복제된다.
- 또 다른 클라이언트가 접속하면 마찬가지로 전용 액터들이 생성되고 각 클라이언트에게 복제되며, 클라이언트 간의 PlayerState와 PlayerCharacter도 복제되어 서로의 모습이 보이게 된다.
🟧 서버-클라이언트 구조의 핵심 특징
🟦 클라이언트 간 직통 불가 (Client-to-Client Impossible)
서버-클라이언트 구조의 아주 중요한 특징은 클라이언트와 클라이언트 간의 직접 통신이 불가능하다는 점이다. 오직 서버와 클라이언트 사이의 통신만 가능하다. 이 특징은 앞으로 배울 RPC나 프로퍼티 레플리케이션 설계 방식에도 직접적인 영향을 끼치므로 반드시 기억해야 한다.
🟧핵심 요약
- 멀티플레이 서버는 크게 P2P, Listen, Dedicated 세 가지로 분류된다.
- 데디케이티드 서버 실행 시 ?Listen 파라미터가 소켓 생성의 핵심이며, 클라이언트는 레벨 정보를 넘겨받아 동기화한다.
- GameMode는 전 세계에 단 하나, 오직 서버에만 존재하므로 서버의 권한 그 자체다.
- 서버-클라이언트 구조에서는 클라이언트 간의 직접 통신이 불가능하며 모든 데이터는 서버를 거쳐야 한다.
'내일배움캠프 Unreal_7기 > 본캠프' 카테고리의 다른 글
| Property Replication (1) | 2026.03.23 |
|---|---|
| NetMode, NetConnection, NetDriver (0) | 2026.03.19 |
| 이동 입력 차단 버그 분석 및 AnimNotify 기반 상태 복구 설계 (0) | 2026.03.09 |
| [CH 3] 팀프로젝트 - KPT 회고 (0) | 2026.03.05 |
| [CH 3] 팀프로젝트 - 애니메이션 상하체 분리 및 사격 예약 시스템 고도화 (0) | 2026.02.27 |

