通俗講義:匹配系統核心 「ELO」積分揭秘
修改說明:修正了積分處必勝概率的計算公式。
相信接觸過競技遊戲的玩家對下面這個東西不會陌生
不管遭遇過怎樣坑爹的匹配經歷現在都先放下,這一次我想要給大家分享的就是這個匹配系統背後一些比較核心的東西:包括排位積分的計算方式—ELO積分的推導原理, ELO積分在競技遊戲中應用會遇到的困難,以及使用ELO積分的利和弊等等。
那麼開始還是從理論基礎開篇(可能有點晦澀,我盡量只講公式的合理性,公式大概的一個推導過程,盡量不講具體的公式換算)
1 ELO積分基本情況介紹
? ELO(埃洛積分)等級分的由來:
elo等級分是根據它的創立者埃洛教授名字命名的,最早用來評估國際象棋選手的實力。在埃洛以前,關於國際象棋選手排名體系已經有兩套(分別是歐洲的INGO系統和美國象棋協會提出的肯尼斯·哈克尼斯等級分系統),但是這兩套系統在選手實力的表現上都不夠直觀,所以最後才被由ELO提出的等級分系統取代!
關於ELO分的基本印象只要記住下面三點:最早在國際象棋評分中出現,作者是搞物理的埃洛,然後公式的來源是選手勝率評估(這點我會在後面詳細解釋)
2 公式的理論解釋
ELO在解釋選手對戰情況時,分為三個部分。第一部分是根據戰力差來計算對戰勝率情況;多少分差對應多少勝率; 第二部分是選手根據對手情況和戰鬥結果所表現出來的水平分;第三部分是選手完成對局後實際獲得的積分增長。
2.1 預期勝率計算公式
大概解釋一下ELO積分預期勝率計算公式為什麼是這麼一個樣子:
其中D代表兩個選手的排位分差,大於零表示對手更強。p(D)代表戰勝分差為D的玩家的概率
這公式怎麼來的?
我們知道,強手未必總是勝過弱手,實際上任何一名選手的即時表現都應該是符合正態分布的(圍繞某一個水平上下波動)。
每個選手的表現都應該符合正態分布函數為:
其中U代表選手的平均水平,δ代表穩定性(表現分值的方差)。
這東西有點茫然,畫個曲線分布圖來形象解釋一下:
選手A:平均表現應該是1800分,但是不是很穩定,有200分左右的上下波動(可以出現更大的偏移,但是概率極小);
選手B:平均表現2000分,選手狀態穩定,波動分值在100左右;
他們的表現符合下面兩個正態分布:B和A的表現大概如下
那麼在有了概率分布了,我們可以選取任何一個特殊情況分析(這裡假設是1880分處)B能戰勝A的條件:
結合概率分布函數圖像,以1880分為分割點B能戰勝A的條件是:A得1880時,B的表現分高於1880。
那麼我們只需要得到A得分等於1880的概率,B得分高於1880的概率,就能計算出1880分處B獲勝的概率;
假設A得分等於1880的概率為Pa(1880)
假設B得分大於1880的概率為Pb(>1880)
那麼在1880處B能戰勝A的概率Pba(1880)=Pa(1880)* Pb(>1880)
在統計學中,A表現等於1880的概率可以直接通過概率分布函數得到;B得分>1880則可以通過對每一個點的概率進行累加(積分求和)得到。
B能戰勝A就是B的得分一定要在A的右邊(比A得分高)。即A、B的散點分布一定是下麵灰色和紅色斜線兩個區域。
而像1880這樣的分割點一共有無數個,所以B能戰勝A的最終概率,應該是這無數個分割點B戰勝A的概率的一個求和,也即是積分運算。
綜合這幾個步驟,就可以得出那個奇奇怪怪的積分公式ELO積分。
不過考慮到應用方便,實際的運用中並沒有直接用它,而是利用了最小二乘,得出了和它函數趨向相近的另外的一個公式,這也是我們實際運用該公式時常用的公式:
到這裡我已經盡量的通俗的去解釋ELO公式是怎麼來的的(這個公式不是隨便寫的,是符合統計規則的)有了這個公式後,我們就能根據自己和對手的分差來進行勝負模擬:如下(這張表後面的計算中需要用到)
2.2 表現等級分計算公式
這是ELO體系中比較重要的一個公式,他的形式是這樣的:
其中:Rp是玩家自己的表現分;Rc是對手排位分,如果對手不止一個就要取平均值;D(p)是勝率計算函數的反函數,p表示參考局數內玩家的勝率;(如果只看一局的表現,那麼他的勝率就只有100%和0%)舉個例子如下:
D(p)的得分查勝率和積分差對應表即可,也可以根據函數去計算:(求下面這個函數的反函數即可,不再推導了)
2.3 積分迭代公式(這個才是我們實際要用到的公式)
上面的公式只能反應玩家一定局數內的表現水平,但是實際上我們用來衡量玩家水平高低的評價分數應該是無數個短局表現分的綜合結果,所以並不能直接用短期內的表現分直接取取代玩家原有的分值。這就是經過修正後的ELO體系積分迭代公式,形式如下:
其中:
Rn是玩家比賽結束後的新的排位分值;
Ro是比賽前玩家的排位分
K是一個加成係數,由玩家當前分值水平決定(分值越高K越小)
G是玩家實際對局得分(贏得1分,輸得0.5分)
Ge是原排位分基礎上玩家的預期得分(根據勝率來算,多名對手情況就是和多名對手對戰的勝率求和)
舉個例子來說明該公式的運用:
3 ELO積分的應用分析
3.1 特點(在實用時要十分注重)
任何的演算法體系都有優缺點,ELO積分也是,而且ELO積分的優缺點都還比較明顯。
離散性: ELO積分的計算不需要獲取太多的信息,只需要知道三個要素即可對積分進行迭代:選手賽前積分,對手賽前積分,比賽結果。
初期不精確性:ELO積分在達到合理之前需要一個收斂過程,比如一個2000分玩家玩小號,遇到的對手大概都是從1200分開始;這時候ELO分是不能精確反應他的真實實力的,這需要一個過程,也就是ELO積分的收斂過程
對所有比賽一視同仁:ELO分只會根據同一評分體系下的積分進行迭代,積分增長情況和賽事重要性無關。
3.2 在競技遊戲中的適用性
3.2.1 比賽重要性差異適配
和網球,象棋等相比,網路遊戲中所有的玩家大多都是為了娛樂和休閑,所以在比賽和比賽之間的重要性差異,不會影響玩家在遊戲中的評分,這一點恰恰規避了ELO積分將所有比賽看做一樣的缺點。
3.2.2 收斂期解決方案
前面在演算法的特點中我有提到,ELO積分有一個比較顯著的特點就是需要一個收斂過程來對其進行大致的定位。
這一點在遊戲中是有很好的體現的:(LOL引入定級賽就是出於這方面的考慮)
除此之外,為了盡量縮短玩家的收斂周期(達到真實水平所用的場次),LOL和王者榮耀都採取了段位繼承機制
段位繼承的實現並不困難,只需要在定位期加分演算法中考慮到玩家上賽季得分就可,具體用什麼比例,看需求而定。
3.2.3 1對1到多對多的拓展
ELO積分初期是針對象棋選手而定的,所以考慮的都是象棋選手1V1的情況。但是在5V5排位賽中,有幾個要素是不能直接用定義來計算的。
這個公式中Ro,K,G值是不用變化的,但是Ge的計算是需要特殊處理的。
Ge的計算需要用到對手信息(Ge怎麼計算要回到前面的公式和演算法去),在LOL,王者榮耀等遊戲中玩家一局遊戲遇到的對手等級分實際上都不一致。所以,這時候在對手排位分到底用多少需要商榷。這裡我提幾個可行的方案(並沒有經過驗證)
方案1:直接用對手的分值平均值作為對手等級分
該方案實際上有明顯的缺點:顯然出現帶妹隊伍的時候,如果按照對手分取均值的話,妹子的分值就明顯增長過快了。所以5V5情況下,對手的分值應該要加入自身的要素(因為在己方團體中每個個體對排位總分的貢獻是不一致的,所以要引入權重的概念。)
方案2:於是我又提出了一個新的方案,在5V5對戰中,計算玩家A的迭代積分時,玩家A的對手分值應該這樣去算:
這樣Ge中要用的自己和對手的分值差D就應該這樣計算:
4 思考:排位分直接用ELO分顯示有什麼不好?
為什麼LOL要用段位來替代之前的ELO積分?
為什麼王者榮耀在此基礎上做了更大的變化?
在英雄聯盟和王者榮耀中分值還有用嗎?
答:
1、 ELO分不會消失,從顯示變成了隱藏,但是匹配對手時還是以此為基礎來尋找對少的。(將玩家真實水平隱藏)
2、 因為ELO積分對玩家水平的精確指示會打擊玩家的信心,分值收斂結束後,再進行更多的對局幾乎不會有任何提高,如非自我進階。(一入天梯深似海,從此DOTA是路人)
3、 段位的出現是對人性考量的結果!永遠不要忘記MOBA類遊戲盛行的至理:超神都是自己的!鍋都是隊友的!上不去是隊友都是傻逼的!所以不需要在分值上對其水平進行太過精確地顯示。你看,下面這樣就舒服了!
4、 ELO積分不會消失,他對選手水平的精確指示性是用其作為匹配的重要參考依據保證玩家的遊戲體驗的根本。
段位並不是玩家真實水平的反應,段位對努力的選手有很多的鼓勵,所以用段位來給玩家匹配對手會讓女性玩家懷疑人生。(她們的真實水平實際並沒有段位顯示的那麼高)
所以在進行匹配的時候,還是需要以ELO分為準!!
至於代練導致ELO分值上漲,然後開啟連跪模式的親們,這就十分抱歉了~~這種情況沒得解!
推薦閱讀: