大家好,今天我将化身为峡谷刚正不阿的峡谷治安官——狄仁杰大人,作为一名程序员,来为大家浅谈一下王者荣耀 target=_blank class=infotextkey>王者荣耀中的匹配算法。
不知道在大家玩农药的时候有没有遇到这些困扰:
排位五连胜之后又来了一波六连跪,
是命运的作弄还是系统的安排?
。。。
排位赛为什么要三人或五人英雄才能玩?
四人就不行,匹配赛就不需要啊。
。。。
为什么匹配会遇到钻石玩家?
我明明星耀了啊!
。。。
相信你看完今天的会对农药的匹配方法有一个比较具体的认知。
ELO等级分系统(ELO Rating System)是由匈牙利裔美国物理学家阿帕德·埃洛创建的一个衡量各类对弈活动水平的评价方法,是当今对弈水平评估的公认的权威方法之一,被广泛用于国际象棋、围棋、足球、篮球等运动,是一套较为完善的评分规则和机制。
ELO等级分系统更适合对竞技类游戏的选手的技术等级进行评估,用以计量个体在对决类比赛中相对技能的算法系统;对于MOBA(多人在线竞技)游戏而言,需要创造双方势均力敌的竞技环境,让每场对局尽可能的接近公平。
《王者荣耀》采用了ELO等级分系统来评估每一位召唤师的实力,并尽量匹配10个实力相当的对手及队友进行一场酣畅淋漓的比赛,给到召唤师高质量的对局体验是《王者荣耀》设计匹配算法时唯一追求的目标。
在《王者荣耀》里,有多种多样的游戏模式,在ELO等级分系统为基础的前提下,不同的游戏模式其具体的匹配规则还是会有些许差异。比如:匹配模式是完全按照ELO值匹配队友和对手;排位赛是按照段位水平和ELO值综合评判并匹配的,会尽可能保证对战双方的实力保持在均衡水平。通过将数字转化为文字(黄金白银铂金钻石),更易于传播和理解。排位段位则让王者荣耀有了普适性,才会被新玩家大群体所接受。
Elo算法成立于以下前提:
每个玩家的表现都符合随机变量的正态分布。
无论个人在比赛中的表现如何,队员的平均价值都会慢慢增加。
任何一名选手的即时表现都是符合正态分布的,因为选手水准的提高是缓慢的,非一蹴而就的,所以代练,作弊都会对系统造成破坏,严厉谴责。这就是农药为什么对投诉进行严格处理的原因。生活中类似的例子很多,比如社会收入分布,人群身高分布等等,不要和马云和姚明比。
Elo算法的逻辑解释
等级分系统通过计算双方的输赢概率,结合竞技后的结果来不断修正玩家的分数。如果一个较高分玩家赢了,那符合系统的预期,少量分数会从低分玩家方扣除,并加给高分玩家。反之,高分玩家会被扣除相对更多的分数,并把这些分数加给低分玩家。
定量计算:
Ea=1/(1+10^((Rb-Ra)/400) ) Eb=1/(1+10^((Ra-Rb)/400) )
A和B为两名玩家,R代表他们当前的rating,E为预期胜率,所以EA+EB=1。
当比赛结束后,实际胜负值S最多有三种情况,胜(1分),平(0.5分),负(0分)RA’ 为一场比赛结束后的新rating:〖Ra〗^'=Ra+K(Sa-Ea)
K是一个常量,代表一次比赛对于选手得分的影响程度。较小的K值意味着较小的影响,不同的比赛性质与阶段可以选择不同的K值,国际象棋大师赛中,K=16;大部分游戏规则中,K=32。通常水平越高的比赛K越小,为了避免少数几场比赛就改变选手的排名。
举个栗子感受一下:玩家A排位分数2000,玩家B1800,那么A的预期胜率为:EA=75.97%,EB=24.03%,如果在实际的对决中(取k=32),A胜利,则A将收获7.7分,B将损失7.7分;B胜利,则A将损失24.3分,B将收获24.3分。可以发现,不同结果出现时,每位选手的积分变量也不同。
你能匹配到什么样的队友,完全是由算法评估各位召唤师综合能力来决定的,所以正如之前所说,从匹配的算法和规则的层面来说,每一局的匹配结果是一个纯粹的数学问题。一定还是会有召唤师问,但为什么我总是遇到“坑队友”!
你的队友可能会因为很多原因发挥不佳:考虑到阵容的合理性而选择不擅长的英雄、前期逆风导致队内氛围不佳情绪不好、玩法风格和队友不够匹配等等。
你打王者荣耀吗?
普元第一届王者荣耀公开赛开始啦
长按图中二维码围观
围观礼:直播抽奖、预测冠军奖品等等
好礼等你来拿
关于作者:卜壮,普元前端开发工程师,负责Mobile 8.0项目管理平台前端部分。熟悉ReactNative,目前正在学习Vue,大前端技术探求者。
关于EAWorld:微服务,DevOps,数据治理,移动架构原创技术分享。