游戏设计---游戏中战斗力计算方法(整理)
游戲設(shè)計(jì)---游戲中戰(zhàn)斗力計(jì)算方法(整理)
一、總結(jié)
一句話總結(jié):用初始戰(zhàn)斗力除以各項(xiàng)初始屬性得到各屬性的權(quán)重,然后加權(quán)得出戰(zhàn)力計(jì)算公式
?
1、設(shè)計(jì)戰(zhàn)斗力計(jì)算公式的兩種思路?
主要是以屬性投放為基礎(chǔ)和真實(shí)戰(zhàn)斗狀況模擬兩種思路
屬性投放為基礎(chǔ):用初始戰(zhàn)斗力除以各項(xiàng)初始屬性得到各屬性的權(quán)重(權(quán)重得到可以通過不同屬性比例砍倒對方的時(shí)長相同來確定,其實(shí)也就是下面的真實(shí)戰(zhàn)斗狀況模擬為基礎(chǔ)),然后加權(quán)得出戰(zhàn)力計(jì)算公式
真實(shí)戰(zhàn)斗狀況模擬為基礎(chǔ):用多個(gè)實(shí)例
?
2、怎么解決屬性投放為基礎(chǔ)的戰(zhàn)力計(jì)算方式的“不能精確反應(yīng)玩家的真實(shí)戰(zhàn)斗力”的缺點(diǎn)?
通過 戰(zhàn)力碾壓公式來保證高戰(zhàn)力玩家的戰(zhàn)斗能力
低戰(zhàn)VS高戰(zhàn):低戰(zhàn)玩家對高戰(zhàn)玩家有效輸出按戰(zhàn)力差縮減
高戰(zhàn)VS低戰(zhàn):高戰(zhàn)玩家對低戰(zhàn)玩家有效輸出按戰(zhàn)力差增加
?
3、真實(shí)戰(zhàn)斗狀況模擬為基礎(chǔ)的戰(zhàn)力計(jì)算方式中,怎么知道哪個(gè)玩家戰(zhàn)力強(qiáng)?
兩個(gè)人互砍,誰先砍死對方,或者說誰砍死對方用的時(shí)間少
其實(shí)也就是戰(zhàn)斗時(shí)長
?
4、真實(shí)戰(zhàn)斗狀況模擬為基礎(chǔ)的戰(zhàn)力計(jì)算方式中,最重要的兩個(gè)屬性承受傷害的能力def,制造傷害的能力atk是靜態(tài)的還是動態(tài)的?
都是動態(tài)的
承受傷害的能力def,制造傷害的能力atk,都是動態(tài)的,這兩個(gè)數(shù)值的結(jié)果會隨著遇到的對手變動而變動。
?
5、在屬性投放為基礎(chǔ)的戰(zhàn)力計(jì)算方式中,怎么得到每個(gè)屬性的權(quán)重?
采用分別遞增兩個(gè)不同的屬性,其它屬性一樣,讓他們戰(zhàn)斗,讓他們同歸于盡,就能知道兩個(gè)屬性之間的對應(yīng)的比例關(guān)系。
?
說明:我方敵方對應(yīng)行是互為敵手的,而且在這個(gè)模擬過程中,結(jié)果全部是同歸于盡(滅敵時(shí)間一致)
兩方的屬性雖然不同,但是干掉對方的時(shí)間是一致的,這說明我們可以近似的認(rèn)為防御2的我方和生命25敵方戰(zhàn)斗力相同;防御5的我方和生命50的敵方戰(zhàn)斗力相同。
?
6、在最簡單的戰(zhàn)力計(jì)算模型中(只有HP和APK兩個(gè)屬性),戰(zhàn)力的計(jì)算公式是怎樣的?
HP*APK大著戰(zhàn)力大
?
?
二、策劃基本知識:游戲中戰(zhàn)斗力計(jì)算方法
文無第一,武無第二,嚴(yán)格意義上來講戰(zhàn)力的評估說到底就是反應(yīng)參評對象戰(zhàn)斗勝率的一個(gè)指標(biāo),誰的贏面更大,那么他就應(yīng)該擁有更加高的戰(zhàn)斗力數(shù)值。
但是這個(gè)參考指標(biāo)只能在一定程度下影響戰(zhàn)斗的最后結(jié)果,而實(shí)際的結(jié)果還要看實(shí)際操作對象的差別。因?yàn)閼?zhàn)斗情況復(fù)雜多樣,在游戲設(shè)計(jì)中,戰(zhàn)力的指標(biāo)往往無法精確定位為玩家真實(shí)戰(zhàn)斗力,當(dāng)下大部分游戲中玩家的戰(zhàn)力高低實(shí)際上是反應(yīng)的玩家所獲取的戰(zhàn)斗數(shù)值(攻擊,防御等)的綜合指標(biāo)。
總結(jié)來看,游戲數(shù)值中的戰(zhàn)斗力數(shù)值需要滿足的需求如下(根據(jù)側(cè)重點(diǎn)不同而選擇優(yōu)先滿足不同的需求,一般情況下戰(zhàn)力數(shù)值很難完美滿足所有要求):
戰(zhàn)斗參考:好的戰(zhàn)力評估數(shù)值,應(yīng)該最大限度的趨近于玩家真實(shí)戰(zhàn)斗力,應(yīng)該對對戰(zhàn)雙方對戰(zhàn)結(jié)果有比較精確地預(yù)估性(戰(zhàn)力數(shù)值高低和戰(zhàn)斗結(jié)果應(yīng)該具備一致性)
·屬性指標(biāo):玩家戰(zhàn)斗力數(shù)值應(yīng)該是對玩家進(jìn)攻能力(攻擊,穿甲,百分比加成),承受能力(生命,護(hù)甲,格擋,閃避)各項(xiàng)數(shù)值的一個(gè)綜合評估結(jié)果。玩家獲取的任何數(shù)值都應(yīng)該在戰(zhàn)斗力上有所反饋。
試想一下如果玩家努力的獲取了游戲數(shù)值而看不到自己戰(zhàn)斗力的提升,那會是怎樣糟糕的數(shù)值體驗(yàn)。游戲數(shù)值的投放說到底完全取決于你所希望提供給玩家怎樣的體驗(yàn)
成長指示:玩家的戰(zhàn)力數(shù)值會隨著玩家的游戲進(jìn)度變化而發(fā)生變化,會跟隨著玩家各項(xiàng)屬性的提升而提升。這是比較容易滿足的需求。
動態(tài)變化:戰(zhàn)力的相對性是戰(zhàn)力數(shù)值公式設(shè)計(jì)中的一個(gè)難點(diǎn),我們在設(shè)計(jì)戰(zhàn)斗力計(jì)算公式時(shí),往往會因?yàn)閼?zhàn)斗公式本身的復(fù)雜性,使我們在對某個(gè)個(gè)體戰(zhàn)力進(jìn)行評估時(shí)需要用到對手的信息。
比如用木頭人法,標(biāo)準(zhǔn)模板法等都需要有一個(gè)固定的指標(biāo)來作為戰(zhàn)力評判的標(biāo)準(zhǔn),因此根據(jù)標(biāo)準(zhǔn)模塊計(jì)算的戰(zhàn)力在反應(yīng)兩個(gè)復(fù)雜個(gè)體對戰(zhàn)情況時(shí)會有偏差。
從這里開始,我將根據(jù)上面我提到的指標(biāo)來探討設(shè)計(jì)戰(zhàn)斗力計(jì)算公式的思路(主要是以屬性投放為基礎(chǔ)和真實(shí)戰(zhàn)斗狀況模擬兩種思路),如有謬誤,請別拍磚!
1.1? ?以屬性投放為基礎(chǔ)的戰(zhàn)力公式設(shè)計(jì)
實(shí)際上目前國內(nèi)的大部分游戲戰(zhàn)斗力的計(jì)算都是以此為模板的,這種計(jì)算方法的核心思想大概是這樣的:
確定一個(gè)基礎(chǔ)數(shù)值模板:(難點(diǎn):模板的確定)
然后嚴(yán)格控制各項(xiàng)數(shù)值的投放比例,這樣游戲的任何階段玩家的角色數(shù)值大概如下:
而各項(xiàng)屬性的價(jià)值換算直接根據(jù)各項(xiàng)數(shù)值的獲取難度來進(jìn)行計(jì)算(投放比例)
即各項(xiàng)數(shù)值的戰(zhàn)力價(jià)值如下:
經(jīng)過整合處理后即可得到簡單的以屬性為基礎(chǔ)的戰(zhàn)斗力計(jì)算公式:
對該類戰(zhàn)力計(jì)算公式持懷疑態(tài)度的朋友請自行驗(yàn)證《龍之谷》,《全民無雙》等游戲中的戰(zhàn)力計(jì)算方式。驗(yàn)證方法,用初始戰(zhàn)斗力除以各項(xiàng)初始屬性得到各屬性的權(quán)重,然后得出戰(zhàn)力計(jì)算公式。改變屬性再來驗(yàn)證這個(gè)公式即可。
為什么?
為什么國內(nèi)很多游戲會以此為基礎(chǔ)來計(jì)算玩家的戰(zhàn)斗力?他到底有什么優(yōu)點(diǎn)?使用起來又會遇到哪些困難?
1.1.1??屬性加權(quán)戰(zhàn)力計(jì)算的特點(diǎn)
·優(yōu)點(diǎn):直觀,簡單,粗暴
千萬不要小看直觀的作用,實(shí)際上游戲玩家,特別以國內(nèi)游戲玩家為主,他們在玩游戲的時(shí)候大多數(shù)是受數(shù)值體驗(yàn)驅(qū)使,而他們的游戲核心追求也是游戲數(shù)值,戰(zhàn)斗力作為評估玩家戰(zhàn)力指標(biāo)的重要數(shù)值,必然會受到玩家的追逐。
一個(gè)能夠直觀的展示玩家游戲進(jìn)度,游戲?qū)傩缘膽?zhàn)力計(jì)算系統(tǒng)會是刺激玩家提升游戲?qū)傩灾匾笜?biāo)(說得委婉一點(diǎn),說白了就是賣屬性的時(shí)候比較好吹噓)
·缺點(diǎn):不能精確反應(yīng)玩家的真實(shí)戰(zhàn)斗力
可能由該方法計(jì)算出的戰(zhàn)斗力不一定能真實(shí)的反應(yīng)玩家的戰(zhàn)斗能力,(評估兩個(gè)玩家戰(zhàn)力高低最正確的方法是讓兩個(gè)玩家對砍,砍翻對方用時(shí)更少的戰(zhàn)力更高)
為了保證戰(zhàn)力數(shù)值的價(jià)值,一般情況下可以通過其他方式來保證該方法計(jì)算出的戰(zhàn)斗力的指示作用。(一般這類游戲的戰(zhàn)斗系統(tǒng)中,會有戰(zhàn)力碾壓公式,通過戰(zhàn)力碾壓公式來保證高戰(zhàn)力玩家的戰(zhàn)斗能力)
通過戰(zhàn)力公式,能夠在一定程度上保證屬性加權(quán)戰(zhàn)力的指示價(jià)值,這也是大多數(shù)游戲中都會采用的方法。
·難點(diǎn):怎么確定數(shù)值模板和權(quán)重?
用屬性加權(quán)求和來計(jì)算戰(zhàn)力最大的難點(diǎn)就是各項(xiàng)權(quán)重的確定,很顯然,在任何游戲中角色屬性的基礎(chǔ)模板肯定不會是策劃一拍腦袋就能決定的,當(dāng)然也不排除確實(shí)有拍腦袋決定數(shù)值的情況,但是大多數(shù)正規(guī)一點(diǎn)的游戲研發(fā)團(tuán)隊(duì)中,游戲的各項(xiàng)數(shù)值雖然不一定經(jīng)過嚴(yán)格的學(xué)術(shù)推導(dǎo),但是肯定會是基于某種需求下的數(shù)值建模。
實(shí)際上,在大多數(shù)MMORPG中,角色的初始屬性,各項(xiàng)數(shù)值的投放比例的參考都基于想要給玩家提供一個(gè)合理的戰(zhàn)斗體驗(yàn)。
問題來了,什么是合理的戰(zhàn)斗體驗(yàn)?
上圖已經(jīng)說明了這個(gè)合理需要保證的一個(gè)核心指標(biāo):戰(zhàn)斗時(shí)長;即結(jié)束戰(zhàn)斗的合理戰(zhàn)斗時(shí)長,當(dāng)然這個(gè)合理的時(shí)長會因?yàn)樾枨蟮牟煌煌?#xff0c;而時(shí)長的計(jì)算方式也會因?yàn)閼?zhàn)斗公式的不同而不同。
關(guān)于戰(zhàn)斗時(shí)長和戰(zhàn)斗公式的表述,我會在下一篇文章中詳細(xì)介紹。(下一篇文章我會詳細(xì)介紹1V1簡單的戰(zhàn)斗模擬器制作和戰(zhàn)斗模板的確定)
到這里,以屬性投放為標(biāo)準(zhǔn)的戰(zhàn)力計(jì)算公式就告一段落了,下個(gè)部分再來探討以真實(shí)戰(zhàn)斗能力為基礎(chǔ)來計(jì)算戰(zhàn)斗力的情況。
1.2斗模擬為基礎(chǔ)的戰(zhàn)力計(jì)算公式
以戰(zhàn)斗模擬為基礎(chǔ)的戰(zhàn)力計(jì)算公式,一般來說,一個(gè)個(gè)體的戰(zhàn)斗力體現(xiàn)在兩個(gè)方面:承受傷害的能力def,制造傷害的能力atk;
在知道兩方的各項(xiàng)屬性的前提下,我們是能夠精確地對雙方戰(zhàn)力進(jìn)行評估的,比如下面這個(gè)例子:
事例1:一個(gè)100血的戰(zhàn)士,看到了一只血為90野豬,戰(zhàn)士上去砍野豬,野豬同時(shí)開始反擊。戰(zhàn)士每秒的傷害是20(先略去戰(zhàn)斗公式和秒傷的換算),野豬每秒的傷害為10。那么整個(gè)戰(zhàn)斗過程可以用函數(shù)圖像表述:
從這個(gè)圖,我們可以看到一些規(guī)律:
戰(zhàn)士和野豬的初始血量是整個(gè)曲線的起始點(diǎn),整個(gè)戰(zhàn)斗過程就是從起始點(diǎn)回到某個(gè)坐標(biāo)軸的過程。整個(gè)戰(zhàn)斗過程沿著直線移動,這條直線的斜率,就是戰(zhàn)士和野豬的輸出速度之比。
在這個(gè)過程中,我們可以看到,作為互相斗爭的雙方,都至少存在兩個(gè)因素,一個(gè)是生命,用以保證自己的生存。這個(gè)值在有些戰(zhàn)斗情況下是人數(shù)/耐久等等,也即是前面我所說到的承受傷害的能力def。另一個(gè)則是傷害,用以破壞對方的生存,也就是前面提到的制造傷害的能力atk。
而衡量勝負(fù)的唯一標(biāo)準(zhǔn):其實(shí)是時(shí)間,誰能在最短的時(shí)間內(nèi)破壞對方的生存條件,誰就會獲得勝利。所以我們可以得到一個(gè)最簡單的結(jié)論:戰(zhàn)斗的結(jié)果,取決于一個(gè)值:
顯然,通過上面的分析,可以得出結(jié)論,玩家的戰(zhàn)斗力實(shí)際上是玩家死之前輸出對時(shí)間的一個(gè)積分。而輸出時(shí)間正比于玩家承受能力。
所以,在多數(shù)情況下可以近似的認(rèn)為:戰(zhàn)斗力=輸出*承受,如果以單位的承受作為橫坐標(biāo),輸出作為縱坐標(biāo),那么輸出與承受所組成的圖形面積,就是一個(gè)單位的戰(zhàn)斗力。如下圖:
知道了戰(zhàn)斗力在真實(shí)戰(zhàn)斗過程中的衡量指標(biāo),那么是否我們就能如愿的得出一個(gè)通用的戰(zhàn)斗力計(jì)算公式?
舉個(gè)例子說明找出這樣的戰(zhàn)力計(jì)算公式有多么蛋疼!
事例2:
已知戰(zhàn)斗公式:有效輸出=己方攻擊-敵方防御(一大堆修正巴拉巴拉)
好了,這就意味著在這個(gè)公式下玩家的承受能力def=HP+ Arm(護(hù)甲)
而輸出能力在不知道敵方護(hù)甲的前提下輸出能力=玩家atk(戰(zhàn)力計(jì)算在遇敵之前,所以只能用自身攻擊數(shù)值代替)
這樣,看看下面這組圖就明白這樣的計(jì)算方法有多蛋疼。
為什么會這樣?
原因只有一個(gè),不管怎么分析,想要得到靜態(tài)計(jì)算戰(zhàn)力的公式在基于戰(zhàn)斗模擬的前提下都是不現(xiàn)實(shí)的
因?yàn)楹饬繎?zhàn)斗力的指標(biāo)承受傷害的能力def,制造傷害的能力atk,都是動態(tài)的,這兩個(gè)數(shù)值的結(jié)果會隨著遇到的對手變動而變動。
但是這也不意味著我們?nèi)プ鲞@樣的嘗試沒有意義,可能我們很難找到基于戰(zhàn)斗公式的衡量玩家真實(shí)戰(zhàn)斗力計(jì)算公式,但是通過一些特殊的手段,我們是能夠得出各種數(shù)值之間的等價(jià)關(guān)系的。
在以如下戰(zhàn)斗公式為基礎(chǔ)的游戲中:
Atk:攻擊
Pen:護(hù)甲穿透
Def:護(hù)甲
可以通過簡單的戰(zhàn)斗模擬,得出屬性與屬性之間的等價(jià)關(guān)系;
前提是投放的時(shí)候也要按照一定的比例投放各屬性數(shù)值,這兩個(gè)比例不等價(jià),但是這個(gè)原則要遵守,比例關(guān)系成立的前提是彼此之間線性相關(guān),而各屬性線性相關(guān)的前提是他們的投放成比例
說明:我方敵方對應(yīng)行是互為敵手的,而且在這個(gè)模擬過程中,結(jié)果全部是同歸于盡(滅敵時(shí)間一致)
兩方的屬性雖然不同,但是干掉對方的時(shí)間是一致的,這說明我們可以近似的認(rèn)為防御2的我方和生命25敵方戰(zhàn)斗力相同;防御5的我方和生命50的敵方戰(zhàn)斗力相同。
根據(jù)戰(zhàn)斗模擬;最后可以得出基于上述戰(zhàn)斗公式,并且以如下模板投放戰(zhàn)力時(shí):
可得各個(gè)屬性對戰(zhàn)斗力的貢獻(xiàn)系數(shù)(權(quán)重):
注意:
1、這個(gè)權(quán)重并不等于投放比例的倒數(shù)
2、想要得出線性相關(guān)的權(quán)重,必要的前提是各種屬性的投放比例也是接近線性的(即按照一定的模板投放),理由是,當(dāng)他們按照一定比例投放,戰(zhàn)斗公式可以簡化為只有一個(gè)參數(shù)的公式
? ?? ?隨意投放時(shí)戰(zhàn)斗公式變量數(shù)(多個(gè)):
? ?? ?按比例投放時(shí),戰(zhàn)斗公式變量數(shù)(一個(gè)):
3、關(guān)于怎樣得到這一組數(shù)據(jù)方法有很多,消元后理論分析也好,拉表取數(shù)值后以大量數(shù)據(jù)為基礎(chǔ)進(jìn)行回歸分析也好,只要能夠得出大概的比例就行
4、得到這樣的戰(zhàn)斗力計(jì)算公式后,還需要對其合理性進(jìn)行驗(yàn)證(怎么驗(yàn)證以后再講)
?
參考:策劃基本知識:游戲中戰(zhàn)斗力計(jì)算方法-GameRes游資網(wǎng)
https://www.gameres.com/765323.html
?
?
二、如何高效設(shè)計(jì)游戲——關(guān)于戰(zhàn)斗力計(jì)算方式的總結(jié)
前言
有關(guān)于角色的戰(zhàn)斗力,大家都不會陌生,幾乎每一款游戲都有在計(jì)算相關(guān)角色的戰(zhàn)斗力。 無論采用何種形式、方法,目的只有一個(gè),就是想讓玩家比較輕松直接的對比出角色的綜合能力。
在這里,筆者將綜合一些情況,與大家討論一下戰(zhàn)斗力的計(jì)算方法與有效性驗(yàn)證。
不過在這之前,按照慣例,還是先給大家講一下個(gè)人的“扭曲”價(jià)值觀與經(jīng)驗(yàn)。
在日常工作中,我們總會發(fā)現(xiàn)有一些數(shù)值策劃,他們的表格做的很漂亮,并且你點(diǎn)擊任何 一個(gè)單元格,總會讓你發(fā)現(xiàn)一長串讓你無法繼續(xù)閱讀下去的公式,長到令人發(fā)指!這些數(shù)字環(huán)環(huán) 嵌套,相互關(guān)聯(lián),找了半天也很難找到計(jì)算的源頭。這就是俗稱【數(shù)值表格的關(guān)聯(lián)性】,并且這 也廣泛被業(yè)內(nèi)定位為數(shù)值能力好壞的指標(biāo),或者招聘面試數(shù)值策劃的標(biāo)準(zhǔn)。
筆者忍不住要吐槽,不過我想吐槽的不是【數(shù)值表格的關(guān)聯(lián)性】而是這一【自動化】的設(shè) 計(jì)過程。
很幸運(yùn),我親眼目睹了幾個(gè)這樣的表格,均出自大師之手。
所謂的數(shù)值規(guī)劃,我個(gè)人理解的作用是——多人合作的時(shí)候,能夠讓其他策劃看得懂你在 相關(guān)數(shù)值設(shè)計(jì)中的思路,并且也給自己一個(gè)總體綱要的規(guī)劃。但是我看到的一份數(shù)值規(guī)劃表格中, 所有數(shù)值全部都關(guān)聯(lián)化,牽一動百,妄圖將所有數(shù)值設(shè)計(jì)過程全部自動化。每一個(gè)層面,每一個(gè) 梯度,每一個(gè)興奮點(diǎn),每一個(gè)時(shí)間點(diǎn),所有數(shù)值都存在著一個(gè)硬性的標(biāo)桿公式強(qiáng)行控制每一個(gè)數(shù) 值。最后所有角色單位的數(shù)值也都與之前的“標(biāo)尺”硬性關(guān)聯(lián),得出最終數(shù)值成品(雖然他還有 余力可以“微調(diào)”)。
筆者想說的是,游戲是一件藝術(shù)品,那里面承載了設(shè)計(jì)者的個(gè)性結(jié)晶。玩家的需求是在游 戲中獲得挑戰(zhàn),獲得驚喜,獲得心意。不是一套自動化就可以得出的產(chǎn)物。自動化,就意味著里 面許多小細(xì)節(jié)設(shè)計(jì)者都忽視了。
最后那份數(shù)值產(chǎn)出,代入到產(chǎn)品中,大家看到了些許問題。他忽視了角色單位的差異性, 因?yàn)樽詣踊瘜?dǎo)致了所有角色數(shù)值屬性都是線性相關(guān)的;他忽視了關(guān)卡難度的興奮感,因?yàn)樗嘘P(guān) 卡數(shù)值全都是線性相關(guān)地上升,并且其中還會涉及到關(guān)卡的遞進(jìn)難度是否會超出預(yù)料的問題;他

 只關(guān)注于武器、等級、緣分 BUFF 等綜合能力占比,卻忽視了這些能力組成在每個(gè)階段變化不一, 所以在代入產(chǎn)品后,發(fā)現(xiàn)很多數(shù)值超出或低于期望。
筆者認(rèn)為,一份好的數(shù)值規(guī)劃,首先需要具有良好的易讀性,因?yàn)檫@個(gè)不只是給你自己看 的,多數(shù)是給別人看的。其次它只起到規(guī)劃參考的作用,而不是標(biāo)尺的作用,不要被自己的數(shù)值 規(guī)劃限制住游戲數(shù)值的無限可能。我們制作數(shù)值規(guī)劃的目的應(yīng)該不會是讓今后的數(shù)值都在規(guī)劃數(shù) 值中乘以一個(gè)系數(shù)吧?最后代入產(chǎn)品中,發(fā)現(xiàn)處處硬坎,處處單一,然后以“數(shù)值不可能是一下 子就出來”的名義“微調(diào)”到底。最后“微調(diào)”到親爹親媽(那份數(shù)值規(guī)劃)都不認(rèn)識的地步, 當(dāng)初何苦花那么長的時(shí)間做一份那么華麗的數(shù)值規(guī)劃,意義何在?
回歸本文正題。
RPG 游戲中的戰(zhàn)斗力計(jì)算模型
我們先考慮一種簡單的模型。
游戲角色要想進(jìn)行戰(zhàn)斗計(jì)算,首先兩個(gè)屬性是必不可少的,HP、ATK。所以我們先模擬一下 只有 HP、ATK 參與計(jì)算的兩人對戰(zhàn)模型。定義:UnitName(HP,ATK)為一個(gè)戰(zhàn)斗單位。先我 們有兩個(gè)戰(zhàn)斗單位,其中 UnitA(200,50),UnitB(400,20)。我們假定雙方的攻擊速度皆為每 單位時(shí)間(或者回合)行動一次。那么戰(zhàn)斗過程可能為:
- 第一回合 UnitA 攻擊 UnitB,UnitB 攻擊 UnitA【結(jié)果為】UnitA(180,50),UnitB(350,20)
- 第二回合 UnitA 攻擊 UnitB,UnitB 攻擊 UnitA【結(jié)果為】UnitA(160,50),UnitB(300,20)
- 第三回合 UnitA 攻擊 UnitB,UnitB 攻擊 UnitA【結(jié)果為】UnitA(140,50),UnitB(250,20)
- 第四回合 UnitA 攻擊 UnitB,UnitB 攻擊 UnitA【結(jié)果為】UnitA(120,50),UnitB(200,20)
- 第五回合 UnitA 攻擊 UnitB,UnitB 攻擊 UnitA【結(jié)果為】UnitA(100,50),UnitB(150,20)
- 第六回合 UnitA 攻擊 UnitB,UnitB 攻擊 UnitA【結(jié)果為】UnitA(80,50),UnitB(100,20)
- 第七回合 UnitA 攻擊 UnitB,UnitB 攻擊 UnitA【結(jié)果為】UnitA(60,50),UnitB(50,20)
- 第八回合 UnitA 攻擊 UnitB,UnitB 攻擊 UnitA【結(jié)果為】UnitA(40,50),UnitB(0,20)
=====UnitB 戰(zhàn)敗======
我們稍微調(diào)整一下 UnitB 的數(shù)值,UnitB(400,25),再模擬一次戰(zhàn)斗過程,看看會有什么變 化。(由于先手機(jī)制造成戰(zhàn)斗結(jié)果不公平,所以在同一回合內(nèi),任一方的 HP 先為 0 判定為該方 戰(zhàn)敗,若雙方 HP 同時(shí)為 0,則判定平均)
- 第一回合 UnitA 攻擊 UnitB,UnitB 攻擊 UnitA【結(jié)果為】UnitA(175,50),UnitB(350,20)
- 第二回合 UnitA 攻擊 UnitB,UnitB 攻擊 UnitA【結(jié)果為】UnitA(150,50),UnitB(300,20)
- 第三回合 UnitA 攻擊 UnitB,UnitB 攻擊 UnitA【結(jié)果為】UnitA(125,50),UnitB(250,20)
- 第四回合 UnitA 攻擊 UnitB,UnitB 攻擊 UnitA【結(jié)果為】UnitA(100,50),UnitB(200,20)
- 第五回合 UnitA 攻擊 UnitB,UnitB 攻擊 UnitA【結(jié)果為】UnitA(75,50),UnitB(150,20)
- 第六回合 UnitA 攻擊 UnitB,UnitB 攻擊 UnitA【結(jié)果為】UnitA(50,50),UnitB(100,20)
- 第七回合 UnitA 攻擊 UnitB,UnitB 攻擊 UnitA【結(jié)果為】UnitA(25,50),UnitB(50,20)
- 第八回合 UnitA 攻擊 UnitB,UnitB 攻擊 UnitA【結(jié)果為】UnitA(0,50),UnitB(0,20)
=====雙方戰(zhàn)平======
我們再來為 UnitB 調(diào)整一下數(shù)值,UnitB(500,20),再模擬一次戰(zhàn)斗過程。
- 第一回合 UnitA 攻擊 UnitB,UnitB 攻擊 UnitA【結(jié)果為】UnitA(180,50),UnitB(450,20)
- 第二回合 UnitA 攻擊 UnitB,UnitB 攻擊 UnitA【結(jié)果為】UnitA(160,50),UnitB(400,20)
- 第三回合 UnitA 攻擊 UnitB,UnitB 攻擊 UnitA【結(jié)果為】UnitA(140,50),UnitB(350,20)
- 第四回合 UnitA 攻擊 UnitB,UnitB 攻擊 UnitA【結(jié)果為】UnitA(120,50),UnitB(300,20)
- 第五回合 UnitA 攻擊 UnitB,UnitB 攻擊 UnitA【結(jié)果為】UnitA(100,50),UnitB(250,20)
- 第六回合 UnitA 攻擊 UnitB,UnitB 攻擊 UnitA【結(jié)果為】UnitA(80,50),UnitB(200,20)
- 第七回合 UnitA 攻擊 UnitB,UnitB 攻擊 UnitA【結(jié)果為】UnitA(60,50),UnitB(150,20)
- 第八回合 UnitA 攻擊 UnitB,UnitB 攻擊 UnitA【結(jié)果為】UnitA(40,50),UnitB(100,20)
- 第九回合 UnitA 攻擊 UnitB,UnitB 攻擊 UnitA【結(jié)果為】UnitA(20,50),UnitB(50,20)
- 第十回合 UnitA 攻擊 UnitB,UnitB 攻擊 UnitA【結(jié)果為】UnitA(0,50),UnitB(0,20)
=====雙方戰(zhàn)平=====
從以上三個(gè)結(jié)果中,讀者們可能會發(fā)現(xiàn)一些規(guī)律,現(xiàn)在我們將對這個(gè)模型進(jìn)行數(shù)學(xué)抽象。
在只有 HP、ATK 兩個(gè)屬性參與戰(zhàn)斗計(jì)算的過程中,我們判定一方戰(zhàn)敗的依據(jù)是其 HP 為 0。 在一場雙角色 A、B 對砍的戰(zhàn)斗模型中,判定角色 A 勝利的依據(jù)是,誰堅(jiān)挺的時(shí)間長(HP 最后 變?yōu)?0 的一方)誰獲得勝利:
?
?
即
?
?
得
?
?
由此我們得出,只有當(dāng)一方角色單位的值 HP*ATK 大于另一方角色單位的值 HP*ATK 才能獲得勝 利。
因此我們將角色單位的值 HP*ATK 定義為戰(zhàn)斗力。 我們回頭根據(jù)上面的 3 場戰(zhàn)斗來驗(yàn)證一下結(jié)論是否一致?
一個(gè)戰(zhàn)斗過程的簡化運(yùn)用
兩個(gè)戰(zhàn)斗單位的戰(zhàn)斗過程,就是雙方戰(zhàn)斗力相減的過程。舉例:
有兩個(gè)單位 UnitA(200,50),UnitB(300,20),經(jīng)過戰(zhàn)斗力的計(jì)算,得 UnitA:10000,UnitB:6000。根據(jù)戰(zhàn)斗力顯示,UnitA 會獲得明顯的勝利。
這里有一個(gè)方法,可以直接簡化戰(zhàn)斗過程運(yùn)算得出結(jié)果,我們將雙方的戰(zhàn)斗力相減,的UnitA的剩余戰(zhàn)斗力為4000。按照之前的公式,將這個(gè)剩余戰(zhàn)斗力除以UnitA的ATK屬性,就會獲得UnitA的HP屬性。根據(jù)計(jì)算得,UnitA獲勝,并且剩余HP為80。請讀者自行驗(yàn)證。
基于基礎(chǔ)戰(zhàn)斗模型引入 SPD(速度)值
多數(shù)游戲?qū)τ谒俣戎?SPD 的定義為,該角色單位時(shí)間的行動次數(shù) times/time,或者定義為FQR(頻率值)。(對于其他的速度值的定義請向此方向轉(zhuǎn)換) 那么基于之前的結(jié)論,若角色 A 想要勝出,則:
?
?
即
?
?
得
?
?
由此得出,只有一方角色單位的屬性值 HP*ATK*SPD 大于另一方角色單位的屬性值 HP*ATK*SPD 才能獲得勝利。

同樣的我們將角色單位的值 HP*ATK*SPD 定義為該角色的戰(zhàn)斗力。 由于模型同理,筆者將不在這里贅述驗(yàn)證過程,請讀者自己驗(yàn)證。
基于基礎(chǔ)戰(zhàn)斗模型引入 DEF(防御)值
在這種情況下,模型變得有些復(fù)雜,因?yàn)閼?zhàn)斗結(jié)果不再那么純粹,一方的戰(zhàn)斗力是受對方影響的,為相對戰(zhàn)斗力。
這里我們一傷害公式 ATK-DEF 為例進(jìn)行證明,其他公式所得出的結(jié)果雖不同,但是同理。 若 A 勝出,則:
?
?
 即:
?
?
得
?
?
到這里,我們可以觀察出,一方的戰(zhàn)斗力是如何受對方影響的。
在這種情況下,我們稱,該角色的戰(zhàn)斗力是相對的,而非絕對的。
如何在相對中尋找絕對(適用環(huán)境局限,需待多方驗(yàn)證)
從以上的分析中,我們可以看出,在有 DEF 屬性參與戰(zhàn)斗計(jì)算的時(shí)候,一方的戰(zhàn)斗力不是 一個(gè)定值,并且,三個(gè)單位的戰(zhàn)斗力也不具有傳遞性。例如:
我們定義一個(gè)戰(zhàn)斗單位,UnitName(HP,ATK,DEF,SPD)。
有如下 3 個(gè)戰(zhàn)斗單位,UnitA(200,30,10,1),UnitB(450,20,15,0.5),UnitC(200,20,5,3)。
經(jīng)過計(jì)算,我們發(fā)現(xiàn)三方的戰(zhàn)斗力關(guān)系是,A>B,B>C,但卻 C>A。
這是由于,UnitC 的攻擊與 UnitB 的防御的差值過小,以至于 UnitC 的每一份攻防差的收益 過低,造成了 UnitC 出乎意料的輸給了 UnitB。
這種現(xiàn)象不可避免。但是,通過多次試驗(yàn)以及分析函數(shù)圖像得出,當(dāng)攻擊力遠(yuǎn)遠(yuǎn)大于防御 力的時(shí)候,這種現(xiàn)象發(fā)生的機(jī)會將會變少,并且有理由相信,在極限狀態(tài)下,這種現(xiàn)象將不會存 在。

因此,我們可以人為的在規(guī)劃數(shù)值的時(shí)候,將攻防的差距盡量拉大。從而減少這種現(xiàn)象的 發(fā)生。
不過,這種現(xiàn)象也是一種策略性的玩法,因?yàn)樗鲜^剪刀布的封閉克制關(guān)系。
塔防游戲中的戰(zhàn)斗力計(jì)算模型
筆者在之前的文章中已經(jīng)較為系統(tǒng)的給出了塔防的數(shù)學(xué)模型,只是那篇文章寫的較早,以 現(xiàn)在的眼光看來,比較雜亂無章,所以整理好思路,重新總結(jié)一遍。
我們定義防御塔擁有三個(gè)屬性,TowerName(ATK,FRQ,RGE),敵方單位 UnitName(HP, SPD)。已知,敵方單位總是穿過防御塔的攻擊范圍與路徑的交集,在這里我們定義為 ELP(The Effective Length of Path)。
若,我方防御塔剛好能夠殺死敵方一個(gè)單位,則用數(shù)學(xué)表達(dá)式抽象為:
?
?
?
?
由于,在多數(shù)情況下,ELP 的長度都與防御塔的范圍半徑相近,所以有
?
?
得
?
?
?
這樣,我們得出了一個(gè)完美對稱的等式,左邊全都是敵方單位的屬性,而右邊全都是防御塔的屬 性。因此我們定義一個(gè)值 SET 作為衡量雙方的戰(zhàn)斗力大小的值。對于防御塔來說,其戰(zhàn)斗力為
?
?
對于地方單位來說,其戰(zhàn)斗力為
?
?
當(dāng)防御塔 ATK*FRQ*RGE 大于敵方單位 HP*SPD 時(shí),則防御塔能夠在無干擾的環(huán)境下輕松殺死敵 方一個(gè)單位;當(dāng)防御塔 ATK*FRQ*RGE 等于敵方單位 HP*SPD 時(shí),則防御塔能夠在無干擾的環(huán)境 下剛好殺死一個(gè)單位;當(dāng)防御塔 ATK*FRQ*RGE 小于敵方單位 HP*SPD 時(shí),則防御塔很難殺死一 個(gè)敵方單位。
多個(gè)防御塔攻擊一個(gè)敵方單位
在這種情況下,由于各個(gè)防御塔之間不互相干擾,所以所有防御塔可進(jìn)行戰(zhàn)斗力的加法運(yùn) 算來衡量我方總戰(zhàn)斗力是否能夠殺死該敵方單位。
多個(gè)防御塔攻擊多個(gè)敵方單位
在這種情況下,模型會變得稍微復(fù)雜,我們將不能簡單的進(jìn)行加法運(yùn)算從而對比防御塔與 敵方單位戰(zhàn)斗力的大小。
這是因?yàn)?防御塔的“抬手效應(yīng)”與敵方單位的隊(duì)伍間隔會極大影響戰(zhàn)斗結(jié)果,試想一種 極端情況下,10 個(gè)敵方單位聚集在一小塊范圍下移動,當(dāng)防御塔擊殺第一個(gè)敵方單位的時(shí)候, 再也無力擊殺下一個(gè)單位。
不過,為了考慮到設(shè)計(jì)游戲的實(shí)際操作性,我們通常會合理規(guī)劃每個(gè)敵方單位的間隔距離, 從而使得方便計(jì)算。在這種理想狀態(tài)下,該模型還是可以良好運(yùn)行的。
橫向?qū)Ρ痊F(xiàn)有的游戲
之前看到很多游戲都有計(jì)算過戰(zhàn)斗單位的戰(zhàn)斗力,但是幾乎所有都采用同樣的一種方法 -------加權(quán)多項(xiàng)式。
這種方法原理是,游戲設(shè)計(jì)者評估一個(gè)戰(zhàn)斗單位的每一項(xiàng)屬性,并且把每一項(xiàng)屬性頂一個(gè) 權(quán)值,最后以加法運(yùn)算得出戰(zhàn)斗力。如:
?
?
但筆者認(rèn)為這種計(jì)算方式利弊并存。壞處是,這種計(jì)算方式并不科學(xué),不能較為可觀的衡量該角 色的戰(zhàn)斗能力。好處是,這種計(jì)算方式直觀容易理解,并且對比筆者總結(jié)的模型有一個(gè)最大的好 處,就是數(shù)值小,并且數(shù)值增長幅度也小。

所以筆者建議,以上數(shù)學(xué)模型適用于戰(zhàn)斗平衡的調(diào)整以及數(shù)值規(guī)劃。不建議讓用戶觀看理 解。
結(jié)束語
至此,想要總結(jié)的模型都已結(jié)束。
不知道大家有沒有關(guān)心這樣一件事情,從以上兩個(gè)模型,我們都可以看出數(shù)學(xué)等式的一種 對稱美,就好像,被人刻意安排一樣。但我認(rèn)為這并不是一種巧合,我有理由相信對于其他類型 的游戲來說,其戰(zhàn)斗力的計(jì)算同樣為因式的基本模型。
其實(shí)游戲中的一些數(shù)學(xué)模型非常簡單,只是大家很少去關(guān)注,去抽象,去總結(jié)。非常希望 有識之士能夠一起來總結(jié)一些規(guī)律,一起來構(gòu)建起這座大廈。為業(yè)內(nèi)貢獻(xiàn)一份力量。
注:關(guān)于RPG角色數(shù)值模型,參考自網(wǎng)易游戲理論研究室的相關(guān)資料,但略有修改。
?
參考:如何高效設(shè)計(jì)游戲——關(guān)于戰(zhàn)斗力計(jì)算方式的總結(jié) - CSDN博客https://blog.csdn.net/hany3000/article/details/50231479
轉(zhuǎn)載于:https://www.cnblogs.com/Renyi-Fan/p/9517265.html
總結(jié)
以上是生活随笔為你收集整理的游戏设计---游戏中战斗力计算方法(整理)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 表格特性:表格实现的边框、表格特性、边框
- 下一篇: 网络广告语