Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away