發(fā)布時間:2024-08-16 16:02:12 瀏覽量:232次
前言
開發(fā)游戲AI的目標(biāo)之一是要找到一個簡單,可擴展的編輯邏輯的方案,從而加速游戲開發(fā)的迭代速度。在行為系統(tǒng)圖中,行為系統(tǒng)響應(yīng)游戲中的各種信息,進(jìn)行決策以挑選接下來將要執(zhí)行的行動并且監(jiān)控該行動的執(zhí)行。
知識模型是對游戲世界中各種信息的抽象。
在行為系統(tǒng)中,有限狀態(tài)機最為經(jīng)典,有限狀態(tài)機模型的優(yōu)勢之一是簡單。但是有限狀態(tài)機需要用轉(zhuǎn)換連接狀態(tài),因此,狀態(tài)失去了模塊性。
什么是行為樹
一個例子
上圖中,3號Sequence節(jié)點有3個子節(jié)點,分別是:
4號Condition節(jié)點
5號Action節(jié)點
6號Wait節(jié)點
而3號節(jié)點的父節(jié)點是2號的Loop節(jié)點。
先補充下各節(jié)點類型的執(zhí)行邏輯:
序列節(jié)點:順序執(zhí)行所有子節(jié)點返回成功,如果某個子節(jié)點失敗返回失敗。
循環(huán)節(jié)點:循環(huán)執(zhí)行子節(jié)點到指定次數(shù)后返回成功,如果循環(huán)次數(shù)為-1,則無限循環(huán)。
條件節(jié)點:根據(jù)條件的比較結(jié)果,返回成功或失敗。
動作節(jié)點:根據(jù)動作結(jié)果返回成功,失敗,或運行。
等待節(jié)點:當(dāng)指定的時間過去后返回成功。
執(zhí)行說明
如果4號條件節(jié)點的執(zhí)行結(jié)果是成功,其父節(jié)點3號節(jié)點則繼續(xù)執(zhí)行5號節(jié)點,如果5號動作節(jié)點返回成功,則執(zhí)行6號等待節(jié)點,如果6號節(jié)點返回成功,則3號節(jié)點全部執(zhí)行完畢且會返回成功,那么2號節(jié)點繼續(xù)下個迭代。
如果4號條件節(jié)點的執(zhí)行結(jié)果是失敗,其父節(jié)點3號節(jié)點則返回失敗不再繼續(xù)執(zhí)行子節(jié)點,并且2號節(jié)點繼續(xù)下個迭代。
進(jìn)階
聰明的讀者可能會問,上面的例子中只講了成功或失敗的情況,但如果動作要持續(xù)一段時間呢?如果5號節(jié)點,F(xiàn)ire需要持續(xù)一段時間呢?
節(jié)點的執(zhí)行結(jié)果可以是“成功”,“失敗”,或“運行”。
對于持續(xù)運行一段時間的Fire動作,其執(zhí)行結(jié)果持續(xù)返回“運行”,結(jié)束的時候返回“成功”。
對于持續(xù)運行一段時間的Wait動作,其執(zhí)行結(jié)果持續(xù)返回“運行”,當(dāng)?shù)却龝r間到達(dá)的時候返回“成功”。
行為樹的內(nèi)部“知道”該節(jié)點是在持續(xù)“運行”的,從而在后續(xù)的執(zhí)行過程中“直接”繼續(xù)執(zhí)行該節(jié)點,而不需要從頭開始執(zhí)行,直到該運行狀態(tài)的節(jié)點返回“成功”或“失敗”,從而繼續(xù)后續(xù)的節(jié)點。
另一個例子
如上圖,為了清晰說明運行狀態(tài),來看另一個例子。在這個例子中,Condition,Action1,Action3是3個函數(shù)。
0號節(jié)點是個Loop節(jié)點,循環(huán)3次。
1號節(jié)點是個Sequence節(jié)點
2號節(jié)點模擬一個條件,直接返回成功。
3號節(jié)點Action1是一個動作,直接返回成功。
4號節(jié)點Action3同樣是一個動作,返回3次運行,然后返回成功。
行為樹的基本概念:
執(zhí)行每個節(jié)點都會有一個結(jié)果(成功,失敗或運行)
子節(jié)點的執(zhí)行結(jié)果由其父節(jié)點控制和管理
返回運行結(jié)果的節(jié)點被視作處于運行狀態(tài),處于運行狀態(tài)的節(jié)點將被持續(xù)執(zhí)行一直到其返回結(jié)束(成功或失?。?。在其結(jié)束前,其父節(jié)點不會把控制轉(zhuǎn)移到后續(xù)節(jié)點。
其中理解運行狀態(tài)是理解行為樹的關(guān)鍵,也是使用好行為樹的關(guān)鍵。
其他
上文另一個例子中“demo_running”的例子在安裝包及源碼里都有提供。最好查看源碼,編譯運行,自行嘗試體會。
熱門資訊
探討游戲引擎的文章,介紹了10款游戲引擎及其代表作品,涵蓋了RAGE Engine、Naughty Dog Game Engine、The Dead Engine、Cry Engine、Avalanche Engine、Anvil Engine、IW Engine、Frostbite Engine、Creation引擎、Unreal Engine等引擎。借此分析引出了游戲設(shè)計領(lǐng)域和數(shù)字藝術(shù)教育的重要性,歡迎點擊咨詢報名。
2. 手機游戲如何開發(fā)(如何制作傳奇手游,都需要準(zhǔn)備些什么?)
?如何制作傳奇手游,都需要準(zhǔn)備些什么?提到傳奇手游相信大家都不陌生,他是許多80、90后的回憶;從起初的端游到現(xiàn)在的手游,說明時代在進(jìn)步游戲在更新,更趨于方便化移動化。而如果我們想要制作一款傳奇手游的
3. B站視頻剪輯軟件「必剪」:免費、炫酷特效,小白必備工具
B站視頻剪輯軟件「必剪」,完全免費、一鍵制作炫酷特效,適合新手小白??靵碓囋?!
游戲中玩家將面臨武俠人生的掙扎抉擇,戰(zhàn)或降?殺或放?每個抉定都將觸發(fā)更多愛恨糾葛的精彩奇遇?!短烀嬗肪哂卸嗑€劇情多結(jié)局,不限主線發(fā)展,高自由...
5. Bigtime加密游戲經(jīng)濟(jì)體系揭秘,不同玩家角色的經(jīng)濟(jì)活動
Bigtime加密游戲經(jīng)濟(jì)模型分析,探討游戲經(jīng)濟(jì)特點,幫助玩家更全面了解這款GameFi產(chǎn)品。
6. 3D動畫軟件你知道幾個?3ds Max、Blender、Maya、Houdini大比拼
當(dāng)提到3D動畫軟件或動畫工具時,指的是數(shù)字內(nèi)容創(chuàng)建工具。它是用于造型、建模以及繪制3D美術(shù)動畫的軟件程序。但是,在3D動畫軟件中還包含了其他類型的...
7. 3D動漫建模全過程,不是一般人能學(xué)的會的,會的多不是人?
步驟01:面部,頸部,身體在一起這次我不準(zhǔn)備設(shè)計圖片,我從雕刻進(jìn)入。這一次,它將是一種純粹關(guān)注建模而非整體繪畫的形式。像往常一樣,我從Sphere創(chuàng)建它...
8. 如何自己開發(fā)一款游戲(游戲開發(fā)入門必看:五大獨立游戲開發(fā)技巧)
?游戲開發(fā)入門必看:五大獨立游戲開發(fā)技巧無論您是剛剛起步開發(fā)自己的第一款游戲,還是已經(jīng)制作了幾款游戲,本篇文章中的5大獨立游戲開發(fā)技巧都可以幫助您更好地設(shè)計下一款游戲。無論你對游戲有著什么樣的概念,都
?三昧動漫對于著名ARPG游戲《巫師》系列,最近CD Projekt 的高層回應(yīng)并不會推出《巫師4》。因為《巫師》系列在策劃的時候一直定位在“三部曲”的故事框架,所以在游戲的出品上不可能出現(xiàn)《巫師4》
10. 3D打印技巧揭秘!Cura設(shè)置讓你的模型更堅固
想讓你的3D打印模型更堅固?不妨嘗試一下Cura參數(shù)設(shè)置和設(shè)計技巧,讓你輕松掌握!
最新文章
同學(xué)您好!