Behavior系统的思考和实现(1)

在我的概念里,AI应该分为两层,决策(Decision)行为(Behavior),当然这个是从狭义的AI角度来说的,广义上来说,AI还会包括一些其他要件,比如物理,动画等等。现在这个项目里在做Behaviour模块的一些东西,从做结构开始就参与其中,期间经过了几次大的重构。

behaivour-1-1

可能Behaviour在不同文章里的含义会有些不同,我这里的行为层从某种程度上可以说是一个中间件,上层是AI的决策逻辑,下层是动画资源,工作目标就是把AI的请求转换成真正的动画播放请求。行为的定义是比较关键的一点,比如一个小狗,它可以有走,跑,睡觉,撒尿,吃饭,喝水等等。这些就可以认为是他的一系列Behaviour,或者叫逻辑动作(Logical Action)。这些预定义好的行为就组成了一个集合,可以称作行为池(Behavior Pool)

如何组织起这些行为?Behaviour在组织过程中可以分为两种:
1. 单一行为(Simple Behavior)
2.复合行为(Composite Behavior)
在上面Pool里定义的就是单一行为,复合行为可以看成把单一行为组合后形成的新的行为,拿小狗为例,比如我们定义一个复合行为,“ 边吃饭边喝水”,这个复合的行为可以看成是“吃饭”“喝水”两个单一行为并行后的结果。常用的复合方式有几种:

 

behariour-1-2
1. 序列(Sequenece):一个个行为接着做
2. 并行(Parallel):两个或多个行为同时进行
3. 选择(Selector):从候选行为中选择一个执行,包括脚本选择,和随机选择
这就牵涉到实现的相关问题,如何定义各层之间的接口,如何定义统一的结构,下篇再说吧
————————————————————————
作者:Finney
Blog:AI分享站(http://www.aisharing.com/)
Email:finneytang@gmail.com
本文欢迎转载和引用,请保留本说明并注明出处
————————————————————————
(已被阅读10,616次)

3 评论

发表评论

邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

Copyright © 2011-2020 AI分享站    登录