淺談DOTA2的疊加機制
1.加法疊加
加法疊加是遊戲中最常見也是最容易被忽視的疊加方式。
加法疊加很簡單,加法即可。
如下的機制使用加法疊加:
- 屬性
- 生命值/生命回復速率(固定數值)
- 魔法值/魔法回復速率(固定數值)
- 攻擊力
- 攻擊速度
- 護甲
- 分裂傷害
- 時間
- 金錢
- 經驗
- 某些物品在裝備欄中(如吃樹、凈化)
2.乘法疊加
需要指出的是,乘法疊加並不是幾個實例直接相乘,而是通過公式來計算。換句話說,成立的幾率。
換句話說,一個事件若要發生,必須繞過全部的阻礙,才能發生。
如下機制使用乘法疊加:
- 致盲(閃避在下文講)
- 魔法抗性
魔法抗性是乘法疊加的。比如一個造成100點魔法傷害的技能,由於英雄本身有25%魔法抗性,那麼會將傷害降低到75點,現在英雄裝備了挑戰頭巾,那75點傷害又會降低30%到52.5點,如果是敵法師,則又會繼續降低50%到26.25點。因此學習了4級法術護盾(50%魔法抗性)的敵法師(25%魔法抗性)裝備挑戰頭巾(30%魔法抗性)後擁有的魔法抗性:1-(1-0.25)*(1-0.50)*(1-0.30)=0.7375 = 73.75%魔法抗性。
或者這麼說,一個造成100點魔法傷害的技能,首先要繞過魔法抗性這一關,成功率是75%;如果還要繞過一個挑戰頭巾,成功率為70%,所以總成功率為75%*70%;如果還要繞過敵法師的法術護盾,成功率是50%,此時的總成功率就是75%*70%*50%=0.2625。此時表現為魔法抗性為1-0.2625=0.7375,即73.75%的魔法抗性。
補充一下小人馬的魔抗光環疊加機制。
DP與8個小人馬
每個小人馬提供5%魔抗
魔法抗性為50%
若為加法疊加:25%+8*5%=65%,說明不是加法疊加。
若為乘法疊加:1-0.75*0.95^8=0.502=50%,說明是乘法疊加。
評論區有人說敵法師初始魔抗是18%
還有人說哈斯卡魔抗是加法疊加的
3.偽獨立疊加
說到偽獨立疊加,必須先說偽隨機分布。
============================分合鳥線===============================
偽隨機數生成演算法(PRNG)是一個用於生成一組偽隨機數字序列的演算法,與本文無關
偽隨機分布,簡稱PRD,在DOTA2中用來表示關於一些有一定幾率的裝備和技能的統計機制。與之相對的是真隨機分布。在真隨機分布中,每一次隨機操作都是相互獨立的,但是在PRD中,效果的幾率會在每一次沒有被觸發之後增加,這使得效果的觸髮結果不那麼極端(白牛1級無限推、PA無限閃避)。
直到下次觸發時所需攻擊次數。可以看到,偽隨機分布下,攻擊10次及以上都沒有觸發的幾率幾乎為零。圖片來源:dota2 wiki
一個事件,效果,發生的幾率在第N次成功觸發的幾率為P(N) = C × N,對於每一個沒有成功觸發的實例來說,PRD會通過一個常數C來增加下一次效果觸發的幾率。這個常數會作為初始幾率,比效果說明中的幾率要低,一旦效果觸發,計數器會重置,幾率重新恢復到初始幾率。
比如:
斯拉達的重擊有25%幾率對目標造成眩暈,那麼第一次攻擊,他實際上只有大約8.5%幾率觸發重擊,隨後每一次沒有成功的觸發實例都會增加大約8.5%觸發幾率,於是到了第二次攻擊,幾率就變成大約17%,第三次大約25.5%……以此類推,在一次重擊觸發後,下一次攻擊的觸發幾率又會重置到大約8.5%,那麼經過一段時間之後,這些重擊幾率的平均值就會接近25%。
基於PRD的效果使得多次觸發或多次不觸發的極端情況都變得罕見,這使得遊戲的運氣成分相對降低了一些。然而雖然理論上可行,但是在遊戲中玩家很難運用這個機制來「刻意」增加下一次觸發的幾率。要注意一點的是,如果這個實例根本就不可能觸發效果,那麼觸發幾率不會增加,也就是說,一個英雄反補或攻擊建築不會增加他下一次攻擊觸發的致命一擊幾率,因為致命一擊對反補和建築無效。
除了傷害格擋的裝備,在遊戲中列出來的幾率都是理論值,這個理論值會稍微比實際幾率要高。在以下表格中,P(T)表示理論幾率,P(A)表示實際幾率,C是PRD常數,最大N值是根據C × N大於1得到的最大N值(也就是一定會觸發的次數),平均N值是N的期望值,也就是N和概率的乘積之和,SD是N的標準差,為了作對比,SDt表示真隨機分布中N的標準差,使用N從1到264的簡單公式,顯然,他們都比PRD要高,這就是PRD相對於真隨機分布更能避免極端情況發生的依據。
============================分合鳥線================================
由於這些基於百分比的物品從使用真隨機分布改為了使用偽隨機分布(PRD),物品與類似的基於百分比的技能之間的疊加幾乎是相加的。[1]
為了解釋這一情況,我們可以想像一下一個英雄有兩個代達羅斯之殤時,由於一個代達羅斯之殤的理論致命一擊幾率為30%,由於使用PRD,第一次攻擊出現致命一擊的幾率大約為11.9%,第二次大約為23.8%,每一次攻擊都會增加致命一擊的幾率,直到第9次攻擊,因為此時必定會出現致命一擊。擁有第二個代達羅斯之殤時,每一次不出現致命一擊的攻擊都會增加這兩個代達羅斯之殤下一次攻擊出現致命一擊的幾率。但是,一旦這兩個代達羅斯之殤的其中一個出現致命一擊時,另一個沒有出現致命一擊的代達羅斯之殤PRD計數器不會被重置,因此會繼續增加下一次出現致命一擊的幾率。從總體上來看,如果繼續增加英雄擁有代達羅斯之殤的數量,出現致命一擊的幾率處於幾乎加法疊加的狀態。[1]雖然疊加情況是幾乎加法疊加的,但是比較罕見的情況是所有代達羅斯之殤在同一次攻擊中都出現致命一擊時,所有 代達羅斯之殤下一次攻擊出現致命一擊的幾率都會降到最低,因此下一次攻擊出現致命一擊就比較困難了。
同時致命一擊的多個實例是互相獨立的,因為在同一次攻擊中如果出現多次致命一擊實例時,只有倍數最高的才會生效(如果是有多個倍數數值相同的就會取其中一個)。比如,一個英雄持有一個 代達羅斯之殤和一個 水晶劍並且在同一次攻擊出現致命一擊,只有代達羅斯之殤的致命一擊才會生效,因為他的倍數更高。這對於英雄技能來說也是如此,比如一個擁有一個致命一擊技能的英雄持有一個提供致命一擊的物品。[2]
閃避和傷害格擋的疊加規則與致命一擊的相同,因為他們都是遵循偽隨機分布的。這也能解釋為什麼兩個圓盾看上去會比只有一個的時候更好,就是因為雖然格擋的傷害量不疊加,但是格擋的幾率疊加,使得格擋傷害的有效幾率幾乎變成了100%。與致命一擊類似,當同一次攻擊出現多個傷害格擋的時候,只有格擋數值最高的生效。此處遊戲內綠字是錯誤的,驗證方法是買6個圓盾扛一波兵。
如下機制使用偽獨立疊加:
- 傷害格擋
- 致命一擊
- 閃避
- 其他使用偽隨機分布的技能或物品:
4.不疊加
- 多個血精石不會同時增加點數,不會降低更多的復活時間。
- 多個碎顱錘或深淵之刃的重擊幾率不疊加 ,且不與重擊類技能疊加。
- 多個同樣的光環不會疊加。他們為單位提供buff,只有效果最強大的生效。一些物品會共享同一個特定光環的(王者之戒和弗拉迪米爾的祭品),這種情況下,只有弗拉迪米爾的祭品的魔法回復光環和護甲光環會生效。
- 唯一攻擊特效不疊加,除了一些例外。
5.一些持續類技能的疊加
如文章配圖所見,多個風暴之眼是完全疊加的。但不是所有技能都是這樣。
- 有些技能,多次施放並不會疊加效果,只會刷新持續時間,如上古巨神的迴音重踏造成的睡眠效果等。
- 有些技能,多次施法可以疊加層數並完全刷新持續時間,比如莉娜的熾魂,鋼背獸的鼻涕等。
- 有些技能,多次施法的效果相互獨立,各自計算持續時間,互不打擾,比如NEC的施虐之心,鋼背獸的針刺掃射和戰意等。
- 有些技能,多次施法不會疊加效果,也不會刷新持續時間,如螞蟻縮地對單位造成的傷害、上古巨神的星體遊魂、沙王的腐屍毒等。(感謝評論區朋友的提醒!)
6.補充幾點評論區提出的問題
1.什麼是攻擊速度?
請注意,攻擊速度在遊戲中表示為一個大於20的數值,用來衡量一個單位攻擊的頻率。
可是這與我們理解的「攻速」好像不太一樣啊?
首先我們要明確幾個名詞,基礎攻擊間隔(Basic Attack Time,BAT),基礎攻擊速度,額外攻擊速度(Increased Attack Speed, IAS),每秒攻擊次數AT,攻擊間隔。
BAT,不是互聯網三巨頭,在dota中,表示一個單位沒有任何攻擊速度加成的時候的默認攻擊間隔。比如某英雄的基礎攻擊間隔是1.7,說明他在沒有任何攻擊速度加成(包括敏捷加成,光環,技能,物品加成)的時候每1.7秒會攻擊一次。同理,如果是神諭者,那麼他會每1.4秒攻擊一次。BAT是英雄的固有屬性,不會因為「攻擊速度」的改變而改變,只能通過一些技能來改變(如煉金大招)。
基礎攻擊速度是100,對於每個單位來說都是這樣,下文會再次提到。
IAS,就是指通過技能物品光環敏捷等獲得的攻擊速度,比如一個銀月提供120點(額外)攻擊速度。
攻擊速度(Attack Speed, AS) = 基礎攻擊速度+額外攻擊速度。
攻擊間隔(也叫每次攻擊所需時間,每XX秒攻擊一次)=
或:
每秒攻擊次數=,或
上面兩個公式即我們在遊戲中攻擊力面板見到的數值。
酒仙的BAT為1.7,攻擊速度為189,則根據上述公式計算,1.7*(100/189)=0.899,與遊戲內數值符合的很好其實這個問題很好理解,當英雄攻擊速度為100的時候每1.7秒攻擊一次,那麼這個英雄攻擊速度為500的時候每多少秒攻擊一次?就是一個簡單的問題而已。
所以,攻擊速度確實是加法疊加的。而每秒攻擊次數,也是加法疊加的。
通過每秒攻擊次數的公式可以看到,只有IAS是變數,那麼這是一個關於IAS的正比例函數,所以是加法疊加。至於攻擊間隔,它是每秒攻擊次數的倒數,他是加法疊加的倒數,屬於反比例疊加(自己造的詞)。
如果一個單位的攻擊速度到達了600,那麼他再增加攻擊速度也不會對每秒攻擊次數產生任何改變,以為攻擊速度是600封頂的。也就是說,5個銀月和6個銀月在攻擊速度方面是一模一樣的。多出來的一個銀月完全沒有作用。那麼英雄的極限攻速是什麼呢?其實這是一個不嚴謹的說法,極限攻速就是600,而大家說的應該是英雄極限狀態下每多少秒可以攻擊一次。這個很好算,用上邊的公式,用該英雄的基礎攻擊間隔乘以100除以600就可以了。[4][5]
關於攻擊速度,推薦大家閱讀我的下一篇文章,在那裡有更詳細的介紹。
2.護甲減傷
每點護甲增加當前生命值6%的等效生命值,所以護甲收益是加法疊加的。
設護甲數值為n,則減傷公式為。
如果對這個公式有懷疑的話,可以去貼吧wiki上尋找相關資料。反正這個是對的。
這個公式也可以寫成,這顯然不符合乘法疊加規律。這也是反比例疊加(自己造的詞)。
3.移動速度
移動速度 = (基礎移動速度 + 具體值移動速度加成) × (1 + 百分比移動速度加成與減速的和),屬於複合疊加。如果其中控制一種速度不變(比如具體值速度不變,只改變百分比速度或百分比速度不變,只改變具體值速度),那麼屬於加法疊加。
4.PA出大炮
有百益而無一害。
事實上,PA出大炮並不會改變恩賜解脫觸發的幾率。[3]
因為高倍數的暴擊會覆蓋低倍數的暴擊,因此你可以這麼認為:大炮只負責在恩賜解脫沒暴擊的時候出暴擊。
[1]筆者仿照dota2流言終結者Ep.34的做法,測試了多組3大炮100次攻擊觸發的暴擊次數,得到的結果是平均觸發77次暴擊,也就是說3大炮觸發暴擊概率為0.77。而根據乘法疊加得到的概率為,低於0.77。
我錄製了一段視頻,大家可以直觀地感受這種疊加機制下的暴擊觸發幾率。
[[轉碼完畢]]
3大炮觸發暴擊幾率—在線播放—優酷網,視頻高清在線觀看 http://v.youku.com/v_show/id_XMTc1NjUwMTg2MA==.html
[2]中立生物中頭狼和巨狼的暴擊除外,因為它們採用真隨機分布
[3]筆者錄製了一段視頻,學習了恩賜解脫的幻影刺客裝備6個代達羅斯之殤,其中恩賜解脫觸發15次,代達羅斯之殤觸發82次,無暴擊3次。
[[ pa裝備6大炮—在線播放—優酷網,視頻高清在線觀看 http://v.youku.com/v_show/id_XMTc1NzIwMzQ0NA==.html ]]
需要注意的是,當代達羅斯之殤和恩賜解脫同時觸發時,雖然恩賜解脫的傷害會覆蓋掉代達羅斯之殤的傷害,但是仍然可以聽到代達羅斯之殤觸發暴擊時的音效——畢竟它也是實實在在地觸發了。那麼視頻中代達羅斯之殤一共觸發了多少次呢?答案是97次。觸發恩賜解脫的暴擊同時無一例外地觸發了代達羅斯之殤的暴擊。也就是說,出6把大炮觸發暴擊的幾率是97%左右——幾乎是100%。而根據真隨機分布得到的幾率是1-0.7^6=88%,同樣比97%低了10個百分點左右。
[4]有的時候攻擊力面板的攻擊速度會"超過"20-600的範圍,但是實際的攻擊速度依然遵循20-600的範圍,通過觀察每秒攻擊次數或每次攻擊間隔不難發現攻擊速度超過600,實際沒有任何變化
[5]V社在攻速這裡做的處理個人感覺十分失敗,他們為了能夠「更直觀」地反應不同英雄攻速的差異,所以把那些BAT不是1.7的單位的攻擊速度換算成1.7的單位來計算。舉個例子,一個BAT為0.85的單位,沒有額外攻擊速度(即只有100攻擊速度),那麼他會每多少秒攻擊一次呢?顯然是0.85秒。但是界面上會顯示其有200的攻擊速度,這是因為同樣是0.85秒攻擊一次,對於一個1.7秒BAT的單位來說,需要200攻擊速度來實現這個效果,所以攻擊速度面板就顯示該單位擁有了200攻擊速度。這種機制本意想讓英雄間攻擊速度的比較變的更加直觀,結果搞得越來越亂。想更詳細地了解攻擊速度的知識,參見DOTA2中攻擊速度的秘密 - 韓松的文章 - 知乎專欄
謝謝
資料來源: dota2 wiki
推薦閱讀:
※基輔Major中國區預選賽首日上半場-賽事回顧
※為什麼6.86開始戴澤一下就火了?
※The International 2017 - 小組賽 - 第二日回顧
※SL-I 邀請賽中國區預選賽第四日-賽事回顧