본문 바로가기

볼봇의 코딩 생활/언리얼한 엔진

[UE4] 데디케이트 서버 (Dedicate Server) 구축 - Linux 편

그 분이 돌아왔다.

저번 포스팅에서 윈도우 데디케이트 서버를 구축 하는 방법에 대해 정리 했다.

 

이번에는 더 나아가, 리눅스에서 이를 실행 하는 방법에 대해 정리해본다.

왜냐하면, 서버는 대부분 리눅스를 쓰지 윈도우를 쓰지 않는다. (윈도우 서버 제외)

가장 중요한점은 필자 서버 컴퓨터는 Centos 6.5 가 깔려 있다.

 

서론에서 유추할 수 있듯이 이번 포스팅은 CentOS 6.5 기준으로 진행되며 우분투나 다른 리눅스 계열

OS 에서도 큰 문제 없이 잘 작동할 것으로 예상 된다.

 

시작해보자.

 

소스코드 빌드 하기

이전 글에서 소스코드 빌드 관련 언급을 하였다.

리눅스 빌드를 하기 위해 윈도우와 다르게 해줄 작업은 없으므로 링크로 대체한다.

 

https://api.unrealengine.com/KOR/GettingStarted/DownloadingUnrealEngine/index.html

 

언리얼 엔진 소스 코드 내려받기

소스 코드 저장소에 접속하여 언리얼 엔진 최신 빌드를 다운로드하는 법에 대한 단계별 안내입니다.

api.unrealengine.com

https://api.unrealengine.com/KOR/Programming/Development/BuildingUnrealEngine/index.html

 

소스에서 언리얼 엔진 빌드하기

소스에서 언리얼 엔진 컴파일하기 입니다.

api.unrealengine.com

이제, 소스코드 빌드는 모두 되어있다고 가정 하겠다.

 

 

프로젝트 설정

https://ballbot.tistory.com/17

 

[UE4] 데디케이트 서버(Dedicate Server) 구축 - Windows 편

굉장히 오랜만에 글을 쓰는 듯 하다. 이번에는 며칠간 문서를 보면서 공부해본 데디케이트 서버 구축에 대해 정리해보겠다. 데디케이트 서버를 구축하기 위해서는, 당연히 멀티플레이가 가능하도록 설계된 게임이..

ballbot.tistory.com

윈도우용 데디케이트 서버 구축 글에서 프로젝트 설정에 대한 내용을 설명 했다.

프로젝트 설정 부분은 윗 글로 대체 한다.

 

리눅스 툴 체인 설치

현재 이 코드를 빌드하는 OS (윈도우) 에서 리눅스 컴퓨터를 위한 실행파일을 빌드 해야 한다.

이를 크로스 컴파일 이라고 한다.

 

리눅스 패키지 컴파일을 위한 툴 체인은 기쁘게도 언리얼 엔진에서 제공하고 있다.

우리는 이것을 편히 설치해서 사용 하면 된다.

 

https://docs.unrealengine.com/ko/Platforms/Linux/GettingStarted/index.html

 

Linux용 크로스 컴파일

Windows에서 Linux 플랫폼을 대상으로 하는 크로스 컴파일 툴체인 셋업 방법을 알아봅니다.

docs.unrealengine.com

 

본인 엔진 버전에 맞는 툴 체인을 먼저 설치 한다.

 

 

 

 

 필자는 4.21 버전을 사용 하고 있다.

필자는 4.21 버전을 사용하고 있어서 해당하는 버전을 다운로드 했다.

아래 경고 사항을 읽어보면 -v8 미만 버전에서는 따로 해줘야 하는것이 있는듯 하다.

구 버전에 대한 설명은 아래 위키가 도움이 될 것 같다.

 

https://wiki.unrealengine.com/Compiling_For_Linux

 

Compiling For Linux - Epic Wiki

Template:Rating Why cross-compilation Cross-compilation was chosen in order to make it easier for game developers (who tend to have a centric workflow on a platform that differs from the deployment target). At the moment, this is only supported for Windows

wiki.unrealengine.com

 

 

여튼, 설치를 시작해보면.

 

 

설치 과정은 따로 설명하지 않겠다. 설치를 마치고 이 글로 다시 돌아오도록 하자!

 

리눅스 빌드를 위한 설정

소스코드를 빌드한 곳으로 이동해보면, GenerateProjectFiles.bat 파일이 존재 한다.

 

 

 

 

 

해당 파일을 클릭하여 한번 더 솔루션 파일을 생성한다.

 

 

 

 

 

Linux 옵션이 생겼다.

리눅스 빌드를 할 수 있는 빌드 옵션이 생김을 알 수 있다.

하지만, 아직은 작동 하지 않는다. 하나 더 실행해줄 파일이 있다.

 

아래 파일을 찾는다.

[소스코드 경로]/Engine/Binaries/DotNET/GitDependencies.exe

 

 

이 파일을 더블 클릭하여 실행 한다.

의존성 파일을 다운로드 함을 볼 수 있다.

 

 

 

다시 프로젝트 솔루션을 열어서 빌드를 해보자.

 

빌드 설정을 Linux 로 바꾸고, Developerment Editor 으로 바꾼다.

물론 빌드가 작동하는지 테스트만 하고 취소할것이다 ^^

 

두근두근...

빌드가 잘 돌아가는 것을 볼 수 있다.

확인 후 빌드->취소를 해서 빌드를 멈추도록 하자. 우리가 원하는것은 데디케이트 서버이지 언리얼 for linux 가 아니다.

 

확인을 마쳤으므로 솔루션은 닫고 우리의 프로젝트로 돌아간다.

 

 

 

 

리눅스용 데디케이트 서버 빌드

이젠 익숙할것이다. 소스코드로 빌드한 언리얼 엔진으로 바꾸도록 하자.

 

 

 

 

OK 를 누르고 잠시 기다리면 변경이 완료 된다.

자, 이제 본격적으로 리눅스 빌드를 시작할것이다.

[프로젝트명].sln 파일을 연다.

 

 

 

빌드 구성을 Linux 로 바꾼다. 방금 잘 작동하는것을 확인 했으므로 오류가 나지 않을것이다.

 

 

 

DevlopermentEditor 으로 빌드 구성을 바꾼다.

지금부터는 사실상 윈도우용 데디케이트 서버 빌드와 다르지 않다.

 

 

 

 

빌드

빌드 버튼을 누르고 잘 작동하는지 확인해보자.

 

 

 

 

 

오래걸릴각이다.

오래걸리겠다. 잠시 티타임과 휴식시간을.....

 

 

 

 

 

빌드를 마쳤으면, Server 를 선택해서 다시 한번 빌드를 해준다.

(윈도우랑 똑같다)

 

 

오래걸린다.

서버 빌드도 마쳤다면 다시 .uproject 파일을 열어 프로젝트를 연다.

마지막으로, 리눅스로 패키징을 할 것이다.

 

 

 

 

 

 

 

마지막....

지금까지 정말 힘들었다.

필자는 빌드도중 디스크 용량이 부족해서 빌드 오류가 발생했다.

(디스크를 굉장히 많이 먹더라, 120기가 하드가 다찼다)

 

 

 

서버 구축 하기

패키징을 모두 마쳤으면, 윈도우와 똑같이 서버 파일을 만들어내면 된다.

우선 아래 경로로 이동하여 서버 파일을 복사한다.

 

[프로젝트명]/Binaries/Linux/[프로젝트명]Server

 

확장자가 없음을 기억한다.

 

복사해서, 방금 패키징한 폴더에 접근하여 아래 경로에 붙여 넣는다.

[패키징경로]/LinuxNoEditor/[프로젝트명]/Binaries/Linux/

윈도우랑 똑같다.

 

이제 모두 완료 되었다. 리눅스 데디케이트 서버는 완성 했으니, 이제 실행만이 남은것이다!

 

 

 

 

서버 실행하기

독자 모두 여기까지 읽었다는것은 리눅스 서버는 기본적으로 가지고 있을 것으로 생각 한다.

없다면, 새로 살 수 도 있고, AWS 같은 클라우드 서비스를 사용 할 수도 있다.

 

하여튼, 필자는 개인 가상 서버를 가지고 있기 때문에 그곳에서 진행 한다.

 

참고로 필자는 퍼니오 가상 서버 호스팅을 이용하고 있다. 그러므로 퍼니오를 기준으로 작성 하므로

본인 서버에 맞는 설정을 진행하기 바란다.

https://fun25.co.kr

 

퍼니오 호스팅 | Fun25

퍼니오의 클라우드 서비스를 경험하세요. 2002년 부터 호스팅 서비스를 제공해 왔으며, 2007년부터 클라우드 서비스를 지속적으로 운영하고 있습니다. 안정적인 서비스와 부담없는 이용료의 퍼니오 클라우드 서비스를 이용해 보세요.

fun25.co.kr

 

먼저, 패키징한 폴더 (LinuxNoEditor 폴더) 내부 파일을 모두 서버에 업로드 한다.

 

 

 

 

오 꽤 용량 큰뎅?

필자는 이 서버를 위한 계정을 하나 만들어다가 사용 했다.

참고로, 서버를 켜는 작업에는 root 계정이 필요 없지만, 셋팅을 할때는 root 계정이 필요하므로

미리 준비해두도록 하자.

 

 

 

포트포워딩

언리얼 엔진은 7777번 포트를 사용한다. 외부에서 접속 할 수 있도록 포트를 개방해 두도록 하자.

다시 한번 언급하지만 Centos 6 기준으로 진행된다. 버전이 다르다면 아래 방법이 작동하지 않을 수 있다.

 

ssh 접속을 (root 계정 사용) 한다.

vi /etc/sysconfig/iptables

 

iptables 파일을 열어서 포트포워딩을 진행하겠다.

 

적당한 부분에 아래 구문을 추가 한다.

-A INPUT -p udp -m udp --dport 7777 -j ACCEPT

 

언리얼 엔진은 7777번 포트로, udp 통신을 사용 한다는 점 참고 하자.

 

그렇군.

 

저장하고 닫는다. iptables 서비스를 재시작 해준다.

service iptables restart

 

※ 참고 ※

참고로, 퍼니오는 하나의 공유 아이피를 가지고 쓰기 때문에, 해당 홈페이지에서 따로 설정해줄 필요가있다.

이것은 대부분 독자들에게 해당되지 않으므로 생략 하며 이로 인해, 포트는 7777로 열어뒀지만

필자는 접속 할 때 21006 번 포트를 사용한다는점 미리 알린다.

 

일반적인 상황에서는, 7777로 열면 7777로 접속 한다. ^^

 

 

권한 설정

포트포워딩을 마쳤으므로, 이제 서버 파일로 접근 한다.

[업로드 한 경로]/[프로젝트명]/Binaries/Linux/

우리가 실행할 파일은 [프로젝트명]Server 이다. (확장자가 없다는것 주의, 리눅스에서 확장자는 중요하지 않음)

이제, 서버파일에 실행 권한을 부여한다.

 

chmod +x [프로젝트명]Server

이제, 파일 목록을 보면 해당 파일이 초록색으로 표시됨을 볼 수 있다.

 

오오 갓겜 냄새가

드디어 실행할 차례! 아래 명령어를 기쁘게 입력 한다.

./[프로젝트명]Server -log

(참고로, -log 인수 는 안줘도 잘 작동하더라)

 

 

축하드립니다! 리눅스 데디케이트 서버 구축에 성공 했습니다!

 

[참고] 안되는데요? glibc not found 에러 (더보기 클릭)

...더보기

필자는 이전에 리눅스에서 데디케이트 서버를 구축 해봤기 때문에 잘 작동하고 있다.

아마, Centos 6 계열의 os 에서 서버를 켜면 glibc 버전 오류가 반길것이다.

이때는 당황하지 않고, glibc 2.17 버전을 설치해주면 된다.

 

설치 부분까지는 글로 남기지 않고 링크로 대체한다.

 

https://serverkurma.com/linux/how-to-update-glibc-newer-version-on-centos-6-x/

불러오는 중입니다...

 

저 글을 보면 어렵지 않게 해결 할 수 있다.

 

glibc 를 설치 했다면, 아래 명령어를 입력해봄으로 써 확인 할 수 있다.

strings /lib64/libc.so.6 | grep GLIBC

 

드디어...

하지만, 접속이 안되면 꽝이다. 테스트 까지 해보고 글을 마치겠다.

 

테스트

언리얼 엔진으로 돌아가서, PIE 에서 실행 아래 명령어를 입력해본다.

(필자는 트리거를 깔아두고 open 노드를 연결해뒀다.)

 

open [본인서버주소]:7777

포트 번호는 굳이 명시할 필요는 없지만, 필자처럼 포트가 다른 독자는 뒤에 포트값을 붙여주면 된다는것을

명시하기 위함이다.

 

 

행복 ^^

 

 

지금까지 따라온 독자 분들에게 감사를 드리며, 모든분들이 데디케이트 서버를 잘 구축하기를 바란다.