汤锴(42350817) 02:24:44
基本看完了QuakeIII的AI代码,同时浏览了一份由开发QuakeIII Bot AI的程序员所写的文档。
感想太多,一套强劲的AI引擎并不是那么简单的,虽然我已经非常认真地看,但也只不过了解大概
QuakeIII的AI体系分成4层:
4 Team leader AI
3 Misc. AI,AI Network,Commands
2 Fuzzy,Character,Goals,Navigation,Chats
1 Area Awareness System,Basic Actions
其中第1层是基础,AAS是一套由BSP计算出来的空间解析数据,保存在单独到文件
而我们通常意义上最为关心的寻路,其实只不过是Navigation这一个子项而已
下面只讨论AAS和Navigation。
AAS作为整套AI引擎的核心,也是基于BSP的基本思想而创建的,它的最基本单位是Area,Area必须是凸集,并且不能包括Gaps(悬崖)因为Gap会导致Bot掉进去,AAS编译器用了一整套数学方法确保这一点,算法其实不是非常复杂,但对Area进行了高强度的优化和纠错(合并,融合等)
而AAS的思想,一句话概括就是:存储了Area之间的连通性。
听起来很简单,其实极其复杂,Area之间的连通方式在QuakeIII中有非常多种:
直线游泳
直线行走
直线蹲着走
跳上一个移动平台
从悬崖边落下
跳出水
跳
传送
使用电梯
使用跳板
Using a