본문으로 건너뛰기
Unreal Engine 멀티플레이LESSON 30

데디케이티드 서버 패키징 구조와 준비 사항

난이도입문 → 초급
예상 시간100분
선수지식29강의 환경별 세션 테스트

30강. 데디케이티드 서버 패키징 구조와 준비 사항

1. 이번 강의에서 해결할 문제​

Editor의 “Run Dedicated Server” 옵션이 동작했다고 패키지 서버도 버튼 한 번으로 완성된다고 생각합니다. 실제 Server Target 빌드는 엔진 설치 유형, 플랫폼 SDK, 모듈 의존성, Cook할 맵, 방화벽·포트와 배포 머신 운영이 모두 맞아야 합니다.

2. 학습 목표​

3. 핵심 개념​

데디케이티드 서버는 NM_DedicatedServer World에서 게임 규칙과 네트워크만 실행합니다. 카메라, Widget, 로컬 입력과 음향 출력에 의존하면 안 됩니다. 공식 가이드의 Server Target·패키징 요구는 엔진 버전과 플랫폼에 따라 달라지며 Epic Games Launcher의 사전 빌드 엔진만으로 원하는 Server Target 패키징이 되지 않는 구성이 있습니다. 현재 엔진 버전의 전용 서버 공식 안내를 먼저 확인합니다.

서버 실행 파일만 만드는 것으로 끝나지 않습니다. 실행 맵, 명령줄, 포트 7777, 로그 회전, 프로세스 재시작, 빌드 버전 일치와 안전한 설정 배포가 필요합니다.

4. 단계별 실습​

파일 경로: Source/CaptureArenaServer.Target.cs

CaptureArenaServer.Target.cs
using UnrealBuildTool;
using System.Collections.Generic;

public class CaptureArenaServerTarget : TargetRules
{
public CaptureArenaServerTarget(TargetInfo Target) : base(Target)
{
Type = TargetType.Server;
DefaultBuildSettings = BuildSettingsVersion.Latest;
IncludeOrderVersion = EngineIncludeOrderVersion.Latest;
ExtraModuleNames.Add("CaptureArena");
}
}

헤드리스 표현 경계

CaptureArenaGameMode.cpp
void ACaptureArenaGameMode::BeginPlay()
{
Super::BeginPlay();

UE_LOG(LogTemp, Display, TEXT("Server started NetMode=%d Map=%s"),
GetNetMode(), *GetWorld()->GetMapName());

// GameMode 규칙은 실행하지만 Widget·카메라는 생성하지 않습니다.
}

Windows 예시 · 실제 엔진 경로와 프로젝트 파일로 교체

PowerShell
$EngineRoot = "C:\Unreal\UE_5.x"
$Project = "C:\UnrealProjects\CaptureArena\CaptureArena.uproject"
$Archive = "C:\Builds\CaptureArenaServer"

& "$EngineRoot\Engine\Build\BatchFiles\RunUAT.bat" BuildCookRun `
-project="$Project" -noP4 -server -serverconfig=Development `
-platform=Win64 -build -cook -stage -pak -archive `
-archivedirectory="$Archive" `
-map="/Game/Maps/Lobby+/Game/Maps/CaptureMap"

이 명령이 현재 엔진 배포에서 Server Target을 지원하지 않으면 실패 원문, 엔진 설치 출처와 필요한 source build/SDK를 기록하고 억지로 성공 처리하지 않습니다.

실행·접속 예시

PowerShell
& "C:\Builds\CaptureArenaServer\CaptureArenaServer.exe" `
/Game/Maps/Lobby -log -port=7777

& "C:\Builds\CaptureArenaClient\CaptureArena.exe" `
127.0.0.1:7777 -windowed -ResX=800 -ResY=450 -log

두 번째 클라이언트를 다시 실행해 서버 로그의 PostLogin 수와 클라이언트 Map을 확인합니다. 외부 네트워크 포트 공개는 방화벽·라우터·클라우드 보안 정책을 이해한 환경에서 최소 범위로 수행합니다.

5. 코드가 동작하는 이유​

TargetType.Server는 클라이언트 렌더링 실행과 분리된 서버 빌드 구성을 만듭니다. Cook/Stage/Pak은 서버가 필요한 맵과 자산을 실행 가능한 배포 구조로 준비합니다. 서버가 로컬 PlayerController나 UI에 의존하지 않으면 리슨에서 작성한 권한 규칙을 헤드리스 환경에서도 유지할 수 있습니다.

6. 자주 하는 실수와 해결법​

7. 직접 실습​

8. 이해 점검 질문 3개​

9. 핵심 요약​

MINI QUIZ

데디케이티드 서버 패키징 구조와 준비 사항 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“데디케이티드 서버 패키징 구조와 준비 사항” 코드 리뷰에서 유지해야 할 설계 원칙은 무엇인가요?
  2. 문제 2“데디케이티드 서버 패키징 구조와 준비 사항”의 작업 기준으로 ‘Editor 옵션을 패키지 완료로 착각’을 진단하거나 바로잡은 선택은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

30강. 데디케이티드 서버 패키징 구조와 준비 사항 미완료 상태