碰到游戏开发,一定会要面临在这3个引擎里面的选择。网上一搜,不管中英文,找到的比较文章浮于表面,不触及雷区,根本无法帮助开发者进行选择。
所以,自己亲自使用了3个引擎后,来帮大家扫雷,少走弯路。
先说结论:Unnreal最方便,最完善,已经成为超越Unity的全平台首选。包括腾讯,网易在内,越来越多的公司选择用unreal开发手游,Unity最近有被大公司逐步淘汰的趋势。
游戏引擎的需求,一般来说有如下几个:平台支持,渲染效果,编辑器易用性,文档完善程度,编程难度,第三方包数量,引擎收费方式。
我们一个个来看。
1. 平台
unity和unreal如今都是全平台,包括手机。在手机上,unreal效果还比unity好。
cryEngine目前还是不支持手机,但从官方论坛看,似乎正在开发对手机的支持。
2. 渲染效果
Unity从v5.x开始,支持GI(全局光照),到2018,把GI+PBR提升到了标准流程。
从GI的实现方式看,Unity和Unreal采用了一模一样的方式:用非实时的光线追踪渲染器,花长时间,对场景进行GI渲染,并把GI进行bake,保存下来。这样,实时游戏时,不再计算,直接用bake好的。
所以,我们看到的Unity和Unreal的GI效果,其实是光线追踪渲染器,花长时间渲染出来的照片级效果。再有游戏主播说游戏画面多么好的时候,你可以去笑话他了,因为这画面根本就不是实时渲染的。
这种方式,只能用于静态物体,静态光源,也就是,物体和光源不能动。那动态物体怎么办?
方法是:在bake的时候,把空间每个点,不管有没有物体,每个点的光照信息,也都bake到数据结构中。动态物体,实际上不能反射GI,但是能接收这些保存过的GI,从而达到还算不错的效果。
unity和unreal采用了完全一样的GI实现方式,于是,也就有了完全一样的GI渲染效果。
unity只提供bake的这一种方式,而unreal还提供无需bake的实时GI。但是,unreal的实时GI,效果非常差,绝对不会有人去用,所以不提也罢。
CryEngine则非常猛,它不是bake,而是真的实时GI。它不需要bake,真正做到了所见即所得。它的GI,叫做Voxel-Based GI,和这两年,NVIDIA到处宣传、演示的实时GI,是一样的实现方式,都是基于同样的论文实现的。这在2018年底的今天来看,也是真正的次世代引擎。
视觉效果上,VB GI也有局限,和Baked GI一样,VB GI只计算静态物体,动态物体不反射GI,但接受GI。所以画面效果上,它和Unreal,Unity3D的效果,其实是一模一样的。
VB GI的好处是,它不需要bake,开发者永远不用面对bake后效果不如意,反复调整,反复bake的尴尬局面。这种尴尬,在unity和unreal很常见。
也就是说,VB GI效果其实并没有提升,但是制作效率得到提高。
对玩家来说,VB GI有2个短板:
- 对电脑性能要求更高。
- 当镜头从一处,不移动,直接跳到另一处时,光线可能要花约2秒重新计算才能达到准确。现象是,镜头跳过去瞬间,画面全亮,约2秒内逐渐回到正常亮度。
而手机平台上,GI是不用想了,手机性能跟不上。不过,GI还是可以bake到贴图上的。在这种情况下,Unreal的渲染效果,明显比unity好得多,这是众多公司改用unreal开发手机游戏的一个重要原因。
3. 编辑器易用性
Unreal完胜,近乎碾压级别的胜利。最能一眼看出区别的,就是材质系统。
Unreal拥有最直观,最方便,最强大的节点式材质,其材质选项,也完全基于PBR(基于物理的渲染)。不管是设计人员,还是开发者,都能很舒服的上手,很舒服的使用和调整。
Unity则简陋的让人意外,尤其是作为一个热门游戏引擎。整个材质体系都给人感觉是业余的设计。尤其是对于用过3dmax, maya, c4d的3D人士来说,Unity的材质体系,有点看不下去。
功能强大方面,Unreal提供了你能想到的几乎所有功能。而Unity自身,很多功能都是缺失的,但是都能在市场买到,如果你有预算的话。这个部分,可以往后看“第三方包”的环节了解详情。
CryEngine难用的让人吐血。因为它所有的资产/素材,都没有预览图,只有文件名列表。当点选到某个资产时,是有预览窗口的,也就是说,你要一个个去点选,看哪个素材是你要的,而不能从预览图列表一眼看出来。
这种强大和便利方面的差异,体现在3个引擎的各处。
Unreal的编辑器易用性,也是越来越多公司选择unreal做手游,而不选择unity的一个重要原因。
4. 文档完善程度
unreal和unity的文档完善程度,可以说不分上下,都很完善,不管是跟着向导走的新手,还是老手速查,都没有任何困难。
在新手引导方面,unity做的更好一点。因为unreal一上来,就以大型游戏的需求举例,提供的入门项目,也比unity的入门项目,更复杂一些。
而CryEngine的文档,可以用严重不足来形容。cryEngine做出了次世代的引擎,却因为没有文档,没人会用,公司直接破产了一次,你敢信。幸好亚马逊把它买了,不然它就消失了。
cryEngine的文档存在2个问题:
(1)文档版本跟不上软件版本:
cryEngine 在v5开始,编辑器经历推倒重写,现在是v5.5,重写基本完成,文档手册跟上了,但教程还没跟上
现在,官网教程 和 最新版编辑器对不上。而最新版的视频教程,其实放在官方youtube里,却没放在官网上
所以,对于不知道的人,会觉得CryEngine上手好难,教程和自己软件上看到的,根本不是一回事
(2)编程文档极度匮乏:
cryEngine的大部分文档,都是 编辑器 和 无代码的节点式编程 的。而C#/C++文档,极度匮乏。教你怎么新建脚本,怎么编译之后,直接就是API手册!
获得常用api的唯一方法,是查看官方提供的游戏模板项目的源码。
5. 编程难度
unreal只支持C++;unity主用C#;CryEngine从v5之后,C#和C++是同等待遇。
在游戏编程方面,C++其实并不比C#复杂多少,但是,unreal的C++ 代码,却总是给人一种不太易读的感觉。对比后,发现差异在于api和变量命名。Unity的api命名更加简洁,而unreal的,不管是api还是示例代码,变量命名都特别长。
这种过长的命名,以及C++本身复杂性的名声在外,吓住了不少其实应该选择Unreal的用户。
所以,有时候不太理解,unreal为什么不像CryEngine那样,官方支持C#。就算unreal一直在说,它的C++其实并不复杂,但C++险恶的名声,不是Unreal能改变的。
6. 第三方包
unity压倒性的多,其他两个都不能比。
但unreal编辑器压倒性的强大,做游戏的大部分功能,unreal都想到并提供了。
比如,流式地图加载(玩家边跑边加载地图,从而能无缝体验无限大的地图),unreal本身就提供了,unity本身没有,但市场有卖,价格50美金。
这样看,或许unreal包不如unity多,但是游戏需要的功能,unreal编辑器一般都提供了,于是反而省了不少钱。
CryEngine包就很少了,不过,官方很舍得给免费素材。一上来,就先给你4G免费素材库。然后,应用商店,再来一堆免费素材库。基本上,制作野外地图,你不再需要另找任何素材。但是,城市场景,它就没多少素材了。
7. 引擎收费
unity是收软件月费/年费,成本有上限。
unreal是收5%的游戏利润。
CryEngine有段时间是靠随意捐款,现在也改成了收5%的游戏利润。
结论:
CryEngine完全出局,文档不全、且不支持手机,找不到任何使用的理由。
Unreal在强大、性能、编辑器易用等方面,都是超过unity的,平台支持两者一样。越来越多的公司已经在抛弃Unity,换用Unreal。
但是,近期,依然有些公司在比较Unreal和Unity后,毅然选择Unity。主要是产品、系列已经固定的小公司。原因在于:
- 系列产品已经固定,已经明确知道下一个产品收入也不会高,不舍得被unreal抽成
- C++的开发人员工资,比C#要贵。
基本上,如今要在unreal和unity做选择的小公司里,有个趋势:越是觉得自己收入少的公司,越是会选择unity。而越是觉得自己收入高的公司,越是会选择unreal。
比如,网络游戏更愿意选择unreal;单机+内购+DLC的游戏,更愿意选择unity。手机和PC平台都是这样。因为,网络游戏运营更久,开发商会预计自己收入更高。
背后的逻辑是,如果开发商挣钱多,被引擎抽5%也能承受;如果开发商本来就挣钱不多,还被抽5%,或许就很难接受了。