激情六月丁香婷婷|亚洲色图AV二区|丝袜AV日韩AV|久草视频在线分类|伊人九九精品视频|国产精品一级电影|久草视频在线99|在线看的av网址|伊人99精品无码|午夜无码视频在线

游戲行為系統(tǒng)設計原理解析:行為樹的基本概念及進階

發(fā)布時間:2024-08-16 16:02:12 瀏覽量:229次

前言

開發(fā)游戲AI的目標之一是要找到一個簡單,可擴展的編輯邏輯的方案,從而加速游戲開發(fā)的迭代速度。在行為系統(tǒng)圖中,行為系統(tǒng)響應游戲中的各種信息,進行決策以挑選接下來將要執(zhí)行的行動并且監(jiān)控該行動的執(zhí)行。

知識模型是對游戲世界中各種信息的抽象。

在行為系統(tǒng)中,有限狀態(tài)機最為經典,有限狀態(tài)機模型的優(yōu)勢之一是簡單。但是有限狀態(tài)機需要用轉換連接狀態(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é)點到指定次數后返回成功,如果循環(huán)次數為-1,則無限循環(huán)。

條件節(jié)點:根據條件的比較結果,返回成功或失敗。

動作節(jié)點:根據動作結果返回成功,失敗,或運行。

等待節(jié)點:當指定的時間過去后返回成功。

執(zhí)行說明

  • 如果4號條件節(jié)點的執(zhí)行結果是成功,其父節(jié)點3號節(jié)點則繼續(xù)執(zhí)行5號節(jié)點,如果5號動作節(jié)點返回成功,則執(zhí)行6號等待節(jié)點,如果6號節(jié)點返回成功,則3號節(jié)點全部執(zhí)行完畢且會返回成功,那么2號節(jié)點繼續(xù)下個迭代。

  • 如果4號條件節(jié)點的執(zhí)行結果是失敗,其父節(jié)點3號節(jié)點則返回失敗不再繼續(xù)執(zhí)行子節(jié)點,并且2號節(jié)點繼續(xù)下個迭代。

進階

聰明的讀者可能會問,上面的例子中只講了成功或失敗的情況,但如果動作要持續(xù)一段時間呢?如果5號節(jié)點,Fire需要持續(xù)一段時間呢?

  • 節(jié)點的執(zhí)行結果可以是“成功”,“失敗”,或“運行”。

  • 對于持續(xù)運行一段時間的Fire動作,其執(zhí)行結果持續(xù)返回“運行”,結束的時候返回“成功”。

  • 對于持續(xù)運行一段時間的Wait動作,其執(zhí)行結果持續(xù)返回“運行”,當等待時間到達的時候返回“成功”。

行為樹的內部“知道”該節(jié)點是在持續(xù)“運行”的,從而在后續(xù)的執(zhí)行過程中“直接”繼續(xù)執(zhí)行該節(jié)點,而不需要從頭開始執(zhí)行,直到該運行狀態(tài)的節(jié)點返回“成功”或“失敗”,從而繼續(xù)后續(xù)的節(jié)點。

另一個例子

如上圖,為了清晰說明運行狀態(tài),來看另一個例子。在這個例子中,Condition,Action1,Action3是3個函數。

  • 0號節(jié)點是個Loop節(jié)點,循環(huán)3次。

  • 1號節(jié)點是個Sequence節(jié)點

  • 2號節(jié)點模擬一個條件,直接返回成功。

  • 3號節(jié)點Action1是一個動作,直接返回成功。

  • 4號節(jié)點Action3同樣是一個動作,返回3次運行,然后返回成功。

行為樹的基本概念:

  • 執(zhí)行每個節(jié)點都會有一個結果(成功,失敗或運行)

  • 子節(jié)點的執(zhí)行結果由其父節(jié)點控制和管理

  • 返回運行結果的節(jié)點被視作處于運行狀態(tài),處于運行狀態(tài)的節(jié)點將被持續(xù)執(zhí)行一直到其返回結束(成功或失敗)。在其結束前,其父節(jié)點不會把控制轉移到后續(xù)節(jié)點。

其中理解運行狀態(tài)是理解行為樹的關鍵,也是使用好行為樹的關鍵。

其他

上文另一個例子中“demo_running”的例子在安裝包及源碼里都有提供。最好查看源碼,編譯運行,自行嘗試體會。

熱門課程推薦

熱門資訊

請綁定手機號

x

同學您好!

您已成功報名0元試學活動,老師會在第一時間與您取得聯系,請保持電話暢通!
確定