本主题介绍一个示例方案,其演示传统多玩家在线竞技场 (MOBA) 中的跨网络功能和流程。 它提供一个可能的设计和实现路径。 本主题提供对 XR-007:跨网络游戏、数据使用情况和小帮手应用程序交互的支持。
在此示例方案中,该游戏支持以下多人游戏功能。
功能 | 说明 |
---|---|
自定义匹配 | 该游戏实现一个自定义匹配服务。 此服务首先(可选)匹配玩家组成团队,然后将团队和玩家匹配在一起。 |
专用服务器 | 玩该游戏的所有行为都是在专用服务器上执行的。 所有流量(包括聊天流量)也是通过这些服务器传输的。 |
自定义排行榜 | 游戏服务实现自定义排行榜,这些排行榜包含有关玩家进度的深度信息。 |
多种游戏模式和设置 | 游戏支持多种游戏模式,例如合作与基于团队。 玩家可以配置这些模式的地图、游戏大小、规则和其他设置。 |
游戏内货币 | 游戏向游戏内商店提供可购买(付费)游戏内货币。 玩家可以使用该货币为团队购买道具。 玩家也可以为其角色购买装饰品。 |
DLC | 可购买的可下载内容 (DLC) 包括新地图和其他角色。 |
游戏服务
此示例方案中的自定义游戏服务之一是身份验证服务。 此身份验证服务用于将一个 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 会话。
该异步游戏会话匹配的结果是一个 MPSD 游戏会话,它是由匹配服务(或专用服务)通过对 Xbox Live 的服务到服务调用来创建的。 所有 Xbox Live 玩家都加入此游戏会话,并且该服务使用自定义属性额外提供与会话中未使用 Xbox Live 的玩家有关的提示。 然后客户端逻辑可以使用这些提示设置会话状态。
连接到专用服务器。
在最后一步,所有客户端都安全地连接到专用服务器并且开始跨网络玩游戏。 必须通过专用服务器路由多人游戏网络之间的所有流量。 不允许任何对等连接。
完成游戏。
完成游戏匹配后,团队可选择执行下表所示的操作。
操作 说明 回放匹配 玩家保持连接到服务器并且处于 MPSD 游戏会话中。 玩家开始新的游戏匹配。 搜索新对手。 玩家断开与服务器的连接,并且离开 MPSD 游戏会话。 玩家保留在大厅会话中,并返回到大厅屏幕以便进行下一轮的匹配。
会话管理
为遵从所有 Xbox 要求,该游戏将为 Xbox Live 玩家创建两个 MPSD 会话,如下表所示。
会话 | 说明 |
---|---|
大厅会话 | 匹配服务通过对 Xbox Live 的服务到服务调用创建此会话。 创建后,该会话包含针对团队中所有 Xbox Live 玩家的预留。 它是玩家可以为其发送邀请或加入进程的会话。 邀请和正在进行中的加入必须使用 Xbox Live 系统并且无法跨网络。 因此,所有 Xbox Live 玩家都将此会话设置为其活动会话。 |
游戏会话 | 匹配服务通过对 Xbox Live 的服务到服务调用创建此会话。 它包含针对一个游戏会话(跨团队)中所有 Xbox Live 玩家的预留,它用于跟踪 Xbox Live 玩家的多人游戏活动。 |
非 Xbox Live 的玩家并不会在 MPSD 会话中被直接表示为会话成员。 游戏仅会按自定义会话属性跟踪其存在,如以下代码示例所示。
{{"name":"kumarplayer"},{"name":"spencerplayer"},{"name":"eliseplayer"}}
可以使用此列表和 Xbox Live 会话成员确定该会话是否已满。 如果会话已满,则 Xbox Live 的邀请和加入进程功能必须禁用以便获得正确行为。 玩家(或服务器)对该会话设置 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 Live 平台上,通过 Microsoft Store 管理可下载内容(新的地图和角色类型)。 来自其他商店的权利不会共享。 所有玩家都需要在其相应的商店中具有有效权利,以便一起在同一个地图中玩游戏。 对于没有匹配权利的玩家,未购买的角色类型可见,但不可玩。 |
成就
该游戏具有基于多人游戏操作的多个成就,包括所玩的多人游戏。 针对此成就(和类似成就)的成就进度包括跨网络多人游戏会话。 该游戏不具有任何限制为跨网络游戏的成就。 Xbox One(或更高版本)游戏成就的成就进度可通过玩其他版本的游戏来获得。
玩家进度
玩家进度在所有游戏版本之间共享。 自定义游戏帐户持有玩家进度部分。
游戏 DVR 和广播
该游戏支持游戏 DVR 和屏幕截图以及跨网络多人游戏匹配中的广播。
排行榜
通过提供超越 Xbox Live 排行榜之外的全面的排行榜功能的游戏服务实现游戏的排行榜。 该服务创建多个基础排行榜并且并行更新它们:每个多人游戏网络一个排行榜,以及整合来自所有多人游戏网络的结果的合并的排行榜。 在启用了跨网络多人游戏后,将显示该合并的排行榜,如以下屏幕截图所示。
注意
与在多人游戏大厅中相同的方式表示所有玩家。
在某一玩家禁用了跨网络游戏功能后,将显示仅限 Xbox Live 的排行榜。
使用特定于游戏的帐户在内部标识排行榜服务上的所有玩家。 针对 Xbox Live 玩家的外部标识符依赖于查询游戏实例。
在 Xbox Live 游戏实例上,返回该 XUID,并且客户端执行查找以便确定玩家的玩家代号字符串。
在非 Xbox Live 的游戏实例上,返回该玩家的玩家代号或
DisplayName
字符串。 该服务从对 Xbox Live 的服务到服务调用检索此字符串,并且缓存最长 4 小时。