跨网络多人游戏实现示例:MMO

本主题将介绍大型多人在线游戏 (MMO) 中的跨网络功能和流的示例。 本主题提供对 XR-007:跨网络游戏、数据使用情况和小帮手应用程序交互的支持。

以下示例方案旨在阐述大型多人在线游戏中推荐的跨网络功能和流。 它将显示一个可能的设计和实现路径。 在此方案中,游戏将支持以下多人游戏功能。

开放的游戏世界

游戏支持开放的游戏世界,允许玩家之间的互动。 玩家可以在开放的游戏世界中松散组队,以获得玩家对环境 (PvE) 体验。 玩家对玩家 (PvP) 体验是 1:1 的,仅在选定区域中允许。

针对实例化游戏部分的自定义匹配

游戏为进入实例化的 PvP 或 PvE 游戏部分的玩家实现自定义匹配服务。 此服务将玩家和玩家团队匹配在一起。

专用服务器

玩该游戏的所有行为都是在专用服务器上执行的。 所有流量也是通过这些服务器路由的。

聊天

该游戏支持玩家之间的语音和文本聊天。 所有通信都通过服务器路由。

易耗品

该游戏提供一个使用可购买(付费)游戏内货币的游戏内商店。 玩家可以使用此货币购买装饰品。

可下载内容 (DLC)。

可购买的可下载内容 (DLC) 包括解锁新玩家角色类别的新游戏区域。

游戏服务

在此示例中,启动游戏时,玩家交互的第一个游戏服务是游戏登录服务。 若要玩该游戏,玩家必须创建游戏帐户,并将其关联到 Xbox Live 帐户。 可以在游戏内或游戏网页上创建帐户。

为了进行帐户关联,玩家的 XUID 会被关联到特定于游戏的帐户。 若要执行帐户关联,玩家需要使用游戏帐户的用户名和密码在游戏中登录一次。 XUID 访问必须在使用前被批准,并且必须与开发者账户管理员 (DAM) 讨论。 在游戏的网页上,使用游戏帐户登录的玩家还必须登录 Microsoft 帐户,以进行帐户关联。 游戏帐户具有一个唯一的 ID (GUID),它允许所有游戏服务处理玩家(无论网络源自何处)。 游戏帐户还存储所有玩家状态信息,如玩家角色、进度、物品栏和所有玩家元数据。

游戏流

对于 MMO 游戏,针对跨网络功能的兼容流依赖于玩家处于开放游戏世界还是实例化的游戏中。 以下步骤适用于所有情况。

  1. 验证权限

    在玩家登录游戏后,游戏将为活动玩家验证多人游戏权限(254 和 189)以及跨网络权限 (185)。 如果任何一项权限被拒绝,玩家将不能进入游戏,并将显示错误对话框。 此时游戏需要检查用于语音和文本聊天的通信权限 (252) 以相应地限制功能。

  2. 跨网络通知

    首次启动时,游戏会通知玩家游戏中存在跨网络功能。

    以下步骤适用于开放的游戏世界。

  3. 进入开放的游戏世界。

    登录游戏并连接到作品服务器后,玩家便会进入开放的世界。

  4. 加入开放的游戏世界多人游戏会话目录 (MPSD) 会话。

    用于开放世界游戏的游戏服务器会创建多个 MPSD 会话,这些会话将反映开放游戏世界中的游戏区域。 这些 MPSD 会话中的一个或多个已启用游戏功能。 所有 Xbox Live 玩家都加入针对自己游戏区域的开放世界会话。 服务器将维护有关 Xbox Live 和非 Xbox Live 玩家的信息。 对于 Xbox Live 玩家,开放的游戏世界会话会允许加入进程和邀请,并且仅在服务器不接受来自客户端的新连接时才设置为“已关闭”。

  5. 允许玩开放世界游戏。

    根据玩家权限,将提供和其他玩家玩游戏的功能。 对于设置了通信权限的玩家,始终启用全局文本聊天。 所有文本聊天消息都使用字符串验证服务和阻止列表来筛选冒犯性语言和术语。 玩家名称也将采用相同的验证。

只有在验证了所有所需隐私和权限检查后,才能启用所有玩家(Xbox Live/Xbox Live 和 Xbox Live/非 Xbox Live 玩家)之间的文本聊天。 对于非 Xbox Live 的好友关系,游戏将使用游戏特定的好友关系。

Xbox Live 玩家之间的直接互动由游戏服务跟踪,用于设置开放世界 MPSD 会话中这些玩家之间的相遇 ID。 这样可以确保玩家在彼此的最近玩家列表中可见。

实例化 PvE 或 PvP 游戏玩法

以下步骤适用于实例化 PvE 或 PvP 游戏玩法。

  1. 组 MPSD 会话。

    对于 Xbox Live 玩家,相应作品会创建一个 MPSD 会话来跟踪 Xbox Live 玩家。 非 Xbox Live 玩家则通过游戏服务进行跟踪。

  2. 组邀请和加入进程。

    在此示例中,游戏设计将限制玩家组的加入或邀请。 组 MPSD 会话用于支持 Xbox Live 玩家加入进程和邀请他人。 游戏内的跨网络邀请由游戏服务支持。

  3. 组匹配。

    游戏将支持跨网络多人游戏中的组 PvP 或 PvE 匹配流。 在此示例中,玩家使用一个匹配 UI 来选择 PvP 或 PvE 体验,然后与其他玩家组队以进行实例化游戏体验。

  4. 创建并加入游戏 MPSD 会话。

    组匹配的结果是一个 MPSD 大厅会话,它是由匹配服务通过对 Xbox Live 的服务到服务调用来创建的。 所有 Xbox Live 玩家将加入此游戏会话并在实例化游戏期间留在此会话中。 该服务使用自定义属性来提供有关会话中未使用 Xbox Live 的玩家的额外提示。 然后客户端逻辑可以使用这些提示在相应流的剩余部分期间设置会话状态。

  5. 实例化游戏。

    在所有玩家准备好后,便可开始实例化游戏。 在此示例中,还通过专用服务器在 Xbox Live 玩家之间启用聊天。 在实例化游戏期间,玩家列表在游戏 UI 中可见。 此列表是游戏角色名称列表,并提供可以查看玩家代号或玩家的其他网络标识符的选项。 以独特方式突出显示 Xbox Live 玩家。 以下屏幕截图显示了该组 UI 的示例。

    显示 MMO 组示例的屏幕截图

  6. 完成游戏。

    在完成实例化游戏后,团队玩家将返回到开放游戏世界。 玩家离开 MPSD 游戏会话并将开放世界 MPSD 会话设置为活动会话。

会话管理

为遵从所有 Xbox 要求,该游戏为 Xbox Live 玩家创建两个 MPSD 会话。

开放游戏世界区域游戏会话

游戏服务在启动时会创建一个大型 MPSD 会话。 它是通过 Xbox Live 的服务对服务调用,针对每个游戏服务器实例所创建。 游戏服务器实例的所有玩家都会加入相应的 MPSD 会话。 在这些会话中,服务器将为互动的 Xbox Live 玩家设置一个相遇 ID,以确保在最近玩家列表上正确显示。

实例化游戏会话

匹配服务通过对 Xbox Live 的服务到服务调用创建此会话。 它包含针对一个游戏会话中(跨团队)所有 Xbox Live 玩家的预订。 它用于正确填充 Xbox Live 玩家的最近玩家列表。

组会话

玩家创建组(1 人组)后就会立即创建此会话。 它被用于支持活动会话中的加入进程和邀请。 根据游戏设计,玩家不能在某些游戏模式下加入。 在这些模式下, closed 属性用于禁用加入进程和邀请。

非 Xbox Live 的玩家并不会在 MPSD 会话中被直接表示为会话成员。 出于跟踪目的,游戏会在自定义会话属性中反映其存在,如以下代码示例所示。

{{"name":"kumarplayer"},{"name":"spencerplayer"},{"name":"eliseplayer"}}

你还可以根据此列表和 Xbox Live 会话成员确定该服务器实例是否已满。 大型的 MPSD 会话必须启用玩游戏功能,以遵从 Xbox 要求。

玩家阻止、静音和举报

游戏中的玩家阻止和静音是在游戏层面上得到支持。

Xbox Live 玩家阻止和静音

游戏使用 XblPrivacyBatchCheckPermissionAsync 来检查多人游戏和其他 Xbox Live 玩家与非 Xbox Live 玩家/非 Xbox Live 好友之间的聊天权限。 玩家可在其玩家配置文件 UI 中进行阻止和静音。

对非 Xbox Live 玩家进行阻止和静音

游戏使用游戏内阻止列表来支持对非 Xbox Live 玩家的阻止和静音。 此列表将在游戏服务上进行维护,并用于检查多人游戏权限。 必须可以在游戏中使用自定义游戏 UI 静音非 Xbox Live 玩家。

Xbox Live 玩家举报

该游戏还允许玩家举报。 对于 Xbox Live,玩家可以通过配置文件 UI 进行举报。 Xbox Live 执法团队负责处理玩家举报。

举报非 Xbox Live 玩家

对于非 Xbox Live 玩家,游戏将提供自定义举报 UI 流。 游戏将根据其他多人游戏网络的准则,对玩家举报进行相应处理。

Microsoft Store

在 Xbox Live 和其他多人游戏网络上购买虚拟货币会被游戏服务依据以下条件跟踪。

虚拟货币

玩家拥有一个跨所有平台的融合虚拟货币以及物品的钱包。

DLC

DLC 为玩家提供了一种访问游戏中新区域的方式。 Microsoft Store 用于在 Xbox Live 平台上购买。 玩家只能进入相应的 DLC 区域,与具有相应应用商店区域授权的其他角色玩。

成就

游戏中的成就是基于开放游戏世界和实例化玩游戏操作。 成就进度包括跨网络游戏体验。 该游戏不包括任何仅限于跨网络游戏的成就。

玩家进度

玩家进度在所有游戏版本之间共享。 为此,需要使用一个链接到多个多人游戏网络的自定义游戏帐户和一个自定义游戏服务。

游戏 DVR 和广播

该游戏允许在开放游戏世界和实例化游戏中使用游戏 DVR 和屏幕截图,但是会从图像缓冲区删除所有文本聊天。

排行榜

该游戏不支持排行榜。