今晚在整理以前的笔记,发现一篇关于cocos2dx renderer的设计摘录。cocos2dx可以说是我客户端之路的启蒙引擎,对我有很大的启发,也跟随着我经历过一段神奇的工作经历。好奇心驱使下,去搜了一下目前的状况。发现2018年基本已经停止更新,最新的版本也停留在v4.0(2019年)。后来的替代者是cocos-engine。简单的浏览了一下文档,虽然增加了不少新的特性,绑定语言也变成了TS,从代码树来看似乎也继承了cocos2dx部分代码。但是整体的功能和设计不要说跟双U比,就算跟目前的后起之秀GODOT也差了不少,论坛也比较冷清。
这不禁使我思考,为什么当时如日中天的coco,为什么后来会掉队呢?
崛起
cocos2dx其实是从coco2d的’翻译’过来的(我记得后面甚至原作者也跳到cocos2d)。coco2d是一个基于ios objc的2D引擎,一开始定位就是做2D小游戏的。在这样的背景下,再加上钓鱼达人在手游的爆火,作为幕后功臣的cocos2dx自然得到更多人的关注,而当时正处于手游崛起时代,国内(国外)游戏引擎近乎空白。cocos2dx自然顺利成章的’补位’。
转折
对于cocos2d-x v2.2之前的历史我所知不多,但对于v2.2以后甚至v3.0的版本,可以说这个引擎的巅峰,时间大概是2012-2015年。伴随着各大传统厂商入局手游,市场迅速扩大。cocos2d-x可以当时游戏研发的唯一选择,当时的触控科技可以说是当红炸子鸡。触控当时也看到移动设备的性能不断攀升,推出了重构了渲染层、’支持’3D的v3版本。在我看来,正是这个风向的转变,让cocos2d-x从第一梯队掉队。我认为主要原因:
- 兼容性。V3当时的定位是V2的迭代,迭代了渲染队列和增加能显示3D的节点Node3D(如果我没记错的话?)这就导致花了大量时间的V3实际只是一个能显示3D模型的准2.5D引擎。从现在我个人的角度来看,如果要做3D的话,原有的引擎API根本不适合,单说场景管理这块就已经很头疼。另外3D引擎的工作流需要有很强的定义和整合能力,当时cocos2d-x也是一个渲染引擎,根本达不到这样的高度。与其从V2兼容迭代,不如另开炉灶,做一个领先时代的新的产品。事实上触控后面也开了Cocos Creator,UE3->UE4也是完全重写(虽然用了不少UE3的代码)。
- 稳定性。对当时cocos ui 编辑器的稳定性印象深刻。每天都会crash不少次,还会有一些性能问题。即便是后面的版本也基本没有太多改善。对于inhouse的工具,可以忍;作为一个产品几乎无法接受。
- 技术滞后性。cocos2dx很长一段时间都是以一个单独的渲染引擎+UI编辑器存在。直到后面Unity出来,才发现可以将所有东西整合在一起作为一个编辑器。这时候Unity已经以技术领先态势抢占市场份额。回头Unity在3D引擎的基础上开发出2D引擎的内容把cocos2d-x仅有的2D市场也吃掉。
总结
其实,无论你之前处于什么样的领导地位,只要一次没跟上时代的步伐、看清楚形势就会被时代抛弃。无论是对于个人或公司,触控如是,诺基亚如是。反观同样是有自己产品和引擎的E宝,在Unity已经抢占手游市场的大半江山,依然能通过开源占领市场,并利用自己技术优势和不断迭代,重夺引擎市场桂冠。可惜,触控始终不是Epic,时代总要翻篇。