> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# PlayFab Party QoS 測量

> PlayFab Party 如何使用 QoS 延遲測量為網路工作階段選擇區域，以及遊戲如何影響語音和資料的區域選取。

PlayFab Party 會在背景執行服務品質 (QoS) 測量，為遊戲提供對遠端 Azure 資源的低延遲存取。我們將在此概述遊戲預期會遇到 Party QoS 功能的核心案例。

## 了解何時測量 QoS

Party 初始化後，Party 程式庫就會立即開始測量 QoS。一旦 Party 成功測量 QoS，重新整理這些測量值的唯一方式就是清除並重新初始化 Party 程式庫。如果測量 QoS 失敗，Party 程式庫會在您下次呼叫 [PartyManager::CreateNewNetwork](https://devdocs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_createnewnetwork.md) 時重試測量。

## 為 Party 網路選取區域

PlayFab Party 測量 QoS 的主要原因，是讓遊戲在選取裝載 Party 網路的 Azure 區域時能夠使用延遲資料。

遊戲不需要等候檢查 QoS 測量結果，就可以使用空白的偏好區域清單呼叫 [PartyManager::CreateNewNetwork](https://devdocs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_createnewnetwork.md)，在目前延遲最低的區域中配置網路。

```cpp theme={null}
uint32_t regionCount = 0;
const PartyRegion* regionList = nullptr;

PartyError error = PartyManager::GetSingleton().CreateNewNetwork(
    localUser,
    &networkConfiguration,
    regionCount,
    regionList,
    nullptr,
    nullptr,
    nullptr,
    nullptr);
```

或者，遊戲可以檢查 Party 程式庫的 QoS 測量結果，並根據遊戲專屬準則選取偏好區域清單。

若要檢查 QoS 測量結果，請等候從 [PartyManager::StartProcessingStateChanges](https://devdocs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_startprocessingstatechanges.md) 收到成功的 [PartyRegionsChangedStateChange](https://devdocs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/structs/partyregionschangedstatechange.md)。

```cpp theme={null}
switch (stateChange->stateChangeType)
{
    case PartyStateChangeType::RegionsChanged:
    {
        auto regionsChanged = static_cast<PartyRegionsChangedStateChange*>(stateChange);
        if (regionsChanged.result == PartyStateChangeResult::Succeeded)
        {
            m_qosResultsReady = true;
        }
    }

    // ...
}
```

接著呼叫 [PartyManager::GetRegions](https://devdocs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_getregions.md)，以檢查並評估目前的區域和延遲清單。

```cpp theme={null}
if (m_qosResultsReady)
{
    uint32_t regionCount;
    const PartyRegion* regionList;

    PartyError error = PartyManager::GetSingleton().GetRegions(
        &regionCount,
        &regionList);
    if (PARTY_FAILED(error))
    {
        DEBUGLOG("PartyManager::GetRegions failed: %s\n", PartyManager::GetErrorMessage(error));
        return;
    }

    // Prevent Party from using Azure regions above some latency threshold.
    // The game is unplayable in those scenarios.
    std::vector<PartyRegion> filteredRegionList = OmitRegionsAboveMaxLatency(regionCount, regionList, maxLatency);

    error = PartyManager::GetSingleton().CreateNewNetwork(
        localUser,
        &networkConfiguration,
        filteredRegionList.size(),
        filteredRegionList.data(),
        nullptr,
        nullptr,
        nullptr,
        nullptr);
    if (PARTY_FAILED(error))
    {
        DEBUGLOG("PartyManager::CreateNewNetwork failed: %s\n", PartyManager::GetErrorMessage(error));
        return;
    }
```

### 區域價格差異

請記住，並非所有 Party 區域的收費都相同。如需區域價格差異的資訊，請參閱[我們的定價頁面](https://playfab.com/pricing/)。

## 為無障礙聊天功能使用最佳區域

PlayFab Party 測量 QoS 的另一個原因，是讓聊天協助工具功能有更快的回應速度：文字轉語音合成、語音轉文字轉譯和翻譯。這些協助工具功能使用區域性的 Azure Cognitive Services 資源，而測量 QoS 可讓不同區域獲得最佳使用。

## 了解 QoS 測量失敗

由於網路建立和聊天協助工具功能依賴 QoS 測量，因此檢查 [PartyRegionsChangedStateChange](https://devdocs.xbox.com/zh-TW/services/playfab/multiplayer/networking/reference/structs/partyregionschangedstatechange.md) 的結果和錯誤詳細資料很有價值。此狀態變更中的失敗，可能會為後續的失敗提供有用的偵錯內容。


## Related topics

- [使用直接對等連線](https://devdocs.xbox.com/zh-TW/services/playfab/multiplayer/networking/concepts-direct-peer-connectivity.md)
- [PlayFab Party 功能](https://devdocs.xbox.com/zh-TW/services/playfab/multiplayer/networking/party-features.md)
- [PlayFab Party 概觀](https://devdocs.xbox.com/zh-TW/build/console-features/networking/index.md)
- [使用 QoS 信標測量玩家到 Azure 的延遲](https://devdocs.xbox.com/zh-TW/services/playfab/multiplayer/servers/using-qos-beacons-to-measure-player-latency-to-azure.md)
- [服務品質測量](https://devdocs.xbox.com/zh-TW/build/console-features/networking/game-mesh/qos-networking.md)
