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

继续阅读

最近在看Paul Graham的《黑客与画家》,他极力推崇LISP语言,以前我虽有耳闻,但不曾了解,后来在网上搜索了一些LISP的文章来看,发现原来LISP和AI的渊源颇深,这两篇好文是徐宥发表在他博客上的,写得很棒,特地转载一下(合并成一篇),也作为我收藏之用
原文链接:

http://b[……]

继续阅读

第一部分,请点这里

上次谈到了CBES中,实体类的组成,以及实体类中实体,组件间的通信方式。这次继续这个话题,再来谈谈CBES中的性能问题和设计思路。
在CBES的实体类中,属性部分是用key-value对来描述的,这样可以方便的扩展,并且较为快速的读取和写入,但这样的灵活方式,是有一定代价的,一[……]

继续阅读

以前写过一篇关于组合式实体的文章(这里),讨论了组合式实体的架构设计,以及和传统的继承式实体架构的区别和优势,最近在项目中,由于更多的做引擎方面的工作,所以有机会更多思考,设计和实现这样的架构,并在实践中总结了许多实际的使用经验,因此来和大家分享一下,不是很复杂,但相信会比较实用。组合式实体架构的英[……]

继续阅读

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

继续阅读

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

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

继续阅读