Skip to main content
本主题帮助你了解如何在 GDK 游戏中测量服务质量 (QoS)。对于多人游戏来说,测量 QoS 延迟非常重要。对于点对点连接,QoS 延迟测量可用来判断与另一客户端进行游戏是否可行。对于客户端/服务器连接,QoS 延迟测量可用来确定最合适的游戏数据中心位置。 对于 XBOX One ERA 游戏,secure sockets 内置了用于延迟与带宽测量的 QoS API。GDK 游戏可以通过下文所述的方式实现相同的功能。

点对点

使用点对点通信的游戏可以在游戏代码、游戏引擎或中间件中采用自定义的 QoS 实现。 对于所有实现,游戏都应确保遵守以下准则。
  • 安全通信最佳实践。 无论内容是什么,游戏都应遵循最佳实践来保护所有网络通信。这同样适用于点对点 UDP QoS 探测。这些探测应通过安全协议连接来执行。有关安全协议最佳实践的更多信息,请参阅 面向 Microsoft 游戏开发工具包游戏的安全 Game Mesh 通信 (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 多人游戏服务器的游戏应始终使用所提供的 QoS 测量 API。有关详细信息,请参阅 使用 QoS 信标测量玩家到 Azure 的延迟

QoS 指标注意事项

用于判断连接质量的两种最常见 QoS 指标是数据包 延迟 和可用链路 带宽
  • 延迟测试。 延迟通常在两个端点之间按每包进行测试。最佳实践是向远程端点发送少量小于本地 MTU 的数据包,让该端点将数据包回显回本地设备。这样可以测得数据包的往返时间。测量时应取多个数据包的平均值。延迟测量可以快速完成。
  • 带宽测试。 带宽通常通过以增长的频率向另一端点发送大量数据来测试,以将本地链路饱和。可以根据本地发送和/或接收缓冲区的状态推断出链路带宽。缓冲区使用增加意味着链路已饱和。带宽测量需要较长的测试时间,且可能会影响本地链路质量。
延迟和带宽通常紧密相关。带宽受限会导致数据包延迟升高,因为数据包在网络拥塞时会滞留在本地。延迟低则表示可用带宽更多,因为这说明数据包没有滞留在本地。因此,对于游戏流量 QoS,游戏应只执行延迟测量。游戏流量通常不需要带宽测试。

QoS 测试

XBOX One 开发套件可运行网络模拟以模拟有限带宽、丢包和延迟。我们强烈建议使用此功能来测试自定义 QoS 实现,以及对所有 QoS 功能进行端到端测试。有关更多信息,请参阅 XBOX One 网络压力测试

另请参阅

Windows Sockets 2 (Winsock) PlayFab Party 使用 QoS 信标测量玩家到 Azure 的延迟
最后修改于 2026年8月24日