【亂斗數(shù)據(jù)】英雄大招充能比率的計算方法——由拜倫的暗改談起
前情提要:荒野亂斗4.27更新暗改部分分析
(haaan佬就憑著一點wiki數(shù)據(jù),分析的七七八八了。畢竟是大神玩家,我這種還要借助datamine的三腳貓根本比不了,大家想學點對局真本事的可以關注一下他~)

先上結論:P=(M*D/400000)*100%
其中M為大招充能乘數(shù),各個英雄之間不同,同一英雄的普攻和大招之間通常也不同
D為英雄1級攻擊傷害,只看英雄的1級面板數(shù)據(jù),其它因素對此變量無影響
400000為大招充能總量,所有英雄都是一樣的,可以理解成大招鍵是一個總值40w的分數(shù)條,從0開始積累,當分數(shù)大于等于40w時英雄就可以使用大招了
P為大招充能比率,使用M(普攻)計算P時,將100%/P的結果進一位取整,即為大招充能所需普攻數(shù)量(Q)
我們不難看出P與M、P與D之間呈正相關,而P與Q之間呈負相關

案例分析:結合實際的平衡性調整,分析產(chǎn)生“暗改”的原因
首先要明確的一點是,對玩家來說,真正有用的是英雄1級攻擊傷害(D)和大招充能所需普攻數(shù)量(Q)(此處不討論自動充能、受擊充能等特例,所以夸張點說,P=25%和P=33.3%沒有區(qū)別,反正都是四下普攻)
但這里的問題是D能夠影響P,進而P可能會影響Q。所以單獨對D進行調整的時候,有時就不經(jīng)意影響到了Q。M在這里就起到了很好的作用,想要對D、Q其一調整,而使另一個保持不變,通過調整M來平衡就行了
開頭拜倫的“暗改”和最近雅琪的“暗改”的原因也就很明顯了:對D進行調整時沒有同步調整M,導致Q的值改變
先看雅琪的例子:
M(雅琪)=79? ?D(調整前)=1280? ?D(調整后)=1160
解得P(調整前)=25.28%? ?P(調整后)=22.91%,因此Q(調整前)=4? ?Q(調整后)=5
比起“暗改”說是“忘記回調”可能更為恰當……
關于haaan佬指出的拜倫暗改也完全可以解釋了:
M(12月)=112? ?M(2月)=117? ?M(4月)=118? ?M(6月)=131
D(12月)=400? ?D(2月)=380? ?D(4月)=340? ?D(6月)=340
P(12月)=11.2%? ?P(2月)=11.115%? ?P(4月)=10.03%? ?P(6月)=11.14%
Q(12月)=9? ?Q(2月)=9? ?Q(4月)=10???Q(6月)=9
4月版本中大幅減少了D,卻幾乎沒有增加M,才造成了Q的增加
而拜倫每發(fā)子彈造成三次傷害,一套下來剛好9次,所以效果就格外明顯
這種情況處理方法也比較簡單,增加M就行了,M并不是游戲內的可見數(shù)據(jù)(安裝包里有),也無需在更新日志里進行說明,之前波克、沙迪的大招充能調整就是在保證D不變的情況下,調整M來影響Q。
而在之前的諸多版本中,有細心的朋友可能注意到有些英雄的P在不影響Q的情況下小幅度增加/減少,這就是對英雄進行平衡性調整的時候帶來的影響。而一般情況下,對于沒有額外獲取大招充能方式的英雄來說,這種小幅度的調整帶來的影響也是很小的,可以忽略不計
現(xiàn)存的史魁克大招對大招充能bug就非常奇怪了,本來應該按1級史魁克的大招傷害計算,但不知道為什么把各種加成(拉夫補給/老八傷害放大器/吃雞能量塊)所帶來的傷害增益也算進去了

特例說明
固定充能比率(科萊特)
不論對面是什么樣的英雄,科萊特的單發(fā)充能比率都固定為25%,所以普攻四下一大,大招來回兩人一大。這點我想玩過幾局就會發(fā)現(xiàn)的
自動充能(達里爾、艾德加、梅格機甲形態(tài))
也能用上述公式計算,不過此時D固定為100,由M決定P
M(達里爾/艾德加)=132? ?M(梅格機甲)=800
解得P(達里爾/艾德加)=3.3%? ?P(梅格機甲)=20%
因此大招充能所需時間T(達里爾/艾德加)=30.3s? ?T(梅格機甲)=5s
艾德加一妙正如同其描述一樣,充能比率提高525%,持續(xù)4s
那么這個描述就可以改成“艾德加每秒獲得20.625%的大招充能,持續(xù)4秒”
總共是82.5%的充能,即使用一妙能讓艾德加的大招充能時間縮減至9.3s,相當于快了3倍多
范圍內自動充能(阿渤圖騰、巴茲)
一個是范圍內友方,一個是范圍內敵方
M(阿渤圖騰)=200? ?M(巴茲)=270
解得P(阿渤圖騰)=5%? ?P(巴茲)=6.75%
因此單人大招充能所需時間T(阿渤圖騰)=20s? ?T(巴茲)=14.8s
現(xiàn)版本阿渤圖騰1000血,每秒掉50,最多也只能存在20s,剛好能充滿一個大招
巴茲具體來說是在其充能范圍內的每敵方英雄每秒提供6.75%的大招充能,敵人越多的話充能就越快(所以單雞的組隊巴茲很快就能有大招)
移動時自動充能(麥克斯一輝)
機制比較特殊,不能代入上面的公式,沒找出來對應的算法:(
6月削過以后現(xiàn)在純靠一輝65s一個大,要注意的是一輝吃的是速度判定,所以麥克斯自身的大招和斯圖一妙這種提升速度的加成,也會稍微增強一輝的充能效果
受擊充能(挨打F4)
機制也比較特殊,現(xiàn)版本除了跟所受傷害有關以外,跟英雄各自的最大血量也是有關的
又沒找出來對應的算法:(所以大招充能所需時間在這四個英雄之間也有區(qū)別
不細算了,你玩?zhèn)€肉不會指望著全靠賣血來充能吧
上個版本我記得是2w傷害換一個大,這個版本算不出來但是可以明顯看出的是最大血量越低的英雄,充能所需要的傷害越少

“0.1+0.2”的大難題
看到這里有些人可能會發(fā)問:“為什么還要通過公式計算這么復雜呢?直接規(guī)定P不好嗎?”
我以一個編程門外漢的角度來嘗試解答一下。
英雄的碰撞體積,子彈寬度,子彈速度,裝彈速度,攻擊范圍等等……對戰(zhàn)中的一切都可以用數(shù)據(jù)來量化,而數(shù)據(jù)的多樣化才能創(chuàng)造不同的英雄,如果只是用整數(shù)描述這些的話,未免太過單調,而且也不符合實際對戰(zhàn)中的應用。
那使用小數(shù)不就好了?但是使用二進制的計算機和(普遍來說)使用十進制的人類是不一樣的。十進制小數(shù)是無法精確轉換為二進制的——這導致了計算機運算中的“浮點運算誤差”
使用excel計算的時候一般會在外面套一個round函數(shù)(強制進位),但是這種做法屬于亡羊補牢,并沒有完全消除誤差
那我們何不利用整數(shù)值來規(guī)定小數(shù),以避免這種誤差呢?
再結合大招充能的含義,利用傷害D、充能乘數(shù)M、充能總量40w來計算充能比率P就顯得十分合理簡潔了
充能乘數(shù)M的存在,也方便平衡性調整時在不改變傷害D的情況下,調整充能比率P
反過來,如果調整傷害D的時候,忽視了對充能乘數(shù)M進行平衡,就會造成充能比率P的異常變動——也就是大家說的“暗改”了
(沒有阿渤特定皮傷害bug離譜,真的是“錯誤地引用了布洛克的爆炸范圍”,震驚)
所以雖然這些對戰(zhàn)數(shù)據(jù)對我們來說可以用小數(shù)來描述,但是計算機的話,可以說是必須轉換為整數(shù),才能保證不會出錯。通常在百科類網(wǎng)站(比如fandom)上面看到各種整數(shù)型數(shù)據(jù),也是因為安裝包內本身就是這樣的

回顧與小結
“數(shù)字可不會說謊”,bug又不會憑空出現(xiàn),本專欄是我在個人認知范圍內對大招充能機制進行的解析,一直很好奇之前拜倫“暗改”和這次雅琪“暗改”的原因,加上個人覺得之前玩家社區(qū)內關于大招充能機制的概括“只有佩佩和里昂是按傷害判定,其他固定比例”之類的有點太模糊,終于決定自己做點研究:)
因為充能乘數(shù)M表面上是不可見數(shù)據(jù),本專欄并不提倡玩家進行理論上的計算。想要解釋的是“bug是如何產(chǎn)生的”以及“官方如何進行平衡性調整”,也算是給對游戲機制有所好奇的玩家作一點參考吧
文 /?EXiT
Fix your game, Bug Stars!