谈一谈游戏AI - 行为树

本文主要探讨了游戏AI中行为树的应用,解释了为何需要行为树以解决状态机的局限性,并介绍了行为树的定义、构建方法、实现形式及其特点。文章还讨论了解决行为树无记忆和效率问题的策略,如上下文保存、黑板系统和效率优化措施。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不要用过去的成绩看未来,而是要用未来的眼睛看现在。

郑重说明:本文适合对游戏开发感兴趣的小白初学者,本人力图将事物用简单的语言表达清楚,但水平有限,能力一般,文章如有错漏之处,还望批评指正。

在本系列的前几篇中,我们谈到了谈一谈游戏AI - 综述 以及 谈一谈游戏AI - 状态机。今天我们来继续聊一下另一种高级决策模型:行为树。

一、为什么需要行为树

有一种很重要的认识事物的思维模型就是 why-what-how 模型,因此首先我们就要了解一下 why 的问题,看看为什么需要行为树这种高级决策模型。

在前面介绍状态机时,分层有限状态机(HFSM) 让我们能够以相对直观的方式,构建相对复杂的行为集。

但是这个设计中存在一个小问题

以状态转换规则构成的决策系统与当前状态强绑定在一起,这是一些游戏所需要的。

仔细使用状态层次结构可以减少重复转换的数量,但有时候,我们的需求不一样,可能无论处于哪个状态或几乎在所有状态,你的规则都要适用。打个比方,如果 AI对象(agent)的生命值降低到25%时,则无论其当前处于战斗状态,空闲状态、谈话状态或者其它任何状态,你可能都希望他逃跑。如果用状态机,你需要在每个状态里都做这样的判断逻辑。将来新增每个状态时,都一定把这个条件添加进去。

针对这种情况,一个理想的系统应该将决策过程和状态本身分离,这样你只需要在一个位置进行更改,仍然能够正确转换状态,这就是行为树的应用场景

二、决策的行为树表示

行为树定义

在之前的讲述游戏AI决策综述的文章中,我们提到过一个球拍击球的小游戏AI,用代码 hardcode 的伪代码如下:


every frame/update while the game is running:
 
if the ball is to the left of the paddle:
 
    move the paddle left
 
else if the ball is to the right of the paddle:
 
    move the paddle right
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

零壹协奏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值