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

http://b[……]

继续阅读

第一部分,请点这里

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

继续阅读

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

继续阅读

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

继续阅读

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

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

继续阅读

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

继续阅读

从GDC2012回来有一段时间了,一直很忙,没有时间整理在GDC上听到和学到的内容。总的来说,GDC上的讲座很多,在5天的会议时间里,有超过将近340场的各种讲座,作为AI程序员,当然比较关心AI方面的技术内容,在GDC上也确实听到了一些比较有意思的东西,也和世界各地的游戏开发者讨论和分享了一些信息[……]

继续阅读