Skip to main content

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

版本 2.0,2025/9/1 以下示例场景旨在说明大型多人在线游戏中推荐的跨网络功能和流程。它展示了一种可能的设计和实现路径。 在此场景中,游戏支持以下多人游戏功能:
  • 开放游戏世界 — 游戏支持一个允许玩家之间互动的开放游戏世界。玩家能够在开放世界中松散地分组以获得玩家对环境 (PvE) 体验。玩家对玩家 (PvP) 体验是 1:1 的,只允许在选定的区域进行。
  • 实例化游戏部分的自定义匹配 — 游戏为进入实例化 PvP 或 PvE 游戏部分的玩家实现自定义匹配服务。此服务将玩家和/或玩家团队匹配在一起。
  • 专用服务器 — 所有游戏内容都在专用服务器上执行。所有流量也通过这些服务器路由。
  • 聊天 — 游戏支持所有玩家之间的语音和文字聊天。还支持全球文字聊天。所有流量都通过服务器路由。
  • 消耗品 — 游戏提供一个游戏内商店,可购买(高级)游戏内货币。此货币使玩家能够购买物品和消耗品。
  • DLC — 可购买的可下载内容包括解锁新玩家角色类别的新游戏区域。

游戏服务

在此示例中,玩家启动游戏时与之交互的第一个游戏服务是游戏登录服务。要在游戏中玩,玩家必须创建游戏账户并将其关联到 XBOX 网络账户。可以从游戏内或游戏网页上创建账户。 对于账户关联,使用玩家的 XUID 并关联到游戏特定的账户。在游戏中,玩家使用游戏账户的用户名/密码登录一次以执行账户关联。XUID 访问需要在使用前获得批准,并且必须与您的 Microsoft 联系人讨论。XUID 必须在传输和存储期间受到保护。 在游戏网页上,使用游戏账户登录的玩家还需登录 Microsoft 账户进行账户关联。有关更多信息,请参阅_网站账户关联_文档主题。 游戏账户具有唯一 ID (GUID),允许所有游戏服务处理玩家,无论网络来源如何。游戏账户还存储所有玩家状态,例如玩家角色、进度、库存以及所有玩家元数据。

游戏流程

对于 MMO 游戏,跨网络功能的合规流程取决于玩家是在开放世界还是在实例化游戏中。 在所有情况下都适用以下步骤:
  1. 验证权限 玩家登录后,游戏为活动玩家验证多人游戏权限(254 和 189)和跨网络权限 (185)。如果任何权限被拒绝,玩家可能无法进入游戏,并显示错误对话框。此时,游戏还应检查语音和文字聊天的通信权限 (252) 以适当限制功能。
  2. 跨网络通知 首次启动时,游戏通知玩家游戏中存在跨网络功能。
以下步骤适用于开放游戏世界:
  1. 进入开放世界 玩家登录游戏时始终进入开放世界并连接到游戏服务器。
  2. 加入开放世界 MPSD 会话 开放世界游戏的游戏服务器创建多个 MPSD 会话,反映开放游戏世界中的游戏区域。这些 MPSD 会话中的一个或多个已启用游戏能力。所有 XBOX 网络用户为其游戏区域加入开放世界会话。服务器维护有关 XBOX 网络和非 XBOX 网络玩家的信息。开放世界会话允许 XBOX 网络玩家进行中加入和邀请,并且仅在服务器不接受来自客户端的新连接时才设置为关闭。
  3. 启用开放世界游戏 与其他玩家的游戏功能根据玩家权限可用。
    • 对于设置了通信权限的玩家,全球文字聊天始终启用。
    • 所有文字聊天消息都使用字符串验证服务和阻止列表来过滤冒犯性语言和术语。
    • 仅在验证所有必需的隐私和权限检查之后,才启用所有玩家之间(XBOX 网络/XBOX 网络和 XBOX 网络/非 XBOX 网络)的直接文字或语音聊天。有关更多详细信息,请参阅_玩家阻止/静音/举报_。对于非 XBOX 网络好友关系,游戏使用游戏特定的好友关系。XBOX 网络玩家之间的直接交互由游戏服务跟踪,并用于在开放世界 MPSD 会话中为这些玩家设置遭遇 ID。这确保玩家在彼此的最近玩家列表中可见。
以下步骤适用于实例化 PvE 或 PvP 游戏:
  1. 组 MPSD 会话 对于 XBOX 网络玩家,游戏创建一个 MPSD 会话以跟踪 XBOX 网络玩家。非 XBOX 网络玩家通过游戏服务进行跟踪。
  2. 组邀请/进行中加入 在此示例游戏设计中,加入或邀请仅限于玩家组。组 MPSD 会话用于支持 XBOX 网络玩家的进行中加入和邀请。游戏内的跨网络邀请由游戏服务支持。启动游戏的 XBOX 网络邀请提供自动化的 UI 流程进入被邀请的游戏,并将玩家加入被邀请的游戏内活动/团队。如果发生加入失败,则会向玩家清楚地传达相关错误。此类失败可包括:游戏组已满、活动不可加入、玩家离线等。
  3. 组匹配 游戏为组 PvP 或 PvE 匹配流程启用跨网络多人游戏。在此示例中,玩家使用匹配 UI 选择 PvP 或 PvE 体验,然后与其他玩家一起分组到实例化游戏体验中。
  4. 创建并加入游戏 MPSD 会话 组匹配的结果是一个由匹配服务通过服务到服务对 XBOX 服务的调用创建的 MPSD 大厅会话。所有 XBOX 网络用户加入此游戏会话,并在实例化游戏期间保留在此会话中。该服务使用自定义属性额外提供关于会话中非 XBOX 网络用户的提示。这些提示随后可由客户端逻辑用于在流程其余部分设置会话状态。
  5. 实例化游戏 所有玩家准备就绪后,实例化游戏开始。在此示例中,还通过专用服务器在 XBOX 网络玩家之间启用聊天。在实例化游戏期间,玩家列表在游戏 UI 中可见。该列表是游戏角色名称列表,可以选择查看玩家的玩家代号或其他网络标识符。XBOX 网络玩家被独特地突出显示。
  6. 完成游戏 完成实例化游戏后,团队玩家返回到开放游戏世界。玩家离开 MPSD 游戏会话,并将开放世界 MPSD 会话设置为活动会话。

会话管理

为遵守所有 XBOX 要求,游戏为 XBOX 网络玩家创建两个 MPSD 会话:
  • 开放世界区域游戏会话 — 游戏服务在启动时通过对 XBOX 服务的服务到服务调用为每个游戏服务器实例创建一个大型 MPSD 会话。游戏服务器实例的所有玩家都加入相应的 MPSD 会话。在这些会话中,服务器为彼此交互的 XBOX 网络玩家设置遭遇 ID,以确保在最近玩家列表上的正确表示。
  • 实例化游戏会话 — 该会话由匹配服务通过对 XBOX 服务的服务到服务调用创建。它包含游戏会话中所有 XBOX 网络玩家的预订(跨团队)。它用于正确填充 XBOX 网络玩家的最近玩家列表。
  • 组会话 — 该会话在玩家创建组(1 人组)后立即创建。它用于活动会话,以支持进行中加入和邀请。根据游戏设计,玩家在某些游戏模式期间无法加入。在这些模式中,使用关闭属性来禁用进行中加入和邀请。
非 XBOX 网络玩家不直接在 MPSD 会话中作为会话成员表示。出于跟踪目的,游戏在自定义会话属性中反映其存在:
该列表和 XBOX 网络会话成员也可用于确定服务器实例是否已满。 大型 MPSD 会话必须启用游戏能力以遵守 XBOX 要求。

玩家身份

玩家的游戏特定角色名称在所有网络之间共享。在创建角色名称期间,所有字符串都使用字符串验证服务进行验证。冒犯性语言和术语被阻止。
  • XBOX 网络玩家身份 — 游戏提供访问所有 XBOX 网络玩家的 XBOX 网络配置文件。这是通过在聊天和游戏交互中可用的游戏内 UI 完成的。
  • 非 XBOX 网络玩家身份 — 游戏不提供访问非 XBOX 网络配置文件或配置文件名称。

玩家阻止、静音和举报

游戏在游戏级别支持玩家阻止和静音:
  • XBOX 网络玩家阻止/静音 — 游戏使用 check_multiple_permissions_with_multiple_target_users 检查与其他 XBOX 网络玩家和非 XBOX 网络玩家/非 XBOX 网络好友的玩家类别进行多人游戏和聊天的权限。可以通过玩家的配置文件 UI 进行阻止和静音。同一游戏体验中其他 XBOX 网络玩家的阻止/静音状态在游戏过渡(例如,移到不同的游戏模式或位置)或每五分钟一次(以先发生者为准)期间进行检查。
  • 非 XBOX 网络玩家阻止/静音 — 游戏使用游戏内阻止列表来支持阻止或静音非 XBOX 网络玩家。此列表在游戏服务上维护,并用于检查多人游戏权限。必须能够通过自定义游戏 UI 在游戏中将非 XBOX 网络玩家静音。
  • XBOX 网络玩家举报 — 游戏还允许举报玩家。对于 XBOX 网络,举报由玩家通过游戏中可访问的配置文件 UI 完成。XBOX 网络执法处理玩家举报。
  • 非 XBOX 网络玩家举报 — 对于非 XBOX 网络用户,游戏提供自定义举报 UI 流程。游戏根据游戏和/或基于其他多人游戏网络的准则相应地处理玩家举报。

市场

在 XBOX 网络和其他多人游戏网络上购买虚拟货币在游戏服务上根据场景进行跟踪:
  • 虚拟货币 — 玩家在所有平台上有一个合并的虚拟货币和物品钱包。
  • 可下载内容 — 可下载内容 (DLC) 允许访问游戏的新区域。Microsoft Store 用于在 XBOX 网络平台上进行购买。玩家只能进入相应的 DLC 区域,并与从各自商店中获得该区域权利的其他角色进行游戏。

成就

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

玩家进度

玩家进度在所有游戏版本之间共享。为此使用了关联到多个多人游戏网络和自定义游戏服务的自定义游戏账户。

游戏 DVR/广播

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

排行榜

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

相关

最后修改于 2026年8月24日