search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

我的遊戲開發研究歷程3:遊戲中的人工智慧是怎樣的?

如果您對此類文章有興趣,請務必關注科技曲奇。

隨著如今計算機算力的發展,曾經被一度拋棄的神經網路演算法被重新拾起。自深度神經網路在圖片預測上極大超越了原有機器學習演算法后,人工智慧便依靠著神經網路的發展而蓬勃了起來。互聯網、物聯網和大數據,都使現實世界中的人工智慧得到了飛速發展。

但是在遊戲方面的人工智慧呢?其實遊戲中的人工智慧並不能都算得上真正意義上的人工智慧,主要原因是因為它沒有學習能力,並且不會從已有數據中分析和自我優化。目前雖然有利用人工智慧進行早期版本星際爭霸的對戰,並使機器不斷學習獲得勝利的例子,不過也是逐幀圖像分析,在處理了極大數據過後的。

為什麼遊戲中的人工智慧會很落後呢?我的看法如下

其一,學習和行為反應是多層次的,比如受到攻擊后逃跑,是最底層的;而受到攻擊后是否要給隊友拖時間,又是另一個層次的;以及受到攻擊后是否會影響全局,又是更高一個層次的,遊戲中的AI很難兼顧,一般層次都比較低。而神經網路正好可以覆蓋多層的特徵,這就是為什麼在AI上表現較佳。

其二,一般遊戲根本用不到太高層的AI,不需要具有全局統籌能力,只需要集中個體打敗玩家即可,也就是說,AI很少有群體行為。或是以個體行為為主,構成群體行為,這樣的話,個體的AI最終能構成怎樣的群體行為,就需要一些試驗模擬嘗試了。當然,如果能設計群體行為樹的話就更好了。

實際上,在我看來,遊戲中的AI實現比現實中容易多了,其一,遊戲中的數據獲得十分簡單,只需要找找所需要的類和變數就行了,並且數據也是結構化的。其二,遊戲中的數據非常單純、有限,相比現實世界簡單多了。

這裡我以虛幻4引擎的一個非常經典的AIBehaviorToolKit包講解AI的個人行為樹,這個行為樹的總體是這樣的:

左上分支。

這個AI行為樹是針對Owner個體的,實現的內容基本上就是:

1、檢測距離觸發條件是否滿足?滿足過後,轉到切換行為這個service,這個service會根據玩家設置的條件(後面會講到)進行行為切換,改變移動速度,重置delay trigger等,並把切換后的變數寫在AI樹對應的黑板上(黑板就是一個變數存儲工具)

2、根據黑板上的變數進行判斷,部署下一步行為,比如,如果變數是至idle(空閑),根據設置切換至隨機行走、工作、和靜止。如果是AttckMelee(近戰攻擊),就執行相應的動畫。

接著就是行為樹上的擴展,我的一個拓展思路如下:

首先創建一個包含此行為樹的NPC實例,然後創建子類並調整參數(如武器Mesh和攻擊動畫、傷害、頻率等),建立一系列兵種。在兵種下再創建子類,建立具有成套行為的多個NPC(如中立、敵方、盟友、平民和夥伴)。最後根據需要建立獨特的子類,用來調整特殊的參數(如陣營等)。

接著簡要講一下中立生物、守衛和平民基於上面AI樹的實現:

中立生物:初始是空閑行為,在受到攻擊后,將攻擊者的tag加入近戰或遠程攻擊的tag中,並切換到攻擊行為。

守衛:初始是空閑或者巡邏行為,看到敵方後會觸發攻擊行為,並設置2秒的delay trigger(意思是經過兩秒之後),切換回空閑和巡邏,(此時如果再次遇到敵方又會觸發攻擊)。

這裡另外提到一個區域Message的概念:比如玩家攻擊過後,會在原地一定半徑內生成一個傳遞「攻擊」Message的區域,所有在這個半徑之內的AI都會接收到這個內容為「攻擊」的Message,接著就需要設置一下行為,比如守衛接收到這個Message就切換成攻擊;平民接收到這個Message就切換成逃跑。

平民:除了上面說的收到「攻擊」Message會逃跑外,逃跑也有一定距離,距離結束之後切換成空閑狀態。

AI行為大概就是這些了。

值得一提的是,上面的所有參數都是值得去構建一個反饋系統的,比如,平民在逃跑之後並沒有傷亡,下次可以把逃跑距離設置更低一點兒。設置玩家殺死敵方單位平均執行的攻擊次數/世界平均攻擊次數這個值,轉換成敵方單位以玩家不可追上的速度逃跑的概率,可以動態調整平衡。

可以說,比起真正的人工智慧來講,把玩家創造的數據用起來,再反饋到遊戲世界中,形成一個動態平衡,比前者實現起來更容易也更有效。

筆者是想到哪就寫到哪,思路有些不連貫,有什麼問題還請各位讀者提出。對此類文章有興趣的,請務必關注科技曲奇。



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦