當前位置:才華齋>網路>遊戲動漫>

遊戲技能系統全解析

遊戲動漫 閱讀(2.44W)

廣義的的說,和戰鬥結算相關的內容都算技能系統,包括技能資訊管理、技能呼叫介面、技能目標查詢、技能表現、技能結算、傷害結算、buf/法術場模組管理。以下是小編整理的關於遊戲技能系統全解析,希望大家認真閱讀!

遊戲技能系統全解析

  職責和原理:

技能資訊管理:管理unit所擁有的技能以及技能的等級、cd等。

技能呼叫介面:AI或者UI操作觸發技能,觸發技能時可能選擇了一個目標(AI),也可能並沒有目標。

技能流程管理:一個技能可能由多個子技能以移動的執行模式組合而成,而每一個最終執行的技能執行過程也存在一個流程,一般包括:前搖過程-結算點-後搖過程。技能在前搖結束時進入技能真正的結算流程,結算流程可能建立子彈,也可能觸發buf或者建立法術場。

技能目標查詢:若技能觸發時已經設定了技能目標unit,則直接將其作為目標unit,否則需要根據一定的策略選擇。此外,技能釋放的時候還需要釋放方向和釋放位置等資訊,也在這個模組獲取。

技能表現:技能釋放過程中,需要建立相應的特效以及執行相應的動作。

buf/彈道/法術場管理:buf掛在unit身上,可能影響unit的一些行為和狀態;法術場一般由場景管理,影響場景中某範圍內的unit。彈道就是技能建立的一個子彈,這個子彈可能以不同的.路線移動(直線/拋物線/直接命中等)

  技能表

首先說下實現技能的基本思路。實現技能的基本思路就是通過策劃填寫表格,來配製成某些技能,在執行某個技能的時候,分別去根據這些表格中的內容,確定技能如何表現。基本的邏輯是:

if ("技能動作"):

paly 動作

if ("特效"):

播放特效

if ("法術場"):

  建立法術場

技能資訊管理

unit建立時,此模組管理unit可使用哪些技能,比如遊戲中玩家可以選擇使用哪些技能。

遊戲中技能的升級、技能加點、技能池管理都在這個模組。

此處包括處理技能升級/附文/裝備等外部模組對技能引數的修改。

技能呼叫介面

提供技能呼叫的介面供AI呼叫,呼叫時可以提供一個目標unit,也可以不提供讓技能自己查詢。

提供三個介面:

技能開始:開始執行技能,若技能不迴圈進行,則技能可以自動結束。

技能結束:有的技能不能自己結束,比如某些迴圈技能。當玩家鬆開按鈕,呼叫技能結束介面,告訴當前技能使其結束,此時技能到達後搖點時,技能不再繼續執行。

技能停止:當技能被強制打斷時,如被攻擊、暈眩等,技能會被強制停止。

此外,當前一個技能正在執行時新的技能呼叫啟動,此時新的技能呼叫資訊會被儲存。一般來說,並不會把所有新的技能呼叫資訊儲存下來,那樣就成了一個技能執行的序列。我們遊戲僅儲存一個新的技能呼叫資訊。

  技能流程管理

技能流程這裡分兩點討論:

一個技能可能由多個子技能以一定的模式組合起來。

一個技能常常由多個子技能以一定的模式組合而成,比如三段擊、比如衝鋒斬(先衝鋒、後斬)等,甚至還存在根據不同的環境選擇執行不同的子技能。分析發現,技能可以分成一個樹形結構,這個樹形結構非常類似行為樹,同樣可以將節點分為控制節點和執行節點,甚至可以包括condition節點。為此,我們專案引入一個技能樹概念來描述這種資料結構。

一個具體的技能(技能樹執行節點)也有一個固定的執行流程。這個流程一般為:前搖過程、前搖過程結束=技能結算時間點、後搖時間點。

1、技能樹

技能樹參考傳統行為樹的設計,使用樹形結構控制技能的執行流程。

技能樹和行為樹在結構上比較類似,但是在執行邏輯上有很大的不同。

首先,技能樹的重點並不是根據上下文選擇一個合適的節點執行,而是以一定的策略將技能樹從頭到尾遍歷執行一遍。

其次,技能樹沒有tick的概念,而是基於回撥的,比如一個順序節點,順序節點中一個子節點執行完畢後,馬上通知順序節點,順序節點執行下一個子節點,直至順序節點的最後一個子節點執行完畢,順序節點就會通知父節點(如果有)它已經執行完畢。

此外,為了完成技能的一些需求,控制節點往往儲存更多的控制資訊來控制子節點的執行流程。具體的資訊根據策劃需求設定,比如順序結點包括原子屬性和迴圈屬性。如果一個順序節點具有原子屬性,則這個順樹節點在執行的過程中並不會被end,只有全部子節點執行結束才可以end。

2、執行節點的技能流程

一般來說,技能的執行流程包括:

前搖時間:技能開始,但是技能真正的結算流程還沒開始。技能開始以後,機能相關的特效和動作就開始播放。

前搖時間結束:技能前搖結束時技能開始真正的釋放以及結算,等技能前搖結束以後,技能真正的釋放並結算。釋放包括建立相應的彈道/法術場和buff。

技能後搖點:技能播放到後搖點時間時,技能真正的結束。這時,技能對應的特效以及人物動作可能還會繼續播放,但是技能流程已經正式結束了。也就是說,下一個技能可以執行。

  技能目標查詢

技能釋放時,目標可能已經由AI傳給了技能模組,也有可能沒有一個目標,如玩家控制單位。

技能在釋放法術場、彈道的時候,重要的是技能的方向而不是技能目標一般來說,技能獲得一個目標物件以後,技能的方向就是釋法者到目標的向量。

此外,技能方向可能需要一些配置,如前搖鎖定(前搖過程中目標移動,技能方向不變),UI可控制(技能釋放過程中,玩家可以通過控制UI控制技能的釋放方向)。

  技能表現

技能的表現包括動作、特效、shader、音效等。其中,特效比較複雜,需要配置的內容也比較多。比如,有些特效掛在模型上,有的特效掛在場景裡。對於法術場的特效,分別可以分為法術場開始、結算、結束特效,分別在法術場開始時、結算時、結束時顯示。對於buff也類似。

  彈道、法術場和buff等技能創生體

狹義的來說,技能模組只是負責技能的執行流程(技能樹管理以及技能流程管理),而技能真正的結算主要是由其創生體結算的。當技能前搖結束開始生效時,技能建立相應的彈道和法術場,法術場彈道擊中敵人時又有可能產生相應的buff。

一般來說,法術場是一個場景的某塊檢測區域,每隔一段時間法術場檢測此區域的敵人,並對其攻擊結算。

彈道是一類子彈移動路徑的抽象,建立一個彈道就表示一個子彈特效沿這個彈道移動並檢測路徑上的敵人。

buff就是掛在單位身上的一個具有持續時間的狀態,狀態對單位產生一些正面或者負面的影響,並且在此段時間內,每隔一段時間進行一次傷害結算 。

對於技能、發舒暢、buff之間的功能界定並不是很固定,比如技能能否直接對單位造成傷害,法術場能否對單位造成傷害,甚至技能只能建立法術場,法術場只能檢測目標不能造成傷害,只能掛buff,而所有的傷害都是通過buff來結算。當然,這樣並不一定好,一般來說,技能和法術場也可以對單位造成傷害。