人气 224

[游戏程序] [转帖]一次写技术文献。Collision AI [复制链接]

九艺网 2017-3-10 17:01:04

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
前段时间开始开发新游戏引擎,目前也是正在开发状态。我常说,碰撞+空间算法部分是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,喝喝酒,玩玩女人,但不要沉迷其中,关键是让身心松弛。否则很难完成一个庞大的游戏引擎系统。
最后小声说一句。游戏引擎即将完成,规模不小。有同仁愿同学,愿一起做事。欢迎与我联系。在下张某,各方同行只要是同行,做程序的,美术的,策划的,一律收下了。大家慢慢想办法合作。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|小黑屋|九艺游戏动画论坛 ( 津ICP备2022000452号-1 )

GMT+8, 2024-4-20 13:44 , Processed in 0.053226 second(s), 23 queries .

Powered by Discuz! X3.4  © 2001-2017 Discuz Team.