本文作者將與我們分享王者榮耀的匹配算法與產品設計,enjoy~對於當年沒認真聽數分課的童鞋,或許較為晦澀難懂哦~
回顧2017年的全球手游市場,騰訊推出的《王者榮耀》斬獲了綜合收入第二,下載量第三的成績,堪稱國貨之光。 這款遊戲隨著用戶流量從PC到移動端轉移的大潮不斷成長,以MOBA(多人在線競技)類游戲dota、英雄聯盟為範本,並加以移動化輕量化改進,覆蓋了更碎片的時間, 更廣泛的人群。
拿自己舉例,在玩農藥的這一年多中,不知不覺就打到了王者段位,厲害程度相當於超級瑪麗8-4吧:)。 粗略算來,總遊戲時間600-700小時,比今年的半數交往對像還長。
如果把普通應用看做一台二手奧拓,那手游至少是輛大奔吧,本著造不出大奔就先拆大奔的心態,在對這款應用不斷的使用和上癮中,也試圖 找到一些產品背後的設計。 目前覺得比較有趣的幾個部分是:匹配,評分評級 ,成長流失。 今天討論一下匹配的部分。
不知道在大家玩農藥的時候有沒有遇到這些困擾:
- 排位五連勝之後又來了一波七連跪,是不是系統故意給我比較強的對手?
- 排位賽為什麼要5個英雄才能玩? 匹配賽就不需要阿。
- 為什麼匹配會遇到黃金玩家,我明明鑽石了阿!
相信你看完今天的會對農藥的匹配方法有一個比較具體的認知。
在王者榮耀中,最主要的兩種遊戲模式是匹配賽和排位賽,匹配是5v5標準模式,相當於基本款,排位賽在此基礎上會計算等級排名。 從最基本的用戶需求出發,無論以上那種模式,當某一用戶開啟一局遊戲時,首先需要為他找到4名隊友與5名對手,而這9名用戶的選擇的依據很簡單,就是 實力相當。 (我們在這裡先只考慮單排的情況,因為雙,三,五排出現時變量太複雜)
如何去衡量實力相當呢? 可以再簡化一下題幹:當有兩名旗鼓相當的玩家進行對決後,對決結果該如何影響系統對他們實力的判定呢? 如果能夠定量的回答這個問題,那就非常厲害了。 目前這個問題的最優解是由一個叫匈牙利裔美國物理學家Arpad Elo發明的,所以被命名為Elo rating system,它最早被用於象棋比賽中,目前被公認為衡量各類對弈競技水平的 權威評價方案,廣泛用於國際象棋、圍棋、足球、籃球比賽中,以及英雄聯盟、魔獸世界、dota等競技對戰系統中。
Elo算法成立於以下前提:
- 每個玩家的表現都符合隨機變量的正態分佈。
- 無論個人在比賽中的表現如何,球員的平均價值都會慢慢增加。
正態分佈可以說是統計學中最重要的分佈(幾乎相當於萬金油了),不論考高數還是考概率論,都一定大考特考。 上述提到的例子中,任何一名選手的即時表現都是符合正態分佈的,因為選手水準的提高是緩慢的,非一蹴而就的,所以代練,作弊都會對系統造成破壞,嚴厲譴責。 生活中類似的例子很多,比如社會收入分佈,人群身高分佈等等。
第二個條件可以理解為要求玩家主觀上都以提昇實力為目的,否則整個系統就失去了意義。
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萬頁面瀏覽量,上線幾天后被哈佛大學關停。 所以這個公式也出現在以扎克伯格為藍本的電影《社交網絡》中:
參考資料:
- 微博:https://weibo.com/wzrydonny
- 知乎:https://zhuanlan.zhihu.com/p/28190267
- wikipedia:https://en.wikipedia.org/wiki/Elo_rating_system
- Google:http://blog.hackerearth.com/elo-rating-algorithm
- 王者榮耀公眾號
作者:阿廝,公眾號: assbis的私人小花園(ID:assbis)
本文由 @阿廝 原創發佈於人人都是產品經理。 未經許可,禁止轉載。
題圖由作者提供