11月中旬にプレビュー版が実装されたPlayFabのマルチプレイサーバ(Thaunderhead)に関してまとめてみました
もともとマルチプレイはPhotonと連携することで利用できた機能だけど
PlayFabのみでも利用できるようになりましたよ、という話
※とはいえ、あくまでプレビュー版なので利用するにはPlayFab側への依頼が必要
有効にした場合、こんな感じで設定できる
〇実装へのみちのり〇
(1)GameServerの作成
マルチ用のゲームサーバを作る
PlayFabマルチプレイ用コンテナイメージはWindowsCoreをベースにしています
ローカルでテストする場合は、DockerHub経由でダウンロードできます
※私的ハマりポイント※
1)DockerforWindows を利用してローカルにPullしようとしたところタイムアウトしてしまった
ちゃんとMicrosoftOfficialに手順が書いてあるという罠
2)latestのPullがうまくいかなかった
タグ指定したらできました。
初心者に優しくない
ちなみにコンテナは現在Linuxには対応していないが、近いうちにサポートされる予定らしい
(2)GameServer実行ファイル、アセット(必要であればSSL証明書)をアップロードする
ゲームサーバーの実行ファイルとアセットをアップロードします。
Game ManagerまたはPlayFab APIおよびSDKを使用してサーバーをアップロードし、ビルドを管理します
アセットのサイズはZipファイルで10GB以下にする必要があります
展開するサーバのリージョンや各リージョンでの最低・最大サーバ数を決定できます
※契約してないので「容量がありません」と表示されていますが、本来は表示されない(はず)
(3)ゲームサーバのBuild
アップロードされたBuildはPlayFab側でサーバを動的に作成しリサイクルすることができます
サーバはAzure内で展開されます
Buildの更新を行った場合、新しいBuildの追加と合わせて古いサーバのスタンバイサーバ数を減らすことで
古いサーバへの割り当てを減らしていく形で切り替えます
(4)プレイヤーのレイテンシーの確認
プレイやーがマルチプレイを始めると、PlayFab側でUDPメッセージを送信しネットワーク遅延をAzureで測定します
マルチ用サーバは冗長性とユーザの近いリージョンでプレイできるよう、12以上のAzureリージョンに設定することができます
UDPでビーコンを送信するC++のSDKは公式で提供されています
(5)プレイヤーからのリクエストの処理
ロビーサーバもしくはマッチングサーバから、もしくはクライアントから直接リクエストが飛んでくる
GameServeはコンテナなのでIPv4のIPが割り振られます
ポート番号も設定することで任意に変更可能です。
(ただし事前に展開されるAzure側で開けておく必要がある模様)
(6)接続
サーバがアクティブになるとクライアントはサーバに接続してマルチプレイができるようになる
ユーザのアクセスに応じて設定した数字でサーバの拡縮が自動的に行われる感じ
どうもログはサーバから手動でとってこなくてはいけない模様・・・
※現在C#、C++、Javaのサンプルコードは出ているが、Unityのサンプルは2019年1月頃までに準備されるとのこと
Preview版のためサービスを触り切れなかったので、確認できたら追記したい(希望)