文無第一,武無第二,嚴格意義上來講戰力的評估說到底就是反應參評對象戰斗勝率的一個指標,誰的贏面更大,那么他就應該擁有更加高的戰斗力數值。
但是這個參考指標只能在一定程度下影響戰斗的最后結果,而實際的結果還要看實際操作對象的差別。因為戰斗情況復雜多樣,在游戲設計中,戰力的指標往往無法精確定位為玩家真實戰斗力,當下大部分游戲中玩家的戰力高低實際上是反應的玩家所獲取的戰斗數值(攻擊,防御等)的綜合指標。
總結來看,游戲數值中的戰斗力數值需要滿足的需求如下(根據側重點不同而選擇優先滿足不同的需求,一般情況下戰力數值很難完美滿足所有要求):
- 戰斗參考:好的戰力評估數值,應該最大限度的趨近於玩家真實戰斗力,應該對對戰雙方對戰結果有比較精確地預估性(戰力數值高低和戰斗結果應該具備一致性)
- 屬性指標:玩家戰斗力數值應該是對玩家進攻能力(攻擊,穿甲,百分比加成),承受能力(生命,護甲,格擋,閃避)各項數值的一個綜合評估結果。玩家獲取的任何數值都應該在戰斗力上有所反饋。
試想一下如果玩家努力的獲取了游戲數值而看不到自己戰斗力的提升,那會是怎樣糟糕的數值體驗。游戲數值的投放說到底完全取決於你所希望提供給玩家怎樣的體驗
- 成長指示:玩家的戰力數值會隨着玩家的游戲進度變化而發生變化,會跟隨着玩家各項屬性的提升而提升。這是比較容易滿足的需求。
動態變化:戰力的相對性是戰力數值公式設計中的一個難點,我們在設計戰斗力計算公式時,往往會因為戰斗公式本身的復雜性,使我們在對某個個體戰力進行評估時需要用刀對手的信息
比如用木頭人法,標准模板法等都需要有一個固定的指標來作為戰力評判的標准,因此根據標准模塊計算的戰力在反應兩個復雜個體對戰情況時會有偏差。
從這里開始,我將根據上面我提到的指標來探討設計戰斗力計算公式的思路(主要是以屬性投放為基礎和真實戰斗狀況模擬兩種思路),如有謬誤,請別拍磚!
1.1 以屬性投放為基礎的戰力公式設計
實際上目前國內的大部分游戲戰斗力的計算都是以此為模板的,這種計算方法的核心思想大概是這樣的:
確定一個基礎數值模板:(難點:模板的確定)
然后嚴格控制各項數值的投放比例,這樣游戲的任何階段玩家的角色數值大概如下:
而各項屬性的價值換算直接根據各項數值的獲取難度來進行計算(投放比例)
即各項數值的戰力價值如下:
經過整合處理后即可得到簡單的以屬性為基礎的戰斗力計算公式:
對該類戰力計算公式持懷疑態度的朋友請自行驗證《龍之谷》,《全民無雙》等游戲中的戰力計算方式。驗證方法,用初始戰斗力除以各項初始屬性得到各屬性的權重,然后得出戰力計算公式。改變屬性再來驗證這個公式即可。
為什么國內很多游戲會以此為基礎來計算玩家的戰斗力?他到底有什么特點?使用起來又會遇到哪些困難?
1.1.1 屬性加權戰力計算的特點
- 優點:直觀,簡單,粗暴
千萬不要小看直觀的作用,實際上游戲玩家,特別以國內游戲玩家為主,他們在玩游戲的時候大多數是受數值體驗驅使,而他們的游戲核心追求也是游戲數值,戰斗力作為評估玩家戰力指標的重要數值,必然會受到玩家的追逐。
一個能夠直觀的展示玩家游戲進度,游戲屬性的戰力計算系統會是刺激玩家提升游戲屬性重要指標(說得委婉一點,說白了就是賣屬性的時候比較好吹噓)
- 缺點:不能精確反應玩家的真實戰斗力
可能由該方法計算出的戰斗力不一定能真實的反應玩家的戰斗能力,(評估兩個玩家戰力高低最正確的方法是讓兩個玩家對砍,砍翻對方用時更少的戰力更高)
為了保證戰力數值的價值,一般情況下可以通過其他方式來保證該方法計算出的戰斗力的指示作用。(一般這類游戲的戰斗系統中,會有戰力碾壓公式,通過戰力碾壓公式來保證高戰力玩家的戰斗能力)
通過戰力公式,能夠在一定程度上保證屬性加權戰力的指示價值,這也是大多數游戲中都會采用的方法。
- 難點:怎么確定數值模板和權重?
用屬性加權求和來計算戰力最大的難點就是各項權重的確定,很顯然,在任何游戲中角色屬性的基礎模板肯定不會是策划一拍腦袋就能決定的,當然也不排除確實有拍腦袋決定數值的情況,但是大多數正規一點的游戲研發團隊中,游戲的各項數值雖然不一定經過嚴格的學術推導,但是肯定會是基於某種需求下的數值建模。
實際上,在大多數MMORPG中,角色的初始屬性,各項數值的投放比例的參考都基於想要給玩家提供一個合理的戰斗體驗。
問題來了,什么是合理的戰斗體驗?
上圖已經說明了這個合理需要保證的一個核心指標:戰斗時長;即結束戰斗的合理戰斗時長,當然這個合理的時長會因為需求的不同而不同,而時長的計算方式也會因為戰斗公式的不同而不同。
關於戰斗時長和戰斗公式的表述,我會在下一篇文章中詳細介紹。(下一篇文章我會詳細介紹1V1簡單的戰斗模擬器制作和戰斗模板的確定)
到這里,以屬性投放為標准的戰力計算公式就告一段落了,下個部分再來探討以真實戰斗能力為基礎來計算戰斗力的情況。
1.2斗模擬為基礎的戰力計算公式
以戰斗模擬為基礎的戰力計算公式,一般來說,一個個體的戰斗力體現在兩個方面:承受傷害的能力def,制造傷害的能力atk;
在知道兩方的各項屬性的前提下,我們是能夠精確地對雙方戰力進行評估的,比如下面這個例子:
事例1:一個100血的戰士,看到了一只血為90野豬,戰士上去砍野豬,野豬同時開始反擊。戰士每秒的傷害是20(先略去戰斗公式和秒傷的換算),野豬每秒的傷害為10。那么整個戰斗過程可以用函數圖像表述:
從這個圖,我們可以看到一些規律:
戰士和野豬的初始血量是整個曲線的起始點,整個戰斗過程就是從起始點回到某個坐標軸的過程。整個戰斗過程沿着直線移動,這條直線的斜率,就是戰士和野豬的輸出速度之比。
在這個過程中,我們可以看到,作為互相斗爭的雙方,都至少存在兩個因素,一個是生命,用以保證自己的生存。這個值在有些戰斗情況下是人數/耐久等等,也即是前面我所說到的承受傷害的能力def。另一個則是傷害,用以破壞對方的生存,也就是前面提到的制造傷害的能力atk。
而衡量勝負的唯一標准:其實是時間,誰能在最短的時間內破壞對方的生存條件,誰就會獲得勝利。所以我們可以得到一個最簡單的結論:戰斗的結果,取決於一個值:
顯然,通過上面的分析,可以得出結論,玩家的戰斗力實際上是玩家死之前輸出對時間的一個積分。而輸出時間正比於玩家承受能力。
所以,在多數情況下可以近似的認為:戰斗力=輸出*承受,如果以單位的承受作為橫坐標,輸出作為縱坐標,那么輸出與承受所組成的圖形面積,就是一個單位的戰斗力。如下圖:
知道了戰斗力在真實戰斗過程中的衡量指標,那么是否我們就能如願的得出一個通用的戰斗力計算公式?
舉個例子說明找出這樣的戰力計算公式有多么蛋疼!
事例2:
已知戰斗公式:有效輸出=己方攻擊-敵方防御(一大堆修正巴拉巴拉)
好了,這就意味着在這個公式下玩家的承受能力def=HP+ Arm(護甲)
而輸出能力在不知道敵方護甲的前提下輸出能力=玩家atk(戰力計算在遇敵之前,所以只能用自身攻擊數值代替)
這樣,看看下面這組圖就明白這樣的計算方法有多蛋疼。
為什么會這樣?
原因只有一個,不管怎么分析,想要得到靜態計算戰力的公式在基於戰斗模擬的前提下都是不現實的
因為衡量戰斗力的指標承受傷害的能力def,制造傷害的能力atk,都是動態的,這兩個數值的結果會隨着遇到的對手變動而變動。
但是這也不意味着我們去做這樣的嘗試沒有意義,可能我們很難找到基於戰斗公式的衡量玩家真實戰斗力計算公式,但是通過一些特殊的手段,我們是能夠得出各種數值之間的等價關系的。
在以如下戰斗公式為基礎的游戲中:
Atk:攻擊
Pen:護甲穿透
Def:護甲
可以通過簡單的戰斗模擬,得出屬性與屬性之間的等價關系;
前提是投放的時候也要按照一定的比例投放各屬性數值,這兩個比例不等價,但是這個原則要遵守,比例關系成立的前提是彼此之間線性相關,而各屬性線性相關的前提是他們的投放成比例
說明:我方敵方對應行是互為敵手的,而且在這個模擬過程中,結果全部是同歸於盡(滅敵時間一致)
兩方的屬性雖然不同,但是干掉對方的時間是一致的,這說明我們可以近似的認為防御2的我方和生命25敵方戰斗力相同;防御5的我方和生命50的敵方戰斗力相同。
根據戰斗模擬;最后可以得出基於上述戰斗公式,並且以如下模板投放戰力時:
可得各個屬性對戰斗力的貢獻系數(權重):
注意:
1、這個權重並不等於投放比例的倒數
2、想要得出線性相關的權重,必要的前提是各種屬性的投放比例也是接近線性的(即按照一定的模板投放),理由是,當他們按照一定比例投放,戰斗公式可以簡化為只有一個參數的公式
隨意投放時戰斗公式變量數(多個):
按比例投放時,戰斗公式變量數(一個):
3、關於怎樣得到這一組數據方法有很多,消元后理論分析也好,拉表取數值后以大量數據為基礎進行回歸分析也好,只要能夠得出大概的比例就行
4、得到這樣的戰斗力計算公式后,還需要對其合理性進行驗證(怎么驗證以后再講)
關於基於戰斗模擬的戰斗力數值計算現在就講到這里,等我參悟到了更高明的方法后再來進行補充!歡迎指教!