写在前面
前面写了几期有关于小游戏的文章,主要从小游戏开发、小游戏运营、小游戏变现等多个角度进行了较为粗略的介绍,很多同学表示对小游戏引擎部分很感兴趣,希望能够有一些更为深入的分析介绍。今天就对目前主流的小游戏引擎进行探讨。
九层之台,始于累土,所有的代码都需要从“0”开始,一行一行的写出来的,简单的游戏这样做可以,但是想要快速的生产产品,这样的步骤一再重复,最终抽取出通用的代码,用来提高工业的生产效率。
观察游戏发现游戏中通用的功能包括UI界面的显示系统,模型的加载系统,物理引擎系统,动画系统等等,这一系列的通用功能集就可以通过游戏引擎实现批量化的实现。
小游戏与小游戏引擎的关系
小游戏现在囊括的范围包括微信小游戏、QQ 空间小游戏、QQ 玩一玩(厘米游戏)、Facebook Instant Games、各手机厂商的快应用小游戏,他们都在尝试着将社交场景和游戏场景做融合。
我们这里以微信小游戏为例,其运行环境是微信小程序环境的扩展,在小程序环境的基础上提供了 WebGL 接口的封装,使得渲染能力和性能有了大幅度提升。不过由于这些接口都是微信团队通过自研的原生实现封装的,所以并不可以等同为浏览器环境。
作为小游戏引擎,可以尽可能简化开发者的工作量,这样能够帮助开发者完成的主要工作包括:
● 引擎框架适配微信小游戏 API,纯游戏逻辑层面,用户不需要任何额外的修改
● 编辑器提供了快捷的打包流程,直接发布为微信小游戏,并自动唤起小游戏的开发者工具
● 自动加载远程资源,缓存资源以及缓存资源版本控制
小游戏引擎选型需要考虑哪些因素
选择小游戏引擎一般情况下需要考虑以下几个方面,其中选择开发语言、性能、应用广度这三个重要的因素进行细致的说明。
● 开发语言的支持
● 2D、3D、VR的支持
● 核心性能
● 引擎的应用广度
● 设计理念
● 工作流支持力度
● 商业化成熟案例
● 学习资源与技术支持能力
1、开发语言的支持
拥有广泛开发者的小游戏开发语言共有2种:TypeScript、JavaScript。TypeScript 属于面向对象的高级脚本语言,通过编译器将原项目代码编译成 JavaScript 代码文件运行于浏览器之中,面向对象的高级语言无论是项目开发管理,还是项目开发的工具环境的成熟度都明显优于 JavaScript 脚本语言,尤其是中大型项目方面。
2、核心性能
性能是小游戏面临的核心门槛,游戏卡不卡顿,流不流畅都是小游戏开发者首要考虑的问题,只有一个成熟可靠的小游戏产品才能吸引用户持续玩下去甚至主动进行社交裂变。
近些年小游戏品质在迅速提高,包括精细的美术和炫酷的动画等。在复杂的游戏项目面前,上述种种元素,其流畅体验度对游戏引擎是极大的考验。所以选择性能优秀的引擎是保证品质的最重要基础,一定要谨慎。
在游戏项目研发开始时,一定要先对复杂的模块做 DEMO 测试,特别是带背景滚动的游戏。比如横屏卷轴游戏,对帧数稳定性要求极高,如果满足不了性能上的需求,可能会带来眩晕、眼花、疲倦等不良体验。
3、应用广度
随着小游戏开发者对于跨端需要的增长,希望自己开发的小游戏不仅是在微信中能够跑起来,还能支持App独立端、H5页面等也具备一定的竞争力和价值,一次开发可发行各个领域版本,这就需要小游戏引擎能够形成跨端统一的能力。
有哪些小游戏引擎
如果我们将以上考虑到的因素作为筛选条件,符合小游戏开发的引擎包括 Cocos2d-JS、Egret、Layabox、Unity是比较符合条件的。我们再通过细致的优劣势对比来看该如何帮助我们选型做决定。
1、Cocos
Cocos Creator 使用 JavanScript/TypeScript 开发,2010年的时候,能跨平台开发的游戏引擎只有Cocos, 大部分都是2D游戏为主,Cocos 成为了国民手机移动端游戏引擎,那时很多手机游戏,都是基于Cocos开发,也让它迅速了占领了开发者的市场。
后来随着手机硬件的发展,3D游戏越来越多,手游市场份额慢慢的被 Unity 取代。Cocos 引擎完全免费,包体小,做2D游戏技术成熟, Cocos Creator 开发工具和 Unity 的易用性一样,极易上手。
最近2年全新引擎全面支持3D,一次开发能发布到PC端,Android、iOS、微信、抖音、华为等各大小游戏平台。
总结一下Cocos Creator特点:
● 引擎完全免费、开源、包体小、定制灵活;
● 引擎开发2D游戏经过大量验证,非常适合2D游戏开发。
● 全新的3D引擎,能开发3D游戏,但是还有提升空间。
● 一次开发多平台发布,与传统引擎不同的是,可以发布微信、抖音、华为小游戏多个平台。
● Creator 3D引擎生态还不够丰富, 如第三方插件等。
● Cocos H5 游戏runtime内核在行业做的非常好,可以提供高效的H5游戏运行方案。
2、白鹭引擎
白鹭引擎,开发语言是 JavanScript/TypeScript,白鹭游戏引擎对于H5游戏是有着不可磨灭的贡献,它是最早的H5游戏引擎,它里面的很多工具非常好用,到现在还被其他的引擎使用,比如骨骼动画工具,DragonBones 被广泛引用到游戏开发中。
最早一批的 H5 游戏开发者一定都是使用白鹭。白鹭引擎在 H5 游戏这个邻域有着不可磨灭的贡献。后来白鹭也推出了 Native 平台,不过发现目前白鹭引擎逐渐落寞。
总结一下白鹭的特点:
● H5游戏的先驱,为H5游戏做了不可磨灭的贡献。
● H5 2D游戏技术成熟,经过很多商业游戏验证;
● 3D功能有,但是商业项目3D游戏用的比较少。
3、Layabox
Laya 游戏引擎,使用 JavanScript/TypeScript 开发。H5 刚新起时,H5 跑3D游戏,很多公司都不看好,认为以H5的性能,不足以跑效果好的3D游戏, 但是H5游戏有普通游戏无法比拟的优点就是不用安装,点开就可以玩。
那个时候PC页游已经发展成熟,同时手机页游大规模兴起,页游依靠FlashPlayer,而到手机上,就没有FlashPlayer 这个东西,随之取代的就是H5。
Flash 转 H5 商业上不上太成功,后来随着 h5 的发展,直接转为 H5 3D游戏引擎,是最早在H5上跑出大型商业3D游戏的H5 3D引擎, 在H5 3D这块积累了很多经验和成熟上线的产品案例,现在80%左右的 3D 微信、抖音、快应用小游戏都是 laya 引擎做的。
总结一下Laya的特点:
● 最早的被大规模商业项目验证的H5 3D游戏引擎,发布微信抖音等小游戏平台非常成熟。
● 借用强大易用的Unity编辑器可兼容3D资源,如果一个游戏是Unity开发,你要移植到H5,那么Laya一定是首选。
4、Unity
Unity, 使用 C# 或 Lua 语言开发。国民 3D 引擎,这个称号说明了 Unity 在 3D 引擎的市场地位,中小型的游戏公司做 3D 游戏,基本都是用 Unity , 很多大公司的游戏也用 Unity ,AppStore 上面80%的3D游戏都使用 Unity 游戏引擎开发。
为什么 Unity 打败了众多高手,成为国民游戏引擎,我们也好好的说一下。时间回到2010年左右,当时页游比较火,Unity那个时候引擎的定位是能开发PC端游和页游的游戏引擎。
随着手游时代来临,市场急需一个3D游戏引擎,能一次开发多平台发布到 Android、iOS、微信小游戏等 , 而 Unity 成为了当时唯一的3D游戏引擎解决方案。和手游市场一起,Unity实现快速增长。
Unity 能成为国民引擎还有一个很重要的原因,就是对初学者很友好,很方便就可以上手,极大的降低了3D游戏开发难度,Unity 引擎的市场份额越来越大,技术人才、SDK、第三方插件、技术资料等也越来越完整。
总结一下 Unity 的特点:
● 能制作精美的 3D 游戏画面,和定制渲染管线,画面效果不如 UE4。
● 能制作各种类型的 3D 游戏上线,每种类型的游戏都被商业项目验证过。
● 完整的生态,一次开发多, 平台发布。
● Unity 不开源, 需要支付授权费才可以修改引擎代码, 发布后也要付授权费。
● Unity 开发2D游戏相对包体过大。
写在最后
现在市场上的 H5游戏引擎很多,很难去直接定义哪个引擎的好坏,只能说每个引擎都有自己的特性,在某方面跟项目的契合程度比较高。
对于专注于小游戏公司,使用最多的是 Cocos creator 和 Layabox,其中又要属 Cocos creator 最多。
对于中小型以上的游戏公司,使用最多的是 Unity,也是目前市面上使用最广的游戏引擎,也是使用人员最多的引擎。
当然通篇主要研究的小游戏还是以微信为基础,但是目前还有字节、百度、阿里、FinClip等平台可以投放小游戏。当我们开发了微信小程序后,也可以适配其他的小游戏平台,让自己的小游戏能够触达最广阔的用户群体,实现最大的价值。
其中 FinClip 小程序游戏还有个需要特别强调的点,只要开发小程序后适配 FinClip 平台,并在第三方 App 中集成 FinClip SDK 即可实现在第三方 App 中运行小游戏,App 可以是自己的,也可以是外部其他厂商的。这样一来小游戏的价值也能更加广阔,也不限于几大主流平台中。