一、大致思路是,通把AI思考过程拆解成树状结构的分层任务网络,根据环境条件动态选择行为,来模拟人类决策过程。
二、对象状态和定时器循环(或事件驱动)
1. 做AI思考的对象,主要有两个状态:空闲状态和 行为状态。
2. 对象会持续以定时器的方式,每隔一段时间做一次思考或者执行。
(1) 对象处于空闲状态的话,会进行思考,选择一套策略行为,然后进入行为状态。
(2) 对象处于行为状态的话,会执行操作,当执行完毕或被其他因素中断,就会重新回到空闲状态。
3. 事件驱动也能触发对象的思考或者执行,比如巡逻状态下被玩家攻击。
三、AI思考和执行的过程:
1. 从根节点开始,作为行为树的入口。
根据对象所处的状态,选择进入下面哪一个子节点。比如攻击,还是巡逻。
2. 下一节点是策略选择。(选择器节点)
对象可以选择什么策略,根据配置文件来决定。策略配置和条件配置是绑定一起的,根据条件来选择策略。
条件可以是多个,多个条件以 与或非 的方式来做逻辑判定。
(1) 如果找到一个匹配的策略的话就直接选择
(2) 如果有多个策略都匹配的话就根据优先级和权重随机选择一个。
(3) 如果一个匹配上的策略都没有的话,就选兜底默认策略。
选择好策略之后,进入下一个节点。
3. 下一节点是执行行为。(序列节点)
对象可以执行什么行为,根据配置文件来决定。策略配置和行为配置是绑定一起的。选择好行为之后,对象就进入行为状态。
(1) 行为可以是多个,对象以序列的方式去依次执行。
(2) 每执行完一个行为,就会记录一个子状态。这个子状态可以支持执行行为的重入逻辑。
(3) 执行行为可以不是一次性的,可以再后面的定时器循环里,多次重入,持续执行行为。
(4) 进入行为状态后的定时器循环间隔时间,可以动态改小,增强表现效果。
(5) 全部行为执行完毕之后,对象从 行为状态 切换回 空闲状态,等待下一次思考和选择策略。
四、性能消耗关键环节
多个对象都以定时器的方式,定时执行策略选择或者执行行为,会消耗大量的CPU性能。选择合适的间隔时间是关键。也可以以分布式的方式,把AI思考的负载分到其他服务器。

738

被折叠的 条评论
为什么被折叠?



