了解 Lobby 和 Matchmaking 之间的关系
Lobby 和 Matchmaking 无缝协作,为你的游戏创建统一的多人游戏匹配体验。- Matchmaking 将希望参加游戏会话的一组玩家聚集起来。
- Matchmaking 识别出一组玩家后,Lobby 为他们提供一个通信媒介以协调共同加入游戏会话。
- 大厅的常见场景包括共享游戏服务器连接信息、为对等游戏共享客户端 IP,以及共享玩家配置。
安排式大厅
游戏可以使用“安排式大厅”轻松为通过匹配组队在一起的玩家创建大厅。 匹配票据成功匹配一组玩家后,匹配票据包含一个 lobbyArrangementString。然后,每位玩家可以将该安排字符串传递给 PFMultiplayerJoinArrangedLobby 以加入同一大厅。示例场景
一名玩家想和其他人一起玩。该玩家启动一个多人游戏,邀请好友,并等待其他人加入。设计规范
- 游戏对所有人开放加入。
- 初始玩家集合通过匹配填充。
- 大厅所有者能够邀请好友加入。
- 当达到所需玩家数量时,大厅中的所有玩家会收到一条消息,询问他们是否准备开始游戏。他们有一分钟的时间回应。所有玩家确认准备开始游戏后,游戏开始。
- 如果大厅中的玩家未确认其准备就绪状态,大厅所有者可以将其作为非活跃玩家移除,并使用匹配快速找到新玩家替代他们。
- 在游戏期间如有玩家意外断开,游戏应通过匹配使用服务器回填为掉线玩家寻找新的替代者。
- 游戏结束后,所有玩家返回大厅。所有玩家均等获得团队成就。他们可以留下来一起开始另一场游戏,也可以离开大厅。
实现
本节介绍如何使用 Matchmaking 和 Lobby 来实现设计规范。创建一个通过匹配组成的大厅
为一组通过匹配组成的玩家创建一个公共大厅。- 每位玩家使用其指定的匹配属性创建一个匹配票据。
- 若要了解更多,请参阅指定票据属性。
- 所有已创建的票据都会添加到匹配队列中,以便相互匹配。
- 票据基于规则进行匹配。
- 规则可以在匹配队列配置中定义。
- 若要了解更多,请参阅配置匹配队列。
- 匹配之后,每位玩家通过匹配票据的 lobbyArrangementString 加入该匹配组成的大厅。
- 加入安排式大厅时,将大厅的 accessPolicy 指定为 Public 以使大厅开放。
- 有关更多信息,请参阅安排式大厅。
- 第一个加入安排式大厅的玩家成为大厅的所有者。
- 可以使用大厅属性指定游戏会话打算使用哪张游戏地图。
- 有关更多信息,请参阅大厅属性。
- 使用搜索属性,让玩家能够在你游戏中所有活跃大厅中找到此大厅和游戏会话。
- 有关更多信息,请参阅搜索属性。
向好友发送邀请
允许大厅所有者选择好友并发送邀请。- 获取大厅所有者的好友列表
- 显示游戏 UI 以允许大厅所有者选择要邀请的好友
- 向所选好友发送游戏内邀请。
- 有关更多信息,请参阅大厅邀请。
允许其他人查找并加入游戏
设置大厅的搜索属性以允许其他玩家找到它- 在你的游戏 UI 中显示所有大厅。你的游戏还应提供一种方式来接受玩家的搜索条件。
- 使用玩家的搜索参数通过 PFMultiplayerFindLobbies 返回符合条件的大厅列表。
- 玩家选择加入某场游戏后,使用 PFMultiplayerJoinLobby 将该玩家添加到游戏中。
获取玩家开始游戏的确认
告知大厅内所有玩家游戏已准备好开始- 当大厅达到所需玩家数量时,显示游戏 UI 以让玩家确认他们已准备好开始游戏。
- 允许大厅所有者查看这些确认响应。
移除并替换非活跃玩家
大厅所有者能够移除非活跃或已断开的玩家,并发起匹配以填补剩余名额- 如果玩家在给定的设定时间(一分钟)内未响应或已断开连接,使用 PFLobbyForceRemoveMember 将该玩家移除。
- 大厅所有者使用 CreateServerBackfillTicket 创建一个匹配票据。使用此 API 创建的票据在搜索时会获得优先。此方法可最大限度减少对游戏进程的干扰。若要了解更多,请参阅使用服务器回填票据。
- 加入回填大厅后,该游戏的大厅所有者可以将原大厅的连接字符串共享给新的回填玩家,他们即可加入原大厅。
- 在适当时候延长游戏开始时间。
处理已完成的游戏
游戏结束后,所有玩家返回大厅屏幕以完成游戏会话。- 大厅是暂时的,因此在此时应保留大厅中任何需要持久化的数据,并由每位玩家保留。
- 例如,一些游戏场景可能会受益于处理存储在成员属性中的数据,并将这些数据转换为玩家成就。
- 想要继续与同一组玩家一起玩的玩家留在大厅中。
- 想要不再与同一组玩家一起玩的玩家使用 PFLobbyLeave 离开大厅,并重新开始新的匹配组流程。
