有限状态机,行为树

http://wangfei0206wl.blog.163.com/blog/static/26850495200741510151367/


有限状态机 几乎是2005年以前所有游戏的ai解决方案

但是即使是 有限状态机 ,在刻画复杂的游戏场景时,也会陷入冗长的代码链之中而丧失代码可读性
所以 behavior tree(行为树)出现了
本质上说,behavior tree的原理并不比 有限状态机 高明多少
但是behavior tree可以大大简化ai控制流程,使解决方案更加清晰

一个用有限状态机写的ai控制,用behavior tree大概只需要1/3的代码,并且可读性更强

要了解behavior tree,请查看cry engine 相关资料,
或者havok的行为树资料更加翔实
同时也有一个基于c#的实现,叫做tree sharp ,可以搜下

### 有限状态机行为树的对比 #### 定义与基本概念 有限状态机(Finite State Machine, FSM)是一种用于描述系统状态及其转换的数学模型[^2]。其核心在于通过定义一组离散的状态集合以及触发状态间切换的条件来实现逻辑控制。 相比之下,行为树(Behavior Tree, BT)则起源于计算机游戏领域,作为一种更高级别的结构化方法,能够有效管理复杂的NPC行为模式[^1]。它不仅限于简单的状态迁移,还支持更为灵活的任务组合机制。 #### 结构特点 - **FSM**: FSM 的典型特征是由节点代表不同状态,并由边表示可能发生的事件或动作所引发的状态转变关系图谱。然而,在面对高度复杂的行为序列时,传统 FSM 可能会变得难以维护和扩展。 - **BT**: 行为树采用了一种层次化的树形架构设计思路,其中根节点负责协调子节点的操作执行流程;叶子节点通常对应具体行动指令或者决策判断单元。这种分层组织方式有助于简化大型系统的构建过程并增强可读性和调试便利性。 #### 应用场景差异 在实际开发过程中: 对于较为简单直白的需求而言——比如某些基础交互功能实现上——可以优先考虑运用 FSM 来完成相应任务规划工作因为它的原理直观易于理解且消耗资源较少; 但是当涉及到更加精细微妙的人物表现塑造或是需要兼顾多个相互关联因素共同作用下的动态调整策略制定场合下,则推荐选用具备更强表达能力的行为树技术方案来进行优化改进处理[^1]。 另外值得注意的是近年来随着硬件性能不断提升加上软件工程技术持续进步等因素影响下越来越多新型框架也开始融合两者优势特性从而创造出更适合当下需求环境的新一代解决方案例如混合型状态图表等等形式均展现出良好发展前景值得进一步深入研究探讨价值所在之处. ```python # 示例代码展示如何创建一个简易版的 FSM 和 BT 实现相同目标的不同途径之一部分片段如下所示: class SimpleFSM: def __init__(self): self.state = 'idle' def update(self, input_signal): if self.state == 'idle' and input_signal == 'start': print("Transitioning from idle to active.") self.state = 'active' def simple_bt(): # 假设这里有一个虚拟函数库提供给我们使用 root_node = SelectorNode() child_one = ActionNode('do_something') child_two = SequenceNode([ConditionNode('check_condition'), ActionNode('execute_if_true')]) root_node.add_children([child_one, child_two]) while True: result = root_node.tick() # Tick the tree at each frame or iteration. if result is NodeStatus.SUCCESS: break ``` 上述例子分别展示了基于 Python 编程语言环境下两种常见控制流抽象思维的具体体现方式供参考学习之用^. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值