Post

2026-06-15 TIL (76일차)

2026-06-15 TIL (76일차)

서버의 종류와 데디케이티드 서버 기초 지식

언리얼 엔진의 멀티플레이는 클라이언트-서버(Client-Server) 모델을 기반으로 작동합니다. 성공적인 멀티플레이 게임을 개발하기 위해서는 서버가 무엇인지, 어떤 종류가 있는지, 그리고 권한(Authority)이 어떻게 주어지는지 명확히 이해해야 합니다.


1. 언리얼 엔진 네트워크 기초 상식: 클라이언트-서버 모델

언리얼 엔진은 서버 권한(Server Authoritative) 구조를 가집니다. 이 말은 즉, “서버가 무조건 옳고, 서버가 게임의 진짜 상태를 결정한다”는 뜻입니다. 클라이언트(플레이어의 PC)는 단순히 서버에 “저 앞으로 갈게요”, “저 총 쏠게요”라고 요청하고, 서버가 이를 승인하여 결과를 다시 클라이언트에게 동기화해주는 방식으로 게임이 진행됩니다. 이를 통해 핵(Hack)이나 치팅을 방지할 수 있습니다.


2. 서버의 종류 (Types of Servers)

멀티플레이 게임에서 서버는 크게 두 가지 방식으로 나뉩니다. 프로젝트의 장르와 규모에 따라 적합한 서버 구조를 선택해야 합니다.

① 리슨 서버 (Listen Server)

플레이어 중 한 명이 호스트(서버) 역할을 동시에 수행하는 방식입니다.

  • 특징: 호스트의 PC에서 게임 클라이언트(화면, 소리)가 실행되면서, 동시에 다른 플레이어들의 네트워크 통신을 처리하는 서버 역할도 맡습니다.
  • 장점: 별도의 물리적 서버를 구축하고 유지하는 비용이 들지 않습니다.
  • 단점: * 호스트 어드밴티지: 호스트는 네트워크 지연(Ping)이 ‘0’이므로 절대적으로 유리합니다.
    • 안정성 문제: 호스트 플레이어가 게임을 종료하거나 인터넷이 끊기면, 게임방 자체가 폭파됩니다.
    • 보안 취약: 호스트가 메모리를 변조하여 치팅을 할 경우 막기가 매우 어렵습니다.
  • 주로 쓰이는 곳: 스타크래프트의 배틀넷 방, 마인크래프트 LAN 게임, 소규모 코옵(Co-op) 게임 등.

② 데디케이티드 서버 (Dedicated Server)

오직 서버의 역할만을 전담(Dedicated)하는 별도의 프로그램/컴퓨터입니다.

  • 특징: 플레이어는 존재하지 않으며, 그래픽 렌더링, 사운드 출력 등의 클라이언트 기능이 완전히 제거된 백그라운드 프로세스로 동작합니다.
  • 장점: * 공평성: 모든 플레이어가 클라이언트로 접속하므로 공평한 네트워크 지연(Ping) 환경에서 게임을 합니다.
    • 안정성 및 보안: 특정 플레이어가 나가도 게임은 유지되며, 로직이 철저히 서버에 숨겨져 있어 해킹/치팅 방지에 탁월합니다.
    • 대규모 인원 수용: 그래픽 연산 등 불필요한 리소스 소모가 없어 다수의 유저 처리에 유리합니다.
  • 단점: 개발 및 테스트가 다소 까다로우며(보통 소스 빌드 필요), 24시간 돌아가는 서버 유지(AWS 등) 비용이 발생합니다.
  • 주로 쓰이는 곳: 배틀그라운드, 발로란트, 오버워치, MMORPG 등 대규모 및 경쟁형 멀티플레이 게임.

비교 표

| 구분 | 리슨 서버 (Listen Server) | 데디케이티드 서버 (Dedicated Server) | | :— | :— | :— | | 운영 주체 | 플레이어 (호스트) | 별도의 서버 컴퓨터 (개발사 운영) | | 렌더링/UI | 있음 (호스트가 게임을 플레이함) | 없음 (로직과 연산만 처리) | | 유지 비용 | 무료 (유저의 PC 성능 활용) | 높음 (클라우드/서버 호스팅 비용 발생) | | 보안 및 공평성| 취약함 (호스트 어드밴티지 존재) | 우수함 (모두가 동일한 클라이언트) |


3. 깊이 있는 멀티플레이를 위한 3대 선수 지식

본격적인 코딩이나 블루프린트 작업에 들어가기 전, 다음 세 가지 단어는 반드시 기억해야 합니다.

  • Replication (리플리케이션 / 동기화):
    • 서버에서 일어난 변화(플레이어의 체력 변화, 문이 열림 등)를 접속해 있는 모든 클라이언트 화면에 똑같이 복제하여 보여주는 기능입니다.
  • RPC (Remote Procedure Call / 원격 프로시저 호출):
    • 내 PC(클라이언트)에서 실행한 명령을 서버에서 실행되게 하거나, 반대로 서버에서 명령을 내려 특정 클라이언트에서 실행되게 하는 네트워크 통신 방법입니다.
  • Authority (권한):
    • 특정 액터(캐릭터, 아이템 등)를 조종하거나 상태를 변경할 수 있는 ‘주도권’입니다. 멀티플레이에서는 이 권한이 서버에 있는지, 클라이언트에 있는지를 파악하는 것이 버그를 잡는 핵심입니다.

4. 멀티플레이 프로젝트 설정 기초

  • 플레이 인 에디터(PIE)에서 멀티플레이를 테스트하려면, 우측 상단 플레이 버튼 옆의 점 3개(⋮)를 눌러 ‘Net Mode(넷 모드)’를 변경해야 합니다.
    • Play As Listen Server: 에디터가 호스트 역할을 합니다.
    • Play As Client: 백그라운드에 데디케이티드 서버가 켜지고 에디터는 클라이언트로 접속합니다.
  • 플레이어 수(Number of Players): 이 숫자를 2 이상으로 설정해야 여러 개의 게임 창이 뜨며 통신 테스트가 가능해집니다.
This post is licensed under CC BY 4.0 by the author.