遊戲中的人工智能和我們一般用於大數據或棋盤類的人工智能非常不同。遊戲中的人工智能為了方便的控制和體現遊戲演出效果,一般使用較簡單的算法。
總體而言,遊戲工業中涉及到的人工智能更多的是有多少智能就需要多少人工。下面將羅列出遊戲人工智能的常用算法。
1.尋路
Dijkstra算法 最短路徑算法。遍歷路徑中所有可能的及節點。效率低,沒有啟發式函數。
Asta算法 在靜態網格中尋找最短路徑的算法。有啟發式函數。
Dstar算法 在動態網格中尋找最短路徑的算法。有啟發式函數
啟發式函數:是否在尋路的過程中使用一些預估用的函數。
動態靜態網格:我們在尋路的移動過程中,路徑上環境是否會改變。
基於上述的算法。可以修改出帶層級的尋路,基於網格的尋路。
1. 決策
遊戲中的NPC決策
狀態機:AI的行為是基於一個個狀態的。通過改變參數或環境觸發狀態轉移來轉換行動,在維護狀態方面需要大量的人力,單單因為這一點,就限制了狀態機在遊戲中的應用場景。有許多開發者也通過創建層級狀態機降低了維護難度,但不過無法從根本上來改變狀態機難以維護的缺點
行為樹:通過一個樹形結構圖和特定的篩選節點,執行一個帶有順序的行為。其樹的節點最有4類,順序,選擇,裝飾,動作。通過組合這4類節點就能製作一個靈活的AI
模糊邏輯:根據條件,不單純的給出是否,而是給出一個隸屬度權重的算法。通常用於避免AI在參數邊緣上的抖動。
經典抖動案例:MOBA類遊戲中低血量的AI在是否回城和是否繼續攻擊玩家上來回決策不定。直到被玩家擊殺。
GOAP:Goal Oriented Action Planning
目標驅動的行動規劃不僅僅能幫助AI知道做什麼還能幫助其瞭解如何做。
在這套系統中,每個行動節點,不僅僅包含行動內容,還包括執行行動的可行性及執行完之後的效果。比如裝彈這個動作,他的可行性為,槍膛是否已滿及是否有多餘子彈。結果是填滿槍膛。通過Astar算法能將角色的行動節點串成一個行動序列,之後,AI就遵循這套行動序列執行對應的動作即可。