冷眼旁观Cocos3D发布

  近日网上瞎逛,无意看到了Cocos3D-x?)发布的消息,不禁为之一震,对此也生出些思考,在此略略记下,权当做些絮叨吧 )

  自己使用过一段时间的Cocos2d-x,总体而言,我还是非常喜欢这个由国人发起的开源项目的,虽然不能说其“完全原创”,但肯定可以说他“土生土长”,而且在所有国人发起的开源项目中,Cocos2d-x应该算是目前最“火”的一个了~

  使用Cocos2d-x本身是非常简单的,程序员一般只要首先了解一些基本概念:譬如directorlayernode等等,然后打开示例中的HelloCpp工程稍稍看看,基本上便可以开始写Cocos2d-x程序了,接着再瞧瞧示例中的TestCpp,辅以网上泛滥的教程资料,稍加时日,定然可以对Cocos2d-x得心应手~

  可以说,Cocos2d-x还是相对简易的,一方面自然是因为Cocos2d-x本身的架构设计出众、游戏功能完善,但更重要的原因,我觉得可能还是在于Cocos2d-x面向的是相对简易的2D游戏开发~

  2D游戏的发展历史肯定比我年长,其中涉及的许多技术,相对目前“甚嚣尘上”的3D游戏,可以说是比较简单的,拿渲染来讲,无非就是操作一些屏幕像素,与3D中复杂的渲染流水线自不可同日而语,当然,这种说法目前来看也并不十分准确,因为像Cocos2d-x这种新近的游戏引擎,虽然属于2D Engine,但大抵采用的也都是3D渲染的实现方式,远不是什么操作屏幕像素了,但是这些实现细节对于一般的引擎使用者而言其实是不必关心的,因为我们开发者平日所使用的功能基本都是围绕2D的:看看Cocos2d-x中的CCNode,大部分基本属性都只有两维,虽然其通过getCamera等方法可以支持一定的3D功能,但是相对而言限制很大,另外值得一提的还有Cocos2d-x内建的那些个3D ActionTestCpp中的测试效果似乎都很不错,但是一旦你想将他们与你现有的场景结合,那么头疼的问题就接踵而至了……

  以上的这些问题其实都可以归结为一个原因:Cocos2d-x目前还仅仅是一款2D游戏引擎……虽然他是基于3D技术开发的,但无论从架构上还是功能上而言,Cocos2d-x设计之初都是面向2D开发的,这一点从他的名字中就一目了然了,虽然Cocos2d-x经历了不少版本更新,期间从基于OpenGL ES 1.0 到目前基于 OpenGL ES 2.0;从仅支持基本的逐帧动画到现在支持2D骨骼动画;从以前代码中浓重的Object-C风格到现在开始运用C++11Cocos2d-x都在一步一步的变得更让人亲近,但是自始至终的,Cocos2d-x都坚持自己是一款2D引擎的初衷,基本的引擎架构从未有大的改动,增加的不少特性极少是为了扩展3D功能的,可以说,我认为Cocos2d-x定位很明确,走的也很踏实~

  但是另外的,Cocos2d-x对于开发流程的支持的则可以用糟糕来形容,虽然在网上你可以找到不少Cocos2d-x支持的开发工具,譬如TexturePackerTiledMapEditor等等,当总的来看总有一种东拼西凑的感觉,各个工具的结合程度也都很差,CocosBuilder已经不错了,但是仍然难于应付稍微复杂一些的需求,触控也意识到了这个问题,不久前发布了CocosStudio,也在保持持续更新,但就目前我的使用情况而言,CocosStudio支持的功能还是稍显单薄,与Cocos2d-x的结合也仍然不是很方便……总的来说,Cocos2d-x目前还仅仅是一个游戏引擎,但是对于开发流程的支持还极为有限,但是Cocos2d-x无疑一直在朝这个方向努力,如果一直秉承他一贯的明确踏实作风,结果是很值得期待的,当然,这期间还有很长的一段路要走,而我也认为这段路是Cocos2d-x以后发展的重点所在。

  所以当我看到上面Cocos3D发布消息的时候,自然吃了一惊,觉得自始至终都方向明确的Cocos2d-x怎么突然之间一脚跨入了自己陌生的3D领域,暂且不论目前Cocos2d-x还有不少遗留的工作亟待解决(譬如开发流程完善……),单就从开发技术角度,要让现有的Cocos2d-x框架完美支持3D,可能只有让Cocos2d-x“伤筋动骨”一途了,即从框架层面上修改现有的Cocos2d-x,工作量来说我觉得几乎就是重起炉灶打造一个Cocos3d-x了,而3D引擎又远比2D引擎来的复杂,所以如果Cocos3d-x真的可以成型,那么代码量可能会比Cocos2d-x多上几倍!再者制作3D游戏不比2D,成熟的开发工具几乎是必不可少的,试想如果为了显示一个Teapot我就要写上百来行代码,那么制作一个一般的游戏场景恐怕真的就要让人崩溃了~~~

  基于上述疑问,我好奇的在Cocos2d-x官网上简单搜寻了一下Cocos3D的相关信息,奇怪的是竟然一无所获,连个News报道都看不到,让人着实困惑,当然,困惑之余,自己更多的还是担忧,担忧Cocos2D-x会因此而逐渐变了味道,变得难以亲近,不过不管怎么说,在此还是祝一声Cocos2d-x好运吧~

  上面新闻中也提到了Unity,自己目前也在使用,在此也就着Cocos2d-x随便说说:Unity是商业工具,与Cocos2d-x的开源天性正好截然相反,不付钱你是用不了他的Pro版本的(天朝不算),这点可能在一定程度上限制了他的使用人数,但更重要的,我认为还是因为Unity本身是面向3D开发的关系,导致许多开发者选择其他引擎来制作自己的游戏。众所周知,3D游戏开发困难重重,即便你有完整的工具链支持,恐怕也难以避免开发周期漫长、游戏效率低下等等问题,如果你只想开发一款简单的2D游戏,那么选择Unity可能就是杀鸡用牛刀了,转为选择另一款轻量的2D引擎可能更好,如果这款引擎不仅可以跨平台,而且还是MIT license开源的,那么就再好不过了!而这也是我认为Cocos2d-x可以流行起来的主要原因所在,但是随着游戏制作要求的进一步提高,完整的开发流程支持就变的必不可少了,而这也是Unity最擅长的地方,平心而论,在我目前所有接触过的游戏引擎中,UnityEditor是最友好的,没有之一,我本人也并不认为Unity仅是一个引擎,而应该说他是一套完整的游戏开发解决方案,引擎只能算作这套方案中的一个组成部分而已,而Cocos2d-x目前最大的问题,我认为倒并不在于他是否支持3D,而在于他目前还仅仅只有引擎这么一个组成部分~

  近期Unity也发布了2D制作工具,貌似是试图“侵占”Cocos2d-x的领域,其实Unity2D开发插件早已有之,如果你想用他来制作2D游戏本来就没有什么问题,真正的问题还是在于Unity3D天性会让2D开发带来很多不必要的复杂性,如果游戏需求简单的话,自然选择其他更简单的方案更好,而这也是Unity的最大问题所在,即便其内建了2D制作工具,也并不会适用于开发所有2D游戏反观Cocos2d-x,即便Cocos3D真的如期发布了,但是工具链支持仍然如现在的这般有限,那么Cocos3D可能也仅能算是一个有趣的玩具而已……

  如果现在一定要从UnityCocos2d-x中选择其一来开发游戏,长远来看,我会义无反顾的选择Unity,同时,我也希望不久的将来Cocos2d-x的发展可以逐渐改变我的想法,但愿吧~

你可能感兴趣的:(冷眼旁观Cocos3D发布)