【遊戲設計】如何搭建技能實現框架,讓你少走彎路【乾貨】

成風a發表於2023-09-28
【遊戲設計】如何搭建技能實現框架,讓你少走彎路【乾貨】

寫在最前

大家好,我是成風a,一名在遊戲行業摸爬滾打4年多的小策劃,寫這篇文章的主要原因是想對以往的工作經歷有個回溯,希望讓自己的知識體系更深刻完善的同時,也希望能幫到剛入行或對這方面感興趣的小夥伴,不過這些僅是以我當前的認知水平所總結的,所以還有很多不足,歡迎大佬們交流,指正。

為什麼技能框架搭建如此重要?

【遊戲設計】如何搭建技能實現框架,讓你少走彎路【乾貨】

出現這種問題的原因在於,前期做戰鬥的時候因為策劃沒有用框架的思維想問題,程式也不知道你將來有哪些功待擴充套件的功能,隨著後續版本技能越來越多,越來越複雜,導致維護起來極其繁瑣且不穩定。這篇文章的重要意義在於,幫助你梳理出一套擴充套件性強又好用技能實現思路,這些思路在你以後任何的專案都能用到。看完後,應該會有以下收穫:

更深刻的理解技能底層機制、動效表現的實現邏輯
技能表全欄位的梳理及解釋
技能表資料結構,附模板

如何打造一套擴充套件性強又好用的技能框架?

要想滿足擴充套件性強又好用,我認為的三個關鍵點:

  • 程式後期易擴充套件。一般在專案DEMO階段,戰鬥系統就要開始搭建,但起步階段又不可能就把所有的技能效果規劃好,尤其是內容向遊戲,你永遠不知道戰鬥策劃下一個“奇怪”創意是什麼。
  • 功能可複用性。目的是減少開發成本。比如兩個A、B技能,技能效果都是造成減速,只是觸發條件不同,這時候無需做個全新的減速技能,只要新增觸發條件型別即可。聰明的老師們已經發現了,這種思路其實是將一個技能拆分成多個模組,只實現缺失的模組,然後和已有的其他模組快速拼裝成一個新的技能。
  • 配置時間成本低。技能相關欄位多如牛毛,如果所有欄位只放在同一張表上,必然會降低翻看速度、錯誤排查效率。建立多個分表非常重要,如技能主表、BUFF表、傷害表、動效表現表,我會在文章末尾放上一套模板,供大家參考,用了一週時間嘔心瀝血整理,好想要大家一個小贊支援支援——

廢話不多說,下面是我整理的一套框架,從 能否釋放 到 對誰放 再到 生效結果。任何技能必將經歷此流程

【遊戲設計】如何搭建技能實現框架,讓你少走彎路【乾貨】

一,釋放型別

1,主動釋放:滿足釋放前置條件,玩家主動按鍵釋放。

2,自動釋放:滿足釋放前置條件,自動釋放。

【遊戲設計】如何搭建技能實現框架,讓你少走彎路【乾貨】
《明日方舟》能天使3技能,能量滿自動釋放

3,被動釋放:玩家在戰鬥中因達成某些事件而觸發。被動其實是個大類,實際會細分出很多事件小類:如受擊x次,血量低於x%,x秒未受到傷害,受到異常狀態等。

【遊戲設計】如何搭建技能實現框架,讓你少走彎路【乾貨】
《星鐵》卡夫卡

4,混合型別:以上多種型別結合,如主動和被動結合,玩家主動按鍵後還需滿足某個事件才能觸發,比如LOL火男,Q技能造成熾熱之焰,同時會疊加層數,疊到3層時,爆炸造成百分比魔法傷害。前者熾熱之焰為主動型別,只要按鍵了一定會觸發,後者爆炸傷害為被動,必須滿足疊加層數才能觸發。

【遊戲設計】如何搭建技能實現框架,讓你少走彎路【乾貨】
《LOL》火男

二,釋放前置條件

1,技能CD:以時間為單位-秒(s)-參與計算,特點是符合大多數人的認知,減少理解。

  • 獨立CD:釋放該技能後進入冷切時間,冷卻期間無法再次釋放該技能。
  • 公共CD:同種型別技能共用一個CD,這種在動作遊戲中很常見

【遊戲設計】如何搭建技能實現框架,讓你少走彎路【乾貨】

2,技能消耗:

  • MP值:俗稱耗藍量,每次釋放消耗一次MP值,特點是可透過使用消耗型道具回覆。
  • 技能能量:相比CD時間更為抽象,所以便於從更多角度控制節奏,但缺點是增加了理解成本。能量展

開後分為:

  • 初始能量:便於做暖風時間,暖風時間 =(能量上限 - 初始能量)/回覆速率 。
  • 回覆方式:不僅限於按時間回,如按受擊次數、攻擊次數...
  • 回覆速率:根據回覆方式配置對應效率。每秒1點或者每打1次回一點。
  • 能量上限:既充滿1次能,達到1次釋放消耗。
  • 充能次數:每釋放1次技能,消耗1次充能,充能次數可疊加,有疊加上限。

【遊戲設計】如何搭建技能實現框架,讓你少走彎路【乾貨】
《明日方舟》角色頭頂黃色序號為充能次數,下方綠條為能量值,按時間回覆

三、觸發範圍:

  • 形狀型別:圓形,矩形,扇形等
  • 形狀大小:用於型別對應的引數設定
  • 中心點繫結位置:如以自身所在的圓,或正前方的矩形。
  • 特殊:如戰棋遊戲中以格子為最小單位,然後拼裝成各種形狀。


【遊戲設計】如何搭建技能實現框架,讓你少走彎路【乾貨】
《天地劫》

四、目標選擇:

目標選擇對技能釋放意義重大,相比普攻,技能是低頻率高收益行為,精確瞄準釋放物件才能使收益最大

化,比如技能1:對單個目標造成500%傷害,並造成出血狀態;技能2:對出血狀態的敵人額外造成100%

傷害。技能1為單體爆發技,打精英/BOSS收益最大,技能2有了對出血的目標增傷,兩者配合對精英/

BOSS更具策略性。篩選要點:①一個技能支援多種目標型別共存;②每種目標型別層層篩選出1個。

1,一個技能支援多種目標型別共存:單個技能可能會同時有兩個效果,且每種效果釋放物件不一樣,如LOL日女的W,對自己加抗性的同時還對敵人造成傷害。

【遊戲設計】如何搭建技能實現框架,讓你少走彎路【乾貨】

2,每種目標型別層層篩選出1個:每一種效果都要走此流程,先選型別,再配置該型別下最大生效目標數量。

  • 選型別:大型別選個能覆蓋全部的,比如以陣營劃分,小型別以後隨著版本需要慢慢擴充套件,分兩個欄位控制,這樣做的好處是以免所有情況排列組合起來太臃腫。
  • 大型別:0-不生效;1-友方;2-敵方;3-全部;4-僅自己
  • 小型別(大型別中再次選):0-不篩選;1-仇恨值最高;2-生命最低;3-近戰;其他可擴充套件
  • 最大目標數量:也就是我們常說的單體/群攻的目標數量配置,int型別。
  • 備用目標:用處在於如果本次釋放,攻擊範圍內找不到篩選後的目標,需要備用目標繼續篩,備用目標的個數和順序根據自身專案定。

總結:最終邏輯是一個技能支援擴充套件多種效果型別,每種效果型別選出1個,程式執行的優先順序順序可以透過配置表結構控制。

【遊戲設計】如何搭建技能實現框架,讓你少走彎路【乾貨】

五、傷害計算

戰鬥公式:

戰鬥公式包含屬性詞條、倍率詞條,以及運算方式。業界常見的戰鬥公式可分為減法和乘法兩類,兩種計算方式有著不同的特點。

減法公式

減法公式舉例:傷害 = { [攻擊(1+屬性倍率)- 防禦] (1+技能倍率)} (1+最終傷害倍率)

  • 優點:①理解成本低,每提升1點攻擊力,對方防禦不變時,傷害也提升1點;②屬性購買成長體驗明顯;③利用刮痧線做數值強策略性。常見於策略回合制卡牌和成長體驗賣數值的遊戲型別中。
  • 缺點:攻擊力的收益受對方防禦值的影響,且防禦值越接近攻擊值,影響的程度越大,尤其是在當防禦值>=攻擊值,會出現攻擊方造成的傷害始終為0的不破防現象,所以防禦投放上數值計算上比較困難。

乘法公式

乘法公式舉例:傷害 = { [攻擊(1+屬性倍率)(1-免傷率)] (1+技能倍率)} (1+最終傷害倍率)

  • 優點:①便於戰鬥力的量化,比起減法公式更容易來做不同職業的動態數值平衡;②傷害按百分比折算,不會出現不破防情況。
  • 缺點:因為免傷率是百分比,後期屬性增長到某個階段收益衰減會越來越快,成長體驗糟糕。

注:從戰鬥公式中可以看出,詞條所屬的乘區位置直接影響著其價值,需與程式約束好公式中每個詞條的代表意義。

傷害型別:常規的型別分為物理,法術,真實,治療。不同傷害型別用於參與計算的公式不同。

傷害段數:每次釋放技能打的次數,本次總傷害 = 傷害公式所得值 * 段數。相信不少同學開始有疑惑了,幹嘛用段數這麼麻煩的設計,直接打一次換算成同樣的總傷害不就行了麼?答案還真不是。我直接說做下個人理解:

  • 跟戰鬥公式有關,技能倍率乘區運算完之後的欄位會影響最終傷害,如公式最後的格擋,格擋次數=段數。
  • 單次折算成多次,優點是傷害不容易溢位,缺點是增加了輸出時間,與技能DPS的定位有關。
  • 與動效表現有關,為了給人真實性。比如有些技能就是造成持續性傷害


【遊戲設計】如何搭建技能實現框架,讓你少走彎路【乾貨】
《DNF》裂波斬

六、附加BUFF

  • 型別:增益,減益。在狀態抗性,驅散,正負美術表現反饋時用到。
  • 效果:

  • 屬性buff:如以百分比或固定值的形式改變某些屬性。
  • 控制buff:如減速,眩暈,冰凍,束縛,恐懼,魅惑,擊飛等
  • 傷害buff:如每xx秒扣除xx點傷害。當數值為負數,扣除相當於治療。
  • 驅散buff:清除某型別Buff,使之失效。
  • 功能buff:改變戰鬥相關功能或資源的buff,如使目標無法釋放技能、改變攻擊範圍,或改變經濟費用。
  • 其他buff:位移,傳送,復活,增加標記等

  • 效果引數:用於技能效果對應的引數設定。欄位一般為陣列型別。
  • 生效時機:在【傷害計算】前還是之後,對最終效果有影響。
  • 持續時間:從生效到消失的時間。一般單指一個週期。
  • 生效次數:指上一步要迴圈的週期數。
  • 生效間隔:週期間的冷卻時間。
  • 釋放者死亡BUFF是否消失
  • BUFF疊加:

  • buff分組:不同組buff直接疊加,同組buff按下面規則疊加。
  • 最大疊加數:同組buff疊加到指定最大層數後無法繼續疊加。
  • 疊加方式:效果疊加,持續時間按下面重新整理方式。
  • 疊加持續時間重新整理:1-不重新整理,保持原來的剩餘生效時間;2-重新整理,重置持續時間。

  • buff等級:在技能養成遊戲中會用到,同組buff,每個buff等級不同,效果引數不同。

七、動效表現

1,攻擊方

  • 前搖動作:俗稱抬手動作,在關鍵幀之前,被打斷後無法釋放技能或普攻。
  • 關鍵幀:動作播放到關鍵幀開始計算傷害,需美術在動作動畫中打標記。
  • 後搖動作:俗稱收手動作,在關鍵幀之後。打斷後搖可快速進入下次攻擊,MOBA中的走A就是此原理。
  • 是否閃放:打斷上一動作直接做攻擊動作。
  • 攻擊型別:1-近戰;2-遠端。
  • 位移型別:1-直線;2-跟隨怪物;
  • 位移引數:根據型別配置對應引數。
  • 攻擊特效:資源id配置;特效播放延遲時間。
  • 子彈特效:攻擊型別為遠端時才生效。
  • 子彈運動:

  • 運動軌跡:1-直線;2-螺旋;3-拋物線
  • 軌跡引數:根據型別配置對應引數。
  • 是否實時跟隨:飛行過程中是否實時重新整理目標位置並實時跟隨。
  • 飛行速度:決定允許玩家反應時間的一部分。

  • 穿透型別:1-不穿透;2-原方向穿透;3-跳彈附近怪物
  • 穿透引數:穿透型別對應引數配置。
  • 攻擊音效

2,受擊方

  • 受擊動作:1-預設;2-擊倒
  • 受擊特效:1-預設;2-指定
  • 特效掛點位置:1-頭部;2-上身;3-腰部;4-腳下
  • 受擊關鍵幀:用於扣血時機、飄字時機設定。
  • 位移型別:1-直線;
  • 位移引數:根據型別配置對應引數。
  • 受擊音效

八、技能表參考

技能表參考可加微信:wzc1217131165 與作者討論交流


原文:https://zhuanlan.zhihu.com/p/651349804

相關文章