一、減法公式
減法公式,通常設(shè)定為 己方造成傷害 = 己方攻擊 - 對(duì)方防御。
為了便于分析將模型簡(jiǎn)化,未考慮其他類型的攻擊和防御形式,但是基本的原理是一致的,相關(guān)變量如下:
Dam、Dam*:己方造成的傷害、對(duì)方造成傷害;
Atk、Atk*:己方攻擊、對(duì)方攻擊;
Def、Def*:己方防御、對(duì)方防御;
HP、HP*:己方生命值、對(duì)方生命值。
那么采用減法公式時(shí),傷害的表達(dá)式通常為 Dam = Atk - Def* 和 Dam* = Atk* - Def。
假定雙方的攻擊速度一致,均為每秒1次。
則每秒造成傷害DPS = Dam、DPS* = Dam*。
在此次戰(zhàn)斗中,己方存活時(shí)間Time = HP / DPS* = HP / ( Atk* - Def)( 暫不考慮Atk* < Def的情況 )。
這里假設(shè)己方防御Def為0的話,那么存活時(shí)間Time = HP / Atk* ,也就是說(shuō)由于防御Def的存在,己方的存活時(shí)間增加了,等效為己方生命值增加,可以用有效生命值EHP來(lái)表征等效防御之后的生命值,EHP = Time × Atk* = HP / ( 1 - Def / Atk* )。
那么,由防御所提升的生命值DefHP = EHP - HP = HP × Def / ( Atk* - Def ),在HP、Atk*不變的情況下,Def與DefHP之間的關(guān)系曲線如下:

可以看出來(lái),在采用減法公式時(shí),隨著防御Def的增加,其帶來(lái)的收益DefHP也是呈指數(shù)增加的,且在己方防御Def無(wú)限接近對(duì)方攻擊時(shí),提升的生命值DefHP接近無(wú)窮大。這就是減法公式帶來(lái)的第一個(gè)問(wèn)題,當(dāng)Def等于Atk*時(shí),Def帶來(lái)的收益為無(wú)窮大,即使承受再多次數(shù)的攻擊,由于不破防,受到的傷害都是0。
雙方的戰(zhàn)斗力可以通過(guò)兩者在一場(chǎng)戰(zhàn)斗中的存活時(shí)間進(jìn)行對(duì)比,如果己方存活時(shí)間比對(duì)方存活時(shí)間長(zhǎng),即Time > Time*,則認(rèn)為對(duì)方角色先死亡,己方的戰(zhàn)斗力比對(duì)方強(qiáng),也就是HP / ( Atk* - Def )> HP* / ( Atk - Def* )。
僅考慮攻擊大于防御的情況下,不等式可以轉(zhuǎn)化為HP ×( Atk - Def*)>HP* × ( Atk* - Def ),也因此可以用HP ×( Atk - Def*)即HP*DPS來(lái)評(píng)價(jià)戰(zhàn)斗力,戰(zhàn)斗力越高,存活時(shí)間越長(zhǎng)。這就導(dǎo)致了減法公式的第二個(gè)問(wèn)題,己方的戰(zhàn)斗力評(píng)價(jià)Pow = HP ×( Atk - Def*),居然跟對(duì)方的防御Def*有關(guān),導(dǎo)致無(wú)法準(zhǔn)確的確定玩家的戰(zhàn)斗力水平,而且不便于對(duì)多個(gè)游戲角色進(jìn)行戰(zhàn)斗力平衡。
當(dāng)然采用減法公式也有一些好處,比如:
1、公式非常簡(jiǎn)單明了,玩家每提升1點(diǎn)防御,都會(huì)對(duì)應(yīng)減少1點(diǎn)傷害;
2、類似防御之類的屬性,其價(jià)值隨著屬性的提高而增加,如果設(shè)計(jì)成消費(fèi)類的商品,玩家消費(fèi)越多提升越明顯,能夠激勵(lì)更多消費(fèi);
3、減法公式中戰(zhàn)斗力與戰(zhàn)斗對(duì)象有關(guān)系,可能出現(xiàn)a強(qiáng)于b,b強(qiáng)于c,而c又強(qiáng)于a 的情況,能夠據(jù)此設(shè)計(jì)一些元素或職業(yè)克制的情景。
二、乘法公式
乘法公式,通常設(shè)定為 己方造成傷害 = 己方攻擊 × ( 1 - 對(duì)方傷害減免)
Drr、Drr*:己方免傷、對(duì)方免傷,表示減免的傷害百分比
則DPS = Dam = Atk ×( 1 - Drr*? )
己方存活時(shí)間Time = HP / DPS* = HP / Atk* / ( 1 - Drr )
對(duì)方存活時(shí)間Time* = HP* / Atk / ( 1 - Drr* )
有效生命值EHP = Time × Atk* = HP / ( 1 - Drr )
如果Time > Time*,即HP / Atk* / ( 1 - Drr )> HP* / Atk / ( 1 - Drr* ),說(shuō)明己方戰(zhàn)斗力較強(qiáng),可以推導(dǎo)出乘法公式下的戰(zhàn)斗力評(píng)價(jià)為Pow = HP × Atk / ( 1 - Drr )= EHP × Atk。
很明顯發(fā)現(xiàn),在乘法公式下EHP和Pow都是由自身屬性決定的,與其他角色無(wú)關(guān),因此能夠非常準(zhǔn)確的判斷角色的戰(zhàn)斗力。
但是乘法公式同樣也會(huì)帶來(lái)一些問(wèn)題,首先Drr作為一個(gè)百分比屬性,存在增長(zhǎng)的上限100%,而且隨著Drr的增加,所帶來(lái)的EHP、Pow收益是急速增加的,如下圖所示:


當(dāng)Drr接近100%時(shí),帶來(lái)的收益接近無(wú)窮大。
考慮到這兩點(diǎn)原因,通常不會(huì)將免傷率Drr直接作為角色的屬性,而是通過(guò)防御Def進(jìn)行換算得來(lái)。
根據(jù) EHP = HP × 1? / ( 1 - Drr )和 Pow = HP × Atk × 1? / ( 1 - Drr ),
因?yàn)? - Drr < 1,得出1? / ( 1 - Drr )>1,所以通常的做法是:
設(shè)定1? / ( 1 - Drr )=? 1 + Def? /? f(lv) ,其中f(lv)為一個(gè)等級(jí)相關(guān)的函數(shù),作用后續(xù)分析。
則Drr = Def / ( Def + f(lv) )
EHP = HP × ( 1 + Def? /? f(lv) )
Pow = HP × Atk × ( 1 + Def? /? f(lv) )
可以看到,EHP、Pow與Def的關(guān)系是線性的,即在HP、Atk和等級(jí)不變的情況下,每提升1點(diǎn)Def,對(duì)應(yīng)的EHP、Pow將會(huì)獲得等比例的提升,對(duì)于屬性的價(jià)值就可以精確的把控。
接下來(lái),假設(shè)不引入f(lv),設(shè)定1? / ( 1 - Drr )=? 1 + Def,
則Drr = Def / ( Def + 1 )
EHP = HP × ( 1 + Def? )
Pow = HP × Atk × ( 1 + Def )
隨著Def的增加,其所帶來(lái)的Drr的收益越來(lái)越小,如下圖所示:

免傷率隨著防御的提升,快速接近100%,然后增速逐漸變緩,會(huì)讓玩家產(chǎn)生一種Def的收益逐漸減小的錯(cuò)覺,但是實(shí)際上EHP、Pow依然與Def呈線性關(guān)系,Def收益并沒有變化。
因此需要給分母加上一個(gè)函數(shù),使Drr = Def / ( Def + f(lv) )。
這樣就能夠減緩免傷率的增長(zhǎng)速度,保證在游戲等級(jí)范圍內(nèi),免傷率一直維持在一個(gè)便于玩家理解的數(shù)值范圍,且逐漸增加,而之所以采用與角色等級(jí)相關(guān)的函數(shù)f(lv),也是為了使防御能夠隨著等級(jí)的提升而無(wú)限提升下去。
但是加上這個(gè)等級(jí)相關(guān)的函數(shù)之后,也會(huì)帶來(lái)另外一個(gè)問(wèn)題,即隨著等級(jí)的提升,增加同樣的戰(zhàn)斗力Pow,需要的屬性Def是同步增加的,也就是說(shuō)隨著等級(jí)提升防御屬性居然貶值了。
總的來(lái)看兩種公式都有各自的優(yōu)劣,需要結(jié)合游戲?qū)嶋H的類型,期望做出的玩家體驗(yàn)等進(jìn)行選擇。