状态机,层次状态机和行为树的区别以及联系
来源:互联网 发布:js给value赋值 编辑:程序博客网 时间:2024/06/07 21:15
简单介绍构建游戏AI所需要的一些工具:状态机,层次状态机,行为树的区别以及联系
Finite State Machines(有限状态机)
1. 基本节点是状态。他包含了一系列运行在该状态的行为以及离开这个状态的条件。2. 这是图。状态可以任意跳转,实现简单,但是对于大的状态机很难维护.状态逻辑的重用性低.
3. 每一个状态的逻辑会随着一些新状态的增加而越来越复杂。维持状态的数量和状态逻辑复杂性是一个很大的难点。需要合理的分割以及重用状态。
4. 状态机状态的复用性很差,一旦一些因素变化导致这个环境发生变化。你只能新增一个状态,并且给这个新状态添加连接他以及其他状态的跳转逻辑
5. 状态机的跳转条件一旦不满足,就会一直卡在某一个状态(整个状态机就会卡住)
Hierarchical FSM(层次状态机)
1. 基本的概念和状态机一样。
2. 可以将一些状态节点的归结成一个超级状态(Super-States),共享一些状态跳转逻辑(Generalized Transitions)。相对于状态机,它主要提供了可重用得跳转条件。3. 绝大多数层次状态机设计的时候,每一个子状态通常只包含在一个Super-States里面。(如果A,B两个Super-State都包含相同的子状态,则A,B分别添加两个不同的子状态实例)
4. 超级状态跳转依然需要考虑很多不同的子状态的情况。手动的修改这些状态跳转是非常恶心的一件事情。
5. 状态模块化很差,你很难在不修改代码的情况下完成新逻辑
Behaviour Tree(行为树)
一个流行的AI技术,涵盖了层次状态机,事件调度,事件计划,行为等一系列技术
1.高度模块化状态,去掉状态中的跳转逻辑,使得状态变成一个“行为”。
2."行为"和"行为"之间的跳转是通过父节点(Composite)的类型来决定的(例如sequence或者selector) 。比如并行处理两个行为,在状态机里面无法同时处理两个状态。
3.通过增加控制节点的类型,可以达到复用行为的目的。
4. 可视化编辑
参考资料:
http://aigamedev.com/open/article/fsm-reusable/
http://aigamedev.com/open/article/hfsm-gist/
http://aigamedev.com/open/article/bt-overview/
0 0
- 状态机,层次状态机和行为树的区别以及联系
- 状态机,层次状态机和行为树的区别以及联系
- Moore状态机和Mealy状态机的区别
- FSM(状态机)、HFSM(分层状态机)、BT(行为树)的区别
- FSM(状态机)、HFSM(分层状态机)、BT(行为树)的区别
- FSM(状态机)、HFSM(分层状态机)、BT(行为树)的区别
- FSM(状态机)、HFSM(分层状态机)、BT(行为树)的区别
- KMP算法和状态机的联系
- 层次状态机
- 层次状态机
- pesonal模式和Enterprise模式,eap模块状态机和eapol模块状态机------内外联系区别
- 行为树与状态机介绍
- (转) KMP算法和状态机的联系
- Unity Mecanim动画的实现(十):动画混合树、子状态机和状态行为
- Unity Mecanim动画的实现(十):动画混合树、子状态机和状态行为
- 基于行为树与状态机的游戏人工智能
- 基于行为树与状态机的游戏人工智能
- 【转】基于行为树与状态机的游戏人工智能
- lvm命令详解
- 优秀博文链接
- Floodlight 处理交换机加入/移除过程
- socket()用法
- 生泰宝
- 状态机,层次状态机和行为树的区别以及联系
- CS领域会议最佳论文集合 Best Paper Awards in Computer Science (since 1996)
- 大一在ACM的一些感想
- FileUtils 文件工具类org.apache.commons.io.FileUtils
- Android关机流程源码分析
- 仿开源中国,分享代码时候的多文件上传
- MySQL高可用系列之MHA(一)
- sql学习笔记
- C语言操作Excel表格