网页功能: 加入收藏 设为首页 网站搜索  
第一次写技术文献。Collision AI
发表日期:2007-03-28作者:[转贴] 出处:  

前段时间开始开发新游戏引擎,目前也是正在开发状态。我常说,碰撞+空间算法部分是3D游戏中的核心,也是最难制作的一部分。抱歉,这样说恐怕有点不够准确,准确来说,Collision AI是最难得一块。难点在于,在制作过程中,那些数字很抽象,往往要思考很久才敢下手。

Collision的实现非常简单,Collision检测目前资料众多,算法也很成熟。往往在游戏运行中,Collision都有个和它对应的AI系统,我简称 Collision AI。因为碰撞可以机械化的检测,并且准确率很高。在碰撞检测的下一步,就是发生对应的处理。因为我在制作一部实时引擎,目前正处于碰撞流程的制作过程,这一步直接涉及到很多物理计算,很多错综复发的逻辑处理。为了下一步开发能够更好的进行,所以把这一步直接规划到AI模块中。目前做了有些时间了,摸索出了一些AI方面的心得,同时又在网上又很少看到有这方面的文献。专业点的可以说目前没有,全是保留技术。

制作Collision AI首先是必须换脑。不要用简单的概念去思考它。否则实际做到那地方时,你会感到完全摸不着边。

碰撞流程主要依靠事件触发为主。碰撞检测部分应该放在刷贞时实现,否则来一个快速运动的object,那是很容易检测丢的。而刷贞部分,应该做一个专用的刷贞器,逻辑贞按每秒固定刷30FPS或则更好,而物理贞可以任意。因为检测运动object必须要保证检测频率是集中式的,而不是离散的。每秒的固定刷贞技术可以在刷贞器中用deltaTime的减法实现。这样就可以准确无误的检测碰撞了。你可以根据喜好制定检测的方式,比如先在地图系统中实现区域检测,然后再进一步执行外围的碰撞盒检测,最后再进行精确的Tri检测。不过目前都用接近的几何体来代替Tri检测。

然后就是最关键的碰撞AI处理了。在制作这一部分时,首先要有很完善的数据来源,可以很方便的计算。比如2个object发生碰撞时,obj1位于obj2 的什么方向?obj1要向何处去?obj2要向何处去?是obj1让obj2先过,还是obj2让obj1先过?如果要让obj2过去,obj2应该怎么绕过obj1?向下绕?万一向下绕不通怎么办?那么向上绕,可是这时上面又有另一个obj3,这时候怎么办?这些问题只算整个Collision AI的九牛一毛,微不足道,可见碰撞流程何其复杂,我将之规划到AI模块中,完全不算过份。

而我要再次说明,在Collision AI的处理上,数据来源可算重中之重。

其次是,空间运动框架。你想想,我要控制obj2向某个方向移动,如果只给引擎一条指令,那是何其方便?可是在开发空间运动时,我们往往把全部精力集中在算法上,而忽略了后面的碰撞流程系统,碰撞流程系统会大量的用到空间运动引擎,而且几乎每次都是平滑运动,并不是一次到位。我为碰撞流程系统,从新写了空间运动部分,现在控制起来虽然还是比较吃力,那些逻辑很绕脑子,但这样结合运动+碰撞的空间运动引擎已经比以前进步了太多太多了,大大的方便的 Collision AI部分的开发。

再其次,是逻辑判断的支持部分。我举个例子,obj1向obj2方向运动,obj2又向obj1方向运动,这种碰撞在碰撞引擎中我将之称为对碰,obj2延0度方向运动,obj2延 90度方向运动,我将之称为直角碰,在实时的RTS引擎中这些都是要区分的,用来为后面的AI判定打下基础。

再其次,才是简单到不能再简单的Finding path之类的,什么A*,D*,V*,顶点寻路等等。这些是目前非常成熟的技术,索性我就不予以详谈了。

Collision AI 我目前算是成功在望,虽然地球上以前有过一些高手,他们开发C&C,开发StarCraft,RedAlert,Warcraft,他们都走过了 Collision AI这艰深的一步,最后迈向成功殿堂。虽然我不算什么鸟名人,但步其后尘,可以预见的游戏引擎成功在望,心里十分舒适。大有成功感。

总结一下。Collision AI引擎不要小看它,它和空间运动引擎这两块真的是RTS+ARPG游戏引擎中最难得两块。注意数据来源,运动框架,以及逻辑判断支持这三部分。开发时,应该保持六根清净,五蕴皆空状态。如果你会被那些逻辑判断搅到神经衰弱,应该立即stop,喝喝酒,玩玩女人,但不要沉迷其中,关键是让身心松弛。否则很难完成一个庞大的游戏引擎系统。

最后小声说一句。游戏引擎即将完成,规模不小。有同仁愿同学,愿一起做事。欢迎与我联系。在下张某,各方同行只要是同行,做程序的,美术的,策划的,一律收下了。大家慢慢想办法合作。

第一次写技术文献。望站长将之甩进精华区。多谢。

交流长存。阿门~~


我来说两句】 【加入收藏】 【返加顶部】 【打印本页】 【关闭窗口
中搜索 第一次写技术文献。Collision AI
本类热点文章
  脚本系统的实现
  C++基本功和 Design Pattern系列(2) Ty..
  C++基本功和 Design Pattern系列(1) - ..
  斜45度游戏开发(提高篇)
  睱酵笴栏祘Α砞璸?? - [秈顶絞]
  斜45度游戏开发(二)
  第一次写技术文献。Collision AI
  斜视角游戏中遮挡的判断
  C语言基本功教程系列(5) - 文件, Socke..
  用rand()和srand()产生伪随机数的方法总..
  C++基本功和 Design Pattern系列(3) co..
  C语言基本功教程系列(1)
最新分类信息我要发布 
最新招聘信息

关于我们 / 合作推广 / 给我留言 / 版权举报 / 意见建议 / 广告投放  
Copyright ©2003-2024 Lihuasoft.net webmaster(at)lihuasoft.net
网站编程QQ群   京ICP备05001064号 页面生成时间:0.00436