> ## 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 的多人游戏

> 介绍 PlayFab 多人游戏服务,涵盖 Lobby、Matchmaking、Party 网络和语音聊天,以及托管游戏 build 的 Multiplayer Servers。

多人游戏是许多游戏的重要补充,PlayFab 提供了几项专注于多人游戏场景的服务:

| 服务                                                       | 描述                      |
| -------------------------------------------------------- | ----------------------- |
| [Lobby](/services/playfab/multiplayer/lobby)             | 为游戏前或匹配后组队协调游戏创建大厅      |
| [Matchmaking](/services/playfab/multiplayer/matchmaking) | 部署自定义匹配规则以快速对玩家进行分组     |
| [Party](/services/playfab/multiplayer/networking)        | 通过网络连接玩家并提供无障碍的游戏内聊天    |
| [Servers](/services/playfab/multiplayer/servers)         | 在 Azure 中动态扩展自定义多人游戏服务器 |

虽然游戏可以组合使用所有这些服务,但也可以独立使用它们,这也很常见。例如,游戏可能会使用 PlayFab 匹配,但从其他多人游戏服务器托管解决方案分配服务器。或者游戏可能使用 PlayFab 多人游戏服务器进行托管,但使用自己的匹配系统将玩家聚集在一起。

越来越多的游戏正在构建*跨网络*体验,让来自不同身份域的玩家相互互动(例如,XBOX Live 玩家与 Steam 玩家以及自定义身份系统的玩家互动)。PlayFab 的服务旨在支持跨进度和跨网络游戏。

## 多人游戏场景示例

PlayFab 旨在支持各种多人游戏模式。以下是可能集成到单个相当复杂的游戏中的模式列表。在本节中,我们将简要建议如何使用 PlayFab 服务实现这些体验。

|游戏模式 | 最大玩家数 | 匹配 | 回填 | 邀请好友 | 未经请求的中途加入 | 聊天 | 服务器模型|
\|--|--|--|--|--|--|--|--|--|
|**单人战役** | 1 | 否 | 否 | 否 | 否 | 否 | 无 |
|**合作战役** | 4 | 否 | 否 | **是** | **是** | **是** | P2P |
|**游戏内组队**  | 8 | 否 | 否 | **是** | **是** | **是** | P2P |
|**休闲小型会话**  | 8 | **是** | **是** | **是** | **是** | **是** | P2P |
|**休闲大型会话**  | 32 | **是** | **是** | **是** | **是** | **是** | 云服务器 |
|**竞技小型会话** | 8 | **是** | 否 | **是** | 否 | **是** | 云服务器 |
|**竞技大型会话** | 32 | **是** | 否 | **是** | 否 | **是** | 云服务器 |

### 游戏内组队和未经请求的中途加入

玩家通常希望控制与谁一起玩,优先选择朋友或志同道合的玩家。PlayFab Lobby 旨在方便玩家的运行时分组,内置对可发现性和可加入性的访问控制。玩家可以搜索并加入任何符合其需求的开放大厅,无论他们是想加入朋友还是玩特定的游戏模式。

玩家还可以同时成为多个大厅的成员。这允许你创建灵活的玩家分组,例如允许三位好友在与其他人经历多场对局的匹配过程中保持组队。

利用内置的[实时消息](/services/playfab/multiplayer/lobby/lobby-and-matchmaking-real-time-messages),大厅成员可以在发生变化时(例如成员加入或离开,或数据被写入大厅)接收实时消息。同样的实时消息机制可以用于跨平台邀请,允许玩家无论是否为大厅成员都能侦听邀请。平台可能会提供内置的邀请和状态系统,启动 toast 通知并拥有其他有益的体验(例如从玩家资料卡中直接中途加入),你应根据情况考虑集成。

虽然可以将 Lobby 用于信号传递和其他有限的数据共享,但 PlayFab Party 最适合实时数据传输和聊天。可以使用 PlayFab Lobby 将 PlayFab Party 网络描述符或 PlayFab 多人游戏服务器会话详细信息共享到组的数据存储中。这种会话信息的共享可以允许玩家未经请求地加入朋友的会话。如果你使用的是非 PlayFab 服务进行实时联网或游戏托管,这些系统通常具有识别信息,你也可以类似地使用 Lobby 在玩家之间发出信号。

* [了解有关 Lobby 的更多信息](/services/playfab/multiplayer/lobby)
* [了解有关 Party 的更多信息](/services/playfab/multiplayer/networking)

### 匹配和回填

玩家可能希望与不认识的新人一起玩,而平衡的匿名匹配体验是许多多人游戏的核心。PlayFab Matchmaking 旨在使用你自定义的规则快速将玩家聚集在一起。

当一名玩家或一组玩家希望一起玩时,由其中一名玩家为自己或整个组创建匹配工单。PlayFab Matchmaking 允许用户作为一支团队一同被提交到匹配中,并具有一种加入流程,确保该组中的所有玩家同意一同匹配。该服务还允许回填工单,可用于替换在游戏中途离开的玩家。中途加入和回填功能是使休闲游戏会话尽可能保持满员的有用机制。

[结合使用 Lobby 与 Matchmaking](/services/playfab/multiplayer/lobby/lobby-and-matchmaking) 以在已匹配的玩家之间进行运行时分组和信号传递。PlayFab Matchmaking 已与 PlayFab Multiplayer Servers 集成,以简化已完成工单的服务器分配并提高匹配安全性。此外,PlayFab Matchmaking 工单会触发 PlayStream 事件,这些事件可以触发 CloudScript,这有助于将匹配与你自己的多人游戏系统集成。

* [了解有关 Matchmaking 的更多信息](/services/playfab/multiplayer/matchmaking)

### 聊天

除了用于游戏数据的网络传输之外,PlayFab Party 还包括实时语音和文字聊天功能,可以快速向任何基于会话的游戏添加玩家通信。PlayFab Party 使玩家能够同时存在于多个网络中,并为每个网络提供自定义的静音规则。这为实现频道和复杂的聊天关系提供了灵活性。

Party 利用 Azure 认知服务转录玩家的语音聊天,并将文字合成为语音。此功能有多种用途,但主要设计为无障碍辅助。Party 不仅转录玩家聊天,还实时翻译聊天。在匿名匹配和国际竞技游戏中,这些转录和翻译功能带来更具吸引力的多人游戏体验。

* [了解有关 Party 的更多信息](/services/playfab/multiplayer/networking)

### 游戏托管

实时多人游戏通常选择特定的玩家设备来托管游戏状态(也称为“点对点”),或使用专用的多人游戏服务器。如果在玩家设备上托管游戏,PlayFab Party 是一种理想的低延迟设备到设备联网系统,可以在会话参与者之间同步该游戏状态。

当设备数量增加时,点对点游戏很难扩展。虽然 PlayFab Party 提供网络加密并使用中继来保护玩家 IP 地址,但让设备作为主机运行仍然为作弊行为开启了途径。

PlayFab Multiplayer Servers 在 Azure 的全球云上提供简单高效的多人游戏扩容。使用小型服务器,例如在一台 F2v2 Linux 虚拟机上加载 10 场每场 10 名玩家的会话,与 P2P 实现相比,可以高效且显著地简化你的多人游戏设计并提高其可靠性。通过设置服务器的 build 配置为会话分配更多 Azure 资源,可以实现复杂的多人游戏计算,例如为 200 人体验使用 8 个或更多核心。

* [了解有关 Party 的更多信息](/services/playfab/multiplayer/networking)
* [了解有关 Multiplayer Servers 的更多信息](/services/playfab/multiplayer/servers)

## 另请参阅

* 使用[排行榜](/services/playfab/community/leaderboards)跟踪并分享玩家排名
* 使用[群组](/services/playfab/community/associations/groups)长期跟踪玩家分组。
* 使用 [CloudScript](/services/playfab/live-service-management/service-gateway/automation/cloudscript) 通过灵活的基于云的代码实时响应玩家活动


## Related topics

- [PlayFab 多人游戏 C++ SDK 错误代码](/zh-CN/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pfmultiplayererrors.md)
- [使用 PlayFab Multiplayer Servers 托管多人游戏](/zh-CN/services/playfab/multiplayer/servers/using-playfab-servers-to-host-games.md)
- [常见的多人游戏方案](/zh-CN/services/xbox-services/multiplayer/overviews/live-common-multiplayer-scenarios.md)
- [XBOX services 多人游戏概述](/zh-CN/services/xbox-services/multiplayer/overviews/live-multiplayer-intro.md)
- [PlayFab 概念](/zh-CN/services/playfab/get-started/concepts.md)
