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

# Mediciones de QoS de PlayFab Party

> Cómo usa PlayFab Party las mediciones de latencia de QoS para elegir regiones para las sesiones de red y cómo los títulos pueden influir en la selección de regiones para voz y datos.

PlayFab Party realiza mediciones de calidad de servicio (QoS) en segundo plano para proporcionar a los títulos acceso de baja latencia a los recursos remotos de Azure. Aquí describiremos los escenarios principales en los que los títulos deben esperar encontrarse con las características de QoS de Party.

## Comprender cuándo se mide la QoS

La biblioteca de Party comienza a medir la QoS en cuanto se inicializa Party. Una vez que Party mide correctamente la QoS, la única forma de actualizar estas mediciones es limpiar y volver a inicializar la biblioteca de Party. Si la medición de la QoS produce un error, la biblioteca de Party reintentará la medición la próxima vez que llame a [PartyManager::CreateNewNetwork](/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_createnewnetwork).

## Selección de regiones para las redes de Party

La razón principal por la que PlayFab Party mide la QoS es permitir que los títulos usen datos de latencia al seleccionar la región de Azure en la que se hospeda una red de Party.

Sin esperar a inspeccionar los resultados de las mediciones de QoS, los títulos pueden llamar a [PartyManager::CreateNewNetwork](/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_createnewnetwork) con una lista vacía de regiones preferidas para asignar una red en la región con la latencia más baja en ese momento.

```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, los títulos pueden inspeccionar los resultados de las mediciones de QoS de la biblioteca de Party y seleccionar una lista de regiones preferidas según criterios específicos del título.

Para inspeccionar los resultados de las mediciones de QoS, espere a recibir un [PartyRegionsChangedStateChange](/services/playfab/multiplayer/networking/reference/structs/partyregionschangedstatechange) correcto de [PartyManager::StartProcessingStateChanges](/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;
        }
    }

    // ...
}
```

A continuación, llame a [PartyManager::GetRegions](/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_getregions) para inspeccionar y evaluar la lista actual de regiones y latencias.

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

### Diferencias de precio por región

Tenga en cuenta que no todas las regiones de Party se facturan por igual. Para obtener información sobre las diferencias de precio por región, consulte [nuestra página de precios](https://playfab.com/pricing/).

## Uso de las regiones óptimas para las características de chat accesibles

La otra razón por la que PlayFab Party mide la QoS es habilitar características de accesibilidad de chat con mayor capacidad de respuesta: síntesis de texto a voz, transcripción de voz a texto y traducción. Estas características de accesibilidad usan recursos regionales de Azure Cognitive Services, y medir la QoS permite un uso óptimo de las distintas regiones.

## Comprender los errores al medir la QoS

Dado que la creación de redes y las características de accesibilidad de chat dependen de las mediciones de QoS, resulta valioso inspeccionar el resultado y el detalle del error del [PartyRegionsChangedStateChange](/services/playfab/multiplayer/networking/reference/structs/partyregionschangedstatechange). Los errores en este cambio de estado pueden proporcionar un contexto de depuración útil para errores posteriores.


## Related topics

- [Uso de conexiones directas de punto a punto](/es/services/playfab/multiplayer/networking/concepts-direct-peer-connectivity.md)
- [Características de PlayFab Party](/es/services/playfab/multiplayer/networking/party-features.md)
- [Uso de PlayFab Multiplayer Servers para hospedar juegos multijugador](/es/services/playfab/multiplayer/servers/using-playfab-servers-to-host-games.md)
- [Información general de PlayFab Party](/es/services/playfab/multiplayer/networking/index.md)
- [Notas de la versión de PlayFab 2020](/es/services/playfab/release-notes/2020.md)
