Dota 2 攻擊速度公式推導(dǎo)
如何定義
每個(gè)英雄的攻擊有快有慢,必須定義一個(gè)標(biāo)準(zhǔn)值來衡量他們的相對快慢,這樣才能夠進(jìn)行比較。
定義攻擊間隔1.7秒作為一個(gè)標(biāo)準(zhǔn)值,也就是本次攻擊到下次攻擊之間間隔的時(shí)間。
定義當(dāng)攻擊間隔為1.7秒時(shí)攻擊速度為100,可得

在這個(gè)公式中,如果實(shí)際攻擊間隔縮短為50%也就是0.85秒,那么攻擊速度就是200,意思就是加倍了,這很容易理解。
這樣定義之后,通過調(diào)整攻擊間隔,每個(gè)英雄的攻擊速度也會(huì)不同,相互之間就可以進(jìn)行比較了,如果兩個(gè)英雄的攻擊速度相同,那攻擊速度就是相同的。
每個(gè)英雄都有了自己的固有攻擊間隔和對應(yīng)的固有攻擊速度。

這樣我們就可以將通過敏捷或物品增加的攻擊速度和英雄固有攻擊速度分開了,我們定義增加100攻速的意思就是攻速提升100%,增加50攻速的意思就是攻速增加50%,可得

這樣定義之后每個(gè)英雄增加相同的攻速所帶來的效果是不同的,這取決于英雄的固有攻擊速度,你的固有攻擊速度高你的收益就更大。我們再將這個(gè)公式完善一下,可得

因?yàn)橛⑿劢榻B中提供的不是固有攻擊速度,而是固有攻擊間隔,利用公式將固有攻擊速度轉(zhuǎn)為英雄固有攻擊間隔代入后,可得

化簡后,可得

那么,知道當(dāng)前攻擊速度也可以求得當(dāng)前攻擊間隔,可得

然后將當(dāng)前攻擊速度用英雄固有攻擊間隔替換,可得

化簡后,可得

游戲驗(yàn)證



發(fā)現(xiàn)錯(cuò)誤
之前說了,已經(jīng)通過游戲驗(yàn)證了公式的通用性,并沒有發(fā)現(xiàn)問題。直到我選出了主宰,發(fā)現(xiàn)數(shù)據(jù)怎么都對不上,只有憑空多出10敏捷的情況下才能完美對上數(shù)據(jù),我還一度以為這是一個(gè)BUG。后來發(fā)現(xiàn)每個(gè)英雄的固有(基礎(chǔ))攻擊速度和固有攻擊間隔并不是如一開始推導(dǎo)的那個(gè)公式:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

英雄的固有(基礎(chǔ))攻擊速度和固有攻擊間隔相乘不是恒定的170,有幾個(gè)英雄后面的系數(shù)不是100,他們是:

解決辦法也很簡單,只要將公式中的數(shù)值100改成這些英雄的固有(基礎(chǔ))攻擊速度就可以了。

那么為什么要這么設(shè)計(jì)呢?
我們畫一個(gè)函數(shù)圖像就明白了:

我們假設(shè)主宰原來是 f 函數(shù),如果只通過基礎(chǔ)攻擊間隔改動(dòng),那么結(jié)果就是 g 曲線,會(huì)發(fā)現(xiàn)整體下移了,意味著主宰的整個(gè)升級周期都會(huì)受到影響;而如果不改動(dòng)基礎(chǔ)攻擊間隔而改動(dòng)基礎(chǔ)攻擊速度,我們得到了h函數(shù),h函數(shù)和 f 函數(shù)有一個(gè)重合點(diǎn) – 初始點(diǎn)0級的時(shí)候,意思就是說主宰的前期和以前一樣,但是削弱了他的后期攻速提升表現(xiàn),增長變緩了,我想這就是這樣設(shè)計(jì)的原因吧。