遊戲開發中的人工智慧

2022-02-02 13:32:54 字數 2881 閱讀 1563

今天非常開心,**cocos官方直播居然在幾千人中中獎,可以買彩票了。

言歸正傳,所謂的人工智慧,也就是大家常說的ai(artificial intelligence)。一說到ai可能就會讓人覺得比較深奧,其實也就是非玩家角色思考和行為的綜合。比如,在什麼樣的條件下,觸發什麼樣的行為。

其實我們在遊戲開發中的ai要比學術理論中的ai簡單很多,甚至有些行為不需要ai也能體現。比如使用劇情對話體現非玩家角色的想法。

那麼ai 都涉及到哪些東西呢?

控制器我理解的控制器,就是非玩家角色的大腦,是用來思考事情的。例如通過執行決策樹,得到乙個有效的行為。使用不一樣的控制器就會有不一樣的思考方式。比如玩家的控制器就是根據按鍵操作觸發不同的行為。阿貓,阿狗的可能又不一樣了。

感知器獲得周圍環境的情況,不如距離誰有多遠,自身生命值多少,玩家生命值多少,等等。

反應也就是控制器執行決策樹後產生的有效行為。比如跳躍,跑,各種攻擊,防禦等等。

決策樹我理解為思考時的思路,比如應該在什麼樣的條件下執行什麼樣的反應。比如當我的血量低於百分之30的時候我要逃跑。具體案例體現在我的遊戲《星際迷航》的第乙個boss身上。

記憶就是非玩家角色可以通過儲存資料,供控制器執行的時候使用,以提高非玩家角色的智商。

學習這個能力太牛逼了。實現起來也比較複雜,需要大量的資料和計算量為依託,而且在遊戲開發中也並不一定實用。因此我也沒用過。

首先還是要定義好行為列舉,通過狀態機,不同的行為實現不同的邏輯。

定義感知器特徵

不同的遊戲感知的特徵肯定是不一樣的,根據遊戲需求而定

實現感知類

定義決策樹

export default class decisiontree 

setperception(perception: perception)

getperception(obj, perceptiontype: perceptiontype, value: number)

//開始思考

action(obj: roleview, decisionid: number) else

this.judge(obj, type, id)

}else

return flag;

}//判定感知條件

private judge(obj: roleview, type: thinktype, param: number) else }}

}// 50 30 20 : 80 根據概率選擇行為

private dologic(obj: roleview, param: number) }}

}}

定義控制器

export default class enemycontroller extends gamecontroller 

getperception(obj, perceptiontype: perceptiontype, value: number)

action(obj: roleview, decisionid: number)

}

在非玩家角色中宣告控制器和行為管理器

定義思考函式

think()
呼叫

在動作執行結束後,如果非玩家角色沒有死亡,就會執行一次。然後再決策樹中呼叫非玩家角色的設定行為的方法。

至此 ,就執行了一次ai的完整流程。從**中我們可以看到,控制器是通過配置表資料執行操作的,接下來我們看配置表部分。

首先資料表是二維的,我們要通過二維表模擬了樹形結構。判定條件就是感知特徵的列舉值,判定引數是留給感知器使用的引數,如果不需要可以不填,中文部分可以僅用於注釋,並不會匯出,判定條件成立或者不成立的時候都會用0和1來決定是繼續判定還是處理行為選擇。如果是0 後一列的資料會填寫下乙個節點的id,也就是繼續思考,如果是1,表示可以執行對應的處理。 此時,後邊的列裡邊我是存放了行為列舉值和對應的概率。因為並不是所有行為都是百分之百執行的。將這個表匯出之後提供給控制器使用就可以了。

資料表的索引方式

對於簡單的ai,可以乙個敵人對應乙個決策樹id;對於複雜的ai,可以乙個敵人的乙個動作對應乙個決策樹ai。所以這裡丟擲了乙個問題,就是手動填寫這樣的表,維護成本也比較高了,所以這裡對於複雜的ai需求,建議自己開發個小工具,這樣用起來不易出錯,且容易維護。

以上就是我個人對遊戲開發中ai的理解,當然我是拜讀了《遊戲人工智慧——計算機遊戲中的人工智慧》這本書的。好像此書已經絕版了。希望放出來對熱衷於遊戲開發的小夥伴們有所幫助。

遊戲程式設計中的人工智慧 補

先抱怨下windows 64bit下的交叉編譯簡直折磨死人,倒騰了幾天之後決定還是切到linux下算了。虛擬機器雖然不給力,但是好歹能看出來優化後的結果。本文沒什麼講的,只是將上文說到的掃雷機的進化過程中耗時最長的函式用c重新寫一遍後比較下執行速度,廢話不多說,直接貼 看結果。原來判斷兩條直線ab和...

Forecast的人工智慧

forecast智慧型專案管理軟體 人工智慧 英語 artificial intelligence,ai 亦稱機器智慧型,是指由人工製造出來的系統所表現出來的智慧型。通常人工智慧是指通過普通電腦實現的智慧型。人工智慧的研究可以分為幾個技術問題。其分支領域主要集中在解決具體問題,其中之一是,如何使用各...

遊戲開發中的人工智慧 第2章 追逐和閃躲

一 追逐和閃躲有三部分組成 1 做出追和逃的決策判斷 在後文談論到狀態機和神經網路時,再討論 2 開始追或逃,也就是讓追擊者追獵物,或者讓獵物盡可能的裡追擊者遠一點 本章重點 3 躲避障礙物 第五章和第六章,再討論 二 基本的追逐和閃躲 1 更具獵物的座標修改追擊者的座標,使兩者的距離越來越短 2 ...