> ## 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.

# 直接调用多人游戏服务简介

> 介绍如何直接调用 2015 多人 API 和 MPSD 而不是使用多人游戏管理器,包括会话、邀请和 SmartMatch。

> [!NOTE]
>
> 本主题涵盖直接使用多人 API。有关使用 Microsoft Game Development Kit (GDK) 开发游戏时的多人功能概述,请参见以下主题。
>
> * [多人游戏概述 (NDA 主题)](https://devdocs.xbox.com/zh-CN/services/xbox-services/multiplayer/overviews/multiplayer-intro.md)
> * [XBOX 和 PC 多人游戏设计指南 (NDA 主题)](https://devdocs.xbox.com/zh-CN/services/xbox-services/multiplayer/overviews/multiplayer-design-guidance-xbox-pc-gdk.md)
> * [跨平台多人游戏设计指南 (NDA 主题)](https://devdocs.xbox.com/zh-CN/services/xbox-services/multiplayer/overviews/multiplayer-design-guidance-cross-platform.md)

## 关于多人系统

2015 多人游戏优化了多人会话目录 (MPSD) 和游戏会话的直接使用。它为单个游戏或玩家的多个并发会话提供更好的支持,并更新 XBOX 服务 API (XSAPI),使游戏能够:

* 广告玩家当前的活动和可加入性。
* 向会话发送邀请,以及玩家可见(游戏指定)的上下文字符串。
* 通过游戏代码发现并加入会话。
* 维护与 MPSD 的 Web 套接字连接,以便可以接收会话更改的简短通知(轻拍);例如,反映对更改事件和连接状态更改订阅的更新。MPSD 还使用 Web 套接字连接以快速检测并对客户端断开连接采取行动。
* 使用 SmartMatch 匹配。

## 多人组件、接口和体系结构

### 2015 多人游戏的组件

多人游戏是一个由多个组件组成的系统。2015 多人游戏足够灵活,可以与其他组件(如专用服务器和外部匹配系统)配合使用。

#### 多人会话目录

MPSD 是一个持有会话集合的服务。*会话* 定义为驻留在云中并代表一组正在玩游戏的人的安全文档。

有关详细信息,请参见 [多人会话目录 (MPSD)](https://devdocs.xbox.com/zh-CN/services/xbox-services/multiplayer/mpsd/live-mpsd-nav.md)。

#### 多人客户端 API

REST 功能可以在游戏的直接调用中使用,但我们建议您通过 XSAPI 访问 MPSD。有关详细信息,请参见 [调用 MPSD](https://devdocs.xbox.com/zh-CN/services/xbox-services/multiplayer/mpsd/live-mpsd-overview.md#calling-mpsd)。

#### XBOX 派对系统

在 2015 多人游戏中,XBOX 派对系统仅支持聊天派对作为外部实体。游戏可以与派对系统交互以发现聊天派对的成员身份。有关详细信息,请参见本主题稍后的 [2015 多人游戏支持的派对](#parties-supported-by-2015-multiplayer)。

派对系统现在直接通过 MPSD 会话支持游戏,而不是使用游戏派对。游戏可以使用会话来启用诸如成员交互、在空间可用时将玩家拉入游戏以及在等待期间保持玩家参与等操作。

### 2015 多人游戏接口

2015 多人游戏使用多个接口与其他 XBOX 组件交互。

#### XBOX 安全套接字

2015 多人游戏通过使用 XBOX 安全套接字和 Winsock 支持设备之间的低级网络通信。网络功能使用互联网协议安全 (IPSec),使游戏能够提供安全的设备关联。

#### XBOX 服务实时活动服务

2015 多人游戏使用实时活动 (RTA) 服务,以便游戏可以订阅 MPSD 会话更改并自动检测客户端断开连接。有关详细信息,请参见 [实时活动 (RTA) 服务](https://devdocs.xbox.com/zh-CN/services/xbox-services/fundamentals/rta/live-rta-nav.md)。

#### XBOX 服务 SmartMatch 匹配服务

SmartMatch 匹配服务基于匹配期间提供的玩家偏好和数据以及信息,组建玩家组。有关详细信息,请参见 [匹配概述](https://devdocs.xbox.com/zh-CN/services/xbox-services/multiplayer/matchmaking/live-matchmaking-overview.md)。

#### XBOX 服务信誉服务

信誉服务管理有关信誉的玩家统计信息,并支持基于信誉过滤的匹配。2015 多人游戏通过 SmartMatch 匹配使用信誉服务。有关详细信息,请参见 [信誉](https://devdocs.xbox.com/zh-CN/services/xbox-services/community/reputation/live-reputation-nav.md)。

### 典型的 2015 多人游戏体系结构

本节介绍最典型的 2015 多人游戏体系结构。

#### 对等体系结构

在对等体系结构中,游戏使用 MPSD 和 SmartMatch 匹配来发现对等地址。然后游戏使用这些地址通过 XBOX 安全套接字连接对等方,如下图所示。有关详细信息,请参见 [Windows 套接字简介](https://devdocs.xbox.com/zh-CN/build/console-features/networking/game-mesh/winsock-intro-networking.md)。

![显示对等体系结构的图](https://mintcdn.com/microsoft-4404708b/gzrdvT5kpqAXKEQt/images/gdk/services/Mult2015ArchPeer.png?fit=max\&auto=format\&n=gzrdvT5kpqAXKEQt\&q=85\&s=7ddc938f62adc92a9703ecfd74a3bc7b)

#### 客户端/服务器体系结构

在客户端/服务器体系结构中,游戏使用 MPSD 和 SmartMatch 匹配来发现专用服务器地址。然后游戏使用这些地址通过 XBOX 安全套接字连接到专用服务器,如下图所示。有关详细信息,请参见 [Windows 套接字简介](https://devdocs.xbox.com/zh-CN/build/console-features/networking/game-mesh/winsock-intro-networking.md)。

![显示客户端/服务器体系结构的图](https://mintcdn.com/microsoft-4404708b/gzrdvT5kpqAXKEQt/images/gdk/services/Mult2015ArchClientServer.png?fit=max\&auto=format\&n=gzrdvT5kpqAXKEQt\&q=85\&s=ad1bfe552f2f3203ee2bd57a5fa8e974)

> [!NOTE]
>
> Azure PlayFab 服务器实例可以作为客户端/服务器体系结构中的服务器。有关详细信息,请参见 [多人服务器](https://learn.microsoft.com/gaming/playfab/features/multiplayer/servers/)。

## 2015 多人游戏支持的派对

XBOX One(或更高版本)的 2015 多人游戏不将 "游戏派对" 作为系统级构造公开。但是,它在系统级支持 "聊天派对",与 2014 多人游戏一样。通过使用 MPSD 会话,您的游戏仍然可以提供类似于使用游戏派对的玩家体验。

### 聊天派对

*聊天派对* 是一群互相聊天的人,由玩家通过 XBOX One 派对应用管理。玩家可以在游戏会话中或在执行其他主机活动时处于聊天派对中。但是,聊天派对中的玩家与这些玩家的其他活动之间没有联系。

聊天派对通过 `PartyChat` 类公开,该类允许游戏检查聊天派对的状态。例如,游戏可以使用 `PartyChat.GetPartyChatViewAsync` 方法枚举聊天派对的成员。

### 实现类似于游戏派对的功能

在 2014 多人游戏中,游戏派对有多种用途。它允许游戏:

* 广告玩家当前的活动和可加入性。
* 向会话发送邀请。
* 发现并加入会话。
* 接收对注册到派对的会话某些更改的通知。
* 使用 SmartMatch 匹配。
* 在多个游戏会话中保持一组人在一起。

2015 多人游戏通过 MPSD 会话直接支持所有这些功能。

## 多人游戏术语

| 术语 | 说明 |
| - | - |
| 活动玩家 | 在会话内设置为活动状态的玩家。当玩家正在参与游戏时,游戏将玩家设置为此状态。有关详细信息,请参见主题 "多人会话高级主题" 中的 [会话用户状态](https://devdocs.xbox.com/zh-CN/services/xbox-services/multiplayer/mpsd/concepts/live-mpsd-details.md#session-user-states) 部分。 |
| 仲裁者 | 游戏会话中管理游戏 MPSD 会话状态(例如向匹配广告游戏会话以找到更多玩家)的单个主机。仲裁者由游戏设置。仲裁者并不总是游戏的主机。有关详细信息,请参见主题 "多人会话高级主题" 中的 [会话仲裁者](https://devdocs.xbox.com/zh-CN/services/xbox-services/multiplayer/mpsd/concepts/live-mpsd-details.md#session-arbiter) 部分。 |
| 组队游戏 | 仅通过一位玩家邀请其他玩家加入而创建的游戏类型,没有匹配的参与。 |
| 聊天派对 | 一群互相聊天的人。这些人可能从事相同的活动,也可能从事不同的活动,例如游戏、音乐或应用。有关详细信息,请参见本主题前面的 [2015 多人游戏支持的派对](#parties-supported-by-2015-multiplayer)。 |
| 游戏邀请 | 加入游戏会话的邀请。 |
| 游戏会话 | 玩家实际一起玩的会话。所有多人游戏场景,例如匹配或加入大厅,最终都会进入游戏会话。会话通常作为玩家当前活动进行广告,以启用加入。它还用于构建最近玩家列表。有关详细信息,请参见 [多人会话高级主题](https://devdocs.xbox.com/zh-CN/services/xbox-services/multiplayer/mpsd/concepts/live-mpsd-details.md)。 |
| 游戏会话主机 | 为构建于基于主机的对等网络体系结构上的游戏运行游戏模拟的主机。此主机通常与仲裁者相同,但不一定必须相同。 |
| 句柄(或会话句柄) | 对 MPSD 会话的引用,具有与其关联的额外状态和行为。有关详细信息,请参见主题 "多人会话目录概述" 中的 [MPSD 会话句柄](https://devdocs.xbox.com/zh-CN/services/xbox-services/multiplayer/mpsd/live-mpsd-overview.md#mpsd-handles-to-sessions) 部分。 |
| 非活动玩家 | 在会话内设置为非活动状态的玩家。当游戏挂起或其他非活动状态时,游戏将玩家设置为此状态,由游戏定义。在某些情况下,MPSD 也可能将玩家设置为非活动,但主要由游戏负责。有关详细信息,请参见主题 "多人会话高级主题" 中的 [会话用户状态](https://devdocs.xbox.com/zh-CN/services/xbox-services/multiplayer/mpsd/concepts/live-mpsd-details.md#session-user-states) 部分。 |
| 匹配器 (Hopper) | 由逻辑驱动的匹配票证集合。游戏可以有多个匹配器,但只有相同匹配器内的票证才能匹配。例如,游戏可能创建一个匹配器,其中玩家技能是匹配最重要的项目。它可能使用另一个匹配器,其中玩家只有购买了相同的可下载内容才能匹配。有关匹配器在 SmartMatch 工作流中的位置的详细信息,请参见 [匹配概述](https://devdocs.xbox.com/zh-CN/services/xbox-services/multiplayer/matchmaking/live-matchmaking-overview.md) |
| 进行中加入 | 在游戏开始后加入另一位玩家游戏的概念。玩家可以通过好友的玩家卡加入好友的游戏。然后,游戏可以在适当的时候将这些玩家移入游戏会话。 |
| 大厅会话 | 帮助等待加入游戏会话的受邀玩家的辅助会话。有关详细信息,请参见 [多人会话高级主题](https://devdocs.xbox.com/zh-CN/services/xbox-services/multiplayer/mpsd/concepts/live-mpsd-details.md)。 |
| 匹配目标会话 | 在 SmartMatch 匹配期间设置以代表比赛的匹配会话。有关详细信息,请参见 [匹配概述](https://devdocs.xbox.com/zh-CN/services/xbox-services/multiplayer/matchmaking/live-matchmaking-overview.md)。 |
| 匹配票证会话 | 在 SmartMatch 匹配期间设置的初步匹配会话。有关详细信息,请参见 [匹配概述](https://devdocs.xbox.com/zh-CN/services/xbox-services/multiplayer/matchmaking/live-matchmaking-overview.md)。 |
| MPSD 会话 | 驻留在 XBOX 服务云中 MPSD 内的安全文档。它包含在 XBOX One(或更高版本)上运行游戏时可能连接的一组玩家,以及有关玩家及其游戏的元数据。有关详细信息,请参见 [多人会话高级主题](https://devdocs.xbox.com/zh-CN/services/xbox-services/multiplayer/mpsd/concepts/live-mpsd-details.md)。 |
| 多人会话目录 (MPSD) | 在云中运行的服务,多人系统用它来存储和检索会话。有关详细信息,请参见 [多人会话目录 (MPSD)](https://devdocs.xbox.com/zh-CN/services/xbox-services/multiplayer/mpsd/live-mpsd-nav.md)。 |
| 派对应用 | XBOX One(或更高版本)系统贴合应用,允许玩家查看和管理其派对。 |
| 服务器会话 | 由服务器(例如 PlayFab Multiplayer 服务器)创建的游戏会话。请参见 [多人会话高级主题](https://devdocs.xbox.com/zh-CN/services/xbox-services/multiplayer/mpsd/concepts/live-mpsd-details.md)。 |
| 轻拍 (Shoulder tap) | 从 MPSD 到游戏的通知,表明服务上发生了潜在有趣的变化。轻拍是一个快速提醒,通常比常规通知的信息量少。有关详细信息,请参见主题 "多人会话目录概述" 中的 [MPSD 更改通知处理和断开连接检测](https://devdocs.xbox.com/zh-CN/services/xbox-services/multiplayer/mpsd/live-mpsd-overview.md#mpsd-change-notification-handling-and-disconnect-detection) 部分。 |
| SmartMatch 匹配 | XBOX 服务匹配功能,可供 XBOX One(或更高版本)游戏使用,由匹配服务实现。使用 MPSD 和匹配,游戏发出被匹配的请求,并在稍后收到已找到匹配组的通知。有关详细信息,请参见 [匹配概述](https://devdocs.xbox.com/zh-CN/services/xbox-services/multiplayer/matchmaking/live-matchmaking-overview.md)。 |

## 2015 多人游戏的新功能

> [!WARNING]
>
> 如果您的游戏使用 2015 多人游戏,请勿使用 2014 多人游戏中与派对相关的类。将 2015 多人游戏功能与与派对相关的类混合会导致行为不一致,绝不应尝试。

### 2015 多人游戏中的新概念

#### 与 MPSD 的 Web 套接字连接

MPSD 现在使游戏能够维护 Web 套接字连接。这些连接使客户端能够在会话更改时接收通知。

有关详细信息,请参见主题 "多人会话目录概述" 中的 [MPSD 更改通知处理和断开连接检测](https://devdocs.xbox.com/zh-CN/services/xbox-services/multiplayer/mpsd/live-mpsd-overview.md#mpsd-change-notification-handling-and-disconnect-detection) 部分。

#### MPSD 会话句柄

2015 多人游戏添加了对 MPSD 会话句柄的支持,它是对会话的引用,可以包含类型化数据。有关详细信息,请参见:

* 主题 "多人游戏概念概述" 中的 [会话句柄](https://devdocs.xbox.com/zh-CN/services/xbox-services/multiplayer/concepts/live-multiplayer-concepts.md#session-handles) 部分。
* 主题 "多人会话目录概述" 中的 [MPSD 会话句柄](https://devdocs.xbox.com/zh-CN/services/xbox-services/multiplayer/mpsd/live-mpsd-overview.md#mpsd-handles-to-sessions) 部分。

## XBOX 360 与 XBOX One MPSD 会话功能之间的差异

| 功能 | XBOX 360 | XBOX One |
| - | - | - |
| **获取游戏会话信息** | `XSessionGetDetails`、`XSessionSearchByID`,或游戏进行跟踪。 | 游戏从 MPSD 请求会话信息。 |
| **迁移主机** | 需要时,游戏调用 `XSessionMigrateHost`。 | 根据迁移原因,游戏可能会为会话分配新主机或创建新的 MPSD 会话。 |
| **多个玩家会话** | 一次处理多个会话很棘手;例如,`XNetReplaceKey` 与 `XNetUnregisterKey`。 | 基于服务的会话使一个会话的管理更加清洁,并简化了多个会话的处理。 |
| **注销和断开连接** | 游戏必须使用 `XCloseHandle` 或 `XSessionDelete` 以不同方式处理断开连接和注销。 | MPSD 简化了注销和断开连接的处理。超时在游戏配置中设置。 |
| **匹配** | 匹配查询基于客户端。 | 匹配基于服务,这可以在游戏中获得更好的匹配质量和更容易的后台匹配。 |

### 会话

在 XBOX 360 上,会话代表游戏的一个实例。玩家在匹配服务中搜索会话,并在会话结束时报告统计信息。

对于 XBOX 360 之后的所有目标平台(包括 Windows PC),会话更为通用,代表一组玩家。

XBOX 客户端之间的任何网络连接都需要会话,并保存应在会话中所有玩家之间共享的信息。此信息的一些示例包括允许在会话中的玩家数量、会话中每个主机的安全地址以及自定义游戏数据。

### XBOX 匹配

在 XBOX 360 上,游戏通过指定属性架构和一组查询来搜索这些属性来执行匹配。在运行时,游戏选择托管会话或搜索会话。

对于所有较新的 XBOX 客户端,例如 XBOX One(及更高版本)和 Windows PC,匹配基于服务器。玩家和游戏不再决定是托管还是搜索。相反,每个预先形成的玩家组创建一个 "票证" 会话,并将该会话提交给匹配服务。

然后该服务查找其他会话并合并组以形成新的 "目标" 会话。客户端收到匹配通知,并执行服务质量 (QoS) 测量以验证与其他会话成员的连接,然后开始游戏。

## 另请参见

[多人会话目录 (MPSD)](https://devdocs.xbox.com/zh-CN/services/xbox-services/multiplayer/mpsd/live-mpsd-nav.md)
[匹配概述](https://devdocs.xbox.com/zh-CN/services/xbox-services/multiplayer/matchmaking/live-matchmaking-overview.md)
[实时活动 (RTA) 服务](https://devdocs.xbox.com/zh-CN/services/xbox-services/fundamentals/rta/live-rta-nav.md)
[信誉](https://devdocs.xbox.com/zh-CN/services/xbox-services/community/reputation/live-reputation-nav.md)


## Related topics

- [多人游戏概念](https://devdocs.xbox.com/zh-CN/services/xbox-services/multiplayer/concepts/live-multiplayer-concepts-nav.md)
- [概念](https://devdocs.xbox.com/zh-CN/services/xbox-services/multiplayer/concepts/index.md)
- [为游戏启用多人游戏服务器](https://devdocs.xbox.com/zh-CN/services/playfab/api-references/rest/multiplayer/multiplayer-server/enable-multiplayer-servers-for-title.md)
- [使用 PowerShell/API 部署构建](https://devdocs.xbox.com/zh-CN/services/playfab/multiplayer/servers/deploy-using-powershell-api.md)
- [为多人游戏启用大型会话](https://devdocs.xbox.com/zh-CN/services/xbox-services/multiplayer/mpsd/concepts/live-large-sessions.md)
