Microsoft 游戏开发工具包中的服务质量度量
使用本主题来了解如何衡量 GDK 游戏中的服务质量 (QoS)。 对于多人游戏,测量QoS延迟很重要。 对于对等连接,可使用 QoS 延迟测量来确定与另一个客户端玩游戏是否可行。 对于客户端/服务器连接,QoS延迟测量可用于确定游戏的最佳数据中心位置。
对于 Xbox One ERA 游戏,安全套接字已包括用于延迟和带宽度量的 QoS API。 GDK 游戏可实现与以下部分所述相同的功能。
对等
使用对等通信的游戏可以在游戏代码、游戏引擎或中间件中使用自定义QoS实现。
对于所有的实现,游戏应确保符合以下准则。
- 安全通信最佳做法。 无论内容如何,游戏都应遵循最佳做法来保护所有网络通信。 这也应适用于对等 UDP QoS 探测。 应通过安全协议连接执行这些探测。 有关安全协议最佳做法的详细信息,请参阅 Microsoft 游戏开发工具包游戏的安全游戏网格通信(NDA 主题)要求授权。
- 用户数据报协议(UDP)数据包大小。 对于UDP通信,游戏应保证不超过最大平台最大传输单位(MTU)。 对于 Xbox 主机和 Windows 10 上的 Microsoft 游戏开发工具包 (GDK) 游戏,每个数据包的默认最大 UDP 有效负载为 1,384 字节。 可能会碎片化超过MTU的数据包,这可能会导致额外的延迟或丢弃数据包。
- 匹配协议和通信渠道。 对等QoS应始终通过用于游戏流量的同一通信通道和协议来执行。 这可确保所有测量都反映出游戏通信的行为(包括延迟和带宽)。
- 会话浏览QoS行为。 使用 QoS 作为会话浏览列表一部分的游戏可能会意外地导致常用主机的 QoS 泛洪。 当所有用户的会话浏览列表都是相同的,并且包括自动QoS测试时,就会出现这种情况。 在这种情况下,所有查看会话浏览列表的用户都会针对列表中的顶级主机进行QoS测试。 这可能会导致过度负载,并对主机或服务器存在潜在淹没风险。 建议游戏对会话浏览列表进行部分随机化处理,以缓解此问题。
- 其他游戏带宽使用情况。 任何QoS测量都会受到其他本地或远程网络行为的影响。 游戏不能影响其他平台或子网的流量行为。 但是,仍可以控制内部游戏通信。 游戏应确保这一点,且游戏下载或其他网络使用是在执行QoS测量时的最小化。 这同样适用于多个并行的 QoS 测量。
客户端/服务器
使用客户端/服务器通信的游戏可以在游戏代码、游戏引擎或中间件中使用自定义QoS实现。 与对等 QoS 测量不同,客户端/服务器 QoS 测量的典型目标是确定到特定数据中心的延迟。 本方案中的标题应确保遵守与对等QoS测量相同的准则。
使用 Azure PlayFab 多人服务器的游戏应始终使用所提供的 API 度量 QoS。 有关更多信息,请参阅使用服务质量 (QoS) 信标测量玩家到 Azure 的延迟。
QoS指标的注意事项
决定连接质量的两个最常见的QoS指标是数据包是延迟和可用链接带宽。
延迟测试。 通常是按数据包来测试两个终结点之间的延迟。 最佳做法是向远程终结点发送低于本地 MTU 大小的少量数据包,该数据包在该远程终结点上会回显到本地设备。 这决定数据包的往返时间。 对于测量,应取多个数据包的平均值。 可快速执行延迟测量。
带宽测试。 带宽的典型测试方法是向另一个终结点发送大量数据,且频率不断增加,以使本地链接饱和。 可根据本地发送和/或接收缓冲区的状态推断出链接带宽。 缓冲区用量不断增大表示该链接已饱和。 带宽测量需要较长的测试时间,且会影响本地链路质量。
延迟和带宽一般是紧密相连的。 有限带宽会导致更高的数据包延迟,因为当网络拥堵时,数据包会在本地保存。 低延迟表明可用带宽更多,因为它表明数据包没有在本地保存。 因此,游戏应该只为游戏流量QoS的目的进行延迟测量。 游戏通信通常不需要执行带宽测试。
QoS 测试
Xbox One 开发工具包可运行网络模拟,以模拟受限带宽、数据包丢失和延迟。 强烈推荐该功能用于测试定制的QoS实现和所有QoS功能的端到端测试。 有关更多信息,请参阅 Xbox One 网络压力。