- 测量 XBOX One(或更新版本)主机之间或主机与服务器之间的延迟和带宽
- 评估最终测量结果,以确定节点之间的网络连接是否良好
托管初始化
Multiplayer Session Directory (MPSD) 支持一项称为托管初始化的功能,通过它协调涉及会话的客户端之间的目标会话初始化流程。 MPSD 自动跟踪会话的初始化阶段及相关超时。MPSD 还根据需要评估客户端之间的连接性。 托管初始化由 XblMultiplayerInitializationStage 枚举表示。我们强烈建议您的游戏使用 SmartMatch 匹配,以利用 MPSD 托管初始化功能。
托管初始化情节和阶段
只要匹配向目标会话添加新玩家,目标会话就会经历托管初始化。 SmartMatch 以用户状态 Reserved 添加会话成员,这意味着每个成员占用一个位置但尚未加入会话。 每组新玩家会触发一个新的初始化情节。 初始化完成后,每个玩家在此过程中要么成功要么失败。 初始化成功的玩家可以使用目标会话进行游戏。 初始化失败的玩家必须重新提交到匹配以匹配到另一个会话。 对于使用preserveSession 参数设置为 Always 提交到匹配的会话,会话的现有成员不会经历初始化,因为 MPSD 假定它们已正确设置。
每个托管初始化情节由以下阶段组成。
- 加入: 会话成员将自己写入会话,以将其用户状态从
Reserved转移到Active。他们可以上传基本数据,例如安全设备地址。 - 测量: 对于基于对等的拓扑,会话成员相互测量 QoS,然后将结果上传到会话。
- 评估: MPSD 评估最后两个阶段的结果,然后确定会话或成员是否已成功初始化。
为初始化配置目标会话
游戏可以使用正在初始化的目标会话中的常量来配置托管初始化流程。 这些常量在版本 107 的会话模板中的 /constants/system 下设置。我们推荐使用此模板版本。 您可以进行以下两种类型的配置设置。- 配置整个托管初始化流程的设置
- 配置 QoS 要求的设置
如果未在目标会话初始化配置中定义 QoS 要求,则在初始化期间会跳过测量阶段。
整体配置托管初始化
要整体控制托管初始化,请设置以下字段。 用于控制托管初始化的字段是/constants/system/memberInitialization 对象的一部分。
-
joinTimeout:指定初始化情节开始后 MPSD 等待每个成员加入的时长。默认值为 10 秒。 -
measurementTimeout:指定测量阶段开始后 MPSD 等待每个成员上传 QoS 测量结果的时长。默认值为 30,000 秒。 -
membersNeededToStart:指定第一个初始化情节成功所需成功初始化的成员数量。默认值为 1。
如果未达到此阈值,则所有成员的初始化都将失败。
配置 QoS 要求
仅当游戏使用对等或对等到主机拓扑时,才需要在初始化期间进行 QoS。 每种拓扑映射到 /constants/system/ 下的特定拓扑常量。为对等到对等拓扑配置 QoS 要求
游戏很少为对等到对等拓扑设置 QoS 要求。这些设置非常严格,会对具有严格网络地址转换 (NAT) 的玩家造成问题。
peerToPeerRequirements 对象中设置对等到对等拓扑的 QoS 要求。
每个客户端必须能够连接到每个其他客户端。
peerToPeerRequirements 对象具有以下相关字段。
-
latencyMaximum:指定任何两个客户端之间的最大延迟 -
bandwidthMinimum:指定任何两个客户端之间的最小带宽
为对等到主机拓扑配置 QoS 要求
您可以在peerToHostRequirements 对象中设置对等到主机拓扑的 QoS 要求。
每个客户端必须能够连接到单个公共主机。
如果配置了此对象且初始化成功,MPSD 将创建潜在主机客户端的初始列表,称为主机候选。
设置以下字段。
-
latencyMaximum:指定每个对等端与主机之间的最大延迟 -
bandwidthDownMinimum:指定每个对等端与主机之间的最小下行带宽 -
bandwidthUpMinimum:指定每个对等端与主机之间的最小上行带宽 -
hostSelectionMetric:指定用于选择主机的度量标准
