PlayFab Party QoS 评估
PlayFab Party 执行后台服务质量 (QoS) 评估,以提供游戏对远程 Azure 资源的低延迟访问。 本文将概述游戏应用 Party 的 QoS 功能的核心场景。
了解何时评估 QoS
Party 库在初始化 Party 后立即开始评估 QoS。 Party 成功评估 QoS 后,刷新评估的唯一方法就是清理并重新初始化 Party 库。 如果评估 QoS 失败,Party 库将在下次调用 PartyManager::CreateNewNetwork 时重试评估。
为 Party 网络选择区域
PlayFab Party 评估 QoS 的主要原因是在选择托管群网络的 Azure 区域时,使游戏能够使用延迟数据。
在不等待检查 QoS 评估结果的情况下,游戏可以调用 PartyManager::CreateNewNetwork,其中包含一个空的首选区域列表,用于在当前最低延迟区域中分配网络。
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 成功接收 PartyRegionsChangedStateChange。
switch (stateChange->stateChangeType)
{
case PartyStateChangeType::RegionsChanged:
{
auto regionsChanged = static_cast<PartyRegionsChangedStateChange*>(stateChange);
if (regionsChanged.result == PartyStateChangeResult::Succeeded)
{
m_qosResultsReady = true;
}
}
// ...
}
然后调用 PartyManager::GetRegions 以检查和评估当前的区域和延迟列表。
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;
}
区域价格差异
请记住,不会对所有 Party 区域进行同等收费。 有关区域价格差异的信息,请参阅定价页。
为可访问的聊天功能使用最佳区域
PlayFab Party 评估 QoS 的另一个原因是启用响应性更强的聊天辅助功能:文本到语音合成、语音转文本听录和翻译。 这些辅助功能使用区域 Azure 认知服务资源,评估 QoS 可实现不同区域的最佳使用。
了解评估 QoS 失败
由于网络创建和聊天辅助功能依赖于 QoS 评估,因此检查 PartyRegionsChangedStateChange 的结果和错误详细信息很有价值。 此状态更改中的故障可能会为以后的故障提供有用的调试上下文。