AI、聲效、震動:聊聊動作遊戲的其他設計

無良印品發表於2020-07-31
對於渴望瞭解動作遊戲的一些細節的朋友說一聲抱歉,又是好幾個月不見,那麼我們開始。

我們直接進入正題吧,怪物AI(僅包括多層邏輯不包括AI學習),聲效,UI動效,震動(不包括演算法),頓幀,表演,攝影機(暫不聊)。在進入講解前說明一下,為什麼我們要把這些單獨領出來講,有兩點考慮:

1.        這裡的要講的每個點,都不用像之前一樣單獨拉巨大的篇幅,雖然有一些依舊挺大;

2.        之前的兩個點是核心操作體驗,這裡要講的是對手和效果的設計體驗。

怪物AI

首先要搞清楚,為什麼我們要說怪物AI,即使是手機動作遊戲,怪物的AI也不能隨意設計,導致遠端和程式沒區別,強怪和弱怪沒區別。

對於動作遊戲來說,一個好的對手,是提升手感和滿足感的重要途徑!絕大部分的時候你都在和你的對手也就是電腦作鬥爭,所以,你需要讓玩家體驗不同的敵人,不同的戰鬥模式。技能的設計只是一個方面,而如果,沒有行為的區別,依舊容易感到無趣。

AI就是設計怪物的行為邏輯,不管你用什麼引擎或者是開發方式,但關於怪物的行為總會有幾個共同的點,碰到特別需要講解的地方我最熟悉的2D動作遊戲為核心來闡述這些點。

索敵邏輯

首先怪物出生之後,經過反應時間,第一件事是索敵,即搜尋自己範圍內的敵對單位,如果沒有敵人就會進入巡邏狀態。

當怪物沒有發現敵人的時候第一條件就是巡邏,是否站著不動,或者休息多久,有幾層索敵狀態,這些引數都是根據專案的需要而定的。

通常多層索敵狀態是一些恐怖遊戲常用的標配,怪物聽見你,開始進入第一層索敵(四處找,甚至翻櫃子),怪物看見你是第二層(開始追捕),逃脫後是第三層(原地轉圈或者回到起點),不同的索敵狀態會給玩家造成很大壓力,動作遊戲上並不常見。

也有完全不理會敵方的怪物型別,也就是不索敵,只根據既定路線來回移動。
AI、聲效、震動:聊聊動作遊戲的其他設計
被警戒-躲藏-巡邏-發現-追殺-逃脫範圍-躲藏

索敵範圍:

字面意思理解,即是怪物當敵人進入自己的警戒範圍的時候,怪物會做出相應的行為,該警戒範圍可以有多個層次,對應聽覺,或者視覺,以及丟失目標的範圍。

比如觸發了聽覺警戒的時候,怪物會追蹤源頭;又比如觸發了視覺警戒的時候,怪物會追殺你;這些分層次索敵,常用於各種動作潛行和恐怖遊戲。

巡邏邏輯:

怪物的巡邏方式,包括了各種行為引數,移動方式,停滯時間,反應時間,動作行為等。然而通常意義上的動作遊戲並不需要太過考慮這些,個別神作除外,你們懂的。

另外,怪物的巡邏範圍也包括在這裡面,雖然不是同一個系統,但放在這裡講更容易理解,比如2D遊戲中,怪物A的巡邏範圍只有一個平臺,你進入了怪物A的索敵範圍,他將攻擊你,但當你離開那個平臺之後,他將不會追蹤你;怪物B的巡邏範圍是一整張地圖,你進入了怪物B的索敵範圍,他將攻擊你,即使你離開它所在的平臺他也將追蹤你,除非他丟失了目標;怪物C的巡邏範圍是一整張地圖,你進入了怪物C的索敵範圍,他將攻擊你,即使你離開它所在的平臺他也將追蹤你,更可怕的是,他不會丟失目標,那麼它將追你到死,除非殺死他或者到另一張圖。

AI、聲效、震動:聊聊動作遊戲的其他設計
追蹤-全地圖跟隨(正常場景他也會追你過圖)

最近距離:

即一些怪物的規避機制,他會逃離玩家,當他索敵成功之後,他將會首先判斷對方是否在自己的最近距離之內,如果在他會逃離;如果不在他可能會進行攻擊或者嘲諷等行為,這些引數全部由設計者自己控制。

者種設計可以製作出很多有意思的怪物模板,比如會亂跑亂跳的火怪,老是遠處噁心你,卻不容易擊殺。

攻擊距離:

即對方進入到怪物的攻擊距離之內就開始攻擊。

攻擊距離和最近距離之間有著奇妙的關係,尤其製作遠端怪物的時候。假設角色進入了攻擊距離的同時達到了最近距離,這個時候,怪物應該根據當前位置優先逃離出最近距離,攻擊,然後再判斷距離,距離不夠再重複這個過程。

AI、聲效、震動:聊聊動作遊戲的其他設計
如果沒記錯,這位怪物當你靠近它後他會使用擊退(或自己退)

尋路邏輯:

這個不是巡邏邏輯,這個邏輯是怪物對障礙和地形的處理方式。以為常年做2D遊戲所以這方面並沒有太多積累,2D遊戲跨越地形的怪物一般可以做巨大,或者飛天遁地穿越地形,解決地形的問題。(同上圖的《空洞騎士》)

3D的可以說一兩嘴,但可能並不準確,因此我還是保留意見。

技能序列:

這個是動作遊戲要下功夫去設計的對於怪物表現最重要的系統之一,硬直和連招系統之後這個又是另一個重點。

上面的系統固然也是將遊戲做好的重點,但是作為動作遊戲,最核心的自然是怪物和玩家的交戰表現,所以做複雜不為過。

需要說明一點,我個人喜歡儘量將所有的怪物的行為用一套完整的行為模式框起來。這樣方便我們後續開發的時候,想要新增什麼怪物都不用去勞煩程式來來回回的加,導致一個個怪物都是特寫的怪物,工作量巨大,出問題還不好改,小團隊就是需要一個相對完美的框架來護航。

首先是技能銜接的問題,這個技能銜接說的是讀取序列的時候是否銜接,以及被打斷之後是否繼續下一個序列。是否銜接是後面我會提到的AI等級,這個AI等級來確認該怪物是否有連續銜接的能力,被打斷之後是否繼續讀取下一個序列動作,這個我建議繼續下一個序列的動作,被打斷之後最好不要從頭開始播放序列。

其次說到技能序列的層級關係,技能序列同樣分層級,比如:A套攻擊序列(模板)在B套攻擊序列(模板)之下,B套在C套序列(模板)之下;也就是說當觸發了C模板的時候,A和B模板的技能序列將會被跳過,直接去讀取C模板的攻擊序列。

最後說道技能序列的具體執行方式:

假設我們首先給予動作效果一個數字序號:atk1-atk5=01-05;skillA1-skillA3=11-13;skillB1-skillB3=21-23;skillC1-skillC3=31-33;skillD1-skillD3=41-43;以此類推。

先解釋一下序號的使用方式,010203111213這一組數列的意思就是怪物將會連續釋放atk1、atk2、atk3、skillA1、skillA2、skillA3;連續完之後loop,直到有新的序列打斷該loop。

下面我們講排序方式:

A普通序列:01020304051112010203043233

B狀態序列:111213212223313233

C狀態序列:212223313233

D狀態序列:313233

E狀態序列:414243

F狀態序列:515253

A2第二狀態普通序列:···

B2第二狀態狀態序列:·······

甚至可能會有第三狀態以及更多層級的序列,如果嫌麻煩可以直接變身(換一個怪物模型和配置)。

這裡假設狀態的觸發時機,我們假設A狀態是最底層的技能序列,普通狀態下就是這一套連招釋放;B狀態是“玩家被擊飛的時候釋放的技能”;假設C狀態是“玩家被擊倒之後釋放的技能”;假設D狀態是“玩家遠離自身攻擊範圍釋放”;假設E狀態是“每經過30S釋放一次該序列”;假設F狀態是“當玩家發起任何攻擊可以傷害自己”;這個狀態是可以擴充套件的,你需要的時候就在這裡擴充套件,統一在一個表格中,所有怪物可以通用,方便管理(低階怪物如果沒有必要就不要填其他狀態,和程式溝通)。

這裡來介紹這個狀態序列觸發規則,字母序號越高的層級越高,當同時出現幾種判斷的時候,選擇最高的序列觸發,並且要將該序列裡面的動作釋放完畢才會觸發其他的狀態序列,不疊加也不替換。

如果有第二狀態且不更換模型的話,你可以做一套完全不一樣的技能序列。

你可以模擬一下你的戰鬥效果,當你和怪物對戰的時候,是否能出現更多的模式。

AI等級

這個等級是專門用於控制怪物的反應的一個系統,將會包括:入場反應時間、間隔時間、反應時間、連招概率。

1.        入場反應時間:即入場後怪物會多久後開始索敵;

2.        間隔時間:即一個技能動作到下一個技能動作之間的時間間隔;

3.        反應時間:狀態序列之間的切換時間;

4.        連招概率:即一個技能動作到下一個技能動作之間的銜接概率(百分比);

也許有人會問有一些boss會圍繞著玩家,閒庭信步,這個怎麼弄得?這和AI以及序列無關,第一有可能就是寫死的,第二這是一個技能動作,直接被放在了技能序列裡面。

怪物型別(AI型別)

這裡需要特殊講一下型別的模式種類,按道理來講他應該是最高層級的行為,是總的行為模式,應該最先講,但是動作遊戲裡面敵人最主要的還是對和玩家在戰鬥的判斷和及時反饋,我認為僅在動作遊戲上,型別的模式可以不像其他遊戲那麼重要。

不過,這裡我仍然需要講明,型別模式也仍然是重要的設計環節。

比如石像鬼型別:玩家進入索敵範圍之後,石像鬼不會攻擊玩家,玩家攻擊石像鬼,石像鬼就會攻擊玩家。

比如繞後鬼型別:玩家進入索敵範圍之後,它永遠都想要跑到玩家後面去,只有在背後他才會攻擊玩家。

比如逃跑鬼型別:玩家進入索敵範圍之後,進入他的最近距離,他便開始逃跑,多少秒之後會消失,擊殺會有獎勵。

比如不死怪型別:怪物瀕死時,多少秒內必須造成多少輸出殺死,讓不然會滿血復活。

比如普通型別:玩家進入索敵範圍後,攻擊玩家,玩家離開巡邏範圍後,進入正常巡邏。

等等等等。

需要單獨提一下,不同型別的怪物會根據訴求製作不一樣的動作,如果你們團隊沒有考慮好要如此增加工作量,其實可以統一使用一種型別,將型別這個口子留下來,以後要擴充套件怪物模式可以考慮再回來啟用。

聲效

為什麼聲效重要?視聽藝術,都說了是視聽藝術,還有人會問為什麼重要。況且在關鍵的效果點,好的音效是在表面上提高打擊效果的方式。而且音效一般會佔用大量資源,越細緻越難管理,建議中期的時候就開始關注這個內容。

聲效的介面在什麼地方比較好?其實,放在子彈(特效播放)的物體上最好。和傷害幀一起播放音效即可,講道理這個應該沒什麼說的。

音效需要注意哪些點?同一個音效的觸發次數必須有一個上限,不然多段傷害加上群怪,很容易爆音或者卡死,受擊特效,重複多次播放的也是同理。

有哪幾種型別的聲效?行動聲,擊中聲,物體互動聲,場景聲。

其中:

  • 行動聲包括了人聲,空揮武器聲,腳步聲,衣物聲,擊倒聲;全部可以綁在人身上的音效,怪物同理。
  • 擊中聲包括了不同武器擊中不同怪物,或者擊中不同場景;在場景和怪物的受擊部位上。
  • 物體互動聲因為玩家的操作行為,物體本身發出的聲音;場景互動機關產生的聲音效果。
  • 場景聲音自帶的場景音域,無需任何行動和觸發;山洞裡的微風、落石、流水都是大範圍的音域。


震動

終於講到了大夥喜聞樂見的畫面震動(震屏)以及後面的頓幀,估計有好多好多好多好多好多的人(門外漢),都把震屏頓幀變現好不好當作評價一個動作遊戲做的好不好的關鍵點,我只想說我可......請腦補一下我的憤怒。

震屏,尤其是2D動作遊戲是很常見的視覺刺激效果,通常用於暴擊,一次性受到大量傷害,特殊技能在關鍵的效果震屏即可。

切記濫用震屏,到時候你會看見你的螢幕一直瘋狂震動,眼睛會非常吃力。

AI、聲效、震動:聊聊動作遊戲的其他設計
震動

震屏分級:

震屏最好分幾個等級,等級越高震動效果越大,同時或過程中保持不替換也不疊加。根據自己專案需要確認好震屏等級。

或者做一個動態的震屏,根據傷害和力量方向自己判斷,但我不建議做,最好效果是可控的。

震屏判斷:

是否擊中震屏;

根據什麼樣得判斷震屏,比如暴擊、一次性收到大量傷害、砸地、或者無需判斷等等;

是否疊加效果?否

是否替換效果?是

震屏模式:

在震屏條件滿足之後,使用什麼方式震屏,目前有以下幾種方式:

上下、左右、縮放、圓內隨機取點。

比較通用的是圓內隨機取點,也就是說在一個半徑範圍內,鏡頭會隨機選擇點位移,造成螢幕晃動。通常2D不想花精力做震動表現的話,都用這個。

引數有:晃動次數,幅度大小,整體時間;

至於更具體的怎麼取值,麻煩和程式以及數學好的人溝通,謝謝。

同時也可以由美術自己調,具體專案具體分析。

頓幀

是指角色在攻擊擊中目標的同時,“遊戲畫面陷入靜止”或者“N倍率的放慢”,極短時間之後回覆遊戲正常的速度,用於表現入肉的攻擊,有一種頓刀的表現。

頓幀是特殊的遊戲機制,因為如果使用的是“N倍率的放慢”,會涉及到遊戲整體播放的速率,會影響到BUFF時間,遊戲副本時間等等問題,所以在製作頓幀的時候需要考慮全面。

AI、聲效、震動:聊聊動作遊戲的其他設計
頓幀和震動(不用過度表演)

出現方式:

必須擊中目標才會頓幀觸發;

必須擊造成傷害才會頓幀觸發;

根據關鍵幀的配置觸發頓幀,不是每一擊滿足了上面兩個條件都要觸發頓幀;

配置方式:

關鍵幀制;根據不同專案做不同的關鍵幀配置;

如果使用放慢的做法:頓幀的維持時間、放慢的倍數以及頓幀間隔這個引數應該是公共引數,方便隨時調整;

如果使用停頓的做法:那麼維持時間以及頓幀間隔就應該作為公共引數;

同時記住,該效果(頓幀)不能疊加不能替換;

注意幾點:

頓幀是必須一個很高的層級,因為影響到了遊戲的時間計算,尤其是buff的持續等等;

另外,如果震屏和頓幀什麼的一同出現,那麼,請讓他們一同表現;

注意,與音效什麼的沒有關。

注意,不要設定大量的頓幀動作,並且最好頓幀的觸發上限,假設一個刀光過去10個敵人觸發好幾次,玩家會認為卡了。

結束

目前就這麼多了,後面我想自己花點精力把所以講過的東西做一個能夠動起來的東西,有可能是視訊有可能是一個遊戲演示,全看自己的懶癌有沒有發作,以及有沒有製作一個遊戲演示的動力。

可以預期的是,又是一個十年工程,希望大家可以一同進步做自己心目中的動作遊戲。

在這裡提一嘴,格鬥遊戲這玩意和動作遊戲不能同日而語,不要隨便的講上面的點帶入到格鬥遊戲裡面去,格鬥遊戲某種程度上比動作遊戲更加複雜。


作者:無良印品
來源:機核
原地址:https://www.gcores.com/articles/126493

相關文章