Unityエディタで簡単にマルチプレイ用の無料ゲームサーバーを立ち上げることが出来るアセット「PlayFlow Cloud Beta」

Unity マルチプレイ開発の問題点

Unity でマルチプレイゲームを制作するときはオブジェクト同期実装の確認のために,
バイナリをビルドするなどで2つゲームを開いて確認する必要があります.

それではビルド待ちが発生するなど開発のイテレーションが悪くなるので,
以前,ParrelSync などを用いて Unity マルチゲーム開発効率を上げる記事を上げました.

xrdnk.hateblo.jp

今回は違う視点でマルチプレイ開発のイテレーションをよくするアセットを紹介します.

PlayFlow Cloud Beta

PlayFlow Cloud Beta は Unity エディタ側でサーバホスティングが出来るツールです.
Unity ゲーム用無料の一時的なマルチプレイゲームサーバーを簡単に立ち上げることができます.

playflowcloud.com

f:id:xrdnk:20220228110251p:plain

機能

機能としては,以下が用意されています.

  • ワンクリックでサーバ構築とデプロイが可能
  • 複数サーバのリージョンに対応(北米・欧州・東南アジア・東アジア)
  • サーバのログ出力の確認が可能
  • サーバを起動するためのカスタムパラメタを提供する機能
  • カスタムパラメタを利用してサーバを再起動する機能
  • WebGL サポート・WebSocket (WSS) が利用可能
  • Unity 専用サーバビルドをサポートするマルチプレイフレームワークであれば何でも利用可能 (Mirror,Mirage,DarkRift 2,Fish-Net など)

インストール方法

Unity Asset Store からインストールすることができます.

assetstore.unity.com

利用サンプル

早速 FishNet-Sample リポジトリで試してみようと思います.

github.com

Fish-Net に関しては下記の記事に以前紹介しています.

xrdnk.hateblo.jp

検証環境

  • Unity 2021.2.13f1
  • Fish-Net 1.3.4
  • PlayFlow Cloud Beta 1.0

PlayFlow Cloud で立ち上げるサーバは Linux Build を利用します.
そのため,Linux Build のモジュールをインストールしていない場合はインストールする必要があります.

f:id:xrdnk:20220228102831p:plain

導入方法

まずはプロジェクトにインポートをします.

f:id:xrdnk:20220228100034p:plain

上のメニューバーに PlayFlow が表示されるようになるので,PlayFlowCloud Server をクリックします.
すると,以下のようなウィンドウが表示されます.

f:id:xrdnk:20220228100152p:plain

PlayFlow App Token の取得をまず行います.「Get PlayFlow App Token」ボタンを押すと,
Google アカウントで SSO を行うブラウザが表示されます.

f:id:xrdnk:20220228100444p:plain

ログインに成功すると以下の画面が表示されます.ここに表示されている Token をコピーします.

f:id:xrdnk:20220228100517p:plain

Unity エディタ側に戻ります.PlayFlow App Token に先ほど生成された Token をペーストします.
次に ServerLocation を選択します.Server Location は East Asia (東亜)・North America (北米)・Europe (欧州)・
Northeast Asia (東南亜) から選択できます.今回は East Asia を選択しました.

f:id:xrdnk:20220228100921p:plain

「Assign PlayFlow Port」ボタンを押します.すると,PlayFlow ServerURL : Port の欄に値が出力されます.

f:id:xrdnk:20220228105705p:plain

今回利用しませんが,Arguments (optional) では鯖起動時にコマンドライン引数として利用できる欄になります.
Enable SSL for WebSocket にチェックを入れれば,PlayFlowCloud 側で SSL を処理してくれるようになります.

次に NetworkManager オブジェクトの設定を変更します.
Fish-Net の NetworkManager の特質上,デフォルト設定の場合は必要なコンポーネントをアタッチする必要がありません.
自動的に生成してくれるためです.今回は Server Bind Address と Port をカスタマイズしたいので,
Transport Manager と Tugboat (Fish-Net 版 LiteNetLib) コンポーネントを NetworkManager オブジェクトにアタッチします.

f:id:xrdnk:20220228101829p:plain

上図にある Server Bind Address には今回の例では「cloud.playflow.app」を,Port には「6170」を設定します.

f:id:xrdnk:20220228105655p:plain

今回では Fish-Net のパターンで紹介しましたが,Server Bind Address や Port の設定を行うコンポーネント
Unity のどのネットワークフレームワークにもあるので,該当の項目にそれぞれ同じように埋めればよいはずです.
(PlayFlowCloud Beta の動画の例では Mirror の場合を紹介しています.)

PlayFlowCloud のウィンドウに戻ります.「Publish Server」ボタンを押しましょう.しばらく待ちます.
以下のログが表示されれば,サーバビルドの成功です!

f:id:xrdnk:20220228104851p:plain

この状態で Client で入室してみます.無事に入室することができました.

gyazo.com

PlayFlow Cloud でビルドしたサーバは60分間実行され,その後自動的に停止します.

終わりに

ParrelSync の場合は Server + Client 2 で確認する場合は,Unity エディタを少なくとも3つ以上開く必要があり,
端末のパフォーマンスに負荷がかかって,作業効率が落ちるため,Host + Client で確認することもありました.
PlayFlow で簡易的にサーバビルドを行えば Server + Client 2 による確認効率が良くなるので導入を検討してもよいと思います.

公式 YouTube では Mirror のサンプルプロジェクトで実際に PlayFlow Cloud を利用している動画がありますので,
興味ある方はご覧ください.

www.youtube.com

参考文献

  • 公式ドキュメント

docs.playflowcloud.com

www.youtube.com

  • 公式 Discord

discord.com