高校時代にFF11にハマってから、オンラインゲームの運営か開発に携わることを夢見て10年弱。
UnityのAssetStoreを眺めていると、uMMORPGというAssetがセール中だったのを見て即ポチしてしまいました。
uMMORPGとは
uMMORPGは、UnityのMultiplayer Networking技術を使ったMMORPGのテンプレートAsset。
Multiplayer Networking
何ができるか
LAN内のプレイヤーとP2P通信、UNETを使用、Linuxのheadlessモードを使用したホストサーバ-クライアント間通信の3方式に対応していると思われ。
今回は3つ目に挙げた、Linuxのheadlessモードを使用したホストサーバ-クライアント間通信についてのメモ兼復習記事。
必要なもの
Unity
当たり前ですが、Unityのインストールが必要。
5.5b系でもok。後述するuMMORPGに対応した最低バージョンは必須。
uMMORPG
AssetStoreから購入します。セール時は25%offとかで購入可能なはず。
ホストサーバ
VPSまたは専用物理サーバが必要です。当然レンタルでok。
専用サーバはフツーにレンタルするだけでも月額がアホみたいに高いので、必要になるまでは基本的にVPSでok。
さくらのVPSなら1Gでもフツーに動作する。同接数が増えていくとどうかな?
ビルド/動作確認マシン
3Dアプリなので、できればWindowsのグラボ積んでいるPCを使用したいところ。本記事もwindows前提。
途中Linuxビルドが必要になりますが、Windowsでビルドできるので無問題。
ssh/scpツール
私はrloginを使用しました。
rloginはsshの他にドラッグ&ドロップでファイル転送できるscp機能も備えているのでラクラク。フリーソフト。
rlogin公式
やること
1 : VPSサーバの初期設定
ubuntuをインストールする。インストール手順はVPS提供元でインストールガイドがあるはずなので割愛します。
インストール後の手順
公開するポート番号を22から変える場合、その番号を控えておく。
2 : Unityプロジェクトを作成する
空のUnityプロジェクトを作成し、uMMORPGをインポート。
3 : Linuxビルドを作成する
NetworkManagerMMOのNetworkInfo/Network Addressの値を127.0.0.1に変更し、
NetworkInfo/Network Portの値を1で変更した値に変更する。
BuildSettingsからプラットフォームをLinuxに変更し、HeadlessModeのチェックを付ける。
ビルドするとhoge_Dataとhoge.x86_64が生成されるので、生成されたものをzip圧縮する。
圧縮ファイルの名前をheadless.zipに変更する。
4 : ホストサーバでアプリをheadlessモード起動する
headless.zipをユーザディレクトリ直下に配置されるようscp転送し、unzip。
hoge_Dataとhoge.x86_64が展開される。
hoge.x86_64に実行権限が付与されていないはずなので、
$ chmod +x hoge.x86_64
をしておく。
$ ./hoge.x86_64
をrloginから実行すると、headlessモードでアプリが起動する。
5 : UnityEditorからホストサーバに接続する
BuildSettingsのプラットフォーム設定をwindowsに戻す。
NetworkManagerMMOのNetworkInfo/Network Addressの値をxxx.xxx.xxx.xxx(ホストサーバのパブリックIPアドレス)に変更。
RunしてConnectボタンを押すと、キャラクターを作成できる画面に遷移すれば接続成功。
つまづきポイント
ホストサーバの設定
公開ポート番号を変更したらuMMORPG側でも変更必要。
実行ファイルのパーミッションに注意。
ファイアウォール設定
PCのファイアウォール設定をしておかないとタイムアウトになる。
タイムアウト時の挙動
Async DNS START:xxx.xxx.xxx.xxx
Async DNS Result:xxx.xxx.xxx.xxx for xxx.xxx.xxx.xxx: xxx.xxx.xxx.xxx
のログを吐いた後しばらくすると、
Client event: host=0 event=DisconnectEvent error=6
UnityEngine.Networking.NetworkIdentity:UNetStaticUpdate()
環境
- Windows7
- Unity v5.4.0f3
- uMMORPGv1.43
- Ubuntu 16.04