Unreal Engine

언리얼 엔진 데디케이티드 서버 빌드

hhzn 2025. 6. 30. 20:41

 

 

내가 헷갈렸던 부분들을 집중적으로 적어서 올리려고 한다.

 
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/setting-up-dedicated-servers-in-unreal-engine?application_version=5.0

 

공식 문서 5.0 버전이 가장 상세히 설명하고 있어서 이를 참고하였다.

 

 

에디터 소스 빌드

일단 데디케이티드 서버 빌드를 하기 위해서는 에디터 소스 빌드가 우선이 되어야 한다.

2025.02.08 - [Unreal Engine] - 언리얼 엔진 에디터 빌드

이 글은 에디터 빌드에 대해 방법을 설명하고 있진 않지만,
빌드 시에 주의해야 할 점을 적어두었으니 참고가 필요하다면 열람하시길.

 

에디터 소스 빌드가 되었다면 ..

 

 

서버 빌드 타깃 구성

빌드 타깃 선언  

서버 빌드 타깃을 추가하고 컴파일을 하는 단계. 이 단계에서 클라이언트 빌드 타깃 또한 추가하면 된다. 
이미 생성되어 있는 게임 빌드 타깃을 사용해서 클라이언트를 이용하여도 무방하나, 필자는 클라이언트 빌드를 따로 진행하였음.
* 게임 빌드 타깃 파일 : (Type 프로퍼티 란이 Type = TargetType.Game; 와 같이 작성되어 있는 XXX.Target.cs 이름의 파일.)

게임 빌드와 다른 점은 클라이언트 빌드는 서버 코드는 배제한다는 점이다. 

언리얼에서 제공하는 빌드 툴인 UBT(UnrealBuildTool) 을 이용해서 다양한 빌드 옵션을 부여할 수 있다.
관련 공식 언리얼 문서는 여기를 참고

 

 

빌드 타깃을 서버로 설정하기 위해서 일단 아래 이름과 같은 형식의 파일을 생성해야 한다.

XXXServer.Target.cs

 

XXX 의 자리에는 프로젝트의 이름을 적으면 된다. 

 

이미 생성되어 있는 XXX.Target.cs 파일의 내용을 복붙한 후, (해당 파일을 복붙해서 Server 파일을 생성하여도 무방)

// Copyright Epic Games, Inc. All Rights Reserved.

using UnrealBuildTool;
using System.Collections.Generic;

public class XXXServerTarget : TargetRules
{
	public XXXServerTarget( TargetInfo Target) : base(Target)
	{
		Type = TargetType.Server;	// 이 줄을 변경하세요.
		DefaultBuildSettings = BuildSettingsVersion.V5;
		IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_4;
		ExtraModuleNames.Add("XXX");	// 이 줄을 변경하세요.
	}
}

Type 과 ExtraModulNames 의 이름을 프로젝트 이름과 같이 변경하면 된다. 


공식 문서에는 없는 줄이 있고, 독자가 지금 읽고있는 코드와 본인의 코드가 다를 수 있다. (공식 문서와 필자의 코드도 다름)
본인의 Target.cs 파일을 복붙한 후 언급된 부분만 수정하는 것을 권장한다. 


Client 도 마찬가지로 파일 이름을 XXXClient.Target.cs 로 / Type 을 TargetType.Client; 로 설정하면 된다. 

 

빌드 타깃 파일 생성이 완료되었다면, 다시 솔루션을 Generate 해야 한다.

 

 

솔루션 구성 및 컴파일

솔루션이 새로 Generate 되었다면, 솔루션을 실행시키고 상단의 솔루션 구성을 Development Server 로 바꿔주어야 한다.

이 단추를 누르면 여러 옵션들을 선택할 수 있다. 사진을 참고.

 

설정이 완료되었다면 솔루션을 빌드하면 된다. 
참고로, 이는 시간이 꽤나 걸리기 때문에 밥먹기 전, 어디 나가기 전, 자기 전에 하는것을 추천!
(Client 가 더 걸린다. 시간이 없는 사람들, 서버만 빌드해도 상관 없는 사람들은 Client 빌드 생략하여도 무방.)

Client  도 마찬가지로 Development Client 를 선택하고 솔루션 빌드 진행하면 됨. 

 

 


성공했다면 Binaries/Win64 에 해당 파일들이 생김. 

테스트용으로는 해당 파일을 실행하여도 될 듯. 
(정확하진 않아서 확인 필요하나 필자는 테스트 또한 아래의 패키징 과정을 거치는 것을 추천함)

 

 

 

엔트리 및 디폴트 맵 구성

플레이 할 맵을 설정해서 패키징하는 과정. 설정한 맵(레벨)으로 서버가 열린다. 
클라이언트와 서버의 설정을 다르게 할 수 있다. 
필자는 로비 레벨과 게임 레벨을 나누어서 클라이언트는 로비 레벨이, 서버는 게임 레벨이 가장 먼저 실행되도록 설정했다.

이 과정은 에디터에서 설정해야 하므로 구성을 다시 Development Editor 로 변경하고 실행하자.

 

상단의 Edit -> Project Settings 을 누르고 Project Settings 에서 Maps & Modes 를 선택.

 

Game Default Map 은 클라이언트가 실행했을 때 바로 실행되는 레벨을 설정할 수 있고,
Server Default Map은 서버가 실행되었을 때 바로 실행되는 레벨을 설정할 수 있다.

각 용도에 맞게 적절한 레벨을 설정하면 된다. 
(Editor와 Server 기본 맵의 이름은 임의로 가려놓음.)

 

 

 

프로젝트 패키징

사진과 같이 빌드 구성과 빌드 타깃을 알맞게 설정한 후 Package Project 버튼을 클릭. 

빌드 타깃은 [프로젝트 이름]Server 를 클릭하면 된다. 
패키징도 꽤나 오래 걸리니 밥을 먹고오자.

 

 

패키징용 폴더를 생성한 후 해당 폴더를 선택하면 경로가 지정된다.

Packed 이름의 폴더를 생성하였음.

패키징이 완료되면 설정한 폴더에 WindowsServer 이름의 폴더가 생성되고, 하위에 실행 파일들이 생긴다. 

 

 

 

서버 실행 및 테스트

실행 파일 중 [프로젝트 이름]Server.exe 파일을 우클릭 -> 바로 가기 만들기 버튼 클릭. 
생성된 바로 가기를 다시 우클릭하여 속성을 클릭한다. 

보이는 사진 처럼 띄어쓰기 후 -log 를 추가하고 확인 버튼을 눌러 설정을 저장. 

 

바로 가기를 생성하지 않고 실행파일을 실행하여도 서버는 열림. 
-log 를 이용해서 콘솔창으로 로그를 확인할 수 있음!

 

(링크에는 맵 이름을 명시해줬지만, 서버 디폴트 맵을 따로 설정해주었기 때문에 해당 부분은 스킵해도 된다.)

 

이후 같은 과정을 거쳐 생성된 클라이언트를 실행하면 서버에 접속할 수 있다.

클라이언트에서 서버에 접속하는 방법은
1. OpenLevel 노드 / 함수 실행
2. ` 입력 후 Open 127.0.0.1 입력

이 두 가지로 간단하게 접속할 수 있다. 위젯을 이용해서 응용도 물론 가능함.

 


 

 

처음 할 때는 링크에 상세히 적혀져있지 않아서 쉽지 않았는데, 과정에 대한 이해가 필요한 것 같다.
이해를 하고 난 후 빌드 과정이 쉽게 느껴짐. 

 

그럼 20000.

 


 

 

** 오류 지적은 환영입니다. ^^ **