- 相關(guān)推薦
游戲技能系統(tǒng)全解析
廣義的的說,和戰(zhàn)斗結(jié)算相關(guān)的內(nèi)容都算技能系統(tǒng),包括技能信息管理、技能調(diào)用接口、技能目標(biāo)查找、技能表現(xiàn)、技能結(jié)算、傷害結(jié)算、buf/法術(shù)場模塊管理。以下是小編整理的關(guān)于游戲技能系統(tǒng)全解析,希望大家認(rèn)真閱讀!
職責(zé)和原理:
技能信息管理:管理unit所擁有的技能以及技能的等級、cd等。
技能調(diào)用接口:AI或者UI操作觸發(fā)技能,觸發(fā)技能時可能選擇了一個目標(biāo)(AI),也可能并沒有目標(biāo)。
技能流程管理:一個技能可能由多個子技能以移動的執(zhí)行模式組合而成,而每一個最終執(zhí)行的技能執(zhí)行過程也存在一個流程,一般包括:前搖過程-結(jié)算點(diǎn)-后搖過程。技能在前搖結(jié)束時進(jìn)入技能真正的結(jié)算流程,結(jié)算流程可能創(chuàng)建子彈,也可能觸發(fā)buf或者創(chuàng)建法術(shù)場。
技能目標(biāo)查找:若技能觸發(fā)時已經(jīng)設(shè)置了技能目標(biāo)unit,則直接將其作為目標(biāo)unit,否則需要根據(jù)一定的策略選擇。此外,技能釋放的時候還需要釋放方向和釋放位置等信息,也在這個模塊獲取。
技能表現(xiàn):技能釋放過程中,需要創(chuàng)建相應(yīng)的特效以及執(zhí)行相應(yīng)的動作。
buf/彈道/法術(shù)場管理:buf掛在unit身上,可能影響unit的一些行為和狀態(tài);法術(shù)場一般由場景管理,影響場景中某范圍內(nèi)的unit。彈道就是技能創(chuàng)建的一個子彈,這個子彈可能以不同的路線移動(直線/拋物線/直接命中等)
技能表
首先說下實(shí)現(xiàn)技能的基本思路。實(shí)現(xiàn)技能的基本思路就是通過策劃填寫表格,來配制成某些技能,在執(zhí)行某個技能的時候,分別去根據(jù)這些表格中的內(nèi)容,確定技能如何表現(xiàn)。基本的邏輯是:
if skillTable.get("技能動作"):
paly 動作
if skillTable.get("特效"):
播放特效
if skillTable.get("法術(shù)場"):
創(chuàng)建法術(shù)場
技能信息管理
unit創(chuàng)建時,此模塊管理unit可使用哪些技能,比如游戲中玩家可以選擇使用哪些技能。
游戲中技能的升級、技能加點(diǎn)、技能池管理都在這個模塊。
此處包括處理技能升級/附文/裝備等外部模塊對技能參數(shù)的修改。
技能調(diào)用接口
提供技能調(diào)用的接口供AI調(diào)用,調(diào)用時可以提供一個目標(biāo)unit,也可以不提供讓技能自己查找。
提供三個接口:
技能開始:開始執(zhí)行技能,若技能不循環(huán)進(jìn)行,則技能可以自動結(jié)束。
技能結(jié)束:有的技能不能自己結(jié)束,比如某些循環(huán)技能。當(dāng)玩家松開按鈕,調(diào)用技能結(jié)束接口,告訴當(dāng)前技能使其結(jié)束,此時技能到達(dá)后搖點(diǎn)時,技能不再繼續(xù)執(zhí)行。
技能停止:當(dāng)技能被強(qiáng)制打斷時,如被攻擊、暈眩等,技能會被強(qiáng)制停止。
此外,當(dāng)前一個技能正在執(zhí)行時新的技能調(diào)用啟動,此時新的技能調(diào)用信息會被保存。一般來說,并不會把所有新的技能調(diào)用信息保存下來,那樣就成了一個技能執(zhí)行的序列。我們游戲僅保存一個新的技能調(diào)用信息。
技能流程管理
技能流程這里分兩點(diǎn)討論:
一個技能可能由多個子技能以一定的模式組合起來。
一個技能常常由多個子技能以一定的模式組合而成,比如三段擊、比如沖鋒斬(先沖鋒、后斬)等,甚至還存在根據(jù)不同的環(huán)境選擇執(zhí)行不同的子技能。分析發(fā)現(xiàn),技能可以分成一個樹形結(jié)構(gòu),這個樹形結(jié)構(gòu)非常類似行為樹,同樣可以將節(jié)點(diǎn)分為控制節(jié)點(diǎn)和執(zhí)行節(jié)點(diǎn),甚至可以包括condition節(jié)點(diǎn)。為此,我們項(xiàng)目引入一個技能樹概念來描述這種數(shù)據(jù)結(jié)構(gòu)。
一個具體的技能(技能樹執(zhí)行節(jié)點(diǎn))也有一個固定的執(zhí)行流程。這個流程一般為:前搖過程、前搖過程結(jié)束=技能結(jié)算時間點(diǎn)、后搖時間點(diǎn)。
1、技能樹
技能樹參考傳統(tǒng)行為樹的設(shè)計(jì),使用樹形結(jié)構(gòu)控制技能的執(zhí)行流程。
技能樹和行為樹在結(jié)構(gòu)上比較類似,但是在運(yùn)行邏輯上有很大的不同。
首先,技能樹的重點(diǎn)并不是根據(jù)上下文選擇一個合適的節(jié)點(diǎn)執(zhí)行,而是以一定的策略將技能樹從頭到尾遍歷執(zhí)行一遍。
其次,技能樹沒有tick的概念,而是基于回調(diào)的,比如一個順序節(jié)點(diǎn),順序節(jié)點(diǎn)中一個子節(jié)點(diǎn)執(zhí)行完畢后,馬上通知順序節(jié)點(diǎn),順序節(jié)點(diǎn)執(zhí)行下一個子節(jié)點(diǎn),直至順序節(jié)點(diǎn)的最后一個子節(jié)點(diǎn)執(zhí)行完畢,順序節(jié)點(diǎn)就會通知父節(jié)點(diǎn)(如果有)它已經(jīng)執(zhí)行完畢。
此外,為了完成技能的一些需求,控制節(jié)點(diǎn)往往存儲更多的控制信息來控制子節(jié)點(diǎn)的執(zhí)行流程。具體的信息根據(jù)策劃需求設(shè)置,比如順序結(jié)點(diǎn)包括原子屬性和循環(huán)屬性。如果一個順序節(jié)點(diǎn)具有原子屬性,則這個順樹節(jié)點(diǎn)在執(zhí)行的過程中并不會被end,只有全部子節(jié)點(diǎn)執(zhí)行結(jié)束才可以end。
2、執(zhí)行節(jié)點(diǎn)的技能流程
一般來說,技能的執(zhí)行流程包括:
前搖時間:技能開始,但是技能真正的結(jié)算流程還沒開始。技能開始以后,機(jī)能相關(guān)的特效和動作就開始播放。
前搖時間結(jié)束:技能前搖結(jié)束時技能開始真正的釋放以及結(jié)算,等技能前搖結(jié)束以后,技能真正的釋放并結(jié)算。釋放包括創(chuàng)建相應(yīng)的彈道/法術(shù)場和buff。
技能后搖點(diǎn):技能播放到后搖點(diǎn)時間時,技能真正的結(jié)束。這時,技能對應(yīng)的特效以及人物動作可能還會繼續(xù)播放,但是技能流程已經(jīng)正式結(jié)束了。也就是說,下一個技能可以執(zhí)行。
技能目標(biāo)查找
技能釋放時,目標(biāo)可能已經(jīng)由AI傳給了技能模塊,也有可能沒有一個目標(biāo),如玩家控制單位。
技能在釋放法術(shù)場、彈道的時候,重要的是技能的方向而不是技能目標(biāo)一般來說,技能獲得一個目標(biāo)對象以后,技能的方向就是釋法者到目標(biāo)的向量。
此外,技能方向可能需要一些配置,如前搖鎖定(前搖過程中目標(biāo)移動,技能方向不變),UI可控制(技能釋放過程中,玩家可以通過控制UI控制技能的釋放方向)。
技能表現(xiàn)
技能的表現(xiàn)包括動作、特效、shader、音效等。其中,特效比較復(fù)雜,需要配置的內(nèi)容也比較多。比如,有些特效掛在模型上,有的特效掛在場景里。對于法術(shù)場的特效,分別可以分為法術(shù)場開始、結(jié)算、結(jié)束特效,分別在法術(shù)場開始時、結(jié)算時、結(jié)束時顯示。對于buff也類似。
彈道、法術(shù)場和buff等技能創(chuàng)生體
狹義的來說,技能模塊只是負(fù)責(zé)技能的執(zhí)行流程(技能樹管理以及技能流程管理),而技能真正的結(jié)算主要是由其創(chuàng)生體結(jié)算的。當(dāng)技能前搖結(jié)束開始生效時,技能創(chuàng)建相應(yīng)的彈道和法術(shù)場,法術(shù)場彈道擊中敵人時又有可能產(chǎn)生相應(yīng)的buff。
一般來說,法術(shù)場是一個場景的某塊檢測區(qū)域,每隔一段時間法術(shù)場檢測此區(qū)域的敵人,并對其攻擊結(jié)算。
彈道是一類子彈移動路徑的抽象,創(chuàng)建一個彈道就表示一個子彈特效沿這個彈道移動并檢測路徑上的敵人。
buff就是掛在單位身上的一個具有持續(xù)時間的狀態(tài),狀態(tài)對單位產(chǎn)生一些正面或者負(fù)面的影響,并且在此段時間內(nèi),每隔一段時間進(jìn)行一次傷害結(jié)算 。
對于技能、發(fā)舒暢、buff之間的功能界定并不是很固定,比如技能能否直接對單位造成傷害,法術(shù)場能否對單位造成傷害,甚至技能只能創(chuàng)建法術(shù)場,法術(shù)場只能檢測目標(biāo)不能造成傷害,只能掛buff,而所有的傷害都是通過buff來結(jié)算。當(dāng)然,這樣并不一定好,一般來說,技能和法術(shù)場也可以對單位造成傷害。
【游戲技能系統(tǒng)全解析】相關(guān)文章:
德國留學(xué)優(yōu)勢全解析08-25
Java的內(nèi)存劃分全解析08-02
日本留學(xué)費(fèi)用全解析10-05
oa系統(tǒng)行業(yè)標(biāo)桿解析07-29
21種PHP 危險(xiǎn)函數(shù)全解析08-24
2017藝考動畫專業(yè)「全解析」11-02
意大利語考試類型全解析09-13
2017藝考動畫專業(yè)全解析09-21