【Unity】さくらのVPSをホストサーバとしてMasterServerKitを動かす

uMMORPGでは1シーンのみの起動しかできないため、若干手詰まり感だったところにMasterServerKitを発見したので、クライアント起動までメモ。

MasterServerKitとは

MasterServerKitは、UnityのMultiplayer Networking技術を使ったロビー、チャット、ゲームルーム管理、ユーザ認証管理のテンプレートAsset。
HLAPIとLLAPIいずれにも対応している。らしい。

何ができるか

uMMORPGとは異なり、Linuxのheadlessモードを使用したホストサーバ-クライアント間通信に絞っている感じ。
ゲームクライアント、ゲームサーバ、認証サーバ、マスターサーバの4バイナリから構成されていて、認証サーバとマスターサーバ&ゲームサーバが標準で分離できるようになっている。分離しなくてももちろん可。
ガワを変えればMORPGやオンラインFPSのロビー部分にできそう。
ユーザ主導でゲームルームの生成をする機能はuMMORPGには無かったので、この仕組みが応用できると面白くなりそう。

必要なもの

Unity

Unityのインストールが必要。5.5以降対応。

MasterServerKit

AssetStoreから購入します。

ホストサーバ

VPSまたは専用物理サーバが必要です。認証サーバとマスターサーバを分けるなら、2台借りる。
同時接続可能数はMasterServerKitで定義出来るようになっている、初期値は100クライアント。

ビルド/動作確認マシン

素の状態で動作させる場合、2Dチャットルーム機能のみ触れる。WindowsでもMacでもどっちでも良い。
ルーム作成のために2台あると尚良し。
今回もuMMORPG同様、Linuxビルドが必要になる。ビルドサポートが必要なら、Unity Download Assistantからインストールする。

ssh/scpツール

今回もrloginを使用。

やること

1 : VPSサーバの初期設定

ubuntuをインストールする。インストール手順はVPS提供元でインストールガイドがあるはずなので割愛します。
インストール後の手順
MasterServerとAuthServerを分離する場合は
公開するポート番号を22から変える場合、その番号を控えておく。

2 : Unityプロジェクトを作成する

空のUnityプロジェクトを作成し、MasterServerKitをインポート。

3 : ビルド準備
Configure

各IPとPortを変更する。
gameServerBinaryPathの値をBuilderのビルド名に変更する。

Builder

BuilderのBuildPipeline.BuildPlayer()を次のように変更する。

BuildGameClient(GameClientPCがWindowの場合)
BuildPipeline.BuildPlayer(levels, "Builds/GameClient.exe", BuildTarget.StandaloneWindows64, BuildOptions.None);
それ以外
BuildPipeline.BuildPlayer(levels, "Builds/GameServer.x86_64", BuildTarget.StandaloneLinux64, BuildOptions.EnableHeadlessMode);
4 : ビルド

MasterServerKitはUnity標準のビルドとは別に、メニューから一括ビルドができるようになっています。
Window > MasterServerKit > BuildAll
ビルドするとDataディレクトリとバイナリのセットが4種類生成されます。

GameClient

Unityアプリを実行するユーザが使用します。

MasterServer,GameServer

MasterServerとなるホストサーバにzip化して転送します。

AuthServer

AuthServerとなるホストサーバにzip化して転送します。

5 : ホストサーバでアプリをheadlessモード起動する

各zipをユーザディレクトリ直下に配置されるようscp転送し、unzip。
hoge_Dataとhoge.x86_64が展開される。
hoge.x86_64に実行権限が付与されていないはずなので、

$ chmod +x hoge.x86_64

をしておく。
 
ウィンドウを新しく作るために、バックグラウンド起動する。
AuthServerとMasterServerのホストサーバを分離している場合は、各ホストサーバでコマンドを実行。

$ ./AuthServer.x86_64 &
$ ./MasterServer.x86_64 &

ctrl+a dでデタッチする(開いている仮想端末をサスペンド状態にして閉じる)。

$ exit

ssh接続をログオフする。

6 : GameClient起動

WindowsPCでGameClient.exeを起動する。
ChatルームをCreateできれば成功。

環境

  • Windows7
  • Unity v5.5.0f3
  • MasterServerKitv1.05
  • AuthServer : Ubuntu 16.04 512M 1core
  • MasterServer : Ubuntu 16.04 1G 2core