以下省略!

タイダルウ(ry ほぼ毎日1記事執筆運動実施中。 ※記事に広告(アフィリエイト)リンクを掲載している場合があります。

MineCraft PE用のマルチプレイサーバーを立ててみた

f:id:abyssluke:20140306185625p:plain:w360
何気にネットを見てたら発見したので試しにMineCraft PocketEdition(Android/iOS)のマルチプレイサーバーであるPocketMine-MPVPSに立ててみた。長くなりそうなので続きを読むから。

(以下の解説はCentOS 6.5 x86_64環境、iptablesを利用している場合での解説です)

サーバーソフトウェアを入れる

専用のディレクトリを作り、そのディレクトリ内でサイトの指示通りにインストーラーを起動(wget 〜)する。
サーバーソフトウェアはPHPで動く*1ようで、PHPなど必要な物のコンパイルまでしてくれる。もしも何か足りない的メッセージが出た場合はsudo yum install 〜-develなりする(何を入れるべきかというのが公式サイトに書いてあるので参考程度に)。

~ $ mkdir PMMP
~ $ cd PMMP
~/PMMP $ wget -q -O - http://cdn.pocketmine.net/installer.sh | bash -s - -v Alpha_1.3.12
[INFO] PocketMine-MP Alpha_1.3.12 downloader & installer for Linux & Mac
[0/3] Cleaning...
[1/3] Downloading PocketMine-MP Alpha_1.3.12...
[3/3] Obtaining PHP: detecting if build is available...
[3/3] Linux 64-bit PHP build available, downloading PHP_5.5.9_x86-64_Linux.tar.gz... checking...bash: line 205: [: ==: unary operator expected
 invalid build detected
[3/3] no build found, compiling PHP
[PocketMine] PHP installer and compiler for Linux & Mac
[INFO] Checking dependecies
[INFO] Compiling for current machine using 64-bit
[PHP] downloading 5.5.9... done!
[zlib] downloading 1.2.8... checking... compiling... installing... cleaning... done!
[cURL] downloading curl-7_35_0... checking... compiling... installing... cleaning... done!
[PHP pthreads] downloading 0.1.0... done!
[PHP YAML] downloading 1.1.1... done!
[YAML] downloading 0.1.4... checking... compiling... installing... cleaning... done!
[PHP] enabling optimizations... checking... compiling... installing... generating php.ini...
 done!
[INFO] Cleaning up... done!
[PocketMine] You should start the server now using "./start.sh."
[PocketMine] If it doesn't work, please send the "install.log" file to the Bug Tracker.
~/PMMP $

初期設定

start.shを起動するとセットアップウィザードが始まる。

~/PMMP $ ./start.sh 
[*] PocketMine-MP set-up wizard
[*] Please select a language:
 English => en
 Español => es
 中文 => zh
 Pyccĸий => ru
 日本語 => ja
 Deutsch => de
 한국어 => ko
 Français => fr
 Italiano => it
 Nederlands => nl
 Svenska => sv
 Suomi => fi
 Türkçe => tr
[?] Language (en): 

日本語での設定が可能なので、jaと入力する。

[?] Language (en): ja
[*] 日本語に設定されました
[?] セットアップウィザードをスキップしますか? (y/N):

設定ファイルをいじって設定できる自信があるならy。普通はそのままEnter。
※2014/05/06 20:46 追記:yとnを華麗に間違っていたので今更修正。

PocketMine-MPをインストールして頂きありがとうございます!サーバのセットアップを開始するにはライセンスに同意する必要があります。PocketMine-MPはLGPLライセンスに基づいて認可されており、これについてはこのフォルダ内のLICENSEファイルから確認することができます。

  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU Lesser General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.

[?] ライセンスに同意しますか? (y/N):

y。そのあと質問に答えていく。以下は自分の場合の設定。なにも記入せずにEnterを押すとカッコ内または大文字(Yes/Noの2択の場合)になっている方の設定になる。

[*] サーバのセットアップを開始します
[*] 設定を変更しない場合は、Enterキーを押してください。
[*] それらの設定は後からでもserver.propertiesファイルから変更できます
[?] あなたのサーバに名前を付けてください (Minecraft: PE Server): Mordio Server
[*] これが初めてのサーバの場合は、ポート番号をデフォルトから変更しないでください[?] サーバポート (19132): 
[*] RAMはPocketMine-MPが使用し得るメモリの最大値を示しています。128-256MBの範囲内で指定することを推奨します。
[?] RAMの単位はMBです (128): 
[*] クリエイティブモード(1)、またはサバイバルモード(0)を選択してください
[?] デフォルトのゲームモード: (0): 1
[?] 最大プレイヤー数 (20): 
[*] スポーンプロテクションは、OPでないプレイヤーによるスポーン地点付近でのブロックの設置/破壊を制限します
[?] スポーンプロテクションを有効にしますか? (Y/n): 
[*] OPとはそのサーバの管理権限を指します。OPを持ったプレイヤーは他のプレイヤーよりも多くのコマンドを使用できます。
[?] OPプレイヤー名(例: あなたのゲーム内での名前): AbyssLuke
[*] ホワイトリストはこのサーバに入ることのできるプレイヤーを制限します。
[?] ホワイトリストを有効にしますか? (y/N): 
[!] クエリは他のツールによりあなたのサーバやプレイヤーの情報を取得するためのプロトコルです。
[!] それを無効にした場合、サーバリストを使用できなくなる可能性があります。
[?] クエリを無効にしますか? (y/N): 
[*] RCONはパスワードを用いてサーバコンソールからリモート接続するためのプロトコルです。
[?] RCONを有効にしますか? (y/N): 
[*] 世界中で使われているPocketMine-MPやそのプラグインの統計を算出するために匿名の使用データが送信されます。統計はこちらから確認できます。stats.pocketmine.net
[?] 匿名の使用データの送信を拒否しますか? (y/N): 

最後にポート開放に関する注意が表示される。このあと開放させるのでEnter。

[*] グローバルIPとプライベートIPの取得
[!] あなたのグローバルIPは219.94.xxx.xxです。プライベートIP219.94.xxx.xxをポート解放してください。
[!] 必ずポート解放ができているか確認してください。ポートが解放できていなかった場合、他のプレイヤーがサーバに入れなくなる恐れがあります。[Enterキーを押してください]

これで完了。そのままサーバーが起動する。ログの時間がずれて表示されるが気にしないでおく。

[*] セットアップは正しく終了しました
[*] 拡張機能や管理システム、ミニゲームなどを追加できるプラグインリポジトリも確認してみてください
[*] PocketMine_MPを起動します。/helpと入力すれば使用可能なコマンド一覧を表示できます。


08:55:30 [INFO] Starting Minecraft PE server version v0.8.1 alpha
08:55:30 [INFO] Loading properties...
08:55:30 [INFO] Starting Minecraft PE server on *:19132
08:55:30 [INFO] This server is running PocketMine-MP version Alpha_1.3.12 "甘い(Amai)ビートルート(Beetroot)" (MCPE: v0.8.1 alpha) (API 12)
08:55:30 [INFO] PocketMine-MP is distributed under the LGPL License
08:55:30 [NOTICE] Level "world" not found
08:55:30 [NOTICE] Generating level 7%
(省略)
08:55:30 [NOTICE] Generating level 100%
08:55:30 [NOTICE] Populating level
08:55:31 [NOTICE] Importing level 7%
(省略)
08:55:32 [NOTICE] Importing level 100%
08:55:32 [NOTICE] Populating level 7%
(省略)
08:55:32 [NOTICE] Populating level 100%
08:55:32 [INFO] Preparing level "world"
08:55:32 [INFO] Starting GS4 status listener
08:55:32 [INFO] Setting query port to 19132
08:55:32 [INFO] Query running on 0.0.0.0:19132
08:55:32 [INFO] Default game type: CREATIVE
08:55:32 [INFO] Starting plugins...
08:55:32 [INFO] Done (71.395s)! For help, type "help" or "?"

一回stopと打ち込みEnterでサーバーを終了させておく。強制終了と表示されるがキニシナイ。
そのあとiptablesなどでUDP 19132をACCEPTするようにしてからもう一度start.shを起動。これでサーバー側の準備は完了。

クライアントにサーバーを設定する

クライアント(Android/iOS)からMineCraft PEを起動し、Play→Edit→Externalの順にタップする。
以下の画面が出るので、Addressにポート開放についての注意で表示されたグローバルIPを入力。また設定でポートを変えている場合はPortに変更後のポートを入力。Server Nameは適当に入力しても構わない。入力したらAdd Serverをタップ。
f:id:abyssluke:20140306192404p:plain:w360
ワールド一覧に追加したサーバーが出ていると思うのでそれをタップするとつながるはず。
f:id:abyssluke:20140306185625p:plain:w360
あとはサーバーのアドレスを公開して一緒にやる人を募るなりプラグイン(ここでは詳しくは紹介しないが)を入れるなりして楽しもう。
2014/03/07追記:忘れていたが、Wi-Fi接続じゃないとWi-Fiで接続しろというメッセージが表示されて接続できないので注意。裏を返せばテザリングで無理やり接続することはできなくもない(ただし様々な問題もあるので自己責任で)。

蛇足

  • コードネームに何気に日本語が使われている件。
  • 調べてて知ったけどPEにもmodあったんですね… Modの入れ方 - Minecraft PE wiki
  • そういやここ最近毎日ブログ書いてる気がする。

*1:なのでカテゴリにPHPを入れている