언리얼 엔진 5 풀 소스코드를 깃허브에서 다운받고 설치 완료한 다음, 서버를 구축하는 방법이다.
우선 프로젝트를 생성한다.

Games - Blank, C++프로젝트로 생성해 준다.
물론 Third Person으로 생성해주어도 되지만, 이후 플레이어 조작을 포함해 만들 계획이므로 Blank로 진행한다.


생성되었으면 Source폴더에서 [프로젝트이름]Editor.Target.cs파일을 하나 복제해서 [프로젝트이름]Server.Target.cs로 이름을 바꾸어 주자.
그리고 프로젝트.sln파일을 열고

방금 만들었던 cs 파일을 추가해 준다.

이 파일을 아래와 같이 바꿔준다.
클래스 이름을 [프로젝트이름]ServerTarget으로,
타입을 .Editor에서 .Server로 바꿔준다.

저장하고 솔루션을 닫아준다.

그리고 언리얼 프로젝트를 우클릭해 Generate VIsual Studio project files옵션을 클릭해 변경사항을 적용해준다.
이제 다시 솔루션을 키고 2번의 빌드를 해주어야 한다.

먼저 솔루션에서 구성관리자 옵션을 Development Editor, Win64로 변경해주고 솔루션 빌드를 해준다.

그리고 Development Server, Win64 옵션으로 변경해주고 한번 더 빌드를 해준다.
시간이 꽤 걸린다.
정상적으로 빌드되었다면 Binaries - Win64폴더에 서버exe와 같이 파일들이 생성되어 있다.
이제 언리얼 엔진 에디터에서 설정해 줄 것들을 설명한다.

우선 File - New Level로 새로운 레벨을 2개 만들어 준다.
편의상 간단하게 ServerEntry, ServerEntry1으로 만들어 두었다.
ServerEntry는 클라이언트에서 서버로 접속하기 전 로비창이라고 생각하면 되고
ServerEntry1은 서버에 접속했을 때 보이는 실제 맵이다.
우선 클라이언트에서 서버로 접속해야 하므로 ServerEntry레벨에서 레벨 블루프린트를 켜준다.

그리고 Open Level함수를 가져와 Level Name을 127.0.0.1로 설정해 준다.
게임이 시작하자마자 접속 IP를 127.0.0.1로 설정해 접속을 시도하도록 해주도록 하는 역할이다.
지금은 로컬 IP로 설정을 해 두었지만 게임이 완성되었을 때는 IP를 바꿔주면 된다.

컴파일하고 저장해주도록 한다.
이제 ServerEntry1으로 이동한다.

접속했을때의 위치를 알기위해 간단한 큐브 2개를 설치해 두었다.
2명의 플레이어가 접속했을 때 각각 PlayerStart지점을 설정해주기 위해 PlayerStart를 하나 복제해 옆에다가 만들어 주었다.

레벨 설정은 끝났고 이제 에디터를 설정해주어야 한다.
Edit - Project Settings 창을 들어가 보면

Project 밑에 Maps&Modes탭이 있다.
여기에서 Editor Startup Map, Game Default Map을 위에서 만들었던 ServerEntry로 설정하고
Server Default Map은 ServerEntry1으로 설정해 두었다.
Editor Startup Map: 엔진 에디터 실행시 기본으로 열리는 맵
Game Default Map: 게임 실행시 기본으로 열리는 맵
Server Default Map: 서버 실행시 기본으로 열리는 맵
그리고 Packaging 탭으로 가보면

아래쪽에 Retain Staged Directory밑 Advanced 탭을 열어보자.

여기에서 List of maps to include in a packaged build옵션에 2개를 추가해주고 위에서 사용한 레벨 2개를 모두 등록한다.
3인칭으로 만들었다면 기본적으로 플레이어가 제작 및 등록되어 있을 것이니 건너뛰고 아래 패키징을 시작해도 된다.

GameModeBase와 Charactor클래스를 생성해주고

Default Pawn Class를 만들어둔 플레이어로 등록한다.

그리고 위에서 열었던 ProjectSettings에서 Maps & Modes 탭에 Default GameMode로 등록해준다.


Charactor에서는 Mesh를 등록하고 위치만 간단하게 조정해두었다.
Mesh는

여기에서 3인칭을 클릭해주면 가져올 수 있다.

패키징은 여기 Platforms탭에서 할 수 있는데, 클라이언트와 서버 각각 패키징 해주어야한다.
그리고 같은 하위폴더에서 해주도록 한다.


[프로젝트이름]으로 설정하고 Pakage Project,
[프로젝트이름]Server로 설정하고 Package Project를 눌러 주도록 한다.

패키징이 완료가 되면 2개 폴더가 생길텐데 Server에 들어가서

Server.exe를 바로가기로 하나 만들어 준다.

그리고 바로가기의 속성창을 키고 exe위에 -log를 붙여둔다.
이렇게 하면 cmd창이 열리고 로그를 볼 수 있게 된다.
바로가기를 실행시켜 보자.

Created socket for bind address : 0.0.0.:7777이 로그에 있으면 서버가 정상적으로 열린 것이다.
이 상태에서 Windows폴더안에 프로젝트이름.exe를 실행시킨다.

한 번 더 실행시키면

다른 플레이어가 잘 보인다.

로그에도 접속한 모습을 볼 수 있다.