研发背景
2014年初,准备转型手游开发;由于前一款PC端的MMO RPG项目的月流水还不错,加上版本迭代已经进入稳定期,在处理日常事务之余,开始了几款能开发手游的引擎的技术选型。
引擎比较
当时主流的手游引擎有Unity、Cocos2d-X,第二梯队有UE3、Flash以及当时刚发布的UE4。
Flash
先来说说Flash--PC时代的特殊产物。08年到14年国内迅猛崛起的页游行业,绝大多数产品都是基于它。各种号称Flash杀手的竞品都无法对它造成实质性威胁,包括微软打造的SilverLight也没有阻止Flash前进的步伐。究其原因,还是因为传统web端在富媒体表现方面的乏力,而这正是Flash最擅长的领域,在Web野蛮生长的年代,造就了flash Player高达99%+的恐怖安装率。
如果选择Flash的话,主要优势有几点:
- 招人方便;当时的游戏行业从业人数毕竟有限,而国内庞大的页游开发人员基数,相对端游这些传统平台而言,还是很有诱惑力的;
- 开发环境容易上手;Flash所采用的ActionScript3是一门简洁的弱类型语言,有部分动态语言的特征,同时也有一定的编译器类型检查能力。语言特性不多,语法也简单。开发工具也比较丰富,常规可以用Flash Builder(基于Eclipse),喜欢DIY的同学也能在IDEA下搭开发环境;
- 和Photo Shop、Flash pro这些美术工具是同一个东家出的,在自动化工具这块,可以共享同一个代码环境;
- 有自己的3D运行时Stage3D,也有基于该技术的3D引擎AWAY3D,Alternativa3D,Minko,2D有Starling;
劣势也很明显:
- 3D环境不成熟,Away3D是官方在背后支持的引擎,整体环境相对另外两个来说比较完善,但是效率一般,光照部分也仅仅实现了一些简单的光照模型、模型格式支持的也不多;另外,Stage3D使用的Shader语言AGAL对比主流的CG、GLSL这些而言,太过原始,如汇编之于C,试想在不是开发嵌入式的环境下,用过C的人谁会想去写汇编。语义上最多只支持16个寄存器,显存128M,天然坑的设计。
- 官方支持乏力,自从被乔帮主喷了之后,Adobe在10年10月宣布停止AS4语言的开发。虽然手机Native版可以用使用Air来开发,核心还是AS3和Stage3D,但是从更新的频率和力度能感受到在下降;国内的一些Adobe平台技术经理纷纷转岗,有些出来创业开发诸如白鹭这类H5引擎。
虽然国内从页游行业的角度看,还是一片欣欣向荣的局面,其实已是夕阳红。核心原因还是Adobe内部的放弃Flash的趋势。对于技术选型来说,一大忌讳就是使用即将淘汰的技术,再加上Flash开发栈如上所述的一些不完善,日后官方支持都不够的情况下呢?皮之不存毛将焉附。因此Flash是第一个被pass的方案。
UE3 & UE4
接下来说说UE3和UE4,UE3在当时的主机和PC平台取得了斐然成绩,不少采用商业引擎的3A游戏都是使用它来开发的,团队的技术背景没得说。不过当时的环境下也有一些短板:首先,对于一个试水手游的公司来说,授权费用太过昂贵,其次移动端的支持不如Unity强大;另外基础开发人员招募上面,在当时国内的环境而言有点困难。UE4是UE3的进化版,14年刚正式发布,优点很多:引擎部分相当于已经开源、强大的图形能力,比UE3更友好的移动平台支持,除了一点:5%营收分成,国内的游戏行业历来都是渠道为王,5%营收分成意味着你的竞争对手各种买量推广的时候,你只能捂着钱包左右权衡,技术选型不单单只是考虑什么技术好用,商业上的考量同样不可或缺,好的游戏即是艺术品也是商品,从整个游戏发行的层面来看,这个点对当时的我们而言,是硬伤。所以,这两个引擎也只能先放下了。就UE4而言,还是略为可惜。
插句题外话,indienova的session超时设置的这么短,码了半天的字,一下就没了,也是雪崩
接着码吧
Unity & Cocos2D-X
最后说说Unity和Cocos2d-X,13年国内大部分的手游都是使用Cocos2d-X开发,其中不乏刀塔传奇之类的大作,反观用Unity的几乎说不上几个。Cocos2d-X本身是开源的,背后主要的维护团队是触控科技,在移动端的跨平台还做的不错,在分别试用了两个引擎之后,Unity的跨平台发布和强大的编辑器给我留下了深刻的印象,完善的模型、贴图格式支持,灵活的动画系统,现代化的shader支持,物理引擎、粒子系统一应俱全,编辑器的高度扩展性。加之文档完善,论坛也很活跃。反观Cocos2d-X就显得中规中矩了。而面对当时国内几乎清一色的采用Cocos2d-X,我估计有以下几个原因:
- 2D比3D门槛低;
- 国内手游行业的从众心理;
- Cocos2d-X背后的技术和资金支持是触控科技,同行交流起来更方便,而Unity当时才开始起步在我国拓展市场;
- 早期手机硬件机能的限制。
2D门槛确实低于3D,从硬件的角度来说,12、13年前,稍微老一点的手机跑3D游戏会有点费劲,但是随着硬件的发展,加之我也做了一些压力测试,从13年往后,控制好资源量的前提下,手机已经具备运行效果不太复杂的3D游戏的能力,3D意味着多了一分竞争力。再者2D说白了是3D的一个子集,Unity是可以直接开发2D游戏的,而对于一个2D引擎来说,开发3D游戏确很难做到。往后续发展看,Unity研发团队当时的研发实力也是高于Cocos这边,即使Cocos后续会出3D版本,无论从技术实力还是先发优势来看,都没有太大的竞争力。当然Unity也不是没有缺点,比如相对UE4来说,渲染管线只有2套已封装好的(固定管线这种旧社会的产物不算),除了能写写shader,管线上没有太大的自定空间,动画系统也不如UE3强大。鉴于我们是开发移动游戏,效果上已经完全能满足,而Unity本身3D渲染性能在手机上跑下来的结果也很令人满意。总体来说,瑕不掩瑜。
经过一番分析和对比,最终还是选择了Unity。
【本文首发于https://hydralisk.indienova.com/blogread/5187,转载请与我联系】
暂无关于此日志的评论。