> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XR-007 跨网络游戏 — 多人游戏实现

> 基于会话的多人游戏中 XR-007 的实现指南:跨平台匹配、邀请、语音聊天以及静音或阻止的执行。

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

版本 2.0,2025/9/1

此示例场景旨在说明传统多人游戏或 MOBA 中推荐的跨网络功能和流程。它展示了一种可能的设计和实现路径。

在此场景中,游戏支持以下多人游戏功能:

* **自定义匹配** — 游戏实现了自定义匹配服务。此服务首先(可选)将玩家匹配到团队,然后将团队和玩家匹配在一起。
* **专用服务器** — 所有游戏内容都在专用服务器上执行。所有流量(包括聊天流量)也通过这些服务器路由。
* **自定义排行榜** — 游戏服务实现自定义排行榜,其中包含关于玩家进度的深入信息。
* **多种游戏模式/设置** — 游戏支持多种游戏模式,例如合作对基于团队,并允许玩家为这些模式配置地图、游戏规模、规则和其他设置。
* **游戏内货币** — 游戏提供一个游戏内商店,可购买(高级)游戏内货币。此货币使玩家能够为团队购买强化。还可以为玩家角色购买美化物品。
* **DLC** — 可购买的可下载内容包括新地图和额外角色。

## 游戏服务

此示例中的自定义游戏服务之一是身份验证服务。此服务用于将 XBOX 网络(或其他多人游戏网络)账户与游戏特定的玩家账户进行账户关联。当玩家首次连接到该服务时,账户关联会静默执行,并创建一个新的跨网络玩家身份。对于 XBOX 网络,玩家的 XUID 用作与游戏特定账户关联的唯一玩家标识符。XUID 访问需要在使用前获得批准,并且必须与 DAM 讨论。

游戏特定账户具有唯一 ID (GUID),允许所有游戏服务处理玩家,无论网络来源如何,并存储关于玩家的元数据。在此示例中,多人游戏网络和基本游戏玩家统计数据存储在此账户中。

游戏服务使用游戏特定账户中的多人游戏网络信息,以确保可以将多人游戏功能限制为仅 XBOX 网络玩家。

## 游戏流程

对于典型的多人游戏,跨网络功能的合规流程首先从玩家进入多人游戏模式开始。

在此示例中,游戏采取以下步骤:

1. **验证权限** 开始多人游戏之前,游戏验证多人游戏权限(254 和 189)。如果权限被拒绝,游戏不进入多人游戏模式。游戏还应检查通信权限 (252) 并相应地结束/禁用语音和文字聊天。
2. **验证跨网络权限** 对于此示例,游戏将跨网络游戏集成到默认匹配体验中。当玩家进入匹配体验时,游戏验证跨网络游戏权限 (185)。如果权限被拒绝,只能在 XBOX 网络内进行匹配。玩家首次被放入跨网络游戏时,游戏会显示跨网络游戏处于活动状态的通知。
3. **团队匹配** 游戏匹配服务首先基于匹配规则从跨网络玩家中形成一个团队。
4. **创建并加入团队/大厅 MPSD 会话** 游戏匹配服务通过对 XBOX 服务的服务到服务调用创建 MPSD 大厅会话。所有 XBOX 网络用户加入此大厅会话,该服务使用自定义属性额外提供关于会话中非 XBOX 网络用户的提示。这些提示随后可由客户端逻辑用于在下一步骤中设置会话状态。
5. **设置团队/大厅 MPSD 会话** XBOX 网络客户端将大厅会话设置为活动会话。会话的可加入性和已关闭状态必须相应地根据跨网络玩家状态设置。只要 XBOX 网络玩家保留在跨网络团队中,他们就保留在此会话中。如果会话已满(或在流程中稍后变满),服务或大厅仲裁者必须将会话设置为已关闭。没有更多玩家位置的活动会话绝不能是可加入的。
6. **团队大厅** 在团队大厅中,XBOX 网络玩家和来自其他多人游戏平台的玩家在场。通过自定义游戏服务在 XBOX 网络玩家之间启用语音聊天。仅在验证所有必需的隐私和权限检查之后,才启用所有玩家之间(XBOX 网络/非 XBOX 网络)的语音聊天。对于非 XBOX 网络好友关系,游戏使用非 XBOX 网络好友关系数据。在团队大厅中,XBOX 网络玩家和非 XBOX 网络玩家由游戏账户身份唯一标识。所有玩家标识符还显示其他多人游戏网络的玩家代号和等效玩家名称。在大厅 UI 中,团队领导者为下一步选择匹配属性(例如级别或自定义规则),以查找与另一团队的游戏会话,然后启动匹配请求。
7. **游戏会话匹配** 在此步骤中,将现有跨网络团队与团队领导者设置的其他匹配属性一起提交到匹配。这些属性用于识别最佳匹配,并产生一组两个新团队进行比赛。此时,匹配服务还为两个团队识别专用服务器。
8. **创建并加入游戏 MPSD 会话** 匿名游戏会话匹配的结果是一个由匹配服务或专用服务通过对 XBOX 服务的服务到服务调用创建的 MPSD 游戏会话。所有 XBOX 网络用户加入此游戏会话,该服务使用自定义属性额外提供关于会话中非 XBOX 网络用户的提示。这些提示随后可由客户端逻辑用于设置会话状态。
9. **连接到专用服务器** 在最后一步中,所有客户端安全地连接到专用服务器并启动跨网络游戏。所有多人游戏网络之间的流量必须通过专用服务器路由,不允许点对点连接。
10. **完成游戏** 游戏比赛完成后,团队可以选择:
    * **重放比赛** — 玩家保持连接到服务器并保留在 MPSD 游戏会话中。玩家开始新的游戏比赛。
    * **搜索新的对手** — 玩家断开与服务器的连接,离开 MPSD 游戏会话。玩家保留在大厅会话中,并返回大厅屏幕进行下一轮匹配。

## 会话管理

为遵守所有 XBOX 要求,游戏为 XBOX 网络玩家创建两个 MPSD 会话:

* **大厅会话** — 该会话由匹配服务通过对 XBOX 服务的服务到服务调用创建。它包含创建时团队中所有 XBOX 网络玩家的预订。它是玩家可以发送邀请或加入进行中的会话。邀请和进行中加入必须使用 XBOX 网络系统,不能跨网络进行。因此,所有 XBOX 网络玩家将此会话设置为其活动会话。
* **游戏会话** — 该会话由匹配服务通过对 XBOX 服务的服务到服务调用创建。它包含游戏会话中所有 XBOX 网络玩家的预订(跨团队)。它用于跟踪 XBOX 网络玩家的多人游戏活动。

非 XBOX 网络玩家不直接在 MPSD 会话中作为会话成员表示。游戏仅在自定义会话属性中跟踪其存在:

```text theme={null}
{{"name":"jackplayer"},{"name":"johnplayer"},{"name":"joeplayer"}}
```

该列表和 XBOX 网络会话成员可用于确定会话是否已满。如果已满,则必须禁用 XBOX 网络的邀请和进行中加入功能以获得正确的行为。玩家(或服务器)在会话上设置已关闭属性以禁用此功能。

用于跟踪游戏中玩家的 MPSD 会话必须启用**游戏**能力以遵守 XBOX 要求。

## 玩家通信阻止/举报

游戏在游戏级别支持玩家阻止:

* **XBOX 网络玩家阻止** — 游戏使用 `check_multiple_permissions_with_multiple_target_users` 检查与其他 XBOX 网络玩家和非 XBOX 网络玩家/非 XBOX 网络好友的玩家类别进行多人游戏和聊天的权限。游戏还通过 `ShowProfileCardAsync` 提供对其他玩家配置文件的访问。可以在玩家的配置文件 UI 中执行阻止。
* **非 XBOX 网络玩家阻止** — 游戏使用游戏内阻止列表来支持阻止与非 XBOX 网络玩家的通信。此列表在游戏服务上维护,并用于检查多人游戏权限。默认情况下不可用跨网络聊天。可以通过自定义游戏 UI 在游戏中阻止非 XBOX 网络玩家。
* **XBOX 网络玩家举报** — 游戏还允许举报玩家。对于 XBOX 网络,举报由玩家通过配置文件 UI 完成。XBOX 网络执法处理玩家举报。
* **非 XBOX 网络玩家举报** — 对于非 XBOX 网络用户,游戏提供自定义举报 UI 流程。游戏根据游戏和/或基于其他多人游戏网络的准则相应地处理玩家举报。

## 市场

在 XBOX 网络和其他多人游戏网络上购买游戏内货币在游戏服务上进行跟踪。游戏在所有游戏版本之间提供共享的虚拟货币钱包和游戏内物品库存。

对于非 XBOX 网络的游戏版本,以下限制适用:

* **玩家皮肤** — 玩家皮肤只能通过游戏内货币购买。游戏内货币在跨所有网络可用的统一游戏内钱包中管理。所有玩家皮肤在所有游戏版本中都相同。
* **消耗品** — 消耗品只能通过游戏内货币购买。与货币类似,消耗品在统一的游戏内库存中管理。
* **可下载内容** — 在 XBOX 网络平台上,可下载内容(新地图和角色类型)通过 Microsoft 商店管理。来自其他商店的权益不共享。所有玩家需要在各自商店中有有效权益才能一起在同一地图中玩。对于没有匹配权益的玩家,未购买的角色类型可见但不可玩。

## 成就

游戏具有基于多人游戏操作(包括进行的多人游戏)的多个成就。这些(和类似)成就的成就进度包括跨网络多人游戏会话。

游戏没有任何仅限于跨网络游戏的成就。XBOX 游戏成就的成就进度可以通过其他游戏版本上的游戏来实现。

## 玩家进度

玩家进度在所有游戏版本之间共享。自定义游戏账户保存部分玩家进度。

## 游戏 DVR/广播

游戏为跨网络多人游戏比赛中的游戏 DVR、截图和广播提供支持。

## 排行榜

游戏的排行榜通过游戏服务实现,该服务提供超越 XBOX 网络排行榜的广泛排行榜功能。该服务创建多个基础排行榜并并行更新它们:每个多人游戏网络一个排行榜,以及一个合并所有多人游戏网络结果的合并排行榜。

启用跨网络多人游戏时,显示合并的排行榜。所有玩家的表示方式与多人游戏大厅中相同。

当玩家禁用跨网络游戏功能时,显示仅 XBOX 网络排行榜。

游戏特定账户用于在内部识别排行榜服务上的所有玩家。XBOX 网络玩家的外部标识符取决于查询的游戏实例。在 XBOX 网络游戏实例上,返回 XUID,客户端执行查找以确定玩家的玩家代号字符串。在非 XBOX 网络游戏实例上,直接返回玩家的玩家代号或 DisplayName 字符串。该服务通过对 XBOX 服务的服务到服务调用检索此字符串,并将其缓存最多 4 小时。

## 相关

* [XR-007 跨网络游戏、数据使用和配套应用交互](/publishing/certification/xr/xr-007)
* [XR-007 MMO 示例](/publishing/certification/xr/xr-007-mmo)
* [XR-015 管理玩家通信](/publishing/certification/xr/xr-015)
* [XR-045 XBOX 网络和账户权限](/publishing/certification/xr/xr-045)


## Related topics

- [XR-007 跨网络游戏、数据使用和配套应用](/zh-CN/publishing/certification/xr/xr-007.md)
- [XR-007 跨网络游戏 — MMO 实现示例](/zh-CN/publishing/certification/xr/xr-007-mmo.md)
- [跨网络多人游戏实现示例:MMO](/zh-CN/services/xbox-services/multiplayer/concepts/live-console-xr007-mmo-example.md)
- [跨网络多人游戏实现示例](/zh-CN/services/xbox-services/multiplayer/concepts/live-console-xr007-multiplayer-example.md)
- [XBOX 要求 (XR) 认证参考](/zh-CN/publishing/certification/xbox-requirements.md)
