从零开始为《吃豆人》创建BT

从零开始为《吃豆人》创建BT

这一次我们对《吃豆人》游戏创建一组逐渐复杂的BT。
在这里插入图片描述

如图所示BT通过包含多个幽灵和大量药丸的迷宫控制智能体,即吃豆人,这些药丸中大的药丸就是说为的大力丸。游戏的目的就是吃豆人吃完所有的药丸,而不被幽灵吃掉。如果吃了大力丸就会暂时获得可以吃掉幽灵的能力。吃过大力丸以后过了一段时间,大力丸的效果会消失,幽灵可以重新获得吃掉吃豆人的能力。当幽灵被吃掉的时候它会回到中间的盒子里,在那里复活,并再次变得危险,可以被吃的幽灵会改变颜色,当大力丸的持续时间快要结束时,幽灵会变得闪烁。

最简单的行为就是让吃豆人忽略幽灵,专注于吃豆子,这是使用贪婪的动作——“吃药丸” 完成的!

在这里插入图片描述

​ 吃药丸是BT最简单的非随机行为,可以最大化下一个时间步长中“吃药丸”的数量

上述描述的简单行为忽略了幽灵。考虑到幽灵,可以扩展前面的行为,当条件“幽灵靠近”为真时添加执行“躲避幽灵”的动作。这个动作可以贪婪的最大化吃豆人和所有幽灵之间的距离。那么可以将新的动作和条件添加到BT中,如下图所示。由此产生的BT将在吃药丸和躲避幽灵之间切换,这取决于幽灵靠近条件返回“成功”还是“失败”。

在这里插入图片描述

下一步扩展考虑当吃豆人吃了大力丸,就可以吃幽灵,并且希望此时去追踪幽灵而不是躲避。为此将条件不害怕幽灵和动作追逐幽灵添加到BT中。如下图所示。追逐幽灵的动作可以最大限度的减少与最近可吃的幽灵之间的距离。注意如此的设计的BT只会在距离幽灵近的时候才会开始追逐它,否则就会继续吃药丸。还需要注意的是所有扩展都是模块化的,不需要重新连接以前的BT。

在这里插入图片描述

通过这种增量设计,可以得到一个基本的吃豆人AI,但是还是有很多细节没有考虑进去,比如当被追赶时朝着大力丸移动,当幽灵闪烁时不在追逐幽灵等。然而吃豆人的很多细节都是基于对迷宫的几何形状的考虑,例如选着避免死胡同的路径和避免可能被多个幽灵追击的路径。这种空间分析最好在动作内部进行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值