# Behavior trees for AI: How they work（笔记）

Source: Chris Simpson, Game Developer / Gamasutra, 2014-07-18.
URL: https://www.gamedeveloper.com/programming/behavior-trees-for-ai-how-they-work
GEA4 引用为 [401]。

## 结构

- 树状层级：分支控制流，叶子是真正命令/测试。
- 可极深；子树可库化复用；按优先级排分支，失败可回退。

## 节点返回值

- **Success / Failure / Running**：Running 允许跨多帧（如寻路+走路）。

## 三类节点

1. **Composite**：多子节点。Sequence（全成功才成功，AND）；Selector（任一成功即成功，OR，按优先级试备选方案）。
2. **Decorator**：单子节点。Inverter、Succeeder、Repeater、Repeat Until Fail 等。
3. **Leaf**：无子节点；游戏自定义（Walk、条件测试、调用子树）。

## 数据上下文 (Data Context)

- 树实例带键值上下文；节点读写变量，使树成为整体。
- 子树 Leaf 可传递同一上下文，模块化。

## 实践要点

- 应缓存当前 Running 节点，避免每帧从根全树遍历。
- Selector 把「失败」变成自然决策路径，而不是致命停机。
- 可用栈操作节点迭代候选（门/窗列表）。
