工作中一年多的AI经验,总结下来如果真正希望做到智能,那游戏AI就是个工作量巨大而且麻烦的东西,应对各种不同情况需要做分别的处理,如果不建立简便的测试环境更是容易留下隐患。
一般AI都是根据现有数据,依照预定的逻辑判断,在一个或一系列消息到来的时候做出一个或一系列的决策。优秀的AI系统对于消息和数据的处理不应该是独立的,往往多个消息到来以后才能做出一个决策。
所以Bragi项目里有这么几点是比较重要的:
1. 简单而健壮的消息处理机制
2. 良好的数据共享机制
3. 利用脚本完成的逻辑判断
4. 可动态修改的配置
5. 方便自动化测试的接口
6. 修改到预测型AI的空间
目前工作中使用到的消息处理机制是有限状态机,并且还不能算是一个优秀的状态机。不同状态之间是互相独立的,不仅仅数据无法共享,一个状态机退出时的结果也不能很迅速的反馈到上一层,所以这是一套很失败的系统,勉强维护下去只会越来越难。但并不是说有限状态机不好,至少在状态比较少的时候非常简便,在一定程度上也容易扩展。不过考虑到Bragi项目是希望成为一个AI框架而设计的,所以应该会使用行为树或是其他的机制作为核心模块。这块内容需要以后多多学习,还要记录下学习经验。
不过在此之前我想先把一些基础依赖完成,比如脚本语言和C/C++交互的模块。一是Lua,二是Python,可能还会看一下JavaScript。选Lua是因为游戏中Lua应用最广;Python是因为使用比较多,自己写可能会比较顺手;至于JavaScript,Cocos都在用,并且google V8引擎的关系,速度上不亚于Lua,甚至会更快。
后面的工作就先从脚本语言入手吧。