行為樹(Behaviour Tree):概念,AI

行為樹(Behaviour Tree):概念垦搬,AI

--掌握行為樹的方法

  1. 起源呼寸,為了解決什么問題
  2. 發(fā)展歷史,解決了什么問題猴贰,怎樣解決的
  3. 概念对雪,抽象出了哪些東西
  4. 應(yīng)用,需要給行為樹的需求分類米绕,掌握不同類型的需要最適合的行為樹實(shí)現(xiàn)
    1. 通用的行為樹工具瑟捣,能力范圍,擴(kuò)展方式
    2. 特定游戲類型的行為樹工具栅干,能力范圍迈套,擴(kuò)展方式
  5. 實(shí)現(xiàn),各類行為樹的實(shí)現(xiàn)方式
    1.通用的代碼組織方式碱鳞,代碼能力范圍
    2.特定游戲類型的代碼組織方式桑李,代碼能力范圍

--認(rèn)識行為樹
升級版的fsm
更靈活,可配置性更強(qiáng),可以讓game designer方便的參與邏輯編寫

--實(shí)現(xiàn)方案
數(shù)據(jù)結(jié)構(gòu)中的行為樹

--概念收集和解讀贵白,這些概念主要來自于"ai分享站"率拒,感謝作者無私分享

  1. 決策(Decision)
    1. 根據(jù)輸入選擇行為
  2. 行為(Behavior)
    1. 具體輸出,改變程序狀態(tài)禁荒,具體來說俏橘,操作多媒體,視覺特效圈浇,和其它模塊交互
  3. 邏輯動(dòng)作(Logical Action)寥掐,行為池(Behavior Pool)
    1. 一系列的行為
  4. 單一行為(Simple Behavior)
  5. 復(fù)合行為(Composite Behavior)
    1. 序列(Sequenece):一個(gè)個(gè)行為接著做
    2. 并行(Parallel):兩個(gè)或多個(gè)行為同時(shí)進(jìn)行
    3. 選擇(Selector):從候選行為中選擇一個(gè)執(zhí)行,包括腳本選擇磷蜀,和隨機(jī)選擇
  6. 控制節(jié)點(diǎn)(Control Node)
    1. 同決策
  7. 行為節(jié)點(diǎn)(Ternimal Node)
    1. 同行為
  8. AI中的共享數(shù)據(jù)召耘,如blackboard
    1. 共享數(shù)據(jù)方便
    2. 共享數(shù)據(jù)不容易維護(hù)
      1. 因?yàn)槎嗳藚f(xié)作,變量可能重復(fù)褐隆,導(dǎo)致混亂
      2. 訪問匿名污它,無法方便的找到依賴
    3. 使用共享數(shù)據(jù)需要制定使用規(guī)范
  9. AI中的LOD
    1. 不需要決策的停止
    2. 不需要頻繁決策的,降低決策頻率
    3. 注:lod: level of detail縮寫庶弃,在渲染優(yōu)化中衫贬,如果一個(gè)物體距離攝像機(jī)越近,那么就讓它顯示的細(xì)節(jié)越多歇攻,否則細(xì)節(jié)越少固惯。從而減少渲染的量,提升性能缴守。
  10. AI中的雙緩沖
    1. 當(dāng)事件發(fā)生葬毫,決策層進(jìn)行處理,這個(gè)處理過程可以跑在別的線程
    2. 處理完的結(jié)果做完行為層的輸入
  11. AI中的Lazy
    1. 當(dāng)邊界條件頻繁變換時(shí)屡穗,ai快速響應(yīng)變換贴捡,像一個(gè)傻瓜,lazy讓ai淡定許多村砂,不那么傻了
    2. 方法
      1. 定時(shí)器烂斋,ai收到world信息后過一段時(shí)間再處理
      2. 漸變閾值,world在某個(gè)邊界變化的時(shí)候础废,讓一個(gè)值不斷收縮汛骂,如果邊界又變化了,從新收縮色迂,直到不再變化香缺,收縮到一個(gè)值后,ai就會進(jìn)行決策和行動(dòng)
  12. AI調(diào)試
    1. 時(shí)機(jī):調(diào)整ai行為歇僧,解決ai bug
    2. 盡量使用:腳本图张,參數(shù)配置
    3. 編輯器锋拖,解決編譯緩慢問題,分離邏輯祸轮,運(yùn)行時(shí)調(diào)整
    4. 觀察器兽埃,運(yùn)行時(shí)查看參數(shù)
    5. 遠(yuǎn)程命令,發(fā)送一段指令給引擎适袜,使其執(zhí)行相應(yīng)的函數(shù)
    6. 回放柄错,為了復(fù)現(xiàn)ai的問題,依賴引擎苦酱,需要制定良好的ai架構(gòu)
    7. 游戲世界環(huán)境售貌,決策層執(zhí)行指令序列(用于分析行為)
  13. AI勢力圖
    1. 一般是一個(gè)二維數(shù)組
    2. 存放地圖上某個(gè)格子的權(quán)值
    3. 可以過去或者不可以過去的程度
    4. 動(dòng)態(tài)地圖尋路算法會用到
    5. 勢力圖動(dòng)態(tài)更新
    6. 可以用在A*算法求路徑上
  14. 行為節(jié)點(diǎn)的狀態(tài),processing, successed, failed
  15. BT的執(zhí)行流程
    1. 從根節(jié)點(diǎn)出發(fā)疫萤,尋找一個(gè)可執(zhí)行節(jié)點(diǎn)颂跨,從那個(gè)節(jié)點(diǎn)開始執(zhí)行
  16. 選擇節(jié)點(diǎn)
    1. 優(yōu)先級型,從左往右逐個(gè)測試扯饶,執(zhí)行條件逐漸放寬
    2. 非優(yōu)先級型恒削,每次從上一個(gè)執(zhí)行的節(jié)點(diǎn)開始測試準(zhǔn)入條件,用互斥避免節(jié)點(diǎn)被屏蔽
    3. 權(quán)重型尾序,根據(jù)權(quán)重做概率選擇
  17. 并行節(jié)點(diǎn)
    1. 需要解決該父節(jié)點(diǎn)的狀態(tài)是怎么由并行的子節(jié)點(diǎn)狀態(tài)確定的
  18. Blackboard
    1. 封裝行為樹的輸入
    2. 行為樹間共享數(shù)據(jù)
    3. 節(jié)點(diǎn)間共享數(shù)據(jù)
    4. 根據(jù)上述的使用情景钓丰,一般有多個(gè)黑板
  19. 層次狀態(tài)機(jī) hfsm
    1. 解決負(fù)責(zé)狀態(tài)機(jī)跳轉(zhuǎn)關(guān)系混亂問題
    2. 把跳轉(zhuǎn)分組,每組間相互跳轉(zhuǎn)每币,組內(nèi)狀態(tài)相互跳轉(zhuǎn)携丁,如果組內(nèi)還是負(fù)責(zé),繼續(xù)在組內(nèi)分組
  20. 調(diào)控AI的難度
    1. 調(diào)整ai的感知能力
    2. 調(diào)整ai的決策能力
    3. 減少對特殊情況的處理
    4. 放寬條件脯爪,收窄條件则北,減少對玩家不利的行動(dòng)
    5. 調(diào)整ai的行動(dòng)能力
      1. 武器,速度痕慢,傷害,基本種類和程度的變換
  21. goai涌矢,目標(biāo)導(dǎo)向的ai
    1. 適用于持續(xù)型的ai掖举,不需要頻繁決策
    2. 需要plan模塊,分析實(shí)現(xiàn)目標(biāo)需要做什么娜庇,檢查是否做完塔次,標(biāo)記進(jìn)度
  22. 游戲世界信息的收集和組織
    1. 信息圖,游戲ai決策用到的世界信息圖表名秀,一般是二維數(shù)組
    2. 危險(xiǎn)程度
    3. 優(yōu)先程度
    4. lazy collect励负,不是每次世界更新都要更新信息圖,ai用到的時(shí)候再去收集
    5. 分塊匕得,大的信息圖進(jìn)行分塊继榆,每次先選定要那一塊的信息巾表,然后讓那一塊的感知器進(jìn)行收集
    6. 信息圖共享,不同ai共享信息圖
  23. 狀態(tài)機(jī)轉(zhuǎn)行為樹的范式
    1. 模式1:當(dāng)處在任何狀態(tài)中略吨,一旦某條件滿足集币,即跳轉(zhuǎn)到某個(gè)特定的狀態(tài):selector
    2. 模式2:對于同一個(gè)跳轉(zhuǎn)條件,處在不同的狀態(tài)會有不同的跳轉(zhuǎn):selector翠忠,sequence
    3. 模式3:根據(jù)條件跳轉(zhuǎn)到多個(gè)狀態(tài)鞠苟,包括自跳轉(zhuǎn)
      1. sequence selector
      2. selector
    4. 模式4:循環(huán)跳轉(zhuǎn):交替權(quán)重的selector
  24. 可預(yù)測的行為系統(tǒng)
    1. 某些情況下,決策層需要知道如果選擇了某個(gè)行為未來某個(gè)時(shí)間的世界信息秽之,此時(shí)需要行為層提供預(yù)測能力
    2. 基于預(yù)先設(shè)置的公式的預(yù)測
    3. 基于動(dòng)畫系統(tǒng)的預(yù)測当娱,如果是動(dòng)畫系統(tǒng)會改變world信息,這個(gè)就需要做更多工作導(dǎo)出會造成的影響
  25. 被動(dòng)式請求:不是玩家主動(dòng)觸發(fā)的行為考榨,如:跑跨细,跳,技能 是主動(dòng)請求董虱, 絆倒扼鞋,掉血,死亡愤诱,裝彈藥
    處理方式
    1. 被動(dòng)請求(如果有)云头,主動(dòng)請求(如果有)同時(shí)傳遞給選擇模塊,此處淫半,選擇模塊在決策模塊之后運(yùn)行溃槐,被動(dòng)請求由游戲世界直接產(chǎn)生
    2. 主動(dòng)請求是決策的輸出
    3. 在行為樹的決策層中加入selector,world導(dǎo)致的改變不直接產(chǎn)生請求科吭,而是改變決策層的狀態(tài)昏滴,每次決策時(shí)決策層輸出請求給行為層
  26. 設(shè)計(jì)ai中的參數(shù)系統(tǒng)
    1. 方便設(shè)計(jì)人員工作,減小不同工種粘合度
    2. 參數(shù)數(shù)據(jù)和文件可以互轉(zhuǎn)
    3. 關(guān)聯(lián)變換对人,靜態(tài)的數(shù)據(jù)關(guān)聯(lián)改變谣殊,不用計(jì)算公式運(yùn)行時(shí)計(jì)算
      1. 注:這樣數(shù)據(jù)的觀測性好,但是不如直接提供一個(gè)查看器牺弄,我支持簡單數(shù)據(jù)運(yùn)行時(shí)計(jì)算的做法
  27. 共享節(jié)點(diǎn)型行為樹
    1. 為了節(jié)約內(nèi)存姻几,行為樹的邏輯結(jié)構(gòu)部分抽離出來做為共享對象使用
    2. 定義一下這個(gè)共享的部分
    3. 表示行為樹的結(jié)構(gòu)信息,如sequence, selector, parallel的組織方式势告,表達(dá)了處理的流程
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蛇捌,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子咱台,更是在濱河造成了極大的恐慌络拌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件回溺,死亡現(xiàn)場離奇詭異春贸,居然都是意外死亡混萝,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進(jìn)店門祥诽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來譬圣,“玉大人,你說我怎么就攤上這事雄坪±迨欤” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵维哈,是天一觀的道長绳姨。 經(jīng)常有香客問我,道長阔挠,這世上最難降的妖魔是什么飘庄? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮购撼,結(jié)果婚禮上跪削,老公的妹妹穿的比我還像新娘。我一直安慰自己迂求,他們只是感情好碾盐,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著揩局,像睡著了一般毫玖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上凌盯,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天付枫,我揣著相機(jī)與錄音,去河邊找鬼驰怎。 笑死阐滩,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的县忌。 我是一名探鬼主播叶眉,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼芹枷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起莲趣,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤鸳慈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后喧伞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體走芋,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡绩郎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了翁逞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肋杖。...
    茶點(diǎn)故事閱讀 39,992評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖挖函,靈堂內(nèi)的尸體忽然破棺而出状植,到底是詐尸還是另有隱情,我是刑警寧澤怨喘,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布津畸,位于F島的核電站,受9級特大地震影響必怜,放射性物質(zhì)發(fā)生泄漏肉拓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一梳庆、第九天 我趴在偏房一處隱蔽的房頂上張望暖途。 院中可真熱鬧,春花似錦膏执、人聲如沸驻售。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽芋浮。三九已至,卻和暖如春壳快,著一層夾襖步出監(jiān)牢的瞬間纸巷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工眶痰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瘤旨,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓竖伯,卻偏偏與公主長得像存哲,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子七婴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時(shí)...
    歐辰_OSR閱讀 29,387評論 8 265
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,144評論 25 707
  • 2017年祟偷,稀里糊涂的過去了,回想這一年打厘,就這樣被我浪費(fèi)了修肠,但冷靜下來思考,自己還是有收獲的户盯。 這一年嵌施,我遇見了你...
    琳angel兒閱讀 300評論 0 1
  • 我是日記星球361號學(xué)員饲化,我正在參加日記星球星寶寶第十六期21天蛻變之旅,這是我的第八十二篇原創(chuàng)日記吗伤。 今天陪兒子...
    遇見更好的我自己閱讀 340評論 0 1
  • 有一個(gè)光子吃靠,正在開心的轉(zhuǎn)著圈向前運(yùn)動(dòng)著。忽然足淆,他撞到了一面鏡子上巢块。他撞懵了,思考了一會兒人生:“我是誰缸浦?我在哪夕冲?我...
    冰墨繁華閱讀 861評論 0 0