📌 데디케이티드 서버용 빌드 가능한 환경 만들기
에픽 게임 런처로 설치한 언리얼 엔진은 기본적으로 데디케이티드 서버 빌드를 지원하지 않는다.
에픽 런처 버전은 전체 C++ 소스코드가 포함되어 있지 않기 때문에, 서버 타겟 빌드에 필요한 구성요소를 직접 수정하거나 추가할 수 없다.
특히 서버 타겟 빌드를 위한 .Target.cs 파일 커스터마이징이나, 빌드 설정을 완전히 제어할 수 없기 때문에 제한적이다.
따라서 GitHub에서 언리얼 엔진 소스코드 클론을 받고 빌드한 후, 소스 빌드한 엔진으로 프로젝트를 생성하거나 열어야한다.
아래 언리얼 엔진 소스 코드 및 빌드에 대한 것은 링크에 있는 강의 문서로 대체하겠다.
*언리얼 엔진 소스 코드 및 빌드 방법↓
챕터 2-1: 언리얼 소스 코드 빌드하기 | Notion
수업 목표
teamsparta.notion.site
📌 데디케이티드 서버 패키징 및 서버 접속 과정
언리얼 소스 코드 빌드가 끝난 이후의 과정을 설명함.
1️⃣ 테스트 프로젝트 생성 및 설정
GitHub에서 클론 받은 언리얼 엔진 소스를 빌드까지 완료가 되었다면, 해당 폴더에 들어가UnrealVersionSelector.exe파일을 실행해준다.
필자는 E:\(언리얼 엔진 소스 폴더 경로)\Engine\Binaries\Win64 와 같은 경로에서 찾을 수 있었고, 이 파일을 실행해줘야 밑에 이후에 설명할 Switch Unreal Engine version에서 경로가 보일 것이다.
같은 경로에서 UnrealEditor.exe 파일을 실행해 테스트할 삼인칭 템플릿 프로젝트를 생성해주었다.
프로젝트 생성 경로는 엔진소스 폴더 내부에 하지말고, 같은 드라이브 내에 다른 폴더를 생성해 경로를 설정.
프로젝트 생성이 되었다면, 안정성을 높이기 위해 해당 로컬 위치에서 [.vs, Binaries, Build, DerivedDataCache, Intermediate, Saved, .vsconsfig, sln파일]을 삭제해 초기화를 해준다.
.uproject 파일을 우클릭해 Switch Unreal Engine version 클릭한다. 그러면 GitHub에서 클론 받았던 언리얼 엔진 소스코드 경로가 보일텐데 그것으로 설정한다.
*주의: Source Build 선택
Source 폴더로 들어와 EscapeFromMazeEditor.Target.cs를 2개 복사한다.
하나는 EscapeFromMazeClinet.Target.cs, 다른 하나는 EscapeFromMazeServer.Target.cs로 이름을 변경해준다.
새로 생성한 Client와 Server.Target.cs 파일을 열어, 위와 같이 Editor라고 되어있는 부분을 Client 파일이라면 Client로 수정하고, Server 파일이라면 Server로 각각 변경해준다.
.sln 솔루션 파일을 열고, 해당 프로젝트가 시작 프로그램으로 설정(굵은 글씨)되어 있는지 체크한 뒤, 빌드 및 실행해준다.
2️⃣ 패키징
성공적으로 빌드를 마치고 실행이 되었다면, 익숙한 3인칭 템플릿 프로젝트가 열릴 것이다.
좌측 상단에 '툴' -> '프로젝트 런처'를 클릭한다.
Client를 예시로 이미지 첨부를 하였는데, 같은 방식으로 Server도 패키징을 진행해주면 된다.
프로젝트 런처 창이 열리면 가운데 상단 "디폴트 빌드 타깃" 과 바로 우측에 "고급 표시"를 설정해줄 것이다.
디폴트 빌드 타깃을 "프로잭트명 Client"를 선택해주고 우측의 "고급 표시" 클릭해준다.
그러면 우측에 타깃, 환경설정, 데이터 빌드를 선택하는 항목이 나온다.
먼저 타깃은 빌드할 대상 플랫폼을 선택하는 항목이다.
데디케이티드 서버를 패키징할 경우엔 WindowsServer를 선택하고, 클라이언트 패키징을 할 경우 WindowsClient를 선택한다.
현재는 Client를 먼저 패키징하므로 WindowsClient 선택해준다.
다음으로는 환경설정으로, 컴파일 최적화 수준과 디버깅 정보를 포함할지 여부를 결정한다.
🔹Debug: 디버깅용 빌드(엔진 소스 코드 + 프로젝트 코드), 느리지만 모든 디버깅 기능 포함
🔹DebugGame: 디버깅용 빌드(프로젝트 코드), 게임 코드만 디버깅할 때 사용, Debug보다 실행속도가 빠름
🔹Development: 개발용 빌드, 빠른 컴파일과 디버깅 가능
🔹Shipping: 최종 배포용 빌드, 성능최적화 및 디버깅 기능 제거
🔹Test: 테스트용 빌드, Shipping과 유사하지만 일부 디버깅 기능 포함
현재는 Development로 선택해 진행하도록 한다.
데이터 빌드는 애셋(맵, 텍스처, 사운드 등) 데이터를 어떻게 빌드하고 로드할 것인지 결정하는 설정이다.
데이터 빌드는 패키징 크기, 실행 속도, 로딩 방식에 영향을 미치고 선택한 방식에 따라 성능과 안정성이 달라진다.
🔹By the Book: 모든 데이터를 사전 패키징하여 포함, 실행 안정성 보장하는 대신 용량 증가
🔹On the Fly: 필요할 때만 데이터를 로드(동적 런타임 빌드), 네트워크 또는 디스크 접근 속도에 영향을 받음
🔹Do Not Build: 이전 빌드된 데이터 유지하고 재빌드 하지 않음, 속도가 빠르지만 변경 사항 반영되지 않음
서버는 무조건 By the Book을 사용(안정성 중요)하고, 클라이언트는 개발 중에 On the Fly를 사용 가능하지만 최종 배포는 By the Book으로 하는 것이 좋다.
테스트만 빠르게 하고 싶다면 Do Not Build도 가능하다.
현재는 By the Book으로 진행한다.
세팅이 끝났다면 우측에 프로파일 실행 버튼을 눌러준다.
클라이언트 패키징이 완료가 되었다면 같은 방식으로 디폴드 빌드 타깃을 Server로 변경하고, 우측 타깃 역시 Server로 변경해준 뒤 프로파일 실행 버튼을 눌러 서버도 패키징을 완료한다.
3️⃣ 데디케이티드 서버 생성 및 접속
클라이언트와 서버 모두 패키징이 끝났다면 프로젝트 경로에서 StagedBuilds폴더에 들어가면 두 개의 폴더가 보일 것이다. E:\(프로젝트 경로)\Saved\StagedBuilds
먼저 Server 폴더로 들어가 Server.exe 파일을 실행해보면, 놀랍게도 아무일도 일어나지 않는다.
Server.exe를 실행시키려면 "바로가기"를 만들어야한다.
바로가기를 만들고 우클릭하여 속성을 클릭해, 속성 창에서 대상(T): ~exe 뒤에 " ThirdPersonMap -log" 입력해준다.
기본적으로 언리얼 엔진은 특정 레벨을 로드하지 않고 실행되면 빈 상태에서 대기하게 된다. 그래서 서버가 로드할 맵을 지정하기 위해 ThirdPersonMap을 넣어주면, ThirdPersonMap을 로드한 상태에서 서버가 대기하게 된다.
뒤에 -log 옵션의 의미는 언리얼 엔진 실행 중에 콘솔 창을 열어서 로그를 출력해달라고 요청하는 것이며, 만약 서버 실행 중 충돌이나 오류가 발생하면 저장된 로그 파일을 열어서 원인을 찾을 수 있다.
적용을 누르고 확인 버튼까지 누르자.
생성한 Server.exe 바로가기를 더블클릭해 실행하면, 이와 같이 콘솔 창이 열리면서 로그들이 찍히는 것을 볼 수 있다.
서버가 포트를 열고 클라이언트 연결을 대기중이고, 게임 맵이 정상적으로 로드되었고, 엔진이 초기화 되어 정상적으로 안정적인 상태에서 서버가 작동중임을 알 수 있다.
눈여겨 보아야할 것이 7778 포트넘버이다. 서버 로그에 7778 포트가 열려 있는 것으로 확인했으니 클라이언트는 해당 포트로 접속 요청을 보내야 한다.
콘솔 창은 그대로 두고 클라이언트를 실행해보자.
이제 서버에 대한 설정은 끝났으니 클라이언트 폴더로 넘어와, Client.exe 파일을 실행시켜준다.
그러면 우측 이미지와 같이 패키징된 게임이 열릴텐데, '~' 키를 두 번 누르면 커멘드 창에 open 127.0.0.1:7778 을 입력하고 엔터를 눌러준다.
별다른 차이를 모르겠다면 서버를 실행했을 때 열렸던 콘솔 창을 살펴보자.
LogNet: Join succeeded: DESKTOP-RHLJ3RR-F9F8 로그가 찍힌 것을 확인할 수 있고 이는 성공적으로 데디케이티드 서버에 접속한 것을 의미한다.
127.0.0.1은 로컬호스트(Loopback) 주소로, 자신의 컴퓨터에서 실행 중인 서버에 접속할 때 사용하는 특수한 IP 주소이다.
현재 테스트 환경에서는 서버와 클라이언트가 같은 PC에서 실행되므로 해당 IP 주소를 사용했다.
뒤의 7778은 앞서 확인했던 언리얼 엔진의 데디케이트 서버 포트이다.
Client.exe를 추가로 실행해서 open 127.0.0.1:7778을 입력해주면, 두 클라이언트가 같은 데디케이티드 서버에 로그인해, 월드상에 같이 있는 것을 확인할 수 있다.
'내배캠 > Unreal Engine' 카테고리의 다른 글
미로 게임 구현(Dedicated Server) (0) | 2025.03.25 |
---|---|
채팅으로 하는 숫자 야구 게임 구현(Listen Server) (0) | 2025.03.19 |
언리얼 네트워크와 객체 통신 (0) | 2025.03.12 |
온라인 게임과 네트워크 구성 (0) | 2025.03.11 |
네트워크 개념 (0) | 2025.03.10 |