
데디케이티드 서버 빌드를 하기 위해선 에픽게임즈 클라이언트로 받은 엔진으로는 빌드를 할 수 없습니다.
준비해야 할 것이 많은데 차근차근 해보겠습니다.
사이트에 들어가면 나오는 순서대로 에픽게임즈 계정에 깃허브를 연동하면 언리얼 엔진 오픈소스에 접근이 가능해집니다.

인증 완료 후 위 주소로 들어가면 아래 사진처럼 언리얼 엔진의 오픈소스에 접근이 가능해집니다.


ue5-main 브랜치
실시간으로 커밋이 반영되는 ue5-main 브랜치도 있는데 만약 release 버전에 적용되지 않은 버전을 쓴다든지 최신 버전이 필요한 경우 사용할 수 있을 것입니다.
당연히 불안정한 버전이므로 버그가 있을 수가 있다고 하네요.


GenerateProjectFiles.bat 배치파일을 실행하면 커맨드 창이 뜨며 빌드를 시작합니다.

금방 빌드가 완료되고 UE5.sln 솔루션 파일과 \Engine\Intermediate 폴더 등 빌드 결과가 나타납니다.
UE5.sln 솔루션 파일을 실행하고 UE5를 시작 프로젝트로 설정 후 빌드를 시작합니다.
디버깅 시작 바로가기 버튼인 [F5]로 빌드가 완료되면 자동으로 디버깅 모드로 프로그램을 실행시켜 줍니다.
코드가 많아서 그런지 1시간 반이나 걸리네요 ㅠ

오랜 인내의 시간을 거쳐 프로그램이 실행되어 아래 사진과 같이 브라우저가 뜨면 성공입니다.
성공한 걸 봤으니 이제 창은 닫아주면 됩니다.

서버 디폴트 맵 설정
빌드를 진행하기 전 우선 에디터에서 데디케이티드 서버에서 사용할 기본 맵을 지정해 주어야 합니다.
'편집 - 프로젝트 세팅 - 맵&모드'의 서버 기본 맵을 설정하면 됩니다.
저는 삼인칭 템플릿의 기본 맵인 ThirdPersonMap으로 지정하였습니다.
에디터에서 서버 콘텐츠 쿠킹 이전에만 하면 되는건지 확인 필요
이제 다시 본론으로 돌아와 서버 빌드를 해보겠습니다.
제목에 연결된 링크에 들어가면 아래 사진에서 설명해준 과정을 따르면 됩니다.

그러면 폴더는 아래 사진처럼 막 클론한 것처럼 깔끔해집니다.

Server.Target Client.Target파일 생성하기
서버 빌드를 위해선 (프로젝트명)Server.Target.cs 파일이 필요합니다.
이 파일을 만들기 위해 LyraServer.Target.cs를 참고하라 하지만,
(프로젝트명).Target.cs 파일 내용을 복사하여 클래스 이름에 Server를 추가하고 TargetType을 Game에서 Server로만 바꿔주면 됩니다.// Copyright Epic Games, Inc. All Rights Reserved. using UnrealBuildTool; using System.Collections.Generic; public class ISeeMeServerTarget : TargetRules { public ISeeMeServerTarget(TargetInfo Target) : base(Target) { Type = TargetType.Server; DefaultBuildSettings = BuildSettingsVersion.V5; IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_4; ExtraModuleNames.Add("ISeeMe"); } }마찬가지로 (프로젝트명)Client.Target.cs 파일도 Server를 Client로만 변경해서 만들어줍니다.
(삽질)
프로젝트 파일을 만든 이후에 타겟 파일을 만들어 솔루션에 추가했더니 빌드가 진행되어도 파일이 안나왔습니다.
그래서 프로젝트 파일을 만들기 이전에 타겟 파일을 만들고 Server 빌드를 하니 파일이 정상적으로 생성됐습니다.
근데 Server 빌드를 먼저 하지 않고 Editor 빌드를 먼저 하니 TargetInfo.json에 타겟 파일이 알아서 추가되더라고요..






신나서 실행했더니 아래와 같은 에러가 나오는데 아직 쿠킹된 데이터가 없어서 그렇습니다.


위와 같이 세팅하고 콘텐츠 쿠킹을 선택합니다.

에디터 우측 하단에 쿠킹 중이라는 작은 패널이 뜨고 조금만 기다리면 서버는 금방 쿠킹이 완료됩니다.

쿠킹이 완료되면 \Saved\Cooked\WindowsServer 폴더가 생성되는 것을 확인할 수 있습니다.
클라이언트도 서버와 동일하게 빌드와 쿠킹을 진행하면 되는데 저는 다른 방법으로 진행해보았습니다.

프로젝트 패키지로 빌드와 쿠킹, 심지어 배포용 패키징까지 한 번에 되는건데 각 단계를 별도로 해야하는게 아니라면 이 방법도 편해보이네요.
클라이언트라 그런지 쿠킹하는데에도 시간이 꽤 걸렸습니다. (54분 23초)


exe 파일을 실행할 때 인자를 담아 보내기 위해 3가지 방법을 소개하며 파일을 실행해보겠습니다.
데디케이티드 서버를 실행하면 백그라운드에서 실행되므로 실행중인지 알기 어렵습니다.
-log 인자를 넘겨 로깅창과 함께 실행되도록 합니다.



그러면 로깅창이 나타나며 무수한 로그를 써내려갑니다.
로그를 보아하니 서버 기본 맵인 ThirdPersonMap 맵이 정상적으로 로딩된 걸 볼 수 있네요.

- 파일 탐색기에서 실행
굳이 cmd 창을 열지 않고 exe 파일을 실행하고 싶다면 파일 탐색기의 주소창에 파일 이름과 파라미터를 입력하면 바로 실행됩니다.
![]()
클라이언트에선 서버에 연결하기 위해 IP주소와 포트번호를 인자로 넘겨주어야합니다.
로컬 서버로 실행하였기에 로컬 IP주소인 127.0.0.1과 7777 포트를 넘겨줍니다.



이렇게 하나의 데디케이티드 서버에 두 클라이언트가 연결되어 있는 모습까지 확인하며 포스트를 마무리합니다.