戰(zhàn)斗力是怎么計算的1.1. 定義戰(zhàn)斗力借鑒中學(xué)物理里關(guān)于能量的定義: 一個物體能夠做功.我們就說這個物體具有能.能量是表示物體做功本領(lǐng)大小的物理量, 能量可以用能夠做功的多少來衡量.一個物體'能夠做功并不是一定'要做功.也不是'正在做功或'已經(jīng)做功.如: 山上靜止的石頭具有能量.但它沒有做功。 在游戲里,我們可以這樣定義戰(zhàn)斗力: 一個單位能戰(zhàn)斗,我們就說這個單位有戰(zhàn)斗力,戰(zhàn)斗力是衡量一個單位的戰(zhàn)斗能量大小的量。戰(zhàn)斗力越高,該單位在作戰(zhàn)時能夠取得的優(yōu)勢就越大——作戰(zhàn)能力越強。 早期的游戲中,是沒有戰(zhàn)斗力的概念的。玩家們通常以等級和裝備水平來判斷實力,這種判斷很依賴對游戲的理解: 早期的網(wǎng)絡(luò)游戲,《萬王之王》(中國第一款圖形網(wǎng)絡(luò)游戲,2000年7月在大陸正式上市),有一個評估對手的交互功能: 《萬王之王》的評估,在跨職業(yè)對玩家操作時,準確性較差,記得當(dāng)時比我高2級,裝備豪華的巫妖,在對我使用評估時,顯示的是“對方比你強多了,小心為是“,可能是由于我的職業(yè)圣騎士的防御和血量屬性,在作為戰(zhàn)斗力的參考時,這2項屬性影響更大。 1.2. 影響戰(zhàn)斗力的因素按上述定義,影響一個作戰(zhàn)單位戰(zhàn)斗力的因素有很多,選手(玩家)狀態(tài)、選手策略、作戰(zhàn)單位的狀態(tài)(buff、debuff)、作戰(zhàn)單位的屬性、作戰(zhàn)單位的技能等等。 我們沒有辦法面面俱到,而且那樣做也是沒有意義的——不能簡化就不是模型。所以,我們只考慮一些和作戰(zhàn)單位本身相關(guān)的、相對比較穩(wěn)定的因素作為戰(zhàn)斗力的參考因素——作戰(zhàn)單位的屬性。 略有爭議的是,有的策劃主張把技能也計入戰(zhàn)斗力,而另一些策劃則選擇不這么做。出于數(shù)值設(shè)計模塊化的考慮,以及技能釋放的一些不確定性(如wow副本中技能釋放次序、九宮格對戰(zhàn)時技能的發(fā)動頻率),大多數(shù)的游戲里,技能是不計入戰(zhàn)斗力的,但這并不是絕對的。 在戰(zhàn)斗力不計入技能時,技能作為一個獨立的模塊,代表的是戰(zhàn)斗力的發(fā)揮水平。這樣的好處是,戰(zhàn)斗力的構(gòu)成模塊——屬性和戰(zhàn)斗力的發(fā)揮模塊,可以分別計算保證各自的平衡性和成長性。 以最簡單的例子,角色/卡牌的等級、裝備、科技/奇門/經(jīng)脈(或其它什么叫法)等的成長提高戰(zhàn)斗屬性的數(shù)值,技能的提升,增加技能傷害系數(shù)——攻擊或技能時,發(fā)揮的攻擊力(或其它屬性)的數(shù)值的%。 (我是mt的卡牌進化,屬性增加、技能升級) 1.3. 戰(zhàn)斗力的計算在定義了戰(zhàn)斗力,確定了影響戰(zhàn)斗力的因素之后,我們可以開始計算戰(zhàn)斗力了。 計算戰(zhàn)斗力也有2種方法,1種是找一個統(tǒng)一的參照物,如某草人,攻擊力為1,生命值無限,在計算某個單位的戰(zhàn)斗力時,以該單位被殺死時,草人損失的生命值來衡量該單位的戰(zhàn)斗力;另1種,則是找到一個能較準確的描述屬性變量和戰(zhàn)斗力的函數(shù)關(guān)系式,將公式簡化,得到玩家方便理解的戰(zhàn)斗力計算公式。 1.3.1. 參照法這個計算方法的關(guān)鍵之處,在于找到合適的草人,比如上文描述的,攻擊力為1的草人,在傷害=攻擊-防御的減法公式里,并不能準確的反應(yīng)戰(zhàn)斗力。在除法公式,值為1的攻擊力,在被防御的%減免后,也體現(xiàn)不出防御提升帶來的戰(zhàn)斗力變化。 我們在設(shè)計職業(yè)時,通常先選擇一個標(biāo)準模板,比如說戰(zhàn)士,以其攻擊、防御、血量等屬性作為參考,各屬性方向分別拉伸或縮減,以構(gòu)成新的職業(yè)。以這個標(biāo)準模板,作為草人的屬性模板,修改其血量為無窮大,這樣可以得到更好的結(jié)果。 若提高1點的攻擊力,最終反映到草人的損失生命值上是10,我們可以認為每點攻擊力提高了10點的戰(zhàn)斗力;同樣的,我們可以確定防御力、生命值等其它各屬性對戰(zhàn)斗力的提升效果,得到戰(zhàn)斗力的計算公式。這個公式是一個各屬性的加權(quán)求和計算: 如,戰(zhàn)斗力=攻擊力*2+防御力*1+生命值*25+… 備注:這種算法,有可能各職業(yè)的戰(zhàn)斗力公式不一致,即,有可能戰(zhàn)士的1點攻擊增加2點戰(zhàn)斗力,而盜賊則增加1.5戰(zhàn)斗力。 1.3.2. 公式法在有些時候,我們可能會較容易的找到一個準確描述戰(zhàn)斗力的函數(shù)關(guān)系式。比如: 為引入概念,先簡單的假設(shè),當(dāng)戰(zhàn)斗的屬性只有攻擊和血量時,我們知道戰(zhàn)斗力=攻擊力*生命值。 在此基礎(chǔ)上,我們再引入除法公式和防御力屬性,那么戰(zhàn)斗力=攻擊力*生命值*(1+防御力*k),k為1點防御力等效提高的生命值的比例。 類似的,也可以引入暴擊、回避等各類屬性,戰(zhàn)斗力= 等效攻擊*等效生命值,幾何上,戰(zhàn)斗力的值等于邊長分別為等效攻擊和等效生命值的矩形的面積。 我們先以只有攻擊力和生命值2種戰(zhàn)斗屬性的情況來介紹如何用這種方法找到合適的戰(zhàn)斗力公式,簡單的模型更能反映問題的本質(zhì)。設(shè)若有若干個職業(yè),每個職業(yè)的戰(zhàn)斗力相同,意味著攻擊力和生命值的乘積相等—— p=x*y。考慮到理解成本的高低,這里我們?nèi)砸约訖?quán)求和的簡單公式計算戰(zhàn)斗力。 參考下表: 其中p1是按照p=攻擊力*生命值計算的精確戰(zhàn)斗力,而p2則是找到的近似加權(quán)求和公式(p1’和p2’則表示職業(yè)拉伸后以攻防屬性比例4:6或6:4計算的戰(zhàn)斗力)。 可以看到,隨著屬性的增加(如等級提升時,各屬性等比例提升),p1和p2的差距越來越大。但這實際上并沒有問題。從p1’/p1和p2’/p2的比值穩(wěn)定可以不那么直觀的看出,職業(yè)的偏差并沒有隨著等比放大被拉伸。這意味著,隨等級的提升,職業(yè)模型的差異,相對的位置并沒有變化,采用加權(quán)求和公式,只是被壓縮到相對更狹窄的區(qū)間內(nèi),為了具象化一些,可參考下圖: (上圖為攻擊力和生命值之和隨機在一定范圍內(nèi)的戰(zhàn)斗力的展示) 可以看到橙黃色的點和藍色點,在各自的區(qū)間內(nèi)相對位置的比例不變(點的分布形狀沒變,如紅框里的4個點的相對位置為例) 接下來的問題,是如何找到接近程度較高的各屬性的權(quán)重值,也有3種做法: ? 按基礎(chǔ)的戰(zhàn)斗模型,如10攻擊、100生命時,10刀砍死的戰(zhàn)斗節(jié)奏,1點攻擊力就等于10點生命值。這個做法足夠簡單,但是戰(zhàn)斗力與實際戰(zhàn)斗能力的接近程度往往不是最佳的。偏差程度取決于你制定的戰(zhàn)斗節(jié)奏。這個偏差,通常并不大。所以這也是 ? 隨機的生成一些數(shù)據(jù),比如{攻擊x,生命20-x,戰(zhàn)斗力x(20-x)},然后回歸。通常需要借助一些工具來實現(xiàn),excel的擬合只能對單變量函數(shù)使用。 ? 還有一種名叫Boosting的方法(數(shù)據(jù)挖掘的課里聽來的),先給定初始權(quán)重值(各屬性權(quán)重為1),對每次迭代后生成的新模型在上次錯分的訓(xùn)練樣本上提高權(quán)重,最后將所有模型疊加得到最后的模型。下面是課上偷的圖: 最后,還有2種計算戰(zhàn)斗力的做法,也值得推薦: 參考《論減法公式》http://gad.qq.com/article/detail/7560 1.4. 如何提高戰(zhàn)斗力公式的準確性戰(zhàn)斗力的計算公式,總是或多或少的存在誤差,尤其在戰(zhàn)斗力和技能模塊化設(shè)計后,可能因為技能的隨機性、技能策略的運用上,出現(xiàn)以弱勝強的情況。在1.3的計算中,10%以內(nèi)的誤差,已經(jīng)是比較良好的戰(zhàn)斗力公式了。但是有的時候,這并不容易做到。 這種情況下,我們應(yīng)當(dāng)提醒自己,策劃是規(guī)則的制定者。很多時候,附加以簡單的規(guī)則,可以節(jié)省掉大量的計算,而這個規(guī)則卻并不會影響玩家的體驗時。 在戰(zhàn)斗力的計算公式設(shè)計時,我們就可以通過添加一個小的輔助規(guī)則來提高戰(zhàn)斗力的準確程度——戰(zhàn)斗力碾壓規(guī)則。即當(dāng)雙方戰(zhàn)斗時,對戰(zhàn)斗力數(shù)值占優(yōu)的一方,提供額外的傷害或防御補正;或對戰(zhàn)斗力處于劣勢的一方,進行相反的debuff操作。 因規(guī)則較簡單,這里就不細說。 1.5. 幾個戰(zhàn)斗力計算公式1.5.1. 神仙道的戰(zhàn)斗力計算改版前,3 點絕技= 1 戰(zhàn)斗力, 1 普通攻擊/1 法術(shù)攻擊= 1 戰(zhàn)斗力,1武力(法術(shù))=8戰(zhàn)力,1絕技=8/3戰(zhàn)力。以下屬性不加戰(zhàn)斗力:生命,防御(3種),暴擊,格擋,閃避,命中,氣勢。 改版后,生命*0.12 + (普攻+ 絕攻)*0.24 + (法攻+ 普防+ 絕防+ 法防)*0.12 + (命中+ 閃避+ 格擋+ 破擊+ 守護+ 必殺+ 暴擊)*1.2 + 先攻*3.68 可以看到,即使成功的游戲,戰(zhàn)斗力的計算公式,也可能極馬虎,改版前的公式,感覺比等級/裝備目測法都有所不如。 1.5.2. 神曲的戰(zhàn)斗力計算1點攻擊= 1.2戰(zhàn)力,1點防御= 1 戰(zhàn)力 1點暴擊= 1 戰(zhàn)力,1點格擋= 1 戰(zhàn)力 1點力量= 5.8戰(zhàn)力,1點護甲= 8 戰(zhàn)力 1點智力= 5.8戰(zhàn)力,1點生命= 0.244戰(zhàn)力 1點體質(zhì)= 4.88戰(zhàn)力 其中1點體質(zhì)=20生命,1點護甲=4點防御和4點魔防。計算時,體質(zhì)和體質(zhì)所增加的戰(zhàn)斗力不會重復(fù)的引入計算。 1.6. 熱血高校的戰(zhàn)力偏差值這個并不是游戲,之所以牽強附會的放在這里,是因為熱血高校的戰(zhàn)力偏差值的計算,有點小意思,相信有心的同學(xué)一定有辦法將其運用到自己的設(shè)計中去。 偏差值公式為: [(個人成績-平均成績)/標(biāo)準偏差]*10 + 50 為了更應(yīng)景,我們以人類去脂體重指數(shù)的計算公式,來作為實戰(zhàn)戰(zhàn)斗力的計算參考值。 去脂體重指數(shù)是這樣計算的,去脂體重指數(shù)= BMI*(1-體脂率),以一個身高1.78,體重122斤,體脂率15%的消瘦型體格為例來計算他的戰(zhàn)斗力。 BMI=體重(KG)/身高(M)^2 則上述對象BMI=61/1.78^2=19.2526,去脂體重指數(shù)=BMI*(1-15%),結(jié)果為16.3647,戰(zhàn)斗力極為低下。 再來測算一下李啊噠的,體重=64kg,體脂1%,身高1.72(數(shù)據(jù)僅供參考),去脂體重指數(shù)=21.417,所以李啊噠可以輕松的戰(zhàn)勝上述的消瘦小伙。 我們隨機的生成100個去脂體重指數(shù)在10~24之間的選手們,來計算他們的戰(zhàn)力偏差值: Data={13,15,15,11,24,20,21,20,24,19,15,13,10,24,21,17,21,21,20,12,24,23,24,13,21,21,11,17,14,14,16,18,17,20,22,15,17,23,13,23,20,20,23,12,18,10,15,20,24,19,15,14,23,11,24,19,20,18,10,13,20,22,11,22,23,17,19,18,16,11,16,11,20,12,20,11,19,10,22,11,16,16,18,22,18,20,20,14,20,23,21,23,15,18,17,17,23,14,22,14} 先計算標(biāo)準偏差sd=4.21177,平均值17.72,計算這些選手們的戰(zhàn)力偏差值是這樣的: {38.7933,43.5419,43.5419,34.0447,64.9106,55.4134,57.7877,55.4134,64.9106,53.0391,43.5419,38.7933,31.6704,64.9106,57.7877,48.2905,57.7877,57.7877,55.4134,36.419,64.9106,62.5363,64.9106,38.7933,57.7877,57.7877,34.0447,48.2905,41.1676,41.1676,45.9162,50.6648,48.2905,55.4134,60.162,43.5419,48.2905,62.5363,38.7933,62.5363,55.4134,55.4134,62.5363,36.419,50.6648,31.6704,43.5419,55.4134,64.9106,53.0391,43.5419,41.1676,62.5363,34.0447,64.9106,53.0391,55.4134,50.6648,31.6704,38.7933,55.4134,60.162,34.0447,60.162,62.5363,48.2905,53.0391,50.6648,45.9162,34.0447,45.9162,34.0447,55.4134,36.419,55.4134,34.0447,53.0391,31.6704,60.162,34.0447,45.9162,45.9162,50.6648,60.162,50.6648,55.4134,55.4134,41.1676,55.4134,62.5363,57.7877,62.5363,43.5419,50.6648,48.2905,48.2905,62.5363,41.1676,60.162,41.1676} 對比看看發(fā)生了什么 (沒錯,和上面的圖是一樣的,前面偷了個懶,但概念相通) 為什么要費這么大勁,進行這個變換操作呢? 這是因為,根據(jù)某個選手的偏差值,我們能很容易的找到他在樣本中的位置,具體做法如下: l 先求出一個x值,x=(偏差值-50)/10 l 可以根據(jù)這個表查出自己的比例:http://site./jxcg/KJ/Bernoulli/N_table.htm 比如,某個選手的偏差值為60.162,求出x=1.0162,查表,得到 查到這樣2個值,這表示該選手比樣本中84.38%~84.61%的選手要強。 在excel中對上面的數(shù)據(jù)篩選出比60.162大的數(shù)據(jù)并計數(shù),有84個值。 參考正態(tài)分布曲線看更直觀一點: 累積概率密度: 在游戲里,我們經(jīng)常使用一個關(guān)卡的戰(zhàn)斗力數(shù)值作為玩家挑戰(zhàn)pve關(guān)卡的成長程度的參考標(biāo)識。如普通難度——火燒博望坡——雜兵1,推薦戰(zhàn)斗力1000。 這種時候,如果某個玩家戰(zhàn)斗力只有9000,會稍有點糾結(jié),上次我6000挑翻了6500的戰(zhàn)斗力的關(guān)卡,這次我應(yīng)該也能過吧?但是實際結(jié)果,很可能該玩家就在這折戟沉沙了。 但是如果我們通過記錄最近若干次首次挑戰(zhàn)成功這個關(guān)卡的玩家的戰(zhàn)斗力,依上述算法,先計算出標(biāo)準差和平均值,然后代入該玩家的戰(zhàn)斗力,計算其偏差值,作為關(guān)卡相對于該玩家的一個動態(tài)的戰(zhàn)斗力。玩家的困擾可能會減少很多,輔助配合顯示一個玩家在這些記錄中所處位置(如,高于84%挑戰(zhàn)成功的玩家的戰(zhàn)斗力)。提示效果可能更好,而且由于這個值是動態(tài)的,不會由于開啟新的數(shù)值成長線而干擾這個提示的有效性。 最后,偏差值的這種應(yīng)用,目前還是空想階段,我自己也沒在項目中實際運用過,但求拋磚引玉,給各位看官提供一可能的額外參考,這段文字的目的就達到了。 1 / 11 |
|