这次和大家分享一下,前段时间学习unity和c#的时候,用到的一个行为树的实现方式,使用到了c#语言,并且选择了共享性行为树的方式。行为树的构建,还是用纯代码的方式,没有做工具,也没有做数据驱动的方式来编辑和加载。做工具的话,可能需要很多时间,至于数据驱动,难度不大,如果大家有需要,稍加改进,就应该[……]

继续阅读

这段时间做了很多和AI无关的事情,做了个Flash的3D引擎,用汇编写了些shader,做了很多引擎的工具,脚本,插件,游戏也发布了首个预告片(点击这里),一年多的工作收获满满,职位从AI Engineer变成了Engineer(“专科大夫”到“全科大夫”?)。虽然很多工作看似和AI没什么关系,但做[……]

继续阅读

前些日子,经人推荐,看了一些CryEngine里AI部分的介绍,当然,作为一个大型商业引擎,AI部分涵盖了很多内容,特别的,我注意到里面关于行为树的部分,从CryEngine 3.3开始,行为树被舍弃了,取而代之的是称为“行为选择树”的模块,我并没有找到关于为何要做出这样的选择的官方说明,因此,我就[……]

继续阅读

上次聊到了共享节点型行为树的基本概念和节点组成,简单的来说,这种行为树就是把构成树的结构性数据,和运行时数据分开了,将结构性数据在多个行为树中共享,这样当存在大量的智能体的时候,内存的使用会减少很多。

在上次的文章里,提到了行为(Behavior),节点(Node),任务(Task)的概念和实[……]

继续阅读

我在博客上已经聊了很多关于行为树的基本概念了,我也实现了一个简单的行为树库供大家参考,在实践中,我一直没有考虑过行为树对于内存占用的问题,因为在我上一个足球的项目里,场上一共就是10个人,内存的使用相较于其他模块而言,实在是微乎其微。但如果对于存在大量NPC的游戏来说,每一个NPC都生成一个完整的行[……]

继续阅读