游戲開發(fā)中涉及到人工智能算法
游戲中的人工智能和我們一般用于大數(shù)據(jù)或棋盤類的人工智能非常不同。游戲中的人工智能為了方便的控制和體現(xiàn)游戲演出效果,一般使用較簡單的算法。
總體而言,游戲工業(yè)中涉及到的人工智能更多的是有多少智能就需要多少人工。下面將羅列出游戲人工智能的常用算法。
?
?
1.?尋路
Dijkstra算法?最短路徑算法。遍歷路徑中所有可能的及節(jié)點。效率低,沒有啟發(fā)式函數(shù)。
Asta算法 在靜態(tài)網(wǎng)格中尋找最短路徑的算法。有啟發(fā)式函數(shù)。
Dstar算法 在動態(tài)網(wǎng)格中尋找最短路徑的算法。有啟發(fā)式函數(shù)
?
啟發(fā)式函數(shù):是否在尋路的過程中使用一些預(yù)估用的函數(shù)。
動態(tài)靜態(tài)網(wǎng)格:我們在尋路的移動過程中,路徑上環(huán)境是否會改變。
?
?
基于上述的算法??梢孕薷某鰩蛹壍膶ぢ?,基于網(wǎng)格的尋路。
?
?
?
2.?決策
游戲中的NPC決策
狀態(tài)機:AI的行為是基于一個個狀態(tài)的。通過改變參數(shù)或環(huán)境觸發(fā)狀態(tài)轉(zhuǎn)移來轉(zhuǎn)換行動,在維護狀態(tài)方面需要大量的人力,單單因為這一點,就限制了狀態(tài)機在游戲中的應(yīng)用場景。有許多開發(fā)者也通過創(chuàng)建層級狀態(tài)機降低了維護難度,但不過無法從根本上來改變狀態(tài)機難以維護的缺點

行為樹:通過一個樹形結(jié)構(gòu)圖和特定的篩選節(jié)點,執(zhí)行一個帶有順序的行為。其樹的節(jié)點最有4類,順序,選擇,裝飾,動作。通過組合這4類節(jié)點就能制作一個靈活的AI

模糊邏輯:根據(jù)條件,不單純的給出是否,而是給出一個隸屬度權(quán)重的算法。通常用于避免AI在參數(shù)邊緣上的抖動。
經(jīng)典抖動案例:MOBA類游戲中低血量的AI在是否回城和是否繼續(xù)攻擊玩家上來回決策不定。直到被玩家擊殺。
?
?
GOAP:Goal Oriented Action Planning
目標(biāo)驅(qū)動的行動規(guī)劃不僅僅能幫助AI知道做什么還能幫助其了解如何做。
在這套系統(tǒng)中,每個行動節(jié)點,不僅僅包含行動內(nèi)容,還包括執(zhí)行行動的可行性及執(zhí)行完之后的效果。比如裝彈這個動作,他的可行性為,槍膛是否已滿及是否有多余子彈。結(jié)果是填滿槍膛。通過Astar算法能將角色的行動節(jié)點串成一個行動序列,之后,AI就遵循這套行動序列執(zhí)行對應(yīng)的動作即可。
