跳轉到主要內容
您可以將 PlayFab 多人遊戲伺服器部署至十多個 Azure 區域。這樣做有兩個原因:
  1. 額外的區域可提供備援。如果單一 Azure 區域失敗,玩家可以存取其他區域中的伺服器。
  2. 額外的區域可讓玩家存取「鄰近」的伺服器,並提供低延遲的連線能力。
當您呼叫 RequestMultiplayerServer 時,您會指定 PlayFab 用來滿足要求的 Azure 區域排序清單。PlayFab 會嘗試使用排名第 1 的區域來滿足要求,但如果該區域中沒有待命伺服器,或該區域發生其他錯誤,則會嘗試清單中排名較後、較不理想的區域。 在可能的情況下,您應使用玩家延遲資料來決定要求多人遊戲伺服器時所使用的 Azure 區域排序。PlayFab 提供服務和工具來協助完成此工作。

服務品質信標

PlayFab 在 PlayFab 多人遊戲伺服器所使用的每個 Azure 區域中都運作信標。這些信標會反射 UDP 流量,可用來透過 UDP 傳輸測量延遲。 使用 UDP 很重要,因為大多數多人遊戲對其最重視效能的遊戲流量都使用 UDP 傳輸。網際網路服務提供者和網際網路生態系統的其他元素,可能會對 UDP、TCP 和 ICMP 流量提供不同的效能。 以下是在玩家裝置內容中使用這些信標的典型流程:
  1. 讓玩家登入 PlayFab。這通常是使用 LoginWithCustomID 或其他登入 API 完成。
  2. 呼叫 ListQoSServersForTitle。這會提供 PlayFab QoS 信標的主機名稱。典型的實作可能會在遊戲的 Multiplayer Menu 頁面上執行此程序。
  3. 建立 UDP 通訊端。
  4. 將單一 UDP 資料包傳送至 QoS 伺服器上的連接埠 3075。訊息內容必須以 0xFFFF (1111 1111 1111 1111) 開頭。
  5. 伺服器會以單一資料包回覆,其訊息內容的前 2 個位元組會「翻轉」為 0x0000 (0000 0000 0000 0000)。資料包的其餘內容將從初始 Ping 複製。
  6. 測量傳送 UDP 訊息與收到回應之間的時間。

使用服務品質 SDK

PlayFab C# SDK 和跨平台 (CPP) SDK 提供 QoS Ping 程式碼的實作。您可以建置 SDK 並在 PC 遊戲中將其作為協助程式庫使用、參考 C# NuGet 套件,或將程式碼作為其他平台的範例。 每個 API 都會傳回 QosResult,其中包含區域的排序清單,以及每個區域的平均 Ping 時間。

C#

C# SDK 中有可用的 QoS API。gsdkSamples 存放庫中提供了範例實作 WindowsRunnerCSharpClient。 程式碼位於 PlayFabQosApi.cs 中。 參數:
  • timeoutMs - 套用至每次 Ping 嘗試的逾時 (以毫秒為單位) (預設值:250ms)。
  • pingsPerRegion - 針對每個區域進行的 Ping 嘗試次數 (預設值:10)。增加此數字會增加執行時間,但會降低結果不準確的可能性。
  • degreeOfParallelism - 平行進行的 Ping 數目上限 (預設值:4)。增加此數字會縮短執行時間,但如果此數字太大,網路爭用可能會導致結果不準確。

C++

PlayFab 跨平台 (CPP) SDK 中有兩個可用的 QoS API。 程式碼位於 PlayFabQosApi.cpp 中。 參數:
  • numThreads - 平行進行的 Ping 數目上限。增加此數字會縮短執行時間,但如果此數字太大,網路爭用可能會導致結果不準確。
  • timeoutMs - 套用至每次 Ping 嘗試的逾時 (以毫秒為單位) (預設值:250ms)。
最後修改於 2026年10月30日