青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

使用行為樹(Behavior Tree)實現游戲AI (轉載)

   AI處理是網游服務器邏輯層重要的一塊,也是耗CPU最多的一塊,剛剛在網上看到了這篇文章,挺有意思,轉來大家一起分享。
   原文地址:http://blog.csdn.net/akara/article/details/6084786


   談到游戲AI,很明顯智能體擁有的知識條目越多,便顯得更智能,但維護
龐大數量的知識條目是個噩夢:使用有限狀態機(FSM),分層有限狀態機(HFSM),
決策樹(Decision Tree)來實現游戲AI總有那么些不順意。

  試試Next-Gen AI的 行為樹(Behavior Tree) 吧。

  雖說Next-Gen AI,但距其原型提出已有約10年時間,而Halo系列(HFSM like),
Spore,Crysis 2,Red Dead Redemption等早已用行為樹作為它們的AI結構。
如從未接觸,那wikipedia(http://en.wikipedia.org/wiki/Behavior_Trees)
絕對是入門好資料。

---------------------------------------------------------------------

  先貼本文最具價值圖(配色可花了不少時間)

behavior tree

 

  為顯美觀:BT被橫放,Node層次被刻意減少,Dec被刻意安插,Cond被刻意捏造。
  PS:其實真正的高效的Node Group剔除應多加一層Sequence Node。
 
---------------------------------------------------------------------

  行為樹(Behavior Tree) 具有如下的特性:
 
  它只有4大類型的Node:
  * Composite Node
  * Decorator Node
  * Condition Node
  * Action Node
 
  任何Node被執行后,必須向其Parent Node報告執行結果:成功 / 失敗。
  這簡單的成功 / 失敗匯報原則被很巧妙地用于控制整棵樹的決策方向。

---------------------------------------------------------------------
 
  先看Composite Node,其實它按復合性質還可以細分為3種:
  * Selector Node
    當執行本類型Node時,它將從begin到end迭代執行自己的Child Node:
    如遇到一個Child Node執行后返回True,那停止迭代,
    本Node向自己的Parent Node也返回True;否則所有Child Node都返回False,
    那本Node向自己的Parent Node返回False。
   
  * Sequence Node
    當執行本類型Node時,它將從begin到end迭代執行自己的Child Node:
    如遇到一個Child Node執行后返回False,那停止迭代,
    本Node向自己的Parent Node也返回False;否則所有Child Node都返回True,
    那本Node向自己的Parent Node返回True。
 
  * Parallel Node
    平行執行它的所有Child Node。
    而向Parent Node返回的值和Parallel Node所采取的具體策略相關:
    Parallel Selector Node: 一False則返回False,全True才返回True。
    Parallel Sequence Node: 一True則返回True,全False才返回False。
    Parallel Fall On All Node: 所有False才返回False,否則返回True。
    Parallel Succeed On All Node: 所有True才返回True,否則返回False。
    Parallel Hybird Node: 指定數量的Child Node返回True或False后才決定結果。

    Parallel Node提供了平行的概念。
    不需要像Selector/Sequence那樣預判哪個Child Node應擺前,哪個應擺后,
    常見情況是:
    (1)用于平行掛接多棵Action子樹。
    (2)在Parallel Node下掛一棵子樹,并掛上多個Condition Node,
       以提供實時性和性能。
    Parallel Node增加方便性的同時,也增加實現和維護復雜度。


  PS:上面的Selector/Sequence準確來說是Liner Selector/Liner Sequence。
  AI術語中稱為strictly-order:按既定先后順序迭代。
 
  Selector和Sequence可以進一步提供非線性迭代的加權隨機變種。
  Weight Random Selector Node提供每次執行不同First True Child Node的功能。
  Weight Random Probability Node提供每次挑選唯一一個Node的功能。
  Weight Random Sequence Node則提供每次不同的迭代順序。
  AI術語中稱為partial-order,能使AI避免總出現可預期的結果。

---------------------------------------------------------------------

  再看Decorator Node,它的功能正如它的字面意思:它將它的Child Node執行
  后返回的結果值做額外處理后,再返回給它的Parent Node。很有些AOP的味道。
 
  比如Decorator Not/Decorator FailUtil/Decorator Counter/Decorator Time...
  更geek的有Decorator Log/Decorator Ani/Decorator Nothing...

---------------------------------------------------------------------
 
  然后是很直白的Condition Node,它僅當滿足Condition時返回True。

---------------------------------------------------------------------
 
  最后看Action Node,它完成具體的一次(或一個step)的行為,視需求返回值。
  而當行為需要分step/Node間進行時,可引入Blackboard進行簡單數據交互。
 
--------------------------------------------------------------------- 
 
  整棵行為樹中,只有Condition Node和Action Node才能成為Leaf Node,而也
只有Leaf Node才是需要特別定制的Node;Composite Node和Decorator Node均
用于控制行為樹中的決策走向。(所以有些資料中也統稱Condition Node和Action
Node為Behavior Node,而Composite Node和Decorator Node為Decider Node。)
 
  更強大的是可以加入StimulusImpulse,通過Precondition來判斷masks開關。
 
  通過上述的各種Nodes幾乎可以實現所有的決策控制:if, while, and, or,
not, counter, time, random, weight random, util...
 
--------------------------------------------------------------------- 

  總的來說,行為樹具有如下幾種優點,確實是實現AI框架的利器,甚至是一種
通用的可維護的復雜流程管理利器:

> 靜態性
  越復雜的功能越需要簡單的基礎,否則最后連自己都玩不過來。
 
  靜態是使用行為樹需要非常著重的一個要點:即使系統需要某些"動態"性。
 
  其實諸如Stimulus這類動態安插的Node看似強大,
  但卻破壞了本來易于理解的靜態性,弊大于利。
  Halo3相對于Halo2對BT AI的一個改進就是去除Stimulus的動態性。
  取而代之的做法是使用Behavior Masks,Encounter Attitude,Inhibitions。
  原則就是保持全部Node靜態,只是根據事件和環境來檢查是否啟用Node。
 
  靜態性直接帶來的好處就是整棵樹的規劃無需再運行時動態調整,為很多優化
  和預編輯都帶來方便。

> 直觀性
  行為樹可以方便地把復雜的AI知識條目組織得非常直觀。
  默認的Composite Node的從begin往end的Child Node迭代方式就像是處理一個
  預設優先策略隊列,也非常符合人類的正常思考模式:先最優再次優。
 
  行為樹編輯器對優秀的程序員來說也是唾手可得。

> 復用性
  各種Node,包括Leaf Node,可復用性都極高。
  實現NPC AI的個性區別甚至可以通過在一棵共用的行為樹上不同的位置來
  安插Impulse來達到目的。
 
  當然,當NPC需要一個完全不同的大腦,比如70級大BOSS,
  與其絞盡腦汁在一棵公用BT安插Impulse,不如重頭設計一棵專屬BT。

> 擴展性
  雖然上述Node之間的組合和搭配使用幾乎覆蓋所有AI需求。
  但也可以容易地為項目量身定做新的Composite Node或Decorator Node。
  還可以積累一個項目相關的Node Lib,長遠來說非常有價值。

posted on 2012-08-28 16:17 peakflys 閱讀(2626) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

導航

統計

公告

人不淡定的時候,就愛表現出來,敲代碼如此,偶爾的靈感亦如此……

常用鏈接

留言簿(4)

隨筆分類

隨筆檔案

文章檔案

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美手机在线视频| 国产精品三区www17con| 久久久欧美精品| 日韩亚洲综合在线| 亚洲男人的天堂在线aⅴ视频| 亚洲国产老妈| 久久精品伊人| 久久午夜影视| 国产精品99久久久久久久久久久久| 亚洲一级片在线观看| 美女主播一区| 国产午夜精品理论片a级大结局| 亚洲精品国产拍免费91在线| 久久精品国产综合| 一区二区三区四区国产| 欧美影院一区| 亚洲精品在线观| 麻豆精品国产91久久久久久| 国产欧美视频一区二区三区| 9色精品在线| 国产一区二区三区视频在线观看| 亚洲精品美女在线| 欧美成人精品三级在线观看| 亚洲欧美在线免费| 国产精品盗摄一区二区三区| 亚洲作爱视频| 91久久精品国产91久久性色tv| aa日韩免费精品视频一| 欧美成人一区在线| 亚洲精品久久久蜜桃| 欧美 日韩 国产 一区| 久久精品视频导航| 好吊色欧美一区二区三区四区| 亚洲欧美视频在线观看| 亚洲视频999| 国产精品免费在线| 亚洲欧美国产不卡| 亚洲综合电影| 国内精品亚洲| 欧美一区二区在线免费观看| 欧美成人dvd在线视频| 久久视频一区二区| 亚洲久久一区二区| 一区二区不卡在线视频 午夜欧美不卡' | 欧美日韩国产成人在线免费| 亚洲麻豆av| 亚洲精品国产精品国自产观看| 久久精品综合| 一区二区亚洲| 欧美国产日本在线| 欧美精品免费视频| 亚洲免费在线观看| 欧美一区二区三区在| 有坂深雪在线一区| 久久欧美肥婆一二区| 午夜精品久久久久久久久| 国产精品video| 欧美中文字幕在线观看| 久久久人成影片一区二区三区 | 中日韩高清电影网| 亚洲一区二区三区精品动漫| 国产一区二区中文| 久久精品一本久久99精品| 中文av一区二区| 国产亚洲欧洲997久久综合| 久久婷婷综合激情| 欧美日韩成人网| 欧美一级午夜免费电影| 久久综合狠狠综合久久综合88| 亚洲理论在线| 欧美一区二区视频在线| 日韩一区二区久久| 久久国产精品免费一区| 亚洲精品网址在线观看| 亚洲男同1069视频| 亚洲精品视频在线看| 性欧美大战久久久久久久久| 99国产精品国产精品久久| 欧美一区二区黄色| 欧美性大战久久久久久久蜜臀| 久久视频这里只有精品| 国产精品成人观看视频免费| 欧美aⅴ99久久黑人专区| 国产精品va在线| 亚洲高清一区二区三区| 国产精品一区一区| 久久人人97超碰国产公开结果 | 欧美二区不卡| 国产精品入口| 亚洲日本成人| 亚洲激情黄色| 久久精品亚洲| 久久精品人人做人人综合 | 欧美一区二区三区免费大片| 一本色道久久88综合亚洲精品ⅰ | 欧美电影打屁股sp| 国产色爱av资源综合区| 中日韩美女免费视频网址在线观看 | 欧美成人综合网站| 久久久久久久久岛国免费| 国产精品美女久久久浪潮软件| 亚洲精品中文字幕在线| 亚洲精品视频免费| 性8sex亚洲区入口| 欧美亚洲日本网站| 国产精品久久久久久久久免费樱桃| 亚洲精品专区| 亚洲午夜激情免费视频| 欧美精品一区二区三区蜜桃| 亚洲成在线观看| 亚洲三级影片| 欧美一级黄色录像| 亚洲午夜免费福利视频| 欧美日韩国产bt| 一区二区欧美视频| 亚洲欧美电影院| 国产精品网站在线| 亚洲欧美国产日韩天堂区| 欧美亚洲尤物久久| 理论片一区二区在线| 欧美黄色大片网站| 亚洲精品一区在线观看| 欧美另类高清视频在线| 99国产精品久久久久久久久久| 中文久久精品| 国产精品视频免费观看www| 亚洲中字在线| 久久精品论坛| 国产欧美日韩麻豆91| 久久福利资源站| 蜜臀久久99精品久久久久久9| 亚洲国产精品第一区二区三区| 国精产品99永久一区一区| 香蕉乱码成人久久天堂爱免费 | 欧美大片免费| 亚洲一区二区三区高清不卡| 激情成人在线视频| 国产精品久久久久秋霞鲁丝| 久久久久成人网| 亚洲免费观看高清完整版在线观看| 久久av红桃一区二区小说| 亚洲日本久久| 国产日韩欧美中文| 欧美裸体一区二区三区| 久久精品国产视频| 亚洲视频图片小说| 亚洲国产日韩一区| 久久裸体视频| 午夜精品一区二区三区在线视| 亚洲人成欧美中文字幕| 国产一区二区黄色| 国产精品国产三级国产普通话99 | 欧美激情精品久久久久| 欧美在线一二三| 亚洲网站在线看| 亚洲国产欧美不卡在线观看 | 欧美福利在线观看| 久久精品一区二区国产| 亚洲免费影视| 亚洲伊人久久综合| 99精品视频网| 亚洲精品一区二区三区蜜桃久| 欧美成人第一页| 女主播福利一区| 老司机精品导航| 久久久久久亚洲精品中文字幕| 亚洲欧美国产精品va在线观看| 99在线|亚洲一区二区| 亚洲国产成人av在线| 黄色在线成人| 激情久久久久久久| 黄色成人av在线| 国产自产2019最新不卡| 国产精品免费久久久久久| 国产精品成人aaaaa网站| 欧美国产视频在线| 欧美精品电影| 欧美美女bbbb| 欧美日韩一区三区| 欧美日韩午夜在线| 欧美午夜精品一区| 国产精品一区二区三区观看| 国产精品综合| 精品二区视频| 亚洲国产成人久久综合| 亚洲国产成人在线播放| 亚洲精品一区二区三区四区高清| 亚洲精品三级| 亚洲欧美精品在线观看| 欧美在线视频观看免费网站| 久久九九热re6这里有精品| 久久综合免费视频影院| 免费观看国产成人| 亚洲黄色影院| 一区二区精品| 亚洲欧美日韩国产一区二区三区| 亚洲欧美久久| 久久久国产91| 欧美日本精品在线| 国产日韩欧美一区二区三区四区|