一起使用大厅和匹配

设计多人游戏时,匹配和大厅通常一起用于帮助用户组成组一起玩游戏。

PlayFab 大厅和 PlayFab 匹配可帮助实现各种多人游戏场景。

本文介绍了这两项服务之间的关系,并说明了如何将它们一起用于实现下面指定的游戏场景

了解大厅与匹配之间的关系

大厅和匹配无缝协作,可为游戏创建一致的多人游戏匹配体验。

  • 匹配将一组希望参与游戏会话的玩家聚在一起。
  • 匹配确定一组玩家后,大厅会为他们提供一种通信媒介以协调一起加入游戏会话。
    • 大厅的常见场景包括共享游戏服务器连接信息、共享对等游戏的客户端 IP 以及共享玩家配置。

排列的大厅

游戏可以使用“排列的大厅”来支持轻松为已通过匹配组合在一起的玩家创建大厅。

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

示例方案

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

设计规范

  • 游戏开放,每个人都可以加入。
  • 初始玩家组通过匹配填充。
  • 大厅所有者可以邀请好友加入。
  • 满足所需数量的玩家后,大厅中的所有玩家都会收到一条消息,询问他们是否已准备好开始游戏。 他们有一分钟的响应时间。 所有玩家都确认已准备好开始游戏后,游戏开始。
  • 如果大厅中的玩家未确认其就绪状态,大厅所有者可以将其删除为非活动玩家,并使用匹配查找新玩家以快速替换他们。
  • 当任何玩家在游戏期间意外断开连接时,游戏应使用服务器回填通过匹配查找已掉线玩家的新替代者。
  • 游戏结束后,所有玩家都会返回大厅。 玩家平等地获得团队成就。 他们可以选择继续一起开始另一场游戏或离开大厅。

实现

本部分介绍了如何使用匹配和大厅实现上述设计规范

创建匹配大厅

为一组匹配玩家创建公共大厅。

  • 每位玩家都使用指定的匹配属性创建匹配票证。
  • 所有创建的票证都会添加到匹配队列中,以相互匹配。
    • 票证根据规则进行匹配。
    • 可以在匹配队列配置中定义规则。
    • 要了解详细信息,请参阅配置匹配队列
  • 匹配后,每位玩家都通过匹配票证的lobbyArrangementString加入匹配大厅。
    • 加入排列的大厅时,请指定大厅的accessPolicy公共以开放大厅。
    • 有关详细信息,请参阅排列的大厅
  • 加入排列大厅的第一位玩家会成为大厅所有者。
  • 大厅属性可用于指定游戏会话打算使用的游戏地图。
  • 使用搜索属性使玩家可以在游戏的所有活动大厅中查找此大厅和游戏会话。

向好友发送邀请

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

  • 获取大厅所有者的好友列表
  • 显示游戏 UI 以允许大厅所有者选择要邀请的好友
  • 向所选好友发送游戏内邀请。

允许用户查找和加入游戏

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

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

通知玩家开始游戏

通知大厅中的所有玩家游戏已准备开始

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

删除和替换非活动玩家

大厅所有者能够删除非活动或断开连接的玩家,并启动匹配以填补剩余位置

  • 如果玩家已断开连接或在给定的设定持续时间(一分钟)内未响应,请使用PFLobbyForceRemoveMember删除该玩家。
  • 大厅所有者将使用CreateServerBackfillTicket创建匹配票证。 使用此 API 创建的票证在搜索期间具有优先级。 这是为了最大程度减少游戏中断。 要了解详细信息,请参阅使用服务器回填票证
  • 加入回填大厅后,游戏的大厅所有者可以与新的回填玩家共享原始大厅的连接字符串,然后他们可以加入原始大厅。
  • 适当时延长游戏开始时间。

处理完成的游戏

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

  • 大厅是暂时性的,因此此时每位玩家都应保留大厅中应保留的任何数据。
    • 例如,一些游戏场景可能会受益于处理存储在成员属性中的数据并将该数据转换为玩家成就。
  • 要继续与同一组玩游戏的玩家将留在大厅中。
  • 要停止与同一组玩游戏的玩家将使用PFLobbyLeave离开大厅,并使用新的匹配组重新启动进程。

另请参阅