王者荣耀的匹配算法与产品设计-Elo rating system

30 评论 37168 浏览 101 收藏 12 分钟

本文作者将与我们分享王者荣耀的匹配算法与产品设计,enjoy~对于当年没认真听数分课的童鞋,或许较为晦涩难懂哦~

回顾2017年的全球手游市场,腾讯推出的《王者荣耀》斩获了综合收入第二,下载量第三的成绩,堪称国货之光。这款游戏随着用户流量从PC到移动端转移的大潮不断成长,以MOBA(多人在线竞技)类游戏dota、英雄联盟为范本,并加以移动化轻量化改进,覆盖了更碎片的时间,更广泛的人群。

拿自己举例,在玩农药的这一年多中,不知不觉就打到了王者段位,厉害程度相当于超级玛丽8-4吧:)。粗略算来,总游戏时间600-700小时,比今年的半数交往对象还长。

如果把普通应用看做一台二手奥拓,那手游至少是辆大奔吧,本着造不出大奔就先拆大奔的心态,在对这款应用不断的使用和上瘾中,也试图找到一些产品背后的设计。目前觉得比较有趣的几个部分是:匹配,评分评级 ,成长流失。今天讨论一下匹配的部分。

不知道在大家玩农药的时候有没有遇到这些困扰:

  • 排位五连胜之后又来了一波七连跪,是不是系统故意给我比较强的对手?
  • 排位赛为什么要5个英雄才能玩?匹配赛就不需要阿。
  • 为什么匹配会遇到黄金玩家,我明明钻石了阿!

相信你看完今天的会对农药的匹配方法有一个比较具体的认知。

在王者荣耀中,最主要的两种游戏模式是匹配赛和排位赛,匹配是5v5标准模式,相当于基本款,排位赛在此基础上会计算等级排名。从最基本的用户需求出发,无论以上那种模式,当某一用户开启一局游戏时,首先需要为他找到4名队友与5名对手,而这9名用户的选择的依据很简单,就是实力相当。(我们在这里先只考虑单排的情况,因为双,三,五排出现时变量太复杂)

如何去衡量实力相当呢?可以再简化一下题干:当有两名旗鼓相当的玩家进行对决后,对决结果该如何影响系统对他们实力的判定呢?如果能够定量的回答这个问题,那就非常厉害了。目前这个问题的最优解是由一个叫匈牙利裔美国物理学家Arpad Elo发明的,所以被命名为Elo rating system,它最早被用于象棋比赛中,目前被公认为衡量各类对弈竞技水平的权威评价方案,广泛用于国际象棋、围棋、足球、篮球比赛中,以及英雄联盟、魔兽世界、dota等竞技对战系统中。

Elo算法成立于以下前提:

  1. 每个玩家的表现都符合随机变量的正态分布。
  2. 无论个人在比赛中的表现如何,球员的平均价值都会慢慢增加。

正态分布可以说是统计学中最重要的分布(几乎相当于万金油了),不论考高数还是考概率论,都一定大考特考。上述提到的例子中,任何一名选手的即时表现都是符合正态分布的,因为选手水准的提高是缓慢的,非一蹴而就的,所以代练,作弊都会对系统造成破坏,严厉谴责。生活中类似的例子很多,比如社会收入分布,人群身高分布等等。

第二个条件可以理解为要求玩家主观上都以提升实力为目的,否则整个系统就失去了意义。

 Elo算法的逻辑解释

等级分系统通过计算双方的输赢概率,结合竞技后的结果来不断修正玩家的分数。如果一个较高分玩家赢了,那符合系统的预期,少量分数会从低分玩家方扣除,并加给高分玩家。反之,高分玩家会被扣除相对更多的分数,并把这些分数加给低分玩家。

定量计算:

A和B为两名玩家,R代表他们当前的rating,E为预期胜率,所以EA+EB=1。

当比赛结束后,实际胜负值S最多有三种情况,胜(1分),平(0.5分),负(0分)RA’ 为一场比赛结束后的新rating:

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分。可以发现,不同结果出现时,每位选手的积分变量也不同。

算法特点

离散性

Elo 算法只需要知道三个要素即可进行迭代:选手赛前积分,对手赛前积分,比赛结果,计算和理解成本都很低(本质是因为积分操作在公式推导时已经被优化了)

初始态的盲目性

Elo rating中新玩家要达到自的合理的积分范围需要较长的时间,这也是算法不断收敛的过程,在实际应用中,我们常会遇见这样的情况:1新玩家 2老玩家开新号。这时我们就需要其他策略来辅助决策定级,如果这一块做的不好,玩家就会觉得对手太强或者太弱,流失率会增高。反观王者荣耀的排位规则中,最低达到6级,最少拥有5个英雄才可以参加,这其实就是一种辅助定级定手段,让系统能够更准确的定位选手能力。同时,农药的匹配模式是完全按照ELO值匹配队友和对手;排位赛是按照段位水平和ELO值综合评判并匹配的,这也能够解释为什么匹配时你会遇到和自己相差甚至一个大段位的队友/对手了,而排位不会。

当然这个特性也不是全然负面,我们经常看到游戏中代练代打等灰色行业大行其道,如果Elo rating更精确敏感,那作弊就会更容易了。

实际应用中的问题

1. 为什么王者荣耀不直接使用Elo积分反应玩家水平?(dota的天梯积分就是直接使用的elo积分)

其实这完全是pm的小手段,我们会发现当用户的积分稳定下来以后,他对单场比赛的分数增减会越来越无感,这种刺激绝对比不上赢了加星星输了扣星星那么明确和有力,而且将数字转化为文字(黄金白银铂金钻石),更易于传播和理解。本质上,还是对于系统反馈的量化和包装。这也属于我们开头提到的轻量化改进中的一环,产品和用户是互相选择的,天梯积分决定了dota的竞技性,排位段位则让王者荣耀有了普适性,才会被新玩家大群体所接受。

2. 理论中都是1v1作战,那5v5时该如何进行Elo 积分?

就像elo积分本身是一种目前的最优解,复杂变量的处理也有不同的处理方法,具体取决于业务需求,所以以下结论是猜想的,未经证实。

可行的方案可能是:将5名选手的elo 积分的算术平均作为团队积分,再根据不同玩家的单场KDA进行积分加权。但此处并未考虑多人排位的情况,假设出现了直男带妹上分,那以上规则不一定继续适用。而且考虑到不同队伍的排位方式不同,是否还应该进行小团队积分加权?(这些都没有数据支持所以暂不讨论)

3. 还有什么产品用的了类似算法吗?

其实只要满足Elo rating成立前提的场景就可以套用该算法,可以根据业务的实际需求不断调整参数值使其更好地服务于系统。举个栗子:

FaceMash  – Facebook前身,由扎克伯格于2003在哈佛大学的宿舍创建。FaceMash是哈佛版美女评选网站,每次将两张女生照片放置在一起,让用户选择哪一位更吸引人。网站引起了轰动,并获得哈佛大学学生的欢迎。FaceMash曾在第一夜吸引了450位访问用户,产生了2.2万页面浏览量,上线几天后被哈佛大学关停。所以这个公式也出现在以扎克伯格为蓝本的电影《社交网络》中:

参考资料:

  1. 微博:https://weibo.com/wzrydonny
  2. 知乎:https://zhuanlan.zhihu.com/p/28190267
  3. wikipedia:https://en.wikipedia.org/wiki/Elo_rating_system
  4. Google:http://blog.hackerearth.com/elo-rating-algorithm
  5. 王者荣耀公众号

 

作者:阿厮,公众号: assbis的私人小花园(ID:assbis)

本文由 @阿厮 原创发布于人人都是产品经理。未经许可,禁止转载。

题图由作者提供

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 难怪我连跪个五六把,总会赢一把,太难了,一直掉··哈哈哈哈哈

    来自浙江 回复
  2. 目前看的介绍elo匹配机制里 讲的最好理解的,感谢!

    来自北京 回复
  3. 段位机制的好处在于
    1.段位保护机制可以让用户的段位只升不降,对于自尊心脆弱的用户有所帮助
    2.段位机制更符合“赛季”模式推广

    另外
    1.dota2现在也采用ELO+段位的机制了
    2.dota2对每个用户单人和组队分数是分开计算的

    来自上海 回复
    1. “段位保护机制”是说勇者积分吗?

      来自北京 回复
    2. 段位保护是说用户到达一定段位后,只会升不会降;
      如dota2里面一个“万古流芳3星”的用户,即时输再多也不会掉到“万古流芳2星”
      当然隐藏分还是会降低的

      来自上海 回复
    3. 这样确实是一个缓冲,不过赛季结束也不会掉段吗?

      来自北京 回复
    4. 赛季结束时候的段位就记作这个赛季的最终段位,作为过往赛季总结进行展示;并且可以按照段位发放奖励,比如lol的皮肤和载入框
      新赛季开始后,重新开始定位赛

      来自上海 回复
    5. soga 谢谢分享,学习了~

      来自北京 回复
  4. Excuse me?社会收入是正态分布? 我们隔壁小区住了一个富商月入十万 我月入五千 请问这是正态分布?

    来自重庆 回复
    1. 你想说什么?正态分布是以社会全体的收入为变量,你和富商只是其中的两个离散点,如何反驳社会收入不成正态分布。

      回复
    2. 文科生别做产品,去做ux吧

      来自四川 回复
    3. 我不是文科生…

      来自北京 回复
    4. 我说的不是你

      来自四川 回复
  5. 一点也没有看懂,感觉 好厉害的样子!!!!

    来自浙江 回复
  6. 没看懂!但是很厉害的样子!😅

    回复
  7. 您好,您作为一个pm,同样还会去钻研一个成功产品的相关算法吗?还是说您本身就是做算法的技术出生?因为我目前作为一个产品助理,以后也会走pm的方向,很迷惑到底该不该钻研一些优秀产品的后台算法,还是把算法什么的统统交给程序猿,自己专注于产品设计就可以了

    来自四川 回复
    1. 你好哦,首先我觉得算法本身就是产品设计的一部分,这篇文章讨论的就是数值策划(游戏行业的pm)工作范畴内的东西,实际上任意一款产品都或多或少会涉及到算法(比如推荐,搜索,排行等常见模块)。其次,算法的核心是用量化的手段来解决问题满足需求,这个过程是科学的严谨的,将算法语言转化为产品语言也是pm在工作过程中应该掌握的。综上,我认为研究一下还是收获很多的,至于选择什么复杂度的算法,理解到什么程度完全是见仁见智的,取决于自己的兴趣和工作范围。
      值得一提的是,理工科背景确实会帮助你更好的理解算法。

      来自北京 回复
  8. 虽然看不太懂,但理解其中的原理

    来自北京 回复
  9. 带妹真的是非常大的干扰,我猜农药的带妹算法是强制匹配相同积分段,或者根据积分段来加权。 ➡

    来自广东 回复
    1. 嗯呢,理想情况可以这么考虑。实际情况中,多人排位相对单排还是少很多,所以估计要分类讨论。听说是五排按照最高段位玩家匹配,单排完全根据平均段位,二/三排根据平均段位+队伍加成。

      来自北京 回复
  10. 好好好,疯狂打尻

    来自上海 回复
  11. 你好,我在做一个现实中的活动平台。其中需要一些匹配算法。能聊会吗?

    回复
    1. 好的,具体是什么样的活动平台?

      回复
    2. 能电话聊吗?

      回复
    3. 先微信吧?
      bay1218

      回复
  12. 变态

    回复
    1. excuse me?

      来自北京 回复
  13. 解释的很清晰,牛逼

    来自北京 回复
  14. 虽然我没看懂 但是好厉害的样子

    来自北京 回复
    1. 请问哪一部分不太懂?

      来自北京 回复