Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Behavior Tree AI              AKara       akaras@163.com  http://blog.csdn.net/akara  http://t.sina.com.cn/akaras
目录•   常用方法•   Behavior Tree•   原理•   进阶•   应用•   总结
前言
只关于:• 环境中已具有完备的感知信息• 决策式 AI:大量感知信息,做复杂决策                 不涉及:•怎么提供 感知信息?     attr / code / XLS / AOI / FSM / search ...•寻径...
• 常用方法•   Behavior Tree•   原理•   进阶•   应用•   总结
if / else 神器if visible:            优点:   if close:            这个可以承受        knife attack   elif flank:         缺点:        ...
决策树 - Decision Tree优点:单一,层次,自然…缺点:过于单一,过于层次,过于自然…
有限状态机 - Finite State Machine                关键字:                关键字:                • State                • Transition(Ev...
States / Transitions?       xaitControl
<<FSM Age is OVER>>                     Alex.J.C•   Unorthodox            •   Not Deliberative•   Low-Level             • ...
分层有限状态机 - Hierarchical Finite State Machine 关键字: SuperState 关键字: <<Statecharts: A Visual Formalism for Complex Systems>> b...
分层有限状态机 - Hierarchical Finite State Machine其实它很好: Data driven, Probabilistic HFSM
理想的AI决策结构 ?理想的AI   AI决策结构
• 常用方法• Behavior Tree•   原理•   进阶•   应用•   总结
Behavior Tree?         Tree?Google:行为树, behavior treeGoogle:行为树      :行为树,
GDC2005Scalable decision-making BTs: Prioritized-list +  Sequential + Seq-Looping + Probabilistic + One-off
V1.5 of Halo BT AIHalo guys incredibly helpful and open with sharing  detailed / pros / cons, this owes much to them.
GDC2007Weve spent 5 years living with BTsAnd have learned how to optimize them
BTs are a GREAT tool for decision taking:Easier to Use, More info, Less Resource,Rapid iteration, Coordinating AI easily
800 NPCs full 24 hour schedules governingtheir daily life , Each NPC is running a BT— no dummy FSMs
Behavior Tree• 2001: R.Geoff.Dromey 雏形• 2003: Halo2使用(HFSM Like)• 2005: Halo3改进• 2006: Spore再改进• 2007: Crysis / Crysis 2 协...
• 常用方法• Behavior Tree• 原理• 进阶• 应用• 总结
初见BT:BOSS       初见BT         BT:• 星期天,攻击男玩家;巡逻;巡逻一次原地休息每5分钟
4 种结点 + 1 个规则• 行为结点 - Action Node• 条件结点 - Condition Node• 装饰结点 - Decorator Node• 组合结点 - Composite Node• 结点执行后,向 父结点 返回:  成...
(1) 行为结点• def execute(self):      calc 1 + 1      return True
(2) 条件结点• def execute(self):      if 1 + 1 == 2: return True
(3) 装饰结点• 结果取反 - Decorator NOT• 次数限制 - Decorator Counter• 强制循环 - Decorator Loop• 时间限制 - Decorator Time• GEEKS   - Decorato...
(3-1) 装饰结点 : 结果取反• def execute(self):    return not self.children[0].execute()
(3-2) 装饰结点 : 次数限制•   def decorator(self):         self.counter += 1         return self.counter <= self.max_counter•   def...
(3-3) 装饰结点 : GEEKS• def decorator(self):      print “GEEK”      Animation? Sound? Log?• def execute(self):      self.decor...
(4) 组合结点• 选择结点 - Selector Node• 顺序结点 - Sequence Node• 平行结点 - Parallel Node
(4-1) 组合结点 : 选择• def execute(self):      for child in self.children:            if child.execute(): return True      retur...
(4-2) 组合结点 : 顺序• def execute(self):      for child in self.children:            if not child.execute(): return False      ...
(4-3) 组合结点 : 平行• def execute(self):      for child in self.children:            run child.execute()      return True/False...
现在我们可以•   顺序•   选择•   平行•   循环•   条件•   时限•   ……
回看:BOSS        回看:BOSS• 星期天,攻击男玩家;巡逻;巡逻一次原地休息每5分钟
决策依赖的数据在哪?
+可感知环境 : Blackboard
为何引入Blackboard?    为何引入Blackboard        Blackboard?• 让Behavior Tree专注于决策执行• 简化世界复杂性到Blackboard KV• 易读取,易删改,易同步• 叶结点间数据交互•...
• 常用方法• Behavior Tree• 原理• 进阶• 应用• 总结
结点概率化• 儿子结点均有Weight• Probability结点先加权,再随机权重区间,执行
平行结点   • FailPolicy       – FAIL_ON_ALL       – FAIL_ON_ONE   • SuccPolicy       – SUCC_ON_ALL       – SUCC_ON_ONE
RUNNING态RUNNING态     • Action不一定瞬间完成!     • 第三种返回       – True/False       – Running !     • 记录当前访问子结点索引     • 向上返回Running...
协作式AI(from Crysis)协作式AI(from
•   常用方法•   Behavior Tree•   原理•   进阶• 应用• 总结
举一个U3同学的栗子      举一个U3         U3同学的栗子• AI需求:1. 从A移动到B2. 如果发现10码内有敌人,怒吼,然后攻击它3. 如果没有发现敌人,坐下,然后睡觉。• Unreal3的延迟函数
不厚道的对比Unreal3 Script   Behavior Tree• 写各个子函数         • 写各个Condition和Action• 用延迟函数,写以下代码    • 无  :                 • (策划编写#...
掉落系统
飞机游戏
行为树编辑1. 程序和策划一起讨论需要什么节点2. 程序写各种Action/Condition3. 策划输出xml
•   常用方法•   Behavior Tree•   原理•   进阶•   应用• 总结
策划赐词•   解放——解放程序&策划•   易用——图形化优势•   不足——编辑器不足•   期待——学习型AI
优点• 静态树 - Static Tree Halo2 -> Halo3 : - Stimulus + Masks• 可复用 - Reusable 内置结点(Com / Dec)给力,只编写外部结点(Con / Act)• 可扩展 - Exte...
更重要的是• 简单• 直观• 规范• 流程优化 以前:策划文档(xls),程序翻译(成就感=0),愤怒的QC (鸭梨大) 现在:策划用BTE(所编即所玩);QC表示可以承受(Blackboard)   程序前期——写condition/acti...
Q & A & Discuss      Thx
Behavior+tree+ai lite
Upcoming SlideShare
Loading in …5
×

Behavior+tree+ai lite

3,283 views

Published on

  • Be the first to comment

Behavior+tree+ai lite

  1. 1. Behavior Tree AI AKara akaras@163.com http://blog.csdn.net/akara http://t.sina.com.cn/akaras
  2. 2. 目录• 常用方法• Behavior Tree• 原理• 进阶• 应用• 总结
  3. 3. 前言
  4. 4. 只关于:• 环境中已具有完备的感知信息• 决策式 AI:大量感知信息,做复杂决策 不涉及:•怎么提供 感知信息? attr / code / XLS / AOI / FSM / search ...•寻径•学习•...
  5. 5. • 常用方法• Behavior Tree• 原理• 进阶• 应用• 总结
  6. 6. if / else 神器if visible: 优点: if close: 这个可以承受 knife attack elif flank: 缺点: move A:77倍可以承受不? else: B:可以 gun attack A:...........elif audible: creep
  7. 7. 决策树 - Decision Tree优点:单一,层次,自然…缺点:过于单一,过于层次,过于自然…
  8. 8. 有限状态机 - Finite State Machine 关键字: 关键字: • State • Transition(Ev/Con) 经典设计: 1P + 3E • Precondition • Enter • Excute • Exit
  9. 9. States / Transitions? xaitControl
  10. 10. <<FSM Age is OVER>> Alex.J.C• Unorthodox • Not Deliberative• Low-Level • Concurrency Nightmares• Logic is Limited • Scale Poorly• Require Extensions • Labor Intensive• Hard to Standardize • Industry is Moving Onhttp://aigamedev.com/open/articles/fsm-age-is-over/难分解 / 低通用 / 难扩展 / 无层次 / 可预测 (FuSM)
  11. 11. 分层有限状态机 - Hierarchical Finite State Machine 关键字: SuperState 关键字: <<Statecharts: A Visual Formalism for Complex Systems>> by D.Harel 1987
  12. 12. 分层有限状态机 - Hierarchical Finite State Machine其实它很好: Data driven, Probabilistic HFSM
  13. 13. 理想的AI决策结构 ?理想的AI AI决策结构
  14. 14. • 常用方法• Behavior Tree• 原理• 进阶• 应用• 总结
  15. 15. Behavior Tree? Tree?Google:行为树, behavior treeGoogle:行为树 :行为树,
  16. 16. GDC2005Scalable decision-making BTs: Prioritized-list + Sequential + Seq-Looping + Probabilistic + One-off
  17. 17. V1.5 of Halo BT AIHalo guys incredibly helpful and open with sharing detailed / pros / cons, this owes much to them.
  18. 18. GDC2007Weve spent 5 years living with BTsAnd have learned how to optimize them
  19. 19. BTs are a GREAT tool for decision taking:Easier to Use, More info, Less Resource,Rapid iteration, Coordinating AI easily
  20. 20. 800 NPCs full 24 hour schedules governingtheir daily life , Each NPC is running a BT— no dummy FSMs
  21. 21. Behavior Tree• 2001: R.Geoff.Dromey 雏形• 2003: Halo2使用(HFSM Like)• 2005: Halo3改进• 2006: Spore再改进• 2007: Crysis / Crysis 2 协作式AI / BT Notation v1.0• 2008-2009: AiGameDev (Alex.J.C) / MidWares / Libs• 2010: Red Dead Redemption获BestNPC奖 / Halo: Reach
  22. 22. • 常用方法• Behavior Tree• 原理• 进阶• 应用• 总结
  23. 23. 初见BT:BOSS 初见BT BT:• 星期天,攻击男玩家;巡逻;巡逻一次原地休息每5分钟
  24. 24. 4 种结点 + 1 个规则• 行为结点 - Action Node• 条件结点 - Condition Node• 装饰结点 - Decorator Node• 组合结点 - Composite Node• 结点执行后,向 父结点 返回: 成功(True)/失败(False)
  25. 25. (1) 行为结点• def execute(self): calc 1 + 1 return True
  26. 26. (2) 条件结点• def execute(self): if 1 + 1 == 2: return True
  27. 27. (3) 装饰结点• 结果取反 - Decorator NOT• 次数限制 - Decorator Counter• 强制循环 - Decorator Loop• 时间限制 - Decorator Time• GEEKS - Decorator GEEKS AOP?
  28. 28. (3-1) 装饰结点 : 结果取反• def execute(self): return not self.children[0].execute()
  29. 29. (3-2) 装饰结点 : 次数限制• def decorator(self): self.counter += 1 return self.counter <= self.max_counter• def execute(self): if self.decorator(): return self.children[0].execute() else: return False
  30. 30. (3-3) 装饰结点 : GEEKS• def decorator(self): print “GEEK” Animation? Sound? Log?• def execute(self): self.decorator() return self.children[0].execute()
  31. 31. (4) 组合结点• 选择结点 - Selector Node• 顺序结点 - Sequence Node• 平行结点 - Parallel Node
  32. 32. (4-1) 组合结点 : 选择• def execute(self): for child in self.children: if child.execute(): return True return False
  33. 33. (4-2) 组合结点 : 顺序• def execute(self): for child in self.children: if not child.execute(): return False return True
  34. 34. (4-3) 组合结点 : 平行• def execute(self): for child in self.children: run child.execute() return True/False according to Policy
  35. 35. 现在我们可以• 顺序• 选择• 平行• 循环• 条件• 时限• ……
  36. 36. 回看:BOSS 回看:BOSS• 星期天,攻击男玩家;巡逻;巡逻一次原地休息每5分钟
  37. 37. 决策依赖的数据在哪?
  38. 38. +可感知环境 : Blackboard
  39. 39. 为何引入Blackboard? 为何引入Blackboard Blackboard?• 让Behavior Tree专注于决策执行• 简化世界复杂性到Blackboard KV• 易读取,易删改,易同步• 叶结点间数据交互• 使Behavior Tree与数据分离,甚至Dry-Run
  40. 40. • 常用方法• Behavior Tree• 原理• 进阶• 应用• 总结
  41. 41. 结点概率化• 儿子结点均有Weight• Probability结点先加权,再随机权重区间,执行
  42. 42. 平行结点 • FailPolicy – FAIL_ON_ALL – FAIL_ON_ONE • SuccPolicy – SUCC_ON_ALL – SUCC_ON_ONE
  43. 43. RUNNING态RUNNING态 • Action不一定瞬间完成! • 第三种返回 – True/False – Running ! • 记录当前访问子结点索引 • 向上返回Running • 下次运行行为树时,保证 跑到running结点
  44. 44. 协作式AI(from Crysis)协作式AI(from
  45. 45. • 常用方法• Behavior Tree• 原理• 进阶• 应用• 总结
  46. 46. 举一个U3同学的栗子 举一个U3 U3同学的栗子• AI需求:1. 从A移动到B2. 如果发现10码内有敌人,怒吼,然后攻击它3. 如果没有发现敌人,坐下,然后睡觉。• Unreal3的延迟函数
  47. 47. 不厚道的对比Unreal3 Script Behavior Tree• 写各个子函数 • 写各个Condition和Action• 用延迟函数,写以下代码 • 无 : • (策划编写#_#)
  48. 48. 掉落系统
  49. 49. 飞机游戏
  50. 50. 行为树编辑1. 程序和策划一起讨论需要什么节点2. 程序写各种Action/Condition3. 策划输出xml
  51. 51. • 常用方法• Behavior Tree• 原理• 进阶• 应用• 总结
  52. 52. 策划赐词• 解放——解放程序&策划• 易用——图形化优势• 不足——编辑器不足• 期待——学习型AI
  53. 53. 优点• 静态树 - Static Tree Halo2 -> Halo3 : - Stimulus + Masks• 可复用 - Reusable 内置结点(Com / Dec)给力,只编写外部结点(Con / Act)• 可扩展 - Extendable 内置 (WRandSel / WRandSeq / Probability…),外部(积累)
  54. 54. 更重要的是• 简单• 直观• 规范• 流程优化 以前:策划文档(xls),程序翻译(成就感=0),愤怒的QC (鸭梨大) 现在:策划用BTE(所编即所玩);QC表示可以承受(Blackboard) 程序前期——写condition/action 程序后期——还要程序吗?
  55. 55. Q & A & Discuss Thx

×