游戏服务
在此示例场景中,自定义游戏服务之一是身份验证服务。此身份验证服务用于将 XBOX Live(或其他多人网络)账户与特定于游戏的玩家账户进行账户链接。当玩家首次连接到身份验证服务时,账户链接会静默执行,并创建新的跨网络玩家身份。 对于 XBOX Live,玩家的 XUID 用作链接到特定于游戏的账户的唯一玩家标识符。使用 XUID 访问必须事先经过批准,并且必须与开发者账户经理 (DAM) 讨论。特定于游戏的账户具有全局唯一标识符 (GUID),使所有游戏服务能够处理玩家,无论其网络来源和存储的玩家元数据如何。在此示例场景中,多人网络和基本游戏玩家统计信息存储在此账户中。游戏服务在特定于游戏的账户中使用多人网络信息以确保仅可将多人游戏功能限制为 XBOX Live 玩家。
游戏流程
对于典型的多人游戏,跨网络功能的合规流程从玩家进入多人游戏模式开始。在此示例场景中,游戏采取以下步骤。- 验证特权。 在开始多人会话之前,游戏验证多人游戏特权(254 和 189)。如果特权被拒绝,则游戏不进入多人游戏模式。游戏还应检查通信特权 (252),并相应地结束或禁用语音和文本聊天。
- 验证跨网络特权。 对于此示例场景,游戏将跨网络游戏集成到默认匹配体验中。当玩家进入匹配体验时,游戏验证跨网络游戏特权 (185)。如果特权被拒绝,则只能在 XBOX Live 内进行匹配。玩家首次进入跨网络游戏时,游戏会显示跨网络游戏处于活动状态的通知。
- 团队匹配。 游戏匹配服务根据匹配规则从跨网络玩家中组建团队。
- 创建并加入团队或大厅多人会话目录 (MPSD) 会话。 游戏匹配服务通过对 XBOX Live 的服务到服务调用创建多人会话目录 (MPSD) 大厅会话。所有 XBOX Live 玩家加入此大厅会话。服务使用自定义属性额外提供有关会话中不使用 XBOX Live 的玩家的提示。这些提示可供客户端逻辑在下一步设置会话状态时使用。
- 设置团队或大厅 MPSD 会话。 XBOX Live 客户端将大厅会话设置为活动会话。会话可加入性和关闭状态必须根据跨网络玩家状态相应设置。XBOX Live 玩家只要留在跨网络团队中,就会保留在此会话中。如果会话已满(或稍后在流程中变满),服务或大厅仲裁者必须将会话设置为关闭。没有更多玩家位置的活动会话绝不能是可加入的。
- 团队大厅。 在团队大厅中,XBOX Live 玩家和来自其他多人平台的玩家都存在。通过自定义游戏服务在 XBOX Live 玩家之间启用语音聊天。只有在验证所有必需的隐私和权限检查后,才允许所有玩家(XBOX Live/XBOX Live 和 XBOX Live/不使用 XBOX Live 的玩家)之间的语音聊天。对于不使用 XBOX Live 的好友关系,游戏使用不使用 XBOX Live 的好友的网络好友关系数据。在团队大厅中,XBOX Live 玩家和不使用 XBOX Live 的玩家由游戏账户身份唯一标识。所有玩家标识符也显示玩家标签和其他多人网络的等效玩家名称。 以下屏幕截图显示了大厅中玩家名册 UI 的示例。 在大厅 UI 中,团队队长为下一步选择比赛属性(例如等级或自定义规则),以找到与另一支团队的游戏会话,然后开始比赛。
- 游戏会话匹配。 使用团队队长设置的额外比赛属性将现有跨网络团队提交给匹配。这些属性用于在新的两支比赛团队集中识别最佳比赛结果。此时,比赛服务还为两支团队识别专用服务器。
- 创建并加入游戏 MPSD 会话。 匿名游戏会话匹配的结果是由比赛服务(或专用服务)通过对 XBOX Live 的服务到服务调用创建的 MPSD 游戏会话。所有 XBOX Live 玩家加入此游戏会话,服务使用自定义属性额外提供有关会话中不使用 XBOX Live 的玩家的提示。这些提示可供客户端逻辑在设置会话状态时使用。
- 连接到专用服务器。 在最后一步中,所有客户端安全连接到专用服务器并启动跨网络游戏。多人网络之间的所有流量必须通过专用服务器路由。不允许对等连接。
-
完成游戏。
游戏比赛完成后,团队可以选择执行下表所示的操作。
会话管理
为了遵守所有 XBOX 要求,游戏为 XBOX Live 玩家创建两个 MPSD 会话,如下表所示。
不使用 XBOX Live 的玩家不直接作为会话成员出现在 MPSD 会话中。游戏仅在自定义会话属性中跟踪其存在,如下面的代码示例所示。
closed 属性以禁用此功能。
用于跟踪游戏中玩家的 MPSD 会话必须启用
gameplay 功能以遵守 XBOX 要求。玩家通信屏蔽和举报
游戏中的玩家屏蔽在游戏级别支持。XBOX Live 玩家屏蔽
游戏使用 XblPrivacyBatchCheckPermissionAsync 检查多人游戏特权。游戏还用它进行与其他 XBOX Live 玩家的聊天以及不使用 XBOX Live 的玩家类别/不使用 XBOX Live 的好友的聊天。游戏还通过 XGameUiShowPlayerProfileCardAsync 提供对其他玩家个人资料的访问。玩家可以在玩家个人资料 UI 中屏蔽其他玩家。屏蔽不使用 XBOX Live 的玩家
游戏使用游戏内屏蔽列表来支持屏蔽与不使用 XBOX Live 的玩家的通信。此列表在游戏服务上维护,并针对多人游戏权限进行检查。默认情况下不提供跨网络聊天。可以通过自定义游戏 UI 在游戏中屏蔽不使用 XBOX Live 的玩家,如下面的屏幕截图所示。XBOX Live 玩家举报
游戏还允许举报玩家。对于 XBOX Live,玩家通过玩家个人资料 UI 举报其他玩家。XBOX Live 强制执行处理玩家举报。举报不使用 XBOX Live 的玩家
对于不使用 XBOX Live 的玩家,游戏提供自定义举报 UI 流程。游戏相应地处理游戏的玩家举报,并根据其他多人网络的准则处理。Microsoft Store
XBOX Live 和其他多人网络上游戏内货币的购买在游戏服务上跟踪。游戏在所有游戏版本之间提供共享的虚拟货币钱包和游戏内物品库存。下表中的限制适用于非 XBOX Live 的游戏版本。成就
游戏具有基于多人游戏动作的多个成就,包括已进行的多人游戏。此(和类似)成就的成就进度包括跨网络多人游戏会话。游戏没有任何仅限于跨网络游戏的成就。XBOX One 家族(或更高版本)游戏成就的成就进度可通过在其他游戏版本上进行游戏来实现。玩家进度
玩家进度在所有游戏版本之间共享。自定义游戏账户保存部分玩家进度。Game DVR 和广播
游戏支持在跨网络多人游戏比赛中使用 Game DVR、屏幕截图以及广播。排行榜
游戏的排行榜通过一个游戏服务实现,该服务提供超出 XBOX Live 排行榜的广泛排行榜功能。该服务创建多个底层排行榜并并行更新它们:每个多人网络一个排行榜,以及一个合并的排行榜,其中合并了所有多人网络的结果。当启用跨网络多人游戏时,显示合并的排行榜,如下面的屏幕截图所示。所有玩家的显示方式与多人大厅中相同。
- 在 XBOX Live 游戏实例上,返回 XUID,然后客户端执行查找以确定玩家的玩家标签字符串。
-
在非 XBOX Live 的游戏实例中,返回玩家的玩家标签或
DisplayName字符串。服务通过对 XBOX Live 的服务到服务调用检索此字符串,并将其缓存最多四小时。
