前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >冷眼旁观Cocos3D发布

冷眼旁观Cocos3D发布

作者头像
用户2615200
发布2018-08-02 17:13:53
5390
发布2018-08-02 17:13:53
举报

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

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

  使用Cocos2d-x本身是非常简单的,程序员一般只要首先了解一些基本概念:譬如director、layer、node等等,然后打开示例中的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 Action,TestCpp中的测试效果似乎都很不错,但是一旦你想将他们与你现有的场景结合,那么头疼的问题就接踵而至了……

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

  但是另外的,Cocos2d-x对于开发流程的支持的则可以用糟糕来形容,虽然在网上你可以找到不少Cocos2d-x支持的开发工具,譬如TexturePacker、TiledMapEditor等等,当总的来看总有一种东拼西凑的感觉,各个工具的结合程度也都很差,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最擅长的地方,平心而论,在我目前所有接触过的游戏引擎中,Unity的Editor是最友好的,没有之一,我本人也并不认为Unity仅是一个引擎,而应该说他是一套完整的游戏开发解决方案,引擎只能算作这套方案中的一个组成部分而已,而Cocos2d-x目前最大的问题,我认为倒并不在于他是否支持3D,而在于他目前还仅仅只有引擎这么一个组成部分~

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013年11月29日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档