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