一刀9999!平砍連擊帶順劈產生的傷害數值是哪來的?

遊資網發表於2019-09-30
一刀9999!平砍連擊帶順劈產生的傷害數值是哪來的?


一刀9999裡的“非線性疊加”是啥玩意?線性又是哪條線?

都說遊戲玩的開心最重要。有些玩家,玩遊戲的目的是為了滿足社交需求,大家玩、他也跟著一起玩,最後搞得大家都很快樂;而有些玩家則不同,他們是為了滿足自己、在遊戲中有更高的追求。這些玩家追求更加合理的過關方式,更加正確的操作方法,更加準確的成功機率,以及更加精準的資料分析。

在日益複雜的遊戲系統當中,開發商已經不滿足於簡單的加減法公式,用攻擊力減去防禦力的方法已經過時,愈來愈多的增益效果(BUFF)和減益效果(DEBUFF)被新增到遊戲當中,越來越多的數字參與到傷害計算過程裡,遊戲的機制也變得越來越複雜……

當一個個增益效果在頭上亮起的時候,你使出渾身解數,一刀劈在怪物頭上,打出了99999點傷害!可你知道,這些增益效果到底為你增加了多少傷害,而哪些增益效果比較厲害,哪些增益效果其實只佔據了很小一部分?

雲玩家Hotspot的上一篇科普文章《玄不救非,氪不改命如何分清遊戲中的“真隨機”和“偽隨機”?》為大家科普了偽隨機和真隨機的區別,今天就來科普一下什麼是“線性疊加”和“非線性疊加”。

簡單易懂的“線性疊加”

當多個增益效果疊加在一起時,我們通常會使用“線性疊加”、“非線性疊加”來描述這些增益效果的疊加方式。在談及“非線性疊加”之前,讓我們好好了解一下相對更簡單、更容易理解的“線性疊加”。

所謂“線性疊加”(Linear Superposition),即是指兩個變數之間的關係遵從一次函式關係——而一次函式,也就是直線,在數學上可以理解為“一階導數為常數的函式”。“線性疊加”,也就是指“遵從直線的疊加方式”。在計算過程中,每次數值的疊加都會增加相同比例的量,譬如買一個橘子用三塊錢,買十個橘子就要用三十塊錢。

一刀9999!平砍連擊帶順劈產生的傷害數值是哪來的?

一般來講,遊戲中的“線性疊加”,指的就是“加法疊算”。比如一個角色的攻擊力為100點,路過的聖騎士為他施加了一個王者祝福,假設這個王者祝福的增益是線性疊加,令他獲得了20%的攻擊力提升,那麼這個角色的攻擊力就變為100+(100*0.2)=120點攻擊力。

此時又路過了一個假面騎士,為他施加了一個王者祝福2,令他獲得了30%的攻擊力提升,那麼這個角色的攻擊力就變為100+(100*0.2)+(100*0.3)=150點攻擊力。

舉個例子來說,《Fate/Grand Order》(《命運-冠位指定》)的同種增益效果和減益效果都是“線性疊加”的(同種增益加法疊算,不同種增益乘法疊算,比如[攻擊力BUFF+攻擊力BUFF]*紅魔放BUFF)。如果你為一名英靈疊加了兩層50%的攻擊力加成,那麼這名英靈造成的傷害就翻倍;而如果一名英靈獲得了兩層50%的受傷減免,那麼這名英靈的受傷減免將疊加至驚人的100%,也就是我們常說的:無敵!(這個無敵甚至不能被無敵貫通,真是太無敵了)。

一刀9999!平砍連擊帶順劈產生的傷害數值是哪來的?

而《Fate/Grand Order》中常見的低星英靈過高難本也正是依賴於“線性疊加”的機制,使用阿斯忒裡俄斯(小牛)的寶具降低BOSS的攻擊力、使用布狄卡的寶具提升防禦力等等操作,儘可能地使己方英靈達成“偽無敵”(減傷疊加至100%)的效果,免除BOSS對其造成的傷害。

“非線性疊加”是怎麼疊加的?

在理解了“線性疊加”以後,“非線性疊加”的意義就躍然紙上了。

從概念上來說,“非線性疊加”(Non-Linear Superposition)當然是指並非一次的函式關係——影象不是直線,變數不成正比。譬如,買一個橘子用三塊錢,買十個橘子時,老闆說:算你批發價,十個橘子只用二十五塊。那麼平均下來,你買一個橘子只用了兩塊五,低於一個橘子的單價三塊錢。對“十個橘子”的疊加態而言,每個橘子的疊加價格變少了,這就是一種“非線性”。

大部分遊戲中的“非線性疊加”相對來說更加容易理解一些。如果有部分數值宣告是“非線性疊加”的,那麼通常來說,這些數值是相互獨立的。與“線性疊加”相對的,“非限定疊加”的部分通常是“乘法疊算”。

還是拿數值最好理解、最好研究的兩款相似的遊戲《Dota2》和《英雄聯盟》來說。在《英雄聯盟》中,所有英雄都有“暴擊機率”這個屬性,而購買“綠叉”、“電刀”、“無盡”等裝備將會為英雄疊加暴擊機率。

一刀9999!平砍連擊帶順劈產生的傷害數值是哪來的?

在《英雄聯盟》中,“暴擊機率”是“線性疊加”的。綠叉提供30%暴擊,無盡提供25%暴擊。很容易理解,如果一個英雄同時裝備綠叉和無盡,那麼他的暴擊機率將會疊加至30%+25%=55%。

而在《Dota2》中,“暴擊率”是“非線性疊加”的。譬如幻影刺客的大招“恩賜解脫”擁有15%機率造成200%/325%/450%傷害,而道具“代達羅斯之殤”提供30%機率造成235%傷害。在“非線性疊加”的情況下,幻影刺客裝備代達羅斯之殤進行一次普通攻擊時,將會分別對“恩賜解脫”和“代達羅斯之殤”的暴擊機率進行一次獨立計算。

一刀9999!平砍連擊帶順劈產生的傷害數值是哪來的?

也就是說,幻影刺客的一次普通攻擊將會發生四種情況:

1.觸發“恩賜解脫”的暴擊、沒有觸發“代達羅斯之殤”;

2.觸發“代達羅斯之殤”的暴擊、沒有觸發“恩賜解脫”;

3.同時觸發“恩賜解脫”和“代達羅斯之殤”的暴擊;

4.沒有觸發“恩賜解脫”和“代達羅斯之殤”任何一方的暴擊。

顯而易見,前3種情況都能算作觸發暴擊,而沒有觸發暴擊的只有第4種。也就是說,幻影刺客的暴擊率被提升至了P(A)=1-(1-0.15)*(1-0.3)=40.5%。

(題外話,4種情況中,其中1和2的情況比較好理解,各自發生了一次200%/325%/450%倍率和235%倍率的暴擊。而3的情況,同時觸發兩種暴擊時,會採用倍率較高的那一方來計算這次暴擊。也就是說,PA出大炮的收益並非簡單使用暴擊概率模型就能推算得出。具體的收益演算法我們今後有空再來分析。)

到了這一步,就能很清楚地看出,幻影刺客的暴擊率並非簡單的15%+30%=45%,而是更低的40.5%。代達羅斯之殤所提供的暴擊率實際上被“稀釋”了,並沒有發揮出它應有的30%效果。

在船長“昆卡”的水刀還沒被削弱之前,中單船長通常堆疊2~3件代達羅斯之殤作為暴擊輸出裝備。2件代達羅斯之殤“非線性疊加”的暴擊率為51%(虧損9%),3件代達羅斯之殤“非線性疊加”的暴擊率為65.7%(虧損24.3%)。所以到了版本末期,船長很少補出第三把大炮,而是轉出狂戰斧、輝耀、聖劍等其他屬性的裝備作為傷害補償。

順帶一提,類似船長的水刀、狂戰斧的濺射、猛獁的授予力量等一系列“分裂”效果,是線性疊加的,也就是可以簡單地做加法計算。

不僅暴擊率如此,閃避率也是如此。

幻影刺客(為什麼每次談及數值的話題總能用上這個神奇的女人?)的被動“魅影無形”滿級時能夠提供50%閃避機率,道具“蝴蝶”提供35%閃避機率,在被普通攻擊命中時,需要獨立計算雙方各自的閃避——同樣的,幻影刺客的閃避機率被提升至P(B)=1-(1-0.5)*(1-0.35)=67.5%,蝴蝶提供的35%閃避被“稀釋”到了17.5%,幾乎虧損了一半的收益。這也是為什麼幻影刺客通常不出大炮和蝴蝶的原因。

一刀9999!平砍連擊帶順劈產生的傷害數值是哪來的?

提到“閃避”,就不得不提“閃避”的宿敵“金箍棒”。在某次版本更新時,金箍棒的效果從100%必中削弱至75%,使得金箍棒與閃避的剋制公式更加撲朔迷離。

一刀9999!平砍連擊帶順劈產生的傷害數值是哪來的?

在裝備金箍棒的英雄分別攻擊裝備蝴蝶的普通英雄、沒有裝備蝴蝶的幻影刺客和裝備蝴蝶的幻影刺客時,各自的閃避機率分別為8.75%、12.5%和16.875%。蝴蝶在面對金箍棒時效果從35%降低至8.75%和4.375%,甚至還不如輝耀附加的閃避效果,可以說是價效比極低了。

除了《Dota2》之外,像《最終幻想14》中易傷減益與其他增益之間的效果提升也是非線性疊加的。譬如忍者的背刺提供10%易傷效果,換算得10%傷害增加;龍騎士的龍眼效果會使目標獲得5%傷害增加,那麼同時獲得龍眼增益、背刺增益的角色將會獲得1.05*1.10=1.155倍傷害增加,比1+0.1+0.05=1.15還高了0.05倍率。

一刀9999!平砍連擊帶順劈產生的傷害數值是哪來的?

非常好懂的一點在於,由於是乘法疊算,因此在倍率低於100%時(常見於命中率、閃避率、暴擊率等上限100%的數值),“非線性疊加”的效果是越疊越差的,也就是常說的“邊際效益遞減”;反之在倍率高於100%時(常見於傷害增加等),“非線性疊加”的效果是越疊越好的,即“邊際效益遞增”。

“邊際效益”與“等比血量”的換算

有一點要提及的是,“邊際效益遞減”也並不是總是等同於“效益遞減”。

還是拿《Dota2》和《英雄聯盟》來舉例。早先,在《Dota2》的護甲減傷公式還沒有徹底脫離war3公式之前,《Dota2》和《英雄聯盟》的護甲減傷公式分別是:0.05*護甲/(1+0.05*護甲),以及護甲/(100+護甲)。

換算可得,當護甲分別為20和100時,護甲所提供的物理減傷達到50%。可以推算得《英雄聯盟》的護甲的效果和5倍《Dota2》護甲是等值的,從《Dota2》公式中得出的結論與《英雄聯盟》相同,因此之後將省略《英雄聯盟》部分的推算。

從公式上就可以看出護甲減傷是服從“非線性疊加”,而減傷百分比的倍率低於100%,很明顯護甲收益是“邊際效益遞減”的。當護甲為0時提供0%減傷,當護甲為3時提供13%減傷,約等於每點護甲提供4%減傷;當護甲為87時提供81.31%減傷,當護甲為90時提供81.82%減傷,約等於每點護甲提供了0.16%減傷。

隨著護甲不斷提升,每點護甲提供減傷百分比的提升越來越少,疊護甲似乎效果越來越小……但是!雖然護甲減傷的收益在遞減,但是換算成等比血量的提升卻是相同的。根據護甲減傷公式可得每1點HP變為1/(1-0.05*護甲/(1+0.05*護甲)),等價於1*(1+0.05*護甲),即無論當前護甲有多少,每1點護甲都能提供5%的等比血量提升(《英雄聯盟》中看做1點護甲提供1%等比血量提升)。

舉個例子,想要達到98%減傷,需要980護甲;而想要達到99%減傷,則需要驚人的1980護甲。儘管看似這多出來的1000護甲只提供了1%的減傷,但仔細計算一下就能發現,這1000護甲能讓英雄的“血量”翻一倍。假設一個單位有2點血,原本需要100傷害(經過98%減免後為2點)才能殺死他,現在卻需要200傷害(經過99%減免後為2點)。

也就是說,儘管護甲減傷是非線性疊加,但是護甲所提供的等比血量卻是服從線性疊加的。除非對方使用魔法傷害攻擊(或者真實傷害),否則在面對相同的物理傷害時,無腦堆疊護甲幾乎不會是一個錯誤的選擇。

以上結論,目前對《英雄聯盟》、以及其他使用相似公式的遊戲(比如《魔獸爭霸》)仍舊適用。而對新版本的《Dota2》已不再適用,因為《Dota2》在去年曾經修改過一次護甲公式,目前的護甲減傷公式為:0.052*護甲/(0.9+0.048*護甲)。

每1點HP則根據公式修改而變為1/(1-0.052*護甲/(0.9+0.048*護甲)),等價於(0.9+0.048*護甲)/(0.9-0.004*護甲),不再服從於線性疊加,想要計算也變得相對困難起來。下圖以及等比血量公式均來自於貼吧。

一刀9999!平砍連擊帶順劈產生的傷害數值是哪來的?

不難看出,新版的護甲減傷公式更加“奔放”,在護甲達到30時、再向上堆疊護甲將會獲得巨大的減傷和等比血量提升。當護甲達到210時,等比血量提升甚至達到了驚人的18200%;當護甲達到225時,函式計算結果趨向正無窮,也就是物理免疫——這是舊版本公式達不到的一個巔峰(儘管這個巔峰幾乎沒有英雄能夠達到)。

一刀9999!平砍連擊帶順劈產生的傷害數值是哪來的?

護甲公式的更改使得高護甲單位和高護甲裝備收益頗大,也促使了炎陽紋章這類裝備的崛起。在TI9的比賽上,OG體系使這件默默無聞的裝備聲名鵲起,通過堆疊護甲促成“超級核心”的打法也成為TI賽場上的主流;而“身懷六甲”的選手則早早淘汰出局。

相信在TI比賽結束後的第一個Major中,更多有關護甲的研究會引領比賽的節奏吧。

(圖片來源於網路)

作者:緋夜氏  
來源:雲玩家hotspot
原地址:https://mp.weixin.qq.com/s/f9KB20Xk_9q2Z4bNCV4EQg

相關文章