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