王者榮耀的匹配算法與產品設計-Elo rating system

30 評論 36660 瀏覽 100 收藏 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分??梢园l現,不同結果出現時,每位選手的積分變量也不同。

算法特點

離散性

Elo 算法只需要知道三個要素即可進行迭代:選手賽前積分,對手賽前積分,比賽結果,計算和理解成本都很低(本質是因為積分操作在公式推導時已經被優化了)

初始態的盲目性

Elo rating中新玩家要達到自的合理的積分范圍需要較長的時間,這也是算法不斷收斂的過程,在實際應用中,我們常會遇見這樣的情況:1新玩家 2老玩家開新號。這時我們就需要其他策略來輔助決策定級,如果這一塊做的不好,玩家就會覺得對手太強或者太弱,流失率會增高。反觀王者榮耀的排位規則中,最低達到6級,最少擁有5個英雄才可以參加,這其實就是一種輔助定級定手段,讓系統能夠更準確的定位選手能力。同時,農藥的匹配模式是完全按照ELO值匹配隊友和對手;排位賽是按照段位水平和ELO值綜合評判并匹配的,這也能夠解釋為什么匹配時你會遇到和自己相差甚至一個大段位的隊友/對手了,而排位不會。

當然這個特性也不是全然負面,我們經??吹接螒蛑写毚虻然疑袠I大行其道,如果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. 請問哪一部分不太懂?

      來自北京 回復