當前位置:首頁 >教程首頁 > 遊戲程序 > Unity3D遊戲開發工程師班 >RPG遊戲戰鬥數值的設計方法詳解

RPG遊戲戰鬥數值的設計方法詳解

發布時間:2019-09-20 08:56:07

在RPG遊戲中,戰鬥公式的選擇以及戰力評估體係的設計,對於養成係統非常重要。本文將從基本戰鬥模型開始,與大家探討RPG遊戲戰鬥數值的設計方法詳解

一、戰鬥公式的演化與策略

戰鬥傷害計算公式是RPG遊戲對養成其決定性作用的關鍵因素,一切戰鬥屬性的設計都圍繞戰鬥傷害公式展開。戰鬥傷害公式也會因戰鬥屬性的添加而隨時進行調整。傷害計算公式中的每一個變量、因子和計算符號都結合屬性有其蘊含的策略設計和針對性場景的應對設計。在設計中為了方便設計師自身計算和降低玩家的理解成本,不推薦設計過多的屬性和過於複雜的計算公式。

1.1 一個經典傷害公式的例子

下麵我們先來看經典遊戲《魔獸世界》其中一個版本的一個計算公式。

攻擊強度(Attack Power,簡稱AP)

Warrior/Paladin(戰士/聖騎士):AP=角色等級*3+力量*2-20

Hunter/Rogue(獵人/盜賊):AP=角色等級*2+力量+敏捷-20

Shaman(薩滿):AP=角色等級*2+力量*2-20

Druid(德魯伊):AP=力量*2-20

Mage/Priest/Warlock(法師/牧師/術士):AP=力量-10

角色DPS(每秒傷害)=AP/14+武器DPS

單次攻擊傷害(最小/最大)=攻擊速度*AP/14+武器傷害(最小/最大)+技能附加傷害

這裏我們可以看到,不同職業的AP計算公式是不一樣的,這由設計師所設計的職業特性決定,這樣也意味著不同的職業有不同的屬性和裝備追求。

防禦力(Armor)

1敏捷(Agilty)=2護甲(Armor)

原來:Armor減少傷害%=0.75%*防禦力/(攻擊方等級+9)

後調整為:傷害=原始傷害值/(1+armor/x),x和等級有關,那個x好像是400+85*lvl 傷害減少百分比的封頂值是75%

這裏我們可以看到這個防禦公式做過一次調整,不過2個公式裏麵核心思路都是需要有等級這個因子,這個因子的作用是玩家等級越高需求的防禦力越大,也就是說防禦值的等值收益是隨角色等級增加遞減的,因此玩家需要不斷提升防禦力來增加傷害減少的值。

最終傷害還會受到暴擊、格擋、技能等因素的影響,在這裏我們暫時不做一一介紹。隨著版本的變更公式也可能做了很多次調整,這裏不影響我們接下來要做的探討。

1.2 戰鬥屬性的策略模型

基本戰鬥模型

最基本的戰鬥模型由生命值、攻擊力、回合數3個要素構成,若是即時遊戲,可以將一個標準戰鬥時長和標準攻擊頻率轉化為回合數進行計算,二者沒有本質的區別。

傷害=攻擊力

之前很多橫版清關遊戲大部分用的就是這個。基於這個模型可以設計出攻擊型單位和肉盾型單位。

屬性添加與衍生策略

現在,在屬性中增加防禦力。

傷害=攻擊力-防禦力

這樣看增加防禦力這個屬性是沒有任何意義的,防禦力的增加等同於每回合增加的生命值,從策略維度上看,相等於增加了生命值的上限,因此還是隻能設計出攻擊型的單位和肉盾型的單位。

為了讓防禦這個屬性發揮作用, 我們進一步分析,這個生命值的增加是基於減少每回合對手攻擊力削弱而進行增加的,針對性的策略設計應該是如果我們選擇增加防禦力,對方可以選擇什麼樣的策略進行對應。因此基於防禦力因素的添加方麵我們可以從設計一個屬性讓防禦力在策略維度上生效。

1-1.webp.jpg

也就是說,暴擊屬性和攻擊頻率的屬性增加可以針對屬性投放策略設計出入狂暴戰士,盜賊,弓箭手這樣的職業特性。

基於玩法係統的屬性類型添加

傷害=攻擊-防禦 這是一套完整的戰鬥體係如果我們要針對法師職業設計法術傷害,那麼我們也可以用同樣的方法設計出  :法術傷害=法術攻擊-法術防禦

他們通過共同屬性生命值聯係在一起。至於暴擊,閃避,命中這類屬性是否需要也作用於法術傷害體係,取決於具體的投放和設計者想要設計的特性。

如果我們需要針對不同類型的法術設計出不同的傷害效果,例如黑暗魔法,光魔法,神聖傷害之類,我們也可以設計對應的屬性與屬性抗性,在公式方麵既可以基於基礎的攻擊公式做強相的乘法或弱相關的加法。

例如:

傷害=(攻擊-防禦)*(1+(黑暗法術增強-黑暗法術抗性))

傷害=攻擊-防禦+黑暗攻擊-黑暗防禦

基於節奏投放的的屬性拓展

當一個遊戲為了後期讓玩家有屬性方麵的追求,尤其是現在以係統迭代為代表的網絡遊戲,設計者有可能設計與策略無關或是影響原有策略判斷但是看起來很厲害的特殊屬性,例如原本設計了防禦力,後來又增加設計屬性無視防禦攻擊,設計了無視防禦攻擊有增加無視防禦抵抗。設計了暴擊增加設計直接暴擊屬性等等。甚至完全獨立出來增加金木水火土另一套傷害與傷害抗性出來。(這裏所說的屬性傷害不是那種與遊戲策略和文化強結合的屬性傷害。)

1.3 減法公式與乘法公式

減法公式的傷害計算:傷害=攻擊-防禦

乘法公式的傷害計算:傷害=攻擊*傷害減免(傷害減免一般由防禦屬性與其他屬性常量和變量得到)

下麵我們來詳細介紹下減法公式與乘法公式的優缺點和需要注意的地方,這裏討論我們主要是基於防禦屬性的討論,暫時排除其他屬性和例如技能這類的係統的影響。

減法公式

1-2.webp.jpg

由減法公式的缺點可以看到,我們一般做減法公式的時候需要針對這些做一定的處理來緩解這些。可用的處理方式有以下幾種:

1、設定標準的防禦預期減少傷害的比例,並且盡可能的讓這個比例不要過大,由此增加等級範圍內防禦的提升空間。例如我們在標準投放的時候就讓防禦可以減少70%以上的傷害,那麼玩家隻要稍微通過其他途徑獲得了防禦力就可能導致防禦力加滿。

2、設定最大減少傷害的比例,以免低端玩家對高端玩家無法造成傷害。

3、設定防禦力的效果與防禦減少比例之間的關係,例如如果防禦力減少了50%的傷害,那麼超過50%的防禦力隻能發揮60%的效果,例如對方100點攻擊力,我有80點防禦力,那麼我實際產生的防禦效果就是50+30*0.6=68點,依次類推進行調整。

乘法公式

有人將乘法公式和除法公式分成兩個類別來進行介紹,我覺得必要性不大,下麵我們列舉2個常用的乘法公式和大家進行介紹。

公式1:傷害=攻擊x攻擊/(攻擊+係數x防禦)

公式2:傷害=攻擊x(1-1/(1+防禦/等級函數))

乘法公式的核心原則是加入其它變量讓防禦值增長的時候減少傷害比例接近1而永遠無法達到1,因此我們在公式中看到的攻擊x攻擊/(攻擊+係數x防禦)實際上是攻擊力與攻擊/(攻擊+係數x防禦)的這個係數作用。和公式2的原理是一樣的。公式2加入了等級因子,按個等級函數是指每個等級有一定的防禦需求,若玩家防禦力沒有提升,那麼防禦產生的效果就會下降。

1-3.webp.jpg

在進行乘法公式的時候我們通常需要進行如下的處理:

拉出範圍內傷害與防禦的曲線,判斷有價值的區間是否合理,然後調整係數將它調整到合適的範圍,若無法調到每個等級都合理,可能就需要設計分段函數進行細節控製。

對比乘法公式和減法公式的優點和缺點可以看出,乘法公式雖然在複雜程度上提升了很多,但是實際的優點也沒有想象的那麼多。盡管用了除法公式能夠讓防禦趨向於無限大,但是這個曲線也會受邊際效應的影響,和分段減法公式的效果是差不多的,這也是為什麼大家看到的大部分遊戲選擇乘法公式的原因。

總結一下,在進行數值公式的設計和選擇過程中,要盡量避免出現為了公式而公式,而是盡可能的從用戶接觸的數值體驗上多做考慮,從遊戲的數值策略、節奏和投放上麵多做設計和調整。我們在對其他遊戲進行公式分析的時候,原則上公式中所包含的每一個變量,每一個運算符號都有其特定的含義。或是節奏上的,或是策略上的,或是為了應對某個技能存在或是某個係統存在。後麵我會提供一些其他遊戲的公式供大家參考。

二、基於養成的戰力換算

現在的RPG遊戲普遍習慣於將玩家的能力轉為為一個可以辨識的數值來幫助玩家評估自己和其他人的戰鬥實力。道具價值,裝備價值,養成係統屬性價值也都繼承這套體係進行評估,因此現在戰力評估機製在遊戲的養成體係中起著至關重要的作用。

現在普遍認為戰力的大小是玩家實力的直接表現,將每個屬性值乘以一個係數後相加,即可得到這個角色或係統的戰力價值。這種認知存在一定的錯誤和局限性,我們通常見到的戰力評估是一種基於節奏的粗略評估而不是實際的戰力體現,因此戰力經常會有誤差,出現高戰力打不過低戰力的現象。本文我們將一步一步推導來說明這個問題。

2.1 基於真實戰鬥的評估體係

戰力的本質是玩家戰鬥實力的體現,因此戰力評估最基礎的層麵和玩家的屬性和戰鬥公式相關。這裏首先要確定玩家戰鬥的標準模型,我們在戰鬥公式篇介紹過,一個戰鬥標準模型包含,生命,攻擊,標準回合數這幾個最基本的量。

我們在判斷誰比較強的時候,就是假設2個單位同事開始進行攻擊,誰先殺死對手則算作勝利,若同時間死亡則2者戰力對等。因此可以得到如下最基礎的公式。

戰鬥能力強度=攻擊力x生命值

推導:假設a的生命值為Ha,a的攻擊力為Aa,假設b的生命值為Hb,b的攻擊力為Ab,那麼在時間t回合內a對b造成的傷害為 Aa*t,b對a造成的傷害為Bb*t,假設ab戰鬥力相等,則表示a和b同時殺死對方。則可以得到如下等式:

Aa*t=Hb  

Ab*t=Ha  

求解則得到:  

Aa*Ha=Ab*Hb

基於這樣的結論:戰力=(攻擊力x生命值)*修正係數,加修正係數是為了方麵進行查看。

遊戲中還有許多其他的屬性,我們都會將他們轉化為攻擊力與生命值的計算公式中進行換算。我們假設:

傷害=攻擊-防禦    

戰力=攻擊x(生命+防禦x回合數)

因為回合數是不穩定的,因此防禦在不同的對戰中發揮的作用也是不穩定的,因此我們設定防禦的價值的時候是基於標準回合數進行計算的。當回合數發生變化的時候,實際戰鬥力就會發生一定的偏差。然後我們假設增加暴擊率和閃避率進去。假設發生暴擊產生2倍攻擊的傷害,閃避無視一次攻擊。那麼戰力公式轉化如下:

戰力=攻擊*(1+暴擊率)*(生命+防禦x回合數)*(1+閃避率)

其他屬性依次類推得到。

2.2 基於方便計算的戰力誤差

上麵的實際戰鬥效果評估的方式用的人不多,主要原因是玩家在獲得裝備或物品在係統上獲得戰力提升的時候,需要能夠從數值麵板上對其價值進行評估,以上方法就很難進行換算。因此就需要現在比較流行的評估方法,對每一個屬性進行評估然後相加。

這種評估方法雖然是不準確的,但是可以接近真實值,我們這裏先說明一下如何是不準確的。簡單舉個例子如下:

假設:標準回合數=10,攻擊=100  生命值=1000

那麼我們可以設定1點攻擊=10點戰力,1點生命=1點戰力。

那麼我們可以得到加法計算這個單位的戰力=100*10+1000*1=2000

然後我們根據實際戰鬥計算得到這個單位的戰力實際是攻擊力=200,生命值=500,那麼這個單位的戰力=200*10+500*1=2500

這裏我們讓2個角色同時攻擊對方,實際上是同時死亡的。看起來似乎誤差還挺大,而且這個誤差是無法通過調整係數得到對等。

進一步基於增量我們再來看一組例子,可以得到如下的結果:

2-1.webp.jpg

我們對這個表格進行解析:

若是多個玩家1對玩家2進行攻擊。

若是玩家1隻能排隊對玩家2進行攻擊,那麼玩家2可以殺死4個玩家1。

若是玩家2隻能排隊對玩家5進行攻擊,那麼玩家5可以殺死25個玩家1。

一次函數和二次函數隨著增長差距越來越大。

其實我們對比這2個公式可以看出。

戰力=攻擊力*攻擊係數+生命值*生命係數

戰力=攻擊力*生命值*攻擊係數*生命值係數

假設攻擊和生命以回合比例b進行投放,那麼生命值=攻擊力*b

假設攻擊係數和生命係數之間的比例為a,那麼生命係數=攻擊係數*a

代入計算得到:

戰力=攻擊*(a*生命係數+b生命係數)=攻擊*生命係數*(b+a)

戰力=攻擊*生命係數*a*b攻擊力*生命係數

若要調整至加法和乘法的戰力一致,二者戰力之間的關係可化簡為:

(b+a)與a*b*攻擊力*生命係數之間的關係

由這裏可以看到,回合數b與生命與攻擊之間的比值a都是比較小的值,而攻擊力是隨著成長變大的值,因此可以判斷,加法是無法做到準確戰力體現的。

鑒於我們一般情況下隻用判斷同等條件下2個角色之間誰比較厲害。所以我們會通過控製屬性投放來忽略這裏帶來的差異。

我們看不同的設定係數下的實際戰力關係:

2-2.webp.jpg

2-3.webp.jpg

2.3 常用的戰力設定方法

既然已經明確知道屬性評估求和無法準確得到玩家實力,通常我們會通過控製投放節奏來對誤差進行控製,盡可能的保證高戰力玩家能夠打敗低戰力玩家。

我們可以先設定角色的攻擊力和生命值的戰力係數。然後根據節奏和戰鬥公式對這些屬性係數進行轉換。這裏我們假設角色有攻擊、防禦、生命值、命中、閃避、暴擊、抗暴、暴擊傷害這幾個屬性。

2-4.webp.jpg

2.4 技能和係統效果戰力評估

技能提供提升戰鬥力的特殊效果,不同的效果根據其策略範圍和能力強弱進行評估。一般技能可以分為增加傷害類型和特殊策略效果類型。特殊係統提供的特殊能力可等同於技能的戰力評估。

若是傷害類的技能轉化為傷害進行計算。

若是範圍傷害戰力=傷害x傷害人數1x概率1+傷害x傷害人數x概率2

例如一個aoe可能傷害4個單位,但是大部分時候隻能傷害2個玩家。假設技能效果如下

2-5.webp.jpg

因此這個技能的戰力=-攻擊係數*100*(1*0.25*100+2*0.3+3*0.25+4*0.2)

若是buff類技能轉化為對應增加的屬性和存在時間進行計算。

假如一場戰鬥10個回合,一個技能讓敵方暈眩3回合。

那麼這個技能的標準強度=標準攻擊*攻擊係數*0.3

若是屬性類的buff,則這個技能的標準強度=增加的屬性轉化的戰力x0.3

在進行技能的戰力評估的時候,同樣會出現和以上戰力計算同樣難以處理的問題。例如增加屬性3%,暈眩3秒這類的技能,因為在不同時期所呈現出來的效果是不同的, 因此往往在進行技能處理的時候我們會隻根據技能的所處時期進行戰力設定,而不是實際戰鬥能力的強弱,但是我們再進行技能戰力平衡計算的時候就需要進行更加準確的計算。上文已經進行過討論,這裏就不再重複。

2.5 戰力壓製

通過以上的結論我們可以得出,由於回合數是動態變化的, 百分比屬性的效果是動態變化的,每個屬性的價值和實際計算值是變化的,因此做到準確的戰力評估是不可能的,尤其在充值遊戲裏麵,同等活躍的前提下, 充值多的玩家打不過充值少的玩家,充值玩家打不過免費玩家是我們希望進行一定程度上的規避的, 為了避免這種情況,我們再進行戰鬥公式計算的時候,我們會在計算過程中給予戰力高的玩家特殊加成。

常見做如下處理。

傷害=實際傷害x(玩家1戰力/玩家2戰力)

做這樣的處理可以一定程度上規避這個問題。但是這麼做會加快了高戰力玩家對低等戰力玩家的戰鬥節奏。

還可以做如下處理。

設定每個等級有一個標準戰力。

傷害=實際傷害*(1+玩家1戰力/標準戰力-玩家2戰力/標準戰力)

這樣可以一定程度上減少戰力評估不準帶來的影響。

這裏隻在傷害上做了處理,在進行處理的時候,也可以對判定過程中的生命、攻擊、防禦、暴擊、閃避等其他屬性進行處理進行更加細致的調節。

來源:公眾號“遊戲魂”

华体会hth体育网 賞析
  • 2101期學員李思庭作品

    2101期學員李思庭作品

  • 2104期學員林雪茹作品

    2104期學員林雪茹作品

  • 2107期學員趙淩作品

    2107期學員趙淩作品

  • 2107期學員趙燃作品

    2107期學員趙燃作品

  • 2106期學員徐正浩作品

    2106期學員徐正浩作品

  • 2106期學員弓莉作品

    2106期學員弓莉作品

  • 2105期學員白羽新作品

    2105期學員白羽新作品

  • 2107期學員王佳蕊作品

    2107期學員王佳蕊作品

專業問題谘詢

你擔心的問題,火星幫你解答
  • 廣州視頻剪輯培訓機構有哪些

    在廣州這座繁華的都市中,數字創意產業正蓬勃發展,廣州視頻剪輯培訓成為許多影視愛好者的理想起點。隨著短視頻平台和影視製作需求的激......

  • 北京UI設計培訓免費試聽攻略

    在北京這樣一座充滿創意活力的都市,UI設計培訓正成為無數年輕人追逐職業夢想的跳板。隨著數字經濟的蓬勃發展,UI設計行業在北京展......

  • 北京平麵設計培訓機構排名榜

    在當今創意經濟蓬勃發展的浪潮中,北京平麵設計培訓成為眾多職業追求者的理想起點。這座城市的活力與機遇吸引著無數人投身視覺藝術領域......

  • 北京虛幻引擎課程內容全解析

    在影視和設計行業蓬勃發展的今天,虛幻引擎作為核心技術工具,正引領著視覺創作的革命。越來越多的人渴望掌握這門技能,而專業的培訓成......

  • 北京平麵設計課程如何選擇適合的

    在北京這座文化創意中心,平麵設計培訓行業蓬勃發展,為渴望入行的學員提供了豐富機遇。隨著數字媒體和影視產業的崛起,掌握視覺傳達技......

  • 上海3D建模短訓班課程內容解析

    在上海這座充滿活力的城市,影視和設計行業正迎來前所未有的發展機遇,數字技術的進步讓3D建模成為創意產業的核心驅動力。參加專業的......

×

同學您好!

您已成功報名0元試學活動,老師會在第一時間與您取得聯係,請保持電話暢通!
確定