> ## 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.

# Medições de QoS do PlayFab Party

> Como o PlayFab Party usa medições de latência de QoS para escolher regiões para sessões de rede e como os títulos podem influenciar a seleção de região para voz e dados.

O PlayFab Party realiza medições de qualidade de serviço (QoS) em segundo plano para fornecer aos títulos acesso de baixa latência a recursos remotos do Azure. Aqui, descreveremos os principais cenários em que os títulos devem esperar encontrar os recursos de QoS do Party.

## Entendendo quando a QoS é medida

A biblioteca do Party começa a medir a QoS assim que o Party é inicializado. Depois que o Party mede a QoS com êxito, a única maneira de atualizar essas medições é limpar e reinicializar a biblioteca do Party. Se a medição de QoS falhar, a biblioteca do Party tentará a medição novamente na próxima vez que você chamar [PartyManager::CreateNewNetwork](/pt-BR/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_createnewnetwork).

## Selecionando regiões para as redes do Party

O principal motivo pelo qual o PlayFab Party mede a QoS é permitir que os títulos usem dados de latência ao selecionar a região do Azure em que uma rede do Party é hospedada.

Sem esperar para inspecionar os resultados das medições de QoS, os títulos podem chamar [PartyManager::CreateNewNetwork](/pt-BR/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_createnewnetwork) com uma lista vazia de regiões preferenciais para alocar uma rede na região que atualmente tem a menor latência.

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

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

Como alternativa, os títulos podem inspecionar os resultados das medições de QoS da biblioteca do Party e selecionar uma lista de regiões preferenciais com base em critérios específicos do título.

Para inspecionar os resultados das medições de QoS, aguarde receber um [PartyRegionsChangedStateChange](/pt-BR/services/playfab/multiplayer/networking/reference/structs/partyregionschangedstatechange) bem-sucedido de [PartyManager::StartProcessingStateChanges](/pt-BR/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_startprocessingstatechanges).

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

    // ...
}
```

Em seguida, chame [PartyManager::GetRegions](/pt-BR/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_getregions) para inspecionar e avaliar a lista atual de regiões e latências.

```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;
    }
```

### Diferenças de preço regionais

Lembre-se de que nem todas as regiões do Party são cobradas da mesma forma. Para obter informações sobre as diferenças de preço regionais, confira [nossa página de preços](https://playfab.com/pricing/).

## Usando regiões ideais para recursos de chat acessível

O outro motivo pelo qual o PlayFab Party mede a QoS é permitir recursos de acessibilidade de chat mais responsivos: síntese de texto em fala, transcrição de fala em texto e tradução. Esses recursos de acessibilidade usam recursos regionais dos Serviços Cognitivos do Azure, e a medição de QoS permite o uso ideal das diferentes regiões.

## Entendendo as falhas na medição de QoS

Como a criação de redes e os recursos de acessibilidade de chat dependem das medições de QoS, é importante inspecionar o resultado e os detalhes de erro do [PartyRegionsChangedStateChange](/pt-BR/services/playfab/multiplayer/networking/reference/structs/partyregionschangedstatechange). Falhas nessa alteração de estado podem fornecer um contexto de depuração útil para falhas posteriores.


## Related topics

- [Usando conexões ponto a ponto diretas](/pt-BR/services/playfab/multiplayer/networking/concepts-direct-peer-connectivity.md)
- [Recursos do PlayFab Party](/pt-BR/services/playfab/multiplayer/networking/party-features.md)
- [Listar servidores de QoS do Party](/pt-BR/services/playfab/api-references/rest/multiplayer/multiplayer-server/list-party-qos-servers.md)
- [Visão geral do PlayFab Party](/pt-BR/services/playfab/multiplayer/networking/index.md)
- [Notas de versão do PlayFab Party](/pt-BR/services/playfab/multiplayer/networking/release-notes.md)
