暴米花 发表于 2006-12-6 16:05:00

[转帖]一次写技术文献。Collision AI

<strong><br/><br/><br/></strong>前段时间开始开发新游戏引擎,目前也是正在开发状态。我常说,碰撞+空间算法部分是3D游戏中的核心,也是最难制作的一部分。抱歉,这样说恐怕有点不够准确,准确来说,Collision&nbsp;AI是最难得一块。难点在于,在制作过程中,那些数字很抽象,往往要思考很久才敢下手。 <p></p><p>Collision的实现非常简单,Collision检测目前资料众多,算法也很成熟。往往在游戏运行中,Collision都有个和它对应的AI系统,我简称Collision&nbsp;AI。因为碰撞可以机械化的检测,并且准确率很高。在碰撞检测的下一步,就是发生对应的处理。因为我在制作一部实时引擎,目前正处于碰撞流程的制作过程,这一步直接涉及到很多物理计算,很多错综复发的逻辑处理。为了下一步开发能够更好的进行,所以把这一步直接规划到AI模块中。目前做了有些时间了,摸索出了一些AI方面的心得,同时又在网上又很少看到有这方面的文献。专业点的可以说目前没有,全是保留技术。</p><p>制作Collision&nbsp;AI首先是必须换脑。不要用简单的概念去思考它。否则实际做到那地方时,你会感到完全摸不着边。</p><p>碰撞流程主要依靠事件触发为主。碰撞检测部分应该放在刷贞时实现,否则来一个快速运动的object,那是很容易检测丢的。而刷贞部分,应该做一个专用的刷贞器,逻辑贞按每秒固定刷30FPS或则更好,而物理贞可以任意。因为检测运动object必须要保证检测频率是集中式的,而不是离散的。每秒的固定刷贞技术可以在刷贞器中用deltaTime的减法实现。这样就可以准确无误的检测碰撞了。你可以根据喜好制定检测的方式,比如先在地图系统中实现区域检测,然后再进一步执行外围的碰撞盒检测,最后再进行精确的Tri检测。不过目前都用接近的几何体来代替Tri检测。</p><p>然后就是最关键的碰撞AI处理了。在制作这一部分时,首先要有很完善的数据来源,可以很方便的计算。比如2个object发生碰撞时,obj1位于obj2的什么方向?obj1要向何处去?obj2要向何处去?是obj1让obj2先过,还是obj2让obj1先过?如果要让obj2过去,obj2应该怎么绕过obj1?向下绕?万一向下绕不通怎么办?那么向上绕,可是这时上面又有另一个obj3,这时候怎么办?这些问题只算整个Collision&nbsp;AI的九牛一毛,微不足道,可见碰撞流程何其复杂,我将之规划到AI模块中,完全不算过份。</p><p>而我要再次说明,在Collision&nbsp;AI的处理上,数据来源可算重中之重。</p><p>其次是,空间运动框架。你想想,我要控制obj2向某个方向移动,如果只给引擎一条指令,那是何其方便?可是在开发空间运动时,我们往往把全部精力集中在算法上,而忽略了后面的碰撞流程系统,碰撞流程系统会大量的用到空间运动引擎,而且几乎每次都是平滑运动,并不是一次到位。我为碰撞流程系统,从新写了空间运动部分,现在控制起来虽然还是比较吃力,那些逻辑很绕脑子,但这样结合运动+碰撞的空间运动引擎已经比以前进步了太多太多了,大大的方便的Collision&nbsp;AI部分的开发。</p><p>再其次,是逻辑判断的支持部分。我举个例子,obj1向obj2方向运动,obj2又向obj1方向运动,这种碰撞在碰撞引擎中我将之称为对碰,obj2延0度方向运动,obj2延90度方向运动,我将之称为直角碰,在实时的RTS引擎中这些都是要区分的,用来为后面的AI判定打下基础。</p><p>再其次,才是简单到不能再简单的Finding&nbsp;path之类的,什么A*,D*,V*,顶点寻路等等。这些是目前非常成熟的技术,索性我就不予以详谈了。</p><p>Collision&nbsp;AI我目前算是成功在望,虽然地球上以前有过一些高手,他们开发C&amp;C,开发StarCraft,RedAlert,Warcraft,他们都走过了Collision&nbsp;AI这艰深的一步,最后迈向成功殿堂。虽然我不算什么鸟名人,但步其后尘,可以预见的游戏引擎成功在望,心里十分舒适。大有成功感。</p><p>总结一下。Collision&nbsp;AI引擎不要小看它,它和空间运动引擎这两块真的是RTS+ARPG游戏引擎中最难得两块。注意数据来源,运动框架,以及逻辑判断支持这三部分。开发时,应该保持六根清净,五蕴皆空状态。如果你会被那些逻辑判断搅到神经衰弱,应该立即stop,喝喝酒,玩玩女人,但不要沉迷其中,关键是让身心松弛。否则很难完成一个庞大的游戏引擎系统。</p><p>最后小声说一句。游戏引擎即将完成,规模不小。有同仁愿同学,愿一起做事。欢迎与我联系。在下张某,各方同行只要是同行,做程序的,美术的,策划的,一律收下了。大家慢慢想办法合作。</p><p></p>

lovemaxmax 发表于 2007-5-5 06:43:00

支持`~

ksouppframe 发表于 2007-5-11 21:02:00

晕了
页: [1]
查看完整版本: [转帖]一次写技术文献。Collision AI