LoginSignup
1
1

More than 5 years have passed since last update.

PlayFab ~マルチプレイの実装(Thunderhead)~

Last updated at Posted at 2018-11-30

11月中旬にプレビュー版が実装されたPlayFabのマルチプレイサーバ(Thaunderhead)に関してまとめてみました

もともとマルチプレイはPhotonと連携することで利用できた機能だけど
PlayFabのみでも利用できるようになりましたよ、という話
※とはいえ、あくまでプレビュー版なので利用するにはPlayFab側への依頼が必要

有効にした場合、こんな感じで設定できる

Multi_01.png

〇実装へのみちのり〇

(1)GameServerの作成

マルチ用のゲームサーバを作る
PlayFabマルチプレイ用コンテナイメージはWindowsCoreをベースにしています
ローカルでテストする場合は、DockerHub経由でダウンロードできます

※私的ハマりポイント※
1)DockerforWindows を利用してローカルにPullしようとしたところタイムアウトしてしまった
ちゃんとMicrosoftOfficialに手順が書いてあるという罠
2)latestのPullがうまくいかなかった
タグ指定したらできました。
初心者に優しくない

ちなみにコンテナは現在Linuxには対応していないが、近いうちにサポートされる予定らしい

(2)GameServer実行ファイル、アセット(必要であればSSL証明書)をアップロードする

ゲームサーバーの実行ファイルとアセットをアップロードします。
Game ManagerまたはPlayFab APIおよびSDKを使用してサーバーをアップロードし、ビルドを管理します
アセットのサイズはZipファイルで10GB以下にする必要があります
展開するサーバのリージョンや各リージョンでの最低・最大サーバ数を決定できます
※契約してないので「容量がありません」と表示されていますが、本来は表示されない(はず)

Multi_02.png

(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版のためサービスを触り切れなかったので、確認できたら追記したい(希望)

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1