【遊戲設計】如何搭建技能實現框架,讓你少走彎路【乾貨】
寫在最前
大家好,我是成風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
相關文章
- 如何自學程式設計?如何少走彎路?程式設計
- 遊戲技能該如何設計?這二篇乾貨帶你瞭解遊戲
- Java學習如何少走彎路?Java
- Android Q 適配指南 讓你少走一堆彎路Android
- springboot kafka 帶許可權的配置,讓你少走彎路Spring BootKafka
- 投放Facebook移動遊戲廣告如何少走彎路?(前/中/後期)遊戲
- 【智慧工廠】智慧工廠建設如何少走彎路?
- 新手程式設計師須知30個技巧!少走彎路程式設計師
- 學會這7種SQL進階用法,讓你少走99%的彎路!SQL
- 【乾貨】遊戲介面設計 (五)表現設計遊戲
- 正在學程式設計的你們可能會遇到的問題,希望能給萌新指個路,讓大家少走彎路程式設計
- 開發者如何走的彎路:Into the Breach設計覆盤
- 【乾貨】遊戲介面設計 (一)核心設計遊戲
- 如何在網際網路創業、五年經驗、少走彎路創業
- 外鏈建設誤區避免:少走彎路,高效建設外鏈
- Spring Boot 整合多點套路,少走點彎路~Spring Boot
- 什麼茶葉較好?記住這幾點讓你少走彎路!-黃志強茶莊
- 【乾貨】遊戲介面設計 (四)體驗設計遊戲
- 【乾貨】遊戲介面設計 (二)結構設計遊戲
- 【乾貨】遊戲介面設計 (三)資訊設計遊戲
- 【乾貨】如何設計一個Arkane遊戲的關卡遊戲
- 什麼茶葉較好?記住這幾點讓你少走彎路!泉州黃志強茶莊
- 遊戲新手如何搭建“關卡設計”知識框架?遊戲框架
- 北京0基礎學習Java培訓讓你不走彎路Java
- 成長的腳步,看了也許少走很多彎路!
- 如何搭建自己的遊戲設計框架之左右互搏術遊戲設計框架
- 什麼茶葉較好?記住這幾點讓你少走彎路,什麼茶葉又便宜又好喝?
- 上雲、微服務化和DevOps,少走彎路的辦法微服務dev
- 學姐分享:在求職路上少走一些彎路求職
- 少走些彎路---學習Linux的竅門與經驗Linux
- 少走些彎路-學習Linux的竅門與經驗Linux
- 【遊戲設計】如何搭建資源框架之遊戲資源價值錨定遊戲設計框架
- 乾貨:遊戲中“沙漠”場景的設計手法遊戲
- 學術科研無從下手?27 條機器學習避坑指南,讓你的論文發表少走彎路機器學習
- 全是乾貨!千鋒UI設計全套影片合集讓你輕鬆搞定設計UI
- 如何低投入0基礎做少兒程式設計?(開源乾貨!)程式設計
- 一個軟體測試7年的程式設計師,講述自己兩年突破瓶頸的經驗,關注這些能讓你少走彎路。程式設計師
- Python學習方法(學python之前一定要看,少走彎路)Python