PartyRegionQualityMeasurementConfiguration

Party 库用于控制区域质量测量行为的配置。

语法

struct PartyRegionQualityMeasurementConfiguration {  
    uint32_t totalMeasurementTimeoutInMilliseconds;  
    uint16_t highLatencyHintInMilliseconds;  
    uint16_t minRequiredSuccessfulResponses;  
    uint16_t idealNumberOfSuccessfulResponses;  
    uint16_t maxRetriesWithNoResponse;  
    uint16_t maxTimeoutsAfterResponse;  
}  

成员

totalMeasurementTimeoutInMilliseconds uint32_t

允许解析主机名和尝试测量本地设备与 PlayFab 服务质量信标服务器之间的网络条件的最大毫秒数。

此值控制允许 Party 库解析所有可用区域的 PlayFab 服务质量信标服务器主机名并发送轻量级消息以测量连接质量的最大时间(以毫秒为单位)。 如果环境问题导致某些区域的名称解析速度缓慢或延迟/数据包丢失率高,则 PartyRegionsChangedStateChange 结果中仅报告在此超时内至少成功连接过一次的区域。

此值不包括也不影响 Party 库从 PlayFab 服务检索可用区域列表所需的时间。

应用程序通常应根据用户体验目标/最坏情况来定义此超时,而不是尝试根据技术假设派生某个数字。 测量任何给定区域或所有区域所需的确切时间可能会有很大差异,具体取决于可用区域的数量、当前的网络环境条件、Party 库基于观察到的延迟的动态优化超时等。

对于遇到完全或部分故障的设备,此值实际上是最坏情况的超时。 这可能有助于与对典型成功的实际观察结果进行对比。 使用默认的 PartyRegionQualityMeasurementConfiguration 值、区域可用性和玩家使用模式,Party 库当前观察到,全球大多数设备在 2.3 秒或更短时间内成功完成了整个测量过程,97% 的设备在 6 秒内成功完成。 随着时间的推移,会引入更多区域,此时长预计会略微增加。

如果未配置 PartyOption::RegionQualityMeasurementConfiguration,则默认值为 15000(15 秒)。

值为零则表示没有超时,因此无论任何区域成功或失败需要多长时间,所有测量都能够完成。 否则,最小值为 50 毫秒。

highLatencyHintInMilliseconds uint16_t

一个指示最高延迟阈值(以毫秒为单位)的提示,如果超过此阈值,应用程序会将区域视为过于隐蔽,无法花费额外的时间来执行详细测量。

此目标值表示区域延迟的软上限。 它不会直接阻止纳入测量到的具有更高延迟的区域,但它的确会导致 Party 库选择针对延迟低于这一数字的区域进行了优化的超时和重试值。 在接收到最小数量的响应(在 minRequiredSuccessfulResponses 中配置)后,还会针对每个区域进行检查。 如果对某区域测量的延迟中位数大于此目标,则不会使用理想的响应数字(在 idealNumberOfSuccessfulResponses 中配置),并且不会发送更多的测量尝试。

该值不能为零。

如果未配置 PartyOption::RegionQualityMeasurementConfiguration,则默认值为 200。

minRequiredSuccessfulResponses uint16_t

每个区域进行基本评估所需的最小成功测量消息响应数。

在质量测量轻量级消息交换期间,要测量的每个潜在区域预计至少会成功响应这么多次,然后结果才会被认为足够准确,可针对 highLatencyHintInMilliseconds 字段目标延迟进行评估。 设置更大的最小要求结果会导致更多测量示例,因此在面临任何离群数据包波动时的一致性和准确性更高,代价是需要更多时间来完成。

即使没有足够多的成功响应,在发生以下任何情况时,测量特定区域也被视为已完成:根本没有成功响应到达,并且尝试次数超过在 maxRetriesWithNoResponse 字段中配置的值;至少一个响应到达,并且尝试次数超过在 maxTimeoutsAfterResponse 字段中配置的值;或者超过了在 totalMeasurementTimeoutInMilliseconds 字段中为所有区域配置的总体超时。

该值不能为零。

如果未配置 PartyOption::RegionQualityMeasurementConfiguration,则默认值为 3。

idealNumberOfSuccessfulResponses uint16_t

每个区域为实现全面评估所需的成功测量消息响应数。

此值表示在测量感兴趣的测量的延迟时实现所需准确性的首选成功响应总数。 此值必须等于或大于 minRequiredSuccessfulResponses 字段中的最小值。 如果已测量出某区域的延迟中位数小于或等于 highLatencyHintInMilliseconds 字段中配置的阈值,则 Party 库仅尝试获取该区域的最小值和此理想值之间的额外响应计数之差。 此字段的理想响应数允许继续改进可能对本地设备更有价值的区域的测量准确性,而不将这个额外的时间花费在延迟更高的区域上。

如果未获取某区域的最小响应数,则不会尝试这个额外的理想目标。 否则,如果达到该区域的 maxTimeoutsAfterResponse 限制,或者超过了 totalMeasurementTimeoutInMilliseconds 字段为所有区域设置的总体超时,则测量该区域被视为已完成,即使没有收到这个理想成功响应数也是这样。

如果未配置 PartyOption::RegionQualityMeasurementConfiguration,则默认值为 4。

maxRetriesWithNoResponse uint16_t

在认为区域不可达之前,将初始测量消息重新发送到该区域但没有任何响应的最大额外次数。

此值配置在将区域视为不可达之前,Party 库重新尝试将第一个质量测量轻量级消息发送到该区域的额外尝试总次数(不含第一次尝试)。 如果从该区域的服务质量信标服务器接收到至少一个成功响应,则不再使用这个最大值,而是由 maxTimeoutsAfterResponse 字段挂你允许超时的尝试次数。

最大重试值越大,对数据包丢失等临时环境问题的容忍度越大,代价是放弃不可达区域的时间越长。 允许测量所有区域的绝对最大时间由单独的 totalMeasurementTimeoutInMilliseconds 字段值来限制。

如果未配置 PartyOption::RegionQualityMeasurementConfiguration,则默认值为 3。

maxTimeoutsAfterResponse uint16_t

在认为网络路径太不可靠而无法继续测量之前,允许之前已响应的区域超时的最大测量消息尝试次数。

如果从区域的服务质量信标服务器接收到至少一个成功响应,则此值确定了 Party 库在尝试为该区域获取 minRequiredSuccessfulResponsesidealNumberOfSuccessfulResponses 测量结果时允许的总超时尝试次数。

最大超时值越大,对数据包丢失等临时环境问题的容忍度越大,代价是可能花费更长的时间来完成对质量特征较差的区域的测量。 允许测量所有区域的绝对最大时间由单独的 totalMeasurementTimeoutInMilliseconds 字段值来限制。

如果未配置 PartyOption::RegionQualityMeasurementConfiguration,则默认值为 3。

备注

此结构可与 PartyOption::RegionQualityMeasurementConfiguration 一起使用,分别通过 PartyManager::SetOption()PartyManager::GetOption() 替代或查询 Party 库的当前配置。 它配置与 PartyRegionsChangedStateChange 状态更改关联的区域质量测量过程的低级别行为。

要求

标题: Party.h

另请参阅

群成员
PartyOption::RegionQualityMeasurementConfiguration
PartyRegionsChangedStateChange
PartyManager::SetOption
PartyManager::GetOption