网易伏羲GDC分享:游戏中的智能匹配算法实践( 二 )


首先是游戏能力 , 这可以看作是一个玩家对这款游戏的掌握程度的总结 。通常系统会为每个玩家评估一个整体能力评分 , 用于定位他们在人群中的绝对实力 。ELO、Glicko、TrueSkill等几种经典算法在游戏中被广泛使用 。
二是英雄机制设计 。在大多数游戏中 , 英雄被设计成具有不同的技能和属性 , 有些与其他英雄可以形成互相配合 , 这些配合英雄的组合有时会触发额外的能力 。同时有些英雄被设计的非常强 , 但总有一个或几个英雄可以很好地抑制它 。我们通过结算数据可以提取英雄之间的协同和克制关系图 , 然后通过GraphEmbedding算法可以很好地学习代表这两种关系的英雄表征(KDD2020Optmatch:Optimizedmatchmakingviamodelingthehigh-orderinteractionsonthearena) 。
网易伏羲GDC分享:游戏中的智能匹配算法实践
文章图片

文章图片
网易伏羲GDC分享:游戏中的智能匹配算法实践
文章图片

文章图片
三是一个队伍中的英雄构成 , 这里指的是团队的组成方式 , 例如一个队伍中有多少战士/医生/弓箭手 。在许多游戏中 , 医生通常对一个队伍很重要 , 但是对一个固定大小的团队来说 , 医生太多则挤占了其它输出职业的名额 , 又会削弱战斗力而导致失败 。那么有多少医生和其他角色适合一个团队呢?
网易伏羲GDC分享:游戏中的智能匹配算法实践
文章图片

文章图片
我们在这里使用SHAP模型可解释的方法进行分析 , 我们首先构建获胜预测模型 , 然后解释每个角色的重要性 。这里的例子里我们有一个20v20的游戏 , 从SHAP值我们可以看出两队之间职业5的差异对获胜结果影响最大 。而我们进一步看这个职业5的单特征数据 , 当发现双方职业5的人数差小于2时 , 影响并不大 , 而当人数差变大时 , 对游戏平衡性的影响就出现了 。这启发了我们在匹配规则中添加一条规则 , 即两个阵营的职业5人数差不应超过2 。
这种方法可以非常有效地为不同游戏构建规则引擎 。
最后一种是人际关系效果 , 即玩家之间的合作/对抗效果 。类似地 , 玩家之间也有相互协调/不协调甚至克制的关系 。我们在这里是通过设计如下的预测模型的结构来对这样的效果进行刻画的 。
网易伏羲GDC分享:游戏中的智能匹配算法实践
文章图片

文章图片
在通过算法预测对预设规则进行完善之后 , 匹配系统可以判断几个是否适合组成一场比赛 , 但很多情况下 , 一个玩家A可以同时满足与B、C进行比赛的条件 , 也可以满足与D、E进行比赛的条件 , 即可行的匹配结果有许多中 , 那么此时一个更优的匹配系统可以更好地最大化全体玩家的游戏体验总和 。以下是一个匹配系统算法的对比示例 , 可以看到相比左边的先进先出(FCFS)匹配系统 , 右边的全局优化的匹配算法可以更好地输出让全体玩家更加满意的匹配方案 。
网易伏羲GDC分享:游戏中的智能匹配算法实践
文章图片

文章图片
在我们进一步讨论匹配系统的设计之前 , 我们先对匹配系统的优化目标进行定义 。我们以如下公式对玩家在一场未来比赛中的体验进行量化的评估:
网易伏羲GDC分享:游戏中的智能匹配算法实践
文章图片

文章图片
然后我们以所有匹配成功的玩家体验之和作为量化指标 , 对一个匹配算法进行评估 。
在对匹配算法进行设计时 , 我们首先采用一些数学表达式来对匹配问题进行定义: