本文以王者荣耀为主体,结合多款MOBA类游戏,对其匹配机制进行的一些猜想,
分别从why、who、how三个角度简析。
王者荣耀有实战对抗模式,娱乐模式,排位赛模式等数种对战模式,但是其本质都属于匹配系统的一种,下面以排位赛来举例。这里先不讨论排位机制的最终目的,只说其基础目的,应该是:用最短的游戏时间让你的真实水平与你的表面段位相符。强调三个点,
勇者积分:无论游戏胜负都会得到勇者积分,其中连胜、MVP、无挂机等行为都能加快增长,幸运的话,大概三局就可以使勇者积分达到一次上限。初看下来,游戏过程中只要保证不挂机,不送人头,不辱骂队友,不被进行举报操作,随着游戏盘数的增加,段位就可以一直往上涨,但是实际上,如果游戏实力没有提升,段位的上升只会导致胜率的下降,最终输赢盘数的变化与勇者积分的增加达到相应平衡。
因此,王者荣耀引入勇者积分制度,应该为了与前文所述“最短时间”相照应,其引入前后对比,所有玩家的表面段位应该只会提高数个小段,但达到与真实水平相匹配段位的时间应该会减少非常多。
who这个问题可以拆解成用户画像问题,再接着可以延伸成目标用户、产品需求,市场定位等战略层问题,这里就不加以详细分析,默认其已完成以上要求,并采用部分典型用户画像来讨论匹配算法带来异常值的情况,也就是用户在使用匹配系统时可能产生的问题。
主观问题: 我们知道一场游戏中玩家操作水准具体受心态和技术两部分影响,王者荣耀的对战时间较短,使用终端普遍,单场游戏对战的仪式感较弱等种种因素,共同导致了玩家心态极易产生变动;而游戏本身可操作性较差,对比而言,技术上下限差值也较低,提高了游戏过程中心态影响的占比,导致心态因素的对实力的影响被放大。
客观问题:手机作为游戏终端,难以避免的受到网络信号、温度、电量等因素带来的影响。同时,电话短信第三方App等也可能扎堆凑热闹,最后还可能出现各种外界不可控因素。这里以典型用户画像来模拟用户使用场景。
小林,男,23岁,白领上班族,玩王者荣耀两年,某天,地铁上照例选择玩两把王者荣耀打发时间,开局后,出现Ping值波动,游戏操作延迟巨大,好不容易就要赢了,却发现地铁到站,只能挂机退出游戏,无论是数据表现还是游戏结果和之前的相比存在明显差异。
在该典型用户的使用过程中,出现了包括主观客观在内的各种问题,无疑是非常影响游戏系统对用户实际操作水准的判断,用户要达到与真实水平相对应段位的时间被极大延长。这里对who的问题详细描述,主要是推论出下文提及的该匹配系统的特点分析。
由上文分析,HOW的问题也就是找到快速让隐藏分和表面段位相符的途径。参考被广泛应用的Elo评分系统和MMR(Match Making Rating)算法。
1.3.1Elo评分系统
是一种计算玩家相对技能水平的方法, 这个评分体系的核心,是对于单场比赛的评判,它的算法基于几个重要的参数:赛前积分(Ro)、预期结果(We)和比赛结果(W),外加一个常数(K)。其公式为Rn= Ro + K × (W - We),将得出的所有单场比赛的表现分进行迭代,产生的综合结果就是玩家的真实水平。
假设每个玩家在每盘游戏中的表现是一个正态分布的随机变量,围绕某一个水平上下波动)。每个玩家的表现都应该符合正态分布函数:
U代表选手的平均水平;
δ代表稳定性(表现分值的方差)
通过积分运算,可以算出每场游戏之间双方预期胜率:
Rp是玩家自己的表现分;
Rc是对手排位分,如果对手不止一个就要取平均值;
D(p)是胜率计算函数的反函数,p表示参考局数内玩家的胜率(预期胜率)
经过了大量数据的模拟之后,发现玩家在比赛中表现的波动情况更接近于逻辑分布(logistic distribution),于是就有了以下概率密度函数可用:
P(D)就是玩家与对手的期望胜率。
上面的公式只能反应玩家一定局数内的表现水平,但是实际上我们用来衡量玩家水平高低的评价分数应该是无数个短局表现分的综合结果,所以并不能直接用短期内的表现分直接取取代玩家原有的分值。这就是经过修正后的Elo体系积分迭代公式,形式如下:
Rn是玩家比赛结束后的新的隐藏分值;
Ro是比赛前玩家的隐藏分,也就是初始分;
K是一个加成系数,由玩家当前分值水平决定(刚开始的K值较大,使玩家可以迅速到达真实水平在排名系统中的正确位置,随着胜率逐渐下降,K值也逐渐下降,以防止Elo在对抗实力接近的对手时发生剧烈变化);
G是玩家实际对局得分;
Ge是原排位分基础上玩家的预期得分(根据胜率来算,多名对手情况就是和多名对手对战的胜率求和,然后按照权值比例分配给每个人)
1.3.2MMR(Match Making Rating)算法
计算原理大致上和Elo评分相同,参考DOTA2中的MMR算法,先将比赛级别分为LOW、HIGH、VERY HIGH(简单、困难、非常难),一开始你的MMR积分为0分,那么赢了一场LOW的比赛就+1分,输了-1分;赢了一场HIGH的比赛就+2分,VERY HIGH+3分,输了则减。那么你赢得越多,你的MMR就越高,你匹配到的对手也越厉害;反之就越低越弱。
这个系统会让你一直趋向MMR=0这个值。也就是说让你的胜率总是保持在50%左右,当你的胜率超过50%的时候,系统就会给你匹配很厉害的对手让你输;而你低于50%,就会给你简单的对手。
具体到游戏中,为简便算法,可能会采用与Elo中相同的评分值。
1.3.3其他
以上提到的两种算法都是基于MOBA游戏的匹配机制,在王者荣耀里,可能还会掺杂各种其他的方法,为了匹配的平衡性所要调整的参数远远不止这么多,甚至不同版本不同时段都要不断进行微调算法。即使在已经火爆了八年的LOL里,也只不过在刚开始的三个赛季使用MMR和Elo系统,而在之后,则是转而使用基于贝叶斯推断的TrueSkill的评分系统。
同时,这些MOBA游戏中,会有不少针对性的手段来调整匹配系统的平衡性。参考新闻可知,V社为了针对代练,一般会有这样的策略:
在相同分数段下(比如± 100,如果一段时候后仍匹配不满,这个区域会扩大),取每个人最近K场比赛的胜负记录和(胜+1,负-1),然后使得两边队伍总的最近K场胜负记录和为0。举个极端的例子,比如K=10,这时候你战绩是近10场中9胜1负,和为8。假设此时已匹配3个队友的和都为0,那么最后会给你匹配一个和为-8(1胜9负)的选手。在这种机制下,比较能抑制代打,因为短期内你战绩越是厉害,队友就越弱。
由上文可以得知,评分系统实质就是一个离散积分逐渐收敛的过程,分值收敛以后,如果游戏技术没有提升,再进行更多的对局,隐藏分几乎不会有任何提高,能够改变的只是隐藏分和表面段位的接近程度。
实际体验中,为尽量缩短玩家收敛周期(达到真实水平所用的场次),DOTA和王者荣耀都采用了段位继承机制,并且高分者战胜低分者获取的分数会显著低于低分者战胜高分者赢取的分数;为提高初期收敛的精确性,LOL引入定级赛机制,而王者荣耀很大可能也会在初始几场比赛中对玩家水平进行模糊定位。
同时,评分系统模型还有这几个特点,
静态概率:即每场对战前的期望概率不会因游戏进程而发生改变
独立性:历史对战记录不会影响后续对战的积分计算规则影响
一致性:所有场次比赛的重要性没有差异,即权值都相同
如果只考虑王者荣耀的基础目的,即:用最短的游戏时间让你的真实水平与你的表面段位相符,那么匹配机制主要就是上文所提及内容。但应该注意的是,一款游戏的最终目的必然涉及到的是战略层目标,即企业的期望与用户的需求。
企业的期望可以转化为商业目标,即提高游戏人群覆盖率、用户粘性、消费用户占比等等。
用户的需求则大致为社交需求、尊重需求、娱乐需求。社交上有公开频道和方便的好友邀请,尊重上有好友段位相互可见和带妹上分相对简单,娱乐上有超低游戏门槛和本身的心流机制等等。
总的来说这么一篇文章其实只是参考的作用更大,毕竟一款成熟的产品,内部的每一个细节都无法和整个产品的战略目标发生割舍。