概览
配置匹配队列时,你可以为每条规则分配一个 Weight 值。权重是一个数值乘数,控制某条规则在匹配系统对符合条件的工单进行排名和排序时的影响程度。它不会改变工单是否通过或未通过某条规则——它只影响该规则相对于其他规则的重要程度,以确定哪些工单是对局的最佳候选者。 理解权重对于调优对局质量至关重要。通过在规则之间调整权重,你可以优先考虑对你的游戏最重要的因素——无论是技能平衡、地理接近度还是共享内容。权重如何工作
每条支持权重的规则,都会为正在评估的每对工单计算一个距离值。此距离表示两个工单根据该规则的相似或不同程度:- 距离 0 表示这些工单在该规则上完美匹配。
- 距离接近 1 表示这些工单处于该规则允许的边缘。
- 距离无穷大(硬拒绝)表示无论权重如何,这些工单根据该规则都无法匹配。
权重不会覆盖硬性限制。如果某条规则确定两个工单不兼容,则完全排除这些工单。例如,当 Difference Rule 中的值超过最大允许差异时会发生这种情况。权重只影响已经符合条件的工单之间的优先顺序。
每条规则如何计算距离
在查看权重示例之前,理解每条加权规则如何计算其距离值会有帮助。距离始终是 0 到 1 之间的数字,数值越低表示匹配越接近。哪些规则支持权重
权重适用于参与基于距离排序的标准规则类型。以下规则支持 Weight 属性:
以下团队规则类型****不支持权重。这些规则作为验证器——它们要么通过要么拒绝对局,不参与基于距离的排序:
有效的权重值
权重必须是大于 0 且最大为 1000(含)的数字。不允许权重为 0。如果未指定权重,默认值为 1。示例
以下示例使用了一个具有针对技能的 Difference Rule 和针对首选游戏地图的 Set Intersection Rule 的队列。三名玩家——Alice、Bob 和 Charlie——都在队列中。匹配系统需要决定两个候选者(Bob 或 Charlie)中哪个是 Alice 的更佳匹配。队列配置
玩家属性
步骤 1:计算每条规则的距离
SkillRule(Difference Rule)使用公式absoluteDifference / maxDifference:
- Alice vs Bob:
|20 - 24| / 10 = 4 / 10 = 0.4 - Alice vs Charlie:
|20 - 17| / 10 = 3 / 10 = 0.3
1 / (1 + sharedItemCount):
- Alice vs Bob:他们共享 “Dustbowl” 和 “Summit”(两项)→
1 / (1 + 2) = 0.33 - Alice vs Charlie:他们共享 “Lakeside”(一项)→
1 / (1 + 1) = 0.5
示例 1:相同权重
两条规则的 Weight 均为 1 时,总距离为:示例 2:优先考虑技能(SkillRule 上 Weight = 10)
如果你的游戏具竞技性,技能平衡最重要,则提高 SkillRule 权重:示例 3:优先考虑共享地图(MapRule 上 Weight = 10)
如果你的游戏是休闲游戏,玩家最关心在自己喜爱的地图上游戏,则改为提高 MapRule 的权重:示例 4:当玩家无法匹配时(硬拒绝)
现在添加第四名玩家 Dave,他的技能远离 Alice,且不共享任何首选地图:
SkillRule:
|20 - 35| / 10 = 15 / 10 = 1.5——但差异 15 超过 MaxDifference(10),因此规则返回无穷大距离(硬拒绝)。
MapRule:Alice 和 Dave 共享 0 张地图,而 MinIntersectionSize 为 1,因此此规则也返回无穷大距离。
示例摘要
下表显示了使用相同的玩家属性和相同的规则——仅权重不同——权重如何改变哪个候选者被优先选择。
底层距离从不改变——只有分配给每条规则的相对重要性发生变化。无论权重如何,Dave 始终被拒绝,因为玩家属性超过了硬性限制。这就是权重调优的强大之处。
权重与规则扩展
当规则变为可选时(通过 Seconds until optional 或扩展),它不再硬性拒绝工单。然而,原本会被拒绝的工单仍会收到非零的距离值。权重会继续对此距离进行缩放,这意味着可选规则仍会影响排序顺序——它们将“违规”工单在优先级中推后,而不是完全排除。 此行为对于确保即使规则随时间放宽,最佳匹配仍受青睐非常有用。最佳实践
- 从相同的权重开始,根据玩家的对局质量反馈进行调整。
- 对对游戏体验最重要的规则(例如竞技类游戏的技能,或休闲游戏的共享内容)使用更高的权重。
- 记住权重只影响排序——它无法使不可能的匹配成为可能。使用扩展随时间放宽硬性限制。
- 避免极端的权重比率(例如 1000:1),除非你有意让一条规则完全压倒所有其他规则。
