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

版本 1.0,2020/3/1

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

在此方案中,该游戏支持以下多人游戏功能:

  • 开放的游戏世界

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

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

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

  • 专用服务器

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

  • 聊天

    游戏支持所有玩家之间的语音和文本聊天。 还支持全球文本聊天。 所有流量通过这些服务器来路由。

  • 易耗品

    该游戏向游戏内商店提供可购买(付费)游戏内货币。 此货币使玩家可以购买物品和易耗品。

  • DLC

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

游戏服务

在此示例中,启动游戏时,玩家交互的第一个游戏服务是游戏登录服务。 为了玩游戏,玩家必须创建一个游戏帐户并将它链接到 Xbox Live 帐户。 他们可以在游戏内或游戏的网页上创建帐户。

为了进行帐户关联,系统会使用玩家的 XUID 并将其关联到特定于游戏的帐户。 在游戏中,玩家使用游戏帐户的用户名/密码登录一次以执行帐户关联。 XUID 访问在使用前需要批准,并且必须与开发者客户经理讨论。 XUID 在传输和存储期间必须受到保护。

在游戏的网页上,使用游戏帐户登录的玩家还会登录 Microsoft 帐户,以进行帐户关联。 有关详细信息,请参阅网站帐户链接文档主题。

游戏帐户具有一个唯一的 ID (GUID),它允许所有游戏服务处理玩家(无论网络源自何处)。 游戏帐户还存储所有玩家状态,如玩家角色、进度、物品栏和所有玩家元数据。

游戏流

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

  1. 验证权限

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

  2. 跨网络通知

    在第一次启动游戏时,通知玩家玩游戏时可以启用跨网络功能。

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

  1. 进入开放世界

    当登录到游戏并连接到游戏服务器时,玩家始终进入开放世界。

  2. 加入开放世界 MPSD 会话

    用于玩开放世界游戏的游戏服务器创建多个 MPSD 会话,这些会话反映开放游戏世界中的游戏区域。 一个或多个这些 MPSD 会话已启用玩游戏功能。 所有 Xbox Live 用户都加入针对自己游戏区域的开放世界会话。 服务器维护有关 Xbox Live 和非 Xbox Live 玩家的信息。

    对于 Xbox Live 玩家,开放世界会话允许加入进程和邀请,并且仅在服务器不接受来自客户端的新连接时才设置为“已关闭”。

  3. 允许玩开放世界游戏

    根据玩家权限,提供和其他玩家玩游戏的功能。

    • 对于设置了通信权限的玩家,始终启用全球文本聊天。
    • 所有文本聊天消息都使用字符串验证服务和阻止列表来筛选冒犯性语言和术语。
    • 只有在验证了所有所需隐私和权限检查后,才能启用所有玩家之间(Xbox Live/Xbox Live 和 Xbox Live/非 Xbox Live)的直接文本或语音聊天。 有关详细信息,请参阅玩家阻止/静音/举报

    对于非 Xbox Live 好友关系,该游戏使用游戏特定的好友关系。

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

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

  1. 组 MPSD 会话

    对于 Xbox Live 玩家,游戏创建一个 MPSD 会话来跟踪 Xbox Live 玩家。 通过游戏服务来跟踪非 Xbox Live 玩家。

  2. 组邀请/加入进程

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

    启动游戏的 Xbox Live 邀请提供进入受邀游戏的自动 UI 流,并将玩家加入到受邀的游戏内活动/群。 如果加入失败,则将相关错误清楚地传达给玩家。 此类失败可能包括:游戏组已满、不可加入的活动、玩家离线等。

  3. 组匹配

    该游戏对于组 PvP 或 PvE 匹配流支持跨网络多人游戏。 在此示例中,玩家使用一个匹配 UI 来选择 PvP 或 PvE 体验,然后与其他玩家组合获得实例化玩游戏体验。

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

    该组匹配的结果是一个 MPSD 大厅会话,它是由匹配服务通过对 Xbox Live 的服务到服务调用来创建的。 所有 Xbox Live 用户加入此游戏会话并在实例化玩游戏期间留在此会话中。

    该服务使用自定义属性来额外提供与会话中的非 Xbox Live 用户有关的提示。 然后客户端逻辑可以使用这些提示在流程其余部分中设置会话状态。

  5. 实例化玩游戏

    所有玩家都准备就绪后,将启动实例化玩游戏。 在此示例中,还通过专用服务器在 Xbox Live 玩家之间启用聊天。

    在实例化玩游戏期间,玩家列表在游戏 UI 中可见。 此列表是游戏角色名称列表,并提供可以查看玩家代号或玩家的其他网络标识符的选项。 以独特方式突出显示 Xbox Live 玩家。

    以下是此组 UI 的一个示例。

    组 UI 示例,其中显示了实例化游戏过程中玩家的列表。

  6. 完成游戏

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

会话管理

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

  • 开放世界区域游戏会话

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

  • 实例化游戏会话

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

  • 组会话

    玩家创建组(1 人组)后就会立即创建此会话。 它被用于支持活动会话中的加入进程和邀请。

    根据游戏设计,玩家不能在某些游戏模式下加入。 在这些模式下,使用已关闭属性来禁止加入进程和邀请。

非 Xbox Live 玩家并不会在 MPSD 会话中直接表示为会话成员。 出于跟踪目的,该游戏会在自定义会话属性中反映其状态:

{{"name":"jackplayer"},{"name":"johnplayer"},{"name":"joeplayer"}}

还可以使用此列表和 Xbox Live 会话成员确定服务器实例是否已满。

大的 MPSD 会话必须启用游戏功能,以便遵从 Xbox 要求。

有关服务到服务调用的详细信息,请参阅服务到服务 Xbox Live 调用文档主题。

玩家标识

玩家特定于游戏的角色名称在所有网络间共享。 创建角色名称期间,将使用字符串验证服务验证所有字符串。 将阻止使用冒犯性语言和术语。

  • Xbox Live 玩家标识

    游戏提供对所有 Xbox Live 玩家的 Xbox Live 档案的访问。 这是通过在聊天和游戏交互中可用的游戏内 UI 完成的。

  • 非 Xbox Live 玩家标识

    游戏不提供对非 Xbox Live 档案或档案名称的访问。

玩家阻止、静音和举报

在游戏级别上支持游戏中的玩家阻止和静音:

  • Xbox Live 玩家阻止/静音

    该游戏使用 check_multiple_permissions_with_multiple_target_users 来检查多人游戏的权限、与其他 Xbox Live 玩家聊天的权限以及与非 Xbox Live 玩家/非 Xbox Live 好友类别的玩家聊天的权限。 可以通过玩家的档案 UI 进行阻止和静音。

    在游戏转换(例如,转换到其他游戏模式或位置)时或者每 5 分钟(以先到者为准),检查同一游戏体验中其他 Xbox Live 玩家的阻止/静音状态。

  • 非 Xbox Live 玩家阻止/静音

    该游戏使用游戏内阻止列表来支持对非 Xbox Live 玩家的阻止或静音。 在某一游戏服务上维护该列表并且检查多人游戏权限。 必须可以通过自定义游戏 UI 在游戏中静音某个非 Xbox Live 玩家。

  • Xbox Live 玩家举报

    该游戏还允许玩家举报。 对于 Xbox Live,玩家通过可在游戏中访问的档案 UI 进行举报。 Xbox Live 执法团队负责处理玩家举报。

  • 非 Xbox Live 玩家举报

    对于非 Xbox Live 用户,该游戏提供一个自定义举报 UI 流。 该游戏相应地针对游戏和/或基于其他多人游戏网络的准则处理玩家举报。

卖场

在依赖于情形的游戏服务上跟踪 Xbox Live 和其他多人游戏网络上虚拟货币的购买:

  • 虚拟货币

    玩家具有跨所有平台的一个合并虚拟货币的钱包和物品。

  • 可下载内容

    可下载内容 (DLC) 允许访问新的游戏区域。 Microsoft Store 用于在 Xbox Live 平台上购买。

    玩家只能进入相应的 DLC 区域,与具有相应应用商店区域授权的其他角色玩。

成就

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

玩家进度

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

游戏 DVR/广播

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

排行榜

对于游戏内的 PvP 比赛和 PvE 挑战,游戏支持自定义排行榜。 这些排行榜由游戏服务维护。 该服务通过 GUID(在客户端上解析为可读的玩家名称)识别玩家。