보통 마인크래프트는 Java 버전을 메인으로 하고 있어 Java 버전에 대한 다양한 리뷰, 서버 구축 등 많은 내용이 있다. 그런데, 메인으로 사용 중인 노트북의 경우 내장 그래픽이 Intel CPU에 탑재된 GPU였고, 안타깝게도, Direct-X에는 어느정도 친화적이였지만, OpenGL 기반의 3D에서는 성능이 그다지 좋지 못했다.
다행히 Windows 10 에서 제공하는 App Store에 등록된 Minecraft의 경우에는 Direct-X 기반으로 제작되어서 인지 매우 부드러운 움직임을 보여주었고, 생각보다 원활하게 동작했다.
문제는 다른 부분에서 발생되었다. 노트북에서 하다가, 핸드폰으로 좀 하다가, 데스크톱으로 하려다가 보니, 매번 월드 설정 파일을 Export 해야 되었고, 파일 공유를 위해 클라우드에 업로드 해서 공유해야 했다. 가끔 Export/Import를 까먹다가 보면 같은 게임인데도 결국 최종 작업을 했던 위치와 전혀 다른 이전 위치에서 시작하기도 했다. 더욱이 다양한 작업을 하다가 노트북을 Reset을 했는데, 그만 백업을 안해서 기존 월드 정보가 깡그리 사라지는 일까지 벌어졌다.
그래서 아예 서버를 구축해서 그 내용을 공유해서 쓰면 되겠다 싶었다. 그래서 이미 다른 사람들이 Open 한 곳으로 접속을 하려는데, 왠걸... 가끔은 장시간 연결이 안될 때도 생기고, 월드가 사라지고, 좀 접속자들이 많은 것은 마인크래프트가 아닌 전혀 다른 형태의 게임이 만들어져서 뭔가 수익모델 창출하듯 이상한 작업을 요구했다. 집 짓고 놀고 싶으면 코인 만들어야 되었다.
그래서 내 서버를 구축해야 겠다는 생각을 했다.
최초는 Mojang 사이트에서 공식적으로 제공하는 서버를 받아서 설치했다. 그런데, 문제는 이 서버는 오로지 Java 버전의 클라이언트에서만 사용이 가능했다. 즉 공식 버전 서버는 내 Windows 10 버전의 클라이언트로는 접속이 안된다. 나중에 알고 보니, 마인크래프트는 크게 Java Edition과 Bedrock Edition 으로 나뉘고 대부분 Windows 10, XBox, Android 폰용 마인크래프트는 Bedrock 에 해당되었다. 결국 공식 서버로는 방법이 없다는 것을 깨달았다.
그래서 이번에는 google을 통해서 MCPE(Mine Craft Pocket Edition) 으로 검색했다. Bedrock Edition을 Pocket Edition 이라고도 지칭하는 것을 보고 검색해봤다. 그러자 여러가지 종류들의 서버들을 볼 수 있었다. 다만, 주류가 PHP 기반으로 된 PocketMin-MP 라고 듣게 되었고, 그 버전으로 찾았다.
맨 처음은 Nukkit 이라는 서버. 이 서버는 태생이 PocketMine-MP 라는 서버의 PHP 버전을 Java로 마이그레이션 한 버전이라고 했고, Java 여서 Windows 든 Linux든 적용하는데 어렵지 않다고 했다. 그래서 다운로드를 받고 Java로 띄우긴했는데, 생각보다 서버의 리소스 소모가 컸다. 뭐 커봐야 8G 램 안 쪽이고, i5 5세대 정도면 나름 훌륭한 PC라서, 큰 문제가 없을거라 생각했는데, , 제일 큰 문제는 게임이 계속 끊긴다는 점이였다. 부속을 뽀갰더니 갑자기 롤백되서 원래대로 돌아오고, 아이템을 옮겼는데, 다시 원상복귀되고, 이게 잘 되다가 갑자기 잘 안되기도 하고...
다음에는 아예 PocketMine-MP 를 직접 받아서 해봤다. PHP 의 Zend로 구성되어 있는데, 요즘은 아예 웹사이트 상에서 Linux 기반의 스크립트로 자동 설치를 구성해서 제공했다. 한국 내에서는 대부분 서버가 이 PcketMine-MP로 되어있고, 다양한 플러그인을 제공한다고까지 했다. 물론 난 실행을 해보는게 중요해 설치에 들어갔다. 몇가지 옵션 잡고 Start 하면 자동으로 PHP를 기반으로 띄워 주었다. 매우 기민하게 작동하였다. 그래서 LAN 상에서 직접 Windows 10 클라이언트로 연결해서 확인했는데, 뭘 부수던 깨던 바로 바로 반응하는 아름다운 모습을 보여주었다. 아이템 옮겨도 즉시 즉시 여기저기 뛰어 다녀도 드라마틱하게 동작했다. 그래서 이번에는 외부에서도 할 수 있도록 하는데... 기본 포트는 19132 를 Port-Forward 시키는데.. 안된다.로컬에서는 다 되었는데...
방화벽을 내릴까라는 심각한 고민을 할 정도로 여러가지를 봤는데, 알고보니, TCP만 쓰는게 아니라, UDP로 사용하는 구조였다. 방화벽에서 TCP/UDP 혹은 Both. 지원하지 않으면 TCP로 한번, UDP로 한번 해서 정책을 만들어주어야 했다. 그래서 간신히 외부에서 연결했고.. 슬슬 시동을 걸어보았다.
그런데... 이게 웃기는게 몬스터든, 동물이든 도통 Spawn 되지 않았다. 지도를 거의 1000단위로로 위치를 이동했는데, 나와주질 않았다. 도대체 어디까지 가야 하는지... 원.
그러다가 알게되었다. 이 PocketMine-MP는 원래 스마트폰 안에서 실행할 수 있도록 만든 매우 작은 사이즈의 서버였고, 몬스터나 동물의 Spawn은 서버의 리소스를 많이 잡아 먹기 대문에, PocketMine-MP에서는 해당 기능이 동작하지 않았다. 이것도 다양하게 검색을 해봤는데, 대부분의 답변은 PureEntitiesX 라는 플러그인을 설치해서 설정하라는 것이였다. 즉 플러그인을 추가해서 해당 기능을 동작하게 끔 하는게 유일하다고 했다. 그래서 부랴 부랴 설치해서 해봤는데, 게임 내 하루가 지나자 동물이 생성되고, 야간이 되자 몬스터들이 나타나기 시작했다. 여기까지는 딱 좋았다. 문제는 몹이나 동물이나 모두 바보였다. 벽에 부딪히자 몸으로 비비면서 떨어지질 않았고, 나를 향해 제대로 달려들지도 못했다.
결론적으로는 이 PocketMine-MP는 쓸모가 없었다. 거의 포기 할 즈음 게임피아라는 사이트에 있는 마인크래프트용 Wiki에 갔고, 그 중 Bedrock Deicated Server라는 문서를 보게 되었다. 그 중 리눅스 용으로 Open Source화된 서버를 알게 되었고, 그 서버 이름이 MinecraftBedrockServer 였다. 공식 사이트는 https://github.com/TheRemote/MinecraftBedrockServer 였다. 문제는 설치 방법이 없어서 해당 블로그를 찾게 되었고, 그 블로그가 https://jamesachambers.com/minecraft-bedrock-edition-ubuntu-dedicated-server-guide/ 였다.
먼저 Ubuntu와 같은 좀 메이저한 리눅스를 준비하고, 접속하는 사람에 따라 서버 H/W 사양을 좀 높이면 된다. 나야 혼자 할 것이라, 더 많이 낮은 PC에 구축했다.
방법은 아래와 같이 간단하다.
다음 명령을 한 줄 씩 실행한다. 설치용 스크립트 파일을 받아, 실행하는 작업이다.
wget https://raw.githubusercontent.com/TheRemote/MinecraftBedrockServer/master/SetupMinecraft.sh
chmod +x SetupMinecraft.sh
./SetupMinecraft.sh
설치 중에 관리자 권한이 일시적으로 필요해기 때문에, sudo 할 수 있는 계정이여야 한다. 일단 권한 상승을 위한 암호를 입력하면 설치를 쭉하다가 몇가지 묻는다.
“Start Minecraft server at startup automatically (y/n)?” 라고 묻는다면, y를 택한다. 서버를 진짜 백그라운드 서비스를 만들어준다. 이게 활성화되면, 굳이 로그인해서 프로그램을 일일히 실행안해도 되고, 계정 로그 아웃되어도 실행된 상태를 유지한다.
“Automatically restart and backup server at 4am daily (y/n)?” 라고 묻는다면, 이 역시 y를 택한다. 매일 새벽 4가 되면, 자동으로 재부팅하고 백업을 해준다는 의미다. 중요하지 않아도 서버가 깨졌을 때, 복구하는데 큰 도움이 된다.
자 그러면 자동으로 이 서버의 서비스가 실행되고, Windows 10용 클라이언트로 접속해보았다. 19132 로 접속하자 딱 붙고 상태도 나온다.
더 감동적인 사실은 "벌꿀"이 보였다. 최신 버전의 스킨에서 나온다는 벌꿀이.. 게다가 주변에는 각종 동물이 나돌아 다녔고, 이 글을 쓴다고 방치해놓자, 어느새 다가온 몹에 쳐발렸다. 부활해서 잠깐 주변을 이리저리 살펴보자 좀비에 거미에 ...
이제 이 곳에 정착하면서 다시 집짓고 서바이벌 놀이를 해봐야 겠다.
2019. 12. 20. 오후 4:51