Skip to main content
本文介绍 PlayFab Matchmaking 如何评估工单、应用规则并形成对局。理解匹配过程有助于你设计能够高效产生高质量对局的队列配置。

对局形成概览

当你向队列提交工单时,匹配服务会将其与其他等待的工单放在一起。服务会持续运行一个匹配循环,尝试将兼容的工单组合到对局中。以下是每一步中发生的情况:
  1. 移除过期工单。 超过其 GiveUpAfterSeconds 超时的工单将被取消。
  2. 按等待时间对工单排序:等待时间最长的工单将成为潜在对局的种子或起点。
  3. 候选者按兼容性排名:每张剩余工单根据队列规则,根据其属性与种子工单的匹配程度获得一个距离得分
  4. **贪婪地构建一组:**从最接近的候选者开始,每次一张地将工单添加到组中,直到达到 MaxMatchSize
  5. **每次添加均经验证:**添加工单时,每条规则都会检查该候选者是否仍与当前组兼容。如果任何规则拒绝,则跳过该候选者。
  6. **完整组经验证:**当组达到至少 MinMatchSize 时,最终验证阶段会确认该组满足所有规则。如果通过,则创建对局。
  7. **回溯:**如果无法形成有效的组,服务会移除最后添加的工单,并尝试下一个候选者。此过程会在放弃当前种子之前探索其他分组方式。
然后,服务会以下一张等待时间最长的工单作为新种子,并重复该过程。
该算法优先处理等待时间最长的工单。此优先级确保等待时间最长的玩家最先获得对局。

规则如何影响匹配

规则在对局形成过程中有两个用途:过滤排序

过滤

规则可以阻止工单加入某个组。例如,应用于游戏 build 版本的 StringEqualityRule 会拒绝任何 build 与该组的 build 不匹配的工单。匹配服务在每次考虑候选者时都会检查过滤,而不仅是开始时的一次性检查。

排序(距离)

规则还会贡献一个距离得分,决定哪些候选者先被尝试。距离越小,兼容性越高。
  • 属性值完全相同的工单通常得到距离 0
  • 处于规则允许范围边缘的工单得到距离接近 1
  • 超出允许范围的工单会被过滤掉(实际上距离为无穷大)。
当队列有多条规则时,每条规则的距离会乘以其权重并相加。工单按总距离从低到高顺序尝试,因此最兼容的候选者先被尝试。
使用规则权重来表达相对重要性。例如,如果技能相似性比区域偏好更重要,则赋予技能规则更高的权重。

验证

某些约束只能在完整组形成之后才能检查。例如,团队平衡规则(TeamDifferenceRuleTeamSizeBalanceRule)需要看到完整的组才能评估团队是否平衡。这些规则作为最终验证步骤运行。

扩展与放宽

当工单等待时,规则会放宽其约束以扩大搜索范围。有两种机制控制此过程:
  • 扩展:规则会随时间逐步调整其阈值。例如,技能阈值为 0.2 的 DifferenceRule 可能每 5 秒扩展 0.1,最终允许 0.5 的差距。
  • Seconds until optional:在配置的时长之后,规则完全停止过滤。规则仍然对排序(距离)有贡献,但不再阻止对局。
扩展始终是基于时间的。它根据工单等待时间的长短统一应用于所有工单。等待时间越长的工单自然会达到更宽的扩展阶段,并能与更大的候选池匹配。
放宽并不意味着忽视对局质量。即使规则变得可选,它仍会对排序步骤贡献距离。满足规则的候选者仍会优先于不满足的候选者被尝试。
有关配置扩展的更多详细信息,请参阅配置匹配队列

扩容与分区

当队列接收到大量工单时,服务会将工单分区为多个独立评估的组。分区使用能自然将人群分割的规则属性。例如,应用于游戏模式的 StringEqualityRule 可创建清晰的分区边界。 随着负载降低,分区会重新合并。此过程为服务提供更大的候选池并提高对局质量。 有关设计可良好扩展的队列的更多详细信息,请参阅匹配扩容

为非对称偏好而设计

某些匹配场景涉及非对称偏好——即玩家 A 愿意与玩家 B 匹配,但玩家 B 不愿与玩家 A 匹配。跨平台游戏设置是最常见的例子。有关推荐的配置模式和已完成的示例,请参阅处理非对称跨平台游戏偏好

另请参阅

最后修改于 2026年8月13日