Skip to main content

Quality-of-Service (QoS) ビーコンを使用して Azure へのプレイヤー遅延を測定する

PlayFab のマルチプレイヤー サーバーは、10 個以上の Azure リージョンにデプロイできます。これには 2 つの理由があります。
  1. 追加のリージョンは冗長性を提供します。単一の Azure リージョンで障害が発生しても、プレイヤーは他のリージョンのサーバーにアクセスできます。
  2. 追加のリージョンにより、プレイヤーは「近く」のサーバーにアクセスでき、低遅延の接続が可能になります。
RequestMultiplayerServer を呼び出す際は、PlayFab がリクエストの処理に使用する Azure リージョンのランク付きリストを指定します。PlayFab はランク 1 位のリージョンでリクエストを処理しようとしますが、そのリージョンで待機しているサーバーがない場合や、そのリージョンに何らかの障害がある場合は、リストのより下位の準最適なリージョンが試行されます。 可能な限り、マルチプレイヤー サーバーを要求する際に使用する Azure リージョンのランク付けには、プレイヤーの遅延データを活用してください。PlayFab は、このタスクを支援するサービスとツールを提供しています。

Quality-of-service ビーコン

PlayFab は、PlayFab マルチプレイヤー サーバーが使用しているすべての Azure リージョンでビーコンを運用しています。これらのビーコンは UDP トラフィックを反射し、UDP トランスポートによる遅延測定に使用できます。 UDP の使用は重要です。なぜなら、ほとんどのマルチプレイヤー ゲームは、パフォーマンスが最も重要なゲーム トラフィックに UDP トランスポートを使用するためです。インターネット サービス プロバイダーやその他のインターネット エコシステムの要素は、UDP、TCP、ICMP フローごとに異なるパフォーマンスを提供する場合があります。 プレイヤー デバイスのコンテキストでこれらのビーコンを使用する場合の一般的な流れは以下のとおりです。
  1. プレイヤーを PlayFab にログインさせます。通常は LoginWithCustomID やその他のログイン API を使用します。
  2. ListQoSServersForTitle を呼び出します。これにより、PlayFab の QoS ビーコンのホスト名が提供されます。一般的な実装では、この手順はゲームの Multiplayer Menu ページで実行されます。
  3. UDP ソケットを作成します。
  4. QoS サーバーのポート 3075 に単一の UDP データグラムを送信します。メッセージの内容は 0xFFFF (1111 1111 1111 1111) で始まる必要があります。
  5. サーバーは単一のデータグラムで応答し、メッセージ内容の最初の 2 バイトが 0x0000 (0000 0000 0000 0000) に「反転」されます。データグラムの残りの内容は、最初の ping からコピーされます。
  6. UDP メッセージを送信してから応答を受信するまでの時間を測定します。

Quality-of-service SDK の使用

PlayFab の C# SDKクロスプラットフォーム (CPP) SDK は、QoS ping コードの実装を提供します。SDK をビルドして PC ゲームのヘルパー ライブラリとして使用したり、C# NuGet パッケージを参照したり、他のプラットフォームのサンプルとしてコードを使用したりできます。 各 API は QosResult を返します。これには、各リージョンへの平均 ping 時間とともにリージョンのソート済みリストが含まれます。

C#

C# SDK では QoS API が利用できます。サンプル実装 WindowsRunnerCSharpClientgsdkSamples リポジトリ にあります。 コードは PlayFabQosApi.cs にあります。 パラメーター:
  • timeoutMs - 各 ping 試行に適用されるタイムアウト (ミリ秒単位) (デフォルト: 250 ミリ秒)。
  • pingsPerRegion - 各リージョンに対して行う ping 試行の回数 (デフォルト: 10)。この数を増やすと実行時間が長くなりますが、不正確な結果になる可能性が減少します。
  • degreeOfParallelism - 並列で行う ping の最大数 (デフォルト: 4)。この数を増やすと実行時間は短縮されますが、この数が大きすぎるとネットワークの競合により不正確な結果になる場合があります。

C++

PlayFab クロスプラットフォーム (CPP) SDK では 2 つの QoS API が利用できます。 コードは PlayFabQosApi.cpp にあります。 パラメーター:
  • numThreads - 並列で行う ping の最大数。この数を増やすと実行時間は短縮されますが、この数が大きすぎるとネットワークの競合により不正確な結果になる場合があります。
  • timeoutMs - 各 ping 試行に適用されるタイムアウト (ミリ秒単位) (デフォルト: 250 ミリ秒)。
最終更新日 2026年8月25日