QoS-Messungen der PlayFab-Party
PlayFab Party führt QoS-Hintergrundmessungen (Quality of Service) durch, um Titeln Zugriff mit geringer Latenz auf Azure-Remoteressourcen zu ermöglichen. Hier werden die wichtigsten Szenarien beschrieben, in denen Titel auf die QoS-Features der Partei treffen sollten.
Verstehen, wann QoS gemessen wird
Die Parteibibliothek beginnt mit der Messung von QoS, sobald Party initialisiert wurde. Sobald der Partei QoS erfolgreich misst, besteht die einzige Möglichkeit zum Aktualisieren dieser Messungen darin, die Parteibibliothek zu bereinigen und neu zu initialisieren. Wenn die QoS-Messung fehlschlägt, wiederholt die Parteibibliothek die Messung beim nächsten Aufruf von PartyManager::CreateNewNetwork.
Auswählen von Regionen für Parteinetzwerke
Der Hauptgrund, warum PlayFab Party QoS misst, besteht darin, titeln die Verwendung von Latenzdaten bei der Auswahl der Azure-Region zu ermöglichen, in der ein Partynetzwerk gehostet wird.
Ohne mit der Überprüfung der QoS-Messergebnisse zu warten, können Titel PartyManager::CreateNewNetwork mit einer leeren Liste bevorzugter Regionen aufrufen, um ein Netzwerk in der aktuellen Region mit der niedrigsten Latenz zuzuordnen.
uint32_t regionCount = 0;
const PartyRegion* regionList = nullptr;
PartyError error = PartyManager::GetSingleton().CreateNewNetwork(
localUser,
&networkConfiguration,
regionCount,
regionList,
nullptr,
nullptr,
nullptr,
nullptr);
Alternativ können Titel die QoS-Messergebnisse der Parteibibliothek überprüfen und eine Liste bevorzugter Regionen basierend auf titelspezifischen Kriterien auswählen.
Um QoS-Messergebnisse zu überprüfen, warten Sie, bis ein erfolgreicher PartyRegionsChangedStateChange von PartyManager::StartProcessingStateChanges empfangen wird.
switch (stateChange->stateChangeType)
{
case PartyStateChangeType::RegionsChanged:
{
auto regionsChanged = static_cast<PartyRegionsChangedStateChange*>(stateChange);
if (regionsChanged.result == PartyStateChangeResult::Succeeded)
{
m_qosResultsReady = true;
}
}
// ...
}
Rufen Sie dann PartyManager::GetRegions auf, um die aktuelle Liste der Regionen und Latenzen zu untersuchen und auszuwerten.
if (m_qosResultsReady)
{
uint32_t regionCount;
const PartyRegion* regionList;
PartyError error = PartyManager::GetSingleton().GetRegions(
®ionCount,
®ionList);
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;
}
Regionale Preisunterschiede
Beachten Sie, dass nicht alle Parteienregionen gleich berechnet werden. Informationen zu regionalen Preisunterschieden finden Sie auf unserer Preisseite.
Verwenden optimaler Regionen für barrierefreie Chatfunktionen
Der andere Grund, warum PlayFab Party QoS misst, besteht darin, reaktionsschnellere Chat-Barrierefreiheitsfeatures zu ermöglichen: Text-zu-Sprache-Synthese, Spracherkennungstranskription und Übersetzung. Diese Barrierefreiheitsfeatures verwenden regionale Azure Cognitive Services-Ressourcen, und die Messung von QoS ermöglicht eine optimale Nutzung der verschiedenen Regionen.
Grundlegendes zu Fehlern beim Messen von QoS
Da die Netzwerkerstellungs- und Chat-Barrierefreiheitsfeatures auf QoS-Messungen basieren, ist es hilfreich, die Ergebnisse und Fehlerdetails von PartyRegionsChangedStateChange zu untersuchen. Fehler in dieser Zustandsänderung können hilfreichen Debugkontext für spätere Fehler bereitstellen.