在游戏中实现匹配

本文总结了在游戏中实现匹配的步骤。 有关详细信息,请务必查看本文末尾的 “另请参阅” 部分中的文章。

使用 Microsoft Azure PlayFab 大厅和匹配 SDK 实现匹配

layFab 大厅和匹配 SDK 现在是 GDK 的一部分。

  1. 下载并设置 Azure PlayFab 大厅和匹配 SDK:下载适用于平台的 C/C++ SDK,然后将提供程序标头和库文件集成到生成中。
  2. 对玩家进行身份验证:在游戏中使用依赖于这些服务的功能之前,必须使用 Xbox 服务和 Microsoft Azure PlayFab 对玩家进行身份验证。
  3. 初始化 PlayFab 多人游戏 SDK:通过调用 PFMultiplayerInitialize 初始化 SDK。 通过调用 PFMultiplayerSetEntityToken,设置库代表玩家使用的实体密钥和令牌。
  4. 配置匹配队列:围绕队列匹配配置中心,这些队列表示等待相互匹配票证的位置。 每个队列都有一些有关匹配所需的一些常规配置信息。 此外,队列可以包含一组规则,这些规则提供进一步限制票证的匹配方式。 有关特定信息,请参阅 配置匹配队列
  5. 创建匹配票证:使用 PFMultiplayerCreateMatchmakingTicket 创建匹配票证。 指定要成为比赛的一部分的所有本地玩家,以及要与这些玩家关联的任何属性。 创建匹配票证有三种不同的方案:
    • 实现与单个本地玩家的匹配:使用单个PFEntityKey玩家调用 PFMultiplayerCreateMatchmakingTicket 以开始单个本地玩家的匹配。
    • 实现与一组远程玩家的匹配。
      1. 领导使用 PFMultiplayerCreateMatchmakingTicket创建票证。 它通过配置参数指定组中的其他玩家。
      2. 调用 PFMatchmakingTicketGetTicketId 以获取票证 ID。
      3. 使用外部机制(例如网络网格或共享 PlayFab 大厅)将此 ID 发送给其他玩家。 让每个客户端使用票证 ID 调用 PFMultiplayerJoinMatchmakingTicketFromId 以加入匹配票证。
      4. 等待指定玩家加入时,票证状态将为 PFMatchmakingTicketStatus::WaitingForPlayers 。 所有玩家加入票证后,状态将更改为 PFMatchmakingTicketStatus::WaitingForMatch
    • 实现与多个本地玩家的匹配。
      1. 将 每个玩家的属性列表 PFEntityKey 和相应的属性列表传递给 PFMultiplayerCreateMatchmakingTicketPFMultiplayerJoinMatchmakingTicketFromId 函数。
      2. 确保每个列表输入位置匹配,以便属性列表中的第一个条目对应于 PFEntityKey 列表中的第一个玩家。
  6. 检查匹配票证的状态:检查通过调用 PFMultiplayerStartProcessingMatchmakingStateChanges 来接收状态更改来更新票证。 处理完这些状态更改后,调用 PFMultiplayerFinishProcessingMatchmakingStateChanges 。 每当票证的状态发生更改时,SDK 将返回 TicketStatusChanged 状态更改, TicketCompleted 并在匹配完成后返回状态更改。
  7. 获取匹配项:收到 PFMatchmakingStateChangeType::TicketCompleted 状态更改后,调用 PFMatchmakingTicketGetMatch 以获取匹配的详细信息。
  8. 取消匹配票证:若要在 PFMatchmakingTicketConfiguration 中设置的超时之前取消匹配过程,请使用票证句柄调用 PFMatchmakingTicketCancel
  9. 将玩家连接到大厅 (可选) :玩家匹配后,他们可以在大厅中加入。 匹配票证中的 PFMatchmakingMatchDetails 包含一个 lobbyArrangementString 字段,该字段可用于将玩家加入同一大厅。 这允许在功能之间进行集成。 如果你有自己的技术,则可以使用它。
  10. 分配服务器功能 (可选) :匹配包括一个选项,该选项可以为生成的匹配自动创建游戏服务器。 分配的服务器运行在队列配置文件中配置的生成。 启动时,服务器将作为初始玩家列表在匹配的成员中传递。 匹配队列绑定到单个多人游戏服务器生成或绑定到生成别名。 有关特定信息,请参阅 与 PlayFab 多人游戏服务器集成

另请参阅

PlayFab 文档是最新信息的最佳来源。 有关详细信息,请参阅以下文章和示例。