> ## 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 Lobby 与 Matchmaking(包括安排式大厅)结合使用,构建将玩家分组并协调游戏会话的多人游戏场景。

在设计多人游戏时,匹配和大厅通常配合使用,以帮助人们组队一起游玩。

PlayFab Lobby 和 PlayFab Matchmaking 帮助你实现各种各样的多人游戏场景。

本文介绍这两项服务之间的关系,并展示如何将它们结合使用以实现以下[游戏场景](#example-scenario)。

## 了解 Lobby 和 Matchmaking 之间的关系

Lobby 和 Matchmaking 无缝协作,为你的游戏创建统一的多人游戏匹配体验。

* Matchmaking 将希望参加游戏会话的一组玩家聚集起来。
* Matchmaking 识别出一组玩家后,Lobby 为他们提供一个通信媒介以协调共同加入游戏会话。
  * 大厅的常见场景包括共享游戏服务器连接信息、为对等游戏共享客户端 IP,以及共享玩家配置。

### 安排式大厅

游戏可以使用“安排式大厅”轻松为通过匹配组队在一起的玩家创建大厅。

匹配票据成功匹配一组玩家后,匹配票据包含一个 **lobbyArrangementString**。然后,每位玩家可以将该安排字符串传递给 **PFMultiplayerJoinArrangedLobby** 以加入同一大厅。

## 示例场景

一名玩家想和其他人一起玩。该玩家启动一个多人游戏,邀请好友,并等待其他人加入。

### 设计规范

* 游戏对所有人开放加入。
* 初始玩家集合通过匹配填充。
* 大厅所有者能够邀请好友加入。
* 当达到所需玩家数量时,大厅中的所有玩家会收到一条消息,询问他们是否准备开始游戏。他们有一分钟的时间回应。所有玩家确认准备开始游戏后,游戏开始。
* 如果大厅中的玩家未确认其准备就绪状态,大厅所有者可以将其作为非活跃玩家移除,并使用匹配快速找到新玩家替代他们。
* 在游戏期间如有玩家意外断开,游戏应通过匹配使用服务器回填为掉线玩家寻找新的替代者。
* 游戏结束后,所有玩家返回大厅。所有玩家均等获得团队成就。他们可以留下来一起开始另一场游戏,也可以离开大厅。

### 实现

本节介绍如何使用 Matchmaking 和 Lobby 来实现[设计规范](#design-specifications)。

* [创建一个通过匹配组成的大厅](#create-a-match-made-lobby)
* [向好友发送邀请](#send-invites-to-friends)
* [允许其他人查找并加入游戏](#allow-people-to-find-and-join-game)
* [获取玩家开始游戏的确认](#get-player-confirmation-to-start-game)
* [移除并替换非活跃玩家](#remove-and-replace-inactive-players)
* [处理已完成的游戏](#handle-a-finished-game)

### 创建一个通过匹配组成的大厅

为一组通过匹配组成的玩家创建一个公共大厅。

* 每位玩家使用其指定的匹配属性创建一个匹配票据。
  * 若要了解更多,请参阅[指定票据属性](/services/playfab/multiplayer/matchmaking/ticket-attributes)。
* 所有已创建的票据都会添加到匹配队列中,以便相互匹配。
  * 票据基于规则进行匹配。
  * 规则可以在匹配队列配置中定义。
  * 若要了解更多,请参阅[配置匹配队列](/services/playfab/multiplayer/matchmaking/config-queues)。
* 匹配之后,每位玩家通过匹配票据的 **lobbyArrangementString** 加入该匹配组成的大厅。
  * 加入安排式大厅时,将大厅的 **accessPolicy** 指定为 **Public** 以使大厅开放。
  * 有关更多信息,请参阅[安排式大厅](#arranged-lobbies)。
* 第一个加入安排式大厅的玩家成为大厅的所有者。
* 可以使用大厅属性指定游戏会话打算使用哪张游戏地图。
  * 有关更多信息,请参阅[大厅属性](/services/playfab/multiplayer/lobby/lobby-properties)。
* 使用搜索属性,让玩家能够在你游戏中所有活跃大厅中找到此大厅和游戏会话。
  * 有关更多信息,请参阅[搜索属性](/services/playfab/multiplayer/lobby/define-search-keywords)。

### 向好友发送邀请

允许大厅所有者选择好友并发送邀请。

* 获取大厅所有者的好友列表
* 显示游戏 UI 以允许大厅所有者选择要邀请的好友
* 向所选好友发送游戏内邀请。
  * 有关更多信息,请参阅[大厅邀请](/services/playfab/multiplayer/lobby/lobby-invites)。

### 允许其他人查找并加入游戏

设置大厅的搜索属性以允许其他玩家找到它

* 在你的游戏 UI 中显示所有大厅。你的游戏还应提供一种方式来接受玩家的搜索条件。
* 使用玩家的搜索参数通过 **PFMultiplayerFindLobbies** 返回符合条件的大厅列表。
* 玩家选择加入某场游戏后,使用 **PFMultiplayerJoinLobby** 将该玩家添加到游戏中。

### 获取玩家开始游戏的确认

告知大厅内所有玩家游戏已准备好开始

* 当大厅达到所需玩家数量时,显示游戏 UI 以让玩家确认他们已准备好开始游戏。
* 允许大厅所有者查看这些确认响应。

### 移除并替换非活跃玩家

大厅所有者能够移除非活跃或已断开的玩家,并发起匹配以填补剩余名额

* 如果玩家在给定的设定时间(一分钟)内未响应或已断开连接,使用 **PFLobbyForceRemoveMember** 将该玩家移除。
* 大厅所有者使用 **CreateServerBackfillTicket** 创建一个匹配票据。使用此 API 创建的票据在搜索时会获得优先。此方法可最大限度减少对游戏进程的干扰。若要了解更多,请参阅[使用服务器回填票据](/services/playfab/multiplayer/matchmaking/backfill-tickets)。
* 加入回填大厅后,该游戏的大厅所有者可以将原大厅的连接字符串共享给新的回填玩家,他们即可加入原大厅。
* 在适当时候延长游戏开始时间。

### 处理已完成的游戏

游戏结束后,所有玩家返回大厅屏幕以完成游戏会话。

* 大厅是暂时的,因此在此时应保留大厅中任何需要持久化的数据,并由每位玩家保留。
  * 例如,一些游戏场景可能会受益于处理存储在成员属性中的数据,并将这些数据转换为玩家成就。
* 想要继续与同一组玩家一起玩的玩家留在大厅中。
* 想要不再与同一组玩家一起玩的玩家使用 **PFLobbyLeave** 离开大厅,并重新开始新的匹配组流程。

## 另请参阅

* [创建大厅](/services/playfab/multiplayer/lobby/create-a-lobby)
* [大厅邀请](/services/playfab/multiplayer/lobby/lobby-invites)
* [搜索属性](/services/playfab/multiplayer/lobby/define-search-keywords)
* [大厅属性](/services/playfab/multiplayer/lobby/lobby-properties)
* [在匹配中使用服务器回填票据](/services/playfab/multiplayer/matchmaking/backfill-tickets)


## Related topics

- [快速入门 (Windows) - Party 和 Multiplayer](/zh-CN/services/playfab/sdks/unified-sdk/quickstart-windows-party.md)
- [PlayFab 多人游戏 C++ SDK 错误代码](/zh-CN/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pfmultiplayererrors.md)
- [申请受保护的 SDK 和示例的访问权限](/zh-CN/services/playfab/sdks/request-access-for-sdks-samples.md)
- [大厅与匹配实时消息](/zh-CN/services/playfab/multiplayer/lobby/lobby-and-matchmaking-real-time-messages.md)
- [PlayFab SDK 产品](/zh-CN/services/playfab/sdks/sdk-products.md)
