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

# PlayFab Party 网络和网络发现流程

> PlayFab Party 网络发现的概念指南:玩家如何在多人游戏中查找、邀请并连接到 Party 聊天和数据网络。

# 将发现与 PlayFab Party 集成

发现是用户彼此找到以共同游戏的过程。PlayFab Party 不提供发现机制,但可以与提供用户之间通信的任何现有机制一起使用。

## 基本创建和加入流程

PlayFab Party 网络由单个客户端上的用户[创建](#creating-a-network),经过[广告](#advertising-a-network),然后由不同客户端上的其他用户[加入](#joining-a-network)。

### 创建网络

将 PlayFab Party 网络与游戏会话一起使用时的首要考虑是选择哪个客户端和用户将创建该网络(`PartyManager::CreateNewNetwork()`)。从 PlayFab Party 的角度看,由哪个用户执行此操作无关紧要;任何用户都可以创建网络。创建者在网络中不被授予任何特权。然而,创建网络的客户端负责:

* 设置不可变的网络配置(`PartyNetworkConfiguration`)
* 确定初始邀请(`PartyInvitationConfiguration`)
* 向其他用户广告该网络

初始邀请包含一个标识符和允许加入网络的用户列表。用户被指定为 `title_player_account` [Entity ID](/services/playfab/live-service-management/game-configuration/entities) 列表。或者,该列表可以为空,允许任何拥有网络描述符和邀请标识符的用户加入。

### 广告网络

要加入现有的 PlayFab Party 网络,客户端需要两条信息:

* 网络描述符
* 邀请标识符

PlayFab Party 网络由网络描述符(`PartyNetworkDescriptor`)标识。这是一个大部分不透明的结构,编码了建立到该网络的连接所需的信息。网络描述符在网络创建完成后提供给创建客户端(`PartyCreateNewNetworkCompletedStateChange`、`PartyNetwork::GetNetworkDescriptor()`)。为便于开发,PlayFab Party 提供了将网络描述符序列化为 Web 友好字符串和从中反序列化的方法(`PartyManager::SerializeNetworkDescriptor(), PartyManager::DeserializeNetworkDescriptor()`)。

邀请标识符是唯一标识邀请的字符串。它由客户端在显式创建邀请时或在创建网络时创建初始邀请时提供。如果客户端未提供邀请标识符,将唯一生成一个。

要将新网络广告给其他用户,请通过任何合适的通信介质发送这两条信息。

### 加入网络

加入网络是一个两步过程。希望加入网络的客户端必须首先通过将反序列化的网络描述符提供给 `PartyManager::ConnectToNetwork()` 来连接到该网络,然后通过将邀请标识符提供给 `PartyNetwork::AuthenticateLocalUser()` 来验证用户身份。

## 场景示例

### 社交邀请

最简单的场景是单个用户创建游戏会话并希望通过其共享的社交平台邀请其他已知用户。流程可能如下所示:

* 邀请者使用开放邀请或包含邀请者希望一起游戏的所有用户的邀请创建网络。
* 网络创建后,邀请者通过社交平台的邀请机制将网络描述符和邀请标识符发送给其他用户。
* 每位受邀用户使用网络描述符和邀请标识符连接到网络。

<Note>
  在邀请中指定用户时,使用用户的 `title_player_account` [Entity ID](/services/playfab/live-service-management/game-configuration/entities)。这些 Entity ID 需要在 PlayFab Party 之外获取。
</Note>

### 大厅

如果你的游戏提供了允许客户端之间发送数据的大厅,它可以作为交换网络连接信息的通信介质。流程可能如下所示:

* 选出一组用户共同游戏。
* 将其中一位用户选为创建者。
* 该组中的每位用户将其 `title_player_account` [Entity ID](/services/playfab/live-service-management/game-configuration/entities) 发送给创建者。
* 创建者创建网络,并在初始邀请配置中指定用户的 Entity ID。
* 网络创建完成后,创建者将网络描述符和初始邀请标识符发送给应加入的用户集。
* 每位用户使用网络描述符和邀请标识符连接到网络。

### 匹配

匹配服务(如 [PlayFab Matchmaking](/services/playfab/live-service-management/game-configuration/entities))可用于查找要一起游戏的用户列表。流程可能如下所示:

* 用户向服务发起对局请求。请求中必须包含 `title_player_account` [Entity ID](/services/playfab/live-service-management/game-configuration/entities),因为对局结果必须包含每位用户的 Entity ID。
* 用户收到对局结果,其中包含应作为网络一部分的用户集。
* 使用预先确定的算法选出哪位用户将成为创建者。
* 创建者创建网络,并在初始邀请配置中指定其他已匹配用户的 Entity ID。
* 网络创建完成后,创建者通过带外通信介质将网络描述符和初始邀请标识符发送给其他已匹配用户。
* 每位已匹配用户使用网络描述符和邀请标识符连接到网络。

<Note>
  需要带外通信介质将连接信息从创建者发送到其他已匹配用户。
</Note>


## Related topics

- [快速入门 (Windows) - Party 和 Multiplayer](/zh-CN/services/playfab/sdks/unified-sdk/quickstart-windows-party.md)
- [PlayFab Party 邀请和安全模型](/zh-CN/services/playfab/multiplayer/networking/concepts-invitations-security-model.md)
- [XR-045 XBOX 网络和账户权限](/zh-CN/publishing/certification/xr/xr-045.md)
- [网络](/zh-CN/build/console-features/networking/gc-networking-toc.md)
- [将 PlayFab Party 与 MPSD 结合使用](/zh-CN/services/playfab/multiplayer/networking/using-mpsd.md)
