lim19 发表于 2020-11-26 12:48

游戏引擎Unity, Unreal, CryEngine的比较和扫雷

碰到游戏开发,一定会要面临在这3个引擎里面的选择。网上一搜,不管中英文,找到的比较文章浮于表面,不触及雷区,根本无法帮助开发者进行选择。


所以,自己亲自使用了3个引擎后,来帮大家扫雷,少走弯路。


先说结论:Unnreal最方便,最完善,有机会成为超越Unity的全平台首选。包括腾讯,网易在内,越来越多的公司选择用unreal开发手游。Unity经历转折期,最近有被大公司逐步淘汰的趋势。而小公司建议还是Unity。


游戏引擎的需求,一般来说有如下几个:平台支持,渲染效果,编辑器易用性,文档完善程度,编程难度,第三方包数量,引擎收费方式。
我们一个个来看。
1. 平台
unity和unreal如今都是全平台,包括手机。在手机上,unreal效果远比unity好得多。
cryEngine目前开始支持手机,但是还在beta中。从视频效果看,和unreal是一个水准。
注意,unity在2018年,推出 高品质的HDRP 和适合手机的LWRP 两套流程,然后,又在2019年宣布,LWRP改名为URP(统一渲染流程),以后将逐渐取代标准流程。
也就是说,Unity实际上分为了2个体系:
体系1:原来的标准流程,这个流程,是跨平台的,而且渲染质量可以高、可低。但是性能不佳,官方想淘汰。体系2:HDRP+URP流程。其中,URP是跨平台的,性能好(提高35%),但是渲染效果一般,而且,URP完全使用CPU渲染,根本不用GPU(最近有了GPU渲染的预览版)。而HDRP专门用于挑战3A级效果。
对于体系2,实际上不是真正意义跨平台了。因为URP的画面和CPU渲染方式,不具备和3A大作竞争的能力,。所以不会有人用来做PC和主机游戏。在PC、主机上,你只会选HDRP。
然而,因为HDRP的材质体系、设置项目等,所有需要在IDE里操作的东西,和 URP差异太大了。导致,你用HDRP开发的高品质PC游戏,将难以转为URP的手游,重做的工作量特别大。
也就是说,想要在PC和手游之间跨平台,你还是只能死守体系1,哪怕性能不太好。
反过来,unreal就没有这种尴尬,就一个体系,PC游戏,能够较少的工作量,就转为手机游戏。


2. 效果
如今,Unity在PC/主机上渲染效果得到了飞跃式提升。因此,已经一些3A级游戏工作室,开始尝试用Unity做PC/主机游戏,这在以前是根本不可能的。
实际上,Unity、Unreal、CryEngine都使用了完全相同的物理渲染原理,如今拥有一致的渲染效果。
不同在于:
Unreal灯光需要bake。所谓bake,就是用一个影视级渲染器,把光照效果,保存到贴图和数据结构里,游戏里就不用重新计算了。代价就是,要反复等待bake,场景大一点,bake会很花时间。Unreal 5开始,提供了2个新功能:
第一个:和CryEngine相同的实时全局光技术。实际上,实时GI不是新东西,CryEngine已经使用好几年,只是Unreal一直拖着不做。第二个:模型和材质自动压缩系统。这个系统自动压缩你提供的原生模型和材质,这样,你可以把影视级别的模型、8K材质,直接拖入引擎,而不用关心压缩的事情。一个10亿面数的场景,大约会被压缩成2千万面,压缩率98%。然后,它只绘制会在屏幕范围内显示的面,所以庞大的高清场景,也能实时游玩。这个功能,Nvidia 早在1.5年之前,就已经演示过,Nvidia称之为“Mesh Shading”。Unity还没有宣布支持,但是从趋势看,应该早晚会支持,但最起码比Unreal晚2年。需要注意的是,Unreal 5的2个新功能,改善的是开发效率,并不能改善常规物体的渲染质量。比如人物,渲染质量将和Unreal 4一致。



Unity2019年起,采用混合模式:直接光是实时的,不bake,间接光bake。个人觉得这是兼容性最强的模式。Unreal 4的全bake模式,会导致开发者反复等待bake;而CryEngine和Unreal 5的全实时模式,则对配置要求较高,发热居高不下。


CryEngine不bake,而是只提供实时GI。Unreal 5也将如此。但CryEngine已经实现这一点好多年了。这样,就在开发阶段,真正做到了所见即所得。CryEngine拥有自己的光线追踪体系,兼容N卡和A卡。目前,游戏的光线追踪,都是N卡独家,但CryEngine实现了能和A卡兼容的方案。
如今的实时GI,都基于Voxel-Based GI(以下简称VB GI)的论文,前2年,NVIDIA也到处宣传过。
VB GI也有局限,和Unreal 4的Baked GI一样,VB GI只计算静态物体,动态物体不反射GI,但接受GI。所以画面效果上,它和Unreal 4的Bake GI效果,其实是一回事。
VB GI的好处是,开发者不用面对反复bake的尴尬。这种尴尬,用unity和unreal 4做大场景时很常见。
也就是说,VB GI效果其实并没有提升,但是制作效率得到提高。


手机平台上,GI要么没有,要么经过阉割。这种情况下,Unreal的光照渲染效果,比unity好出一截。这是众多公司改用unreal开发手机游戏的一个重要原因。
然而,Unreal的手游有个致命问题:发热特别严重。尤其是,手机有保护壳,影响了散热的情况下,会烫到让人担心手机会不会烧坏的程度。
所以,哪怕Unreal手游画面效果一流,还是要谨慎选择。


3. 编辑器易用性
Unreal完胜,而且是碾压级别的大获全胜。最能一眼看出区别的,就是材质系统。
Unreal拥有最直观,最方便,最强大的节点式材质。不管是设计人员,还是开发者,都能很舒服的上手,很舒服的使用和调整。
但缺点是,Unreal需要频繁等待材质编译。比如,导入一个模型,可能涉及上千个着色器,你每次都需要等编译等很久。
Unity则简陋的让人意外,尤其是作为一个热门游戏引擎。他有大量让人觉得别扭、不易理解的选项设置,操作也不便利,容易误操作,想调整设置,也不容易找到对应位置。
尤其是对于用过3dmax, maya, c4d的3D专业人士来说,Unity的材质体系,有点看不下去。
材质系统差异,只是冰山一角。功能强大方面,Unreal提供了你能想到的几乎所有功能。而Unity自身,很多功能都是缺失的,但是都能在市场买到。这个部分,可以往后看“第三方包”的环节了解详情。


CryEngine的编辑器,难用的让人吐血。
最基本的,它打包过的资产/素材,浏览包内素材时,都没有预览图,只有文件名列表。当点选到某个资产时,才有预览窗口。也就是说,你要一个个去点选,看哪个素材是你要的,而不能从预览图列表一眼看出来。
(你自己项目导入的资源是有预览图的)
Unreal的编辑器易用性,也是越来越多公司选择unreal做手游,而不选择unity的一个重要原因。


4. 文档完善程度
unreal和unity的文档完善程度,可以说不分上下,都很完善,不管是跟着向导走的新手,还是老手速查,都没有任何困难。
在新手引导方面,unity做的更好一点。因为unreal一上来,就以大型游戏的需求举例,提供的入门项目,也比unity的入门项目,更复杂一些。
而CryEngine的文档,可以用严重不足来形容。cryEngine当初做出了牛逼的引擎,却因为没有文档,没人会用,公司直接破产了一次,你敢信。幸好亚马逊把它买了,不然它就消失了。
CryEngine的文档存在2个问题:
(1)文档版本跟不上软件版本:
cryEngine 在v5开始,编辑器经历推倒重写,到v5.5,重写基本完成。
然而,由于更新频繁,官网教程 和 最新版编辑器对不上的情况,时有发生。另外,最新版的视频教程,其实放在官方youtube里,却没放在官网上,进一步刁难了新人。
(2)编程文档极度匮乏:
    cryEngine的大部分文档,都是 编辑器 和 无代码的节点式编程 的。而C#/C++文档,极度匮乏。教你怎么新建脚本,怎么编译之后,直接就是API手册!
    获得常用api的唯一方法,是查看官方提供的游戏模板项目的源码。
5. 编程难度
unreal只支持C++;unity主用C#;CryEngine从v5之后,C#和C++是同等待遇,并且提供Unity用户迁入指南。
在游戏编程方面,C++其实并不比C#复杂多少,但是,unreal的C++ 代码,总是给人一种不太易读的感觉。对比之后,发现差异在于api和变量命名。
Unity的api命名非常简洁易懂,而unreal的,不管是api还是示例代码,变量命名都特别臭长,而且命名比较难记。


Unreal的api不友善的命名,以及C++本身复杂性的名声在外,吓住了不少其实应该选择Unreal的用户。


6. 第三方包
unity压倒性的多,其他两个都不能比。
但unreal编辑器压倒性的强大,做游戏的大部分功能,unreal都想到并提供了。
比如,流式地图加载(玩家边跑边加载地图,从而无缝体验无限大地图),unreal本身就提供了,unity本身没有,但市场有卖,价格50美金。


CryEngine包就很少了,不过,官方很舍得给免费素材。一上来,就先给你4G免费素材库。然后,应用商店,再来一堆免费素材库。基本上,制作野外地图,你不再需要另找任何素材。但是,城市场景,它就没什么素材了。


7. 引擎收费
unity是收软件月费/年费,成本有上限。
unreal是收5%的游戏利润。
CryEngine有段时间是靠随意捐款,现在也改成了收5%的游戏利润。




结论
现在,Unreal闯入手游,Unity闯入3A级PC主机游戏,都在互相蚕食对手。在Unreal和Unity之间选择的关键在于:
1. 成本
Unreal写代码的成本高,C++开发慢、不易读、不易查,调试维护都更难。Unity编辑器适应成本高,但写代码成本低,开发周期总体比Unreal要快。
2. 跨平台
这里的跨平台,是指PC/主机 和 手机之间。
2D游戏跨平台,直接Unity即可。
3D游戏,如果先做手游,是不会考虑跨平台的。手游品质搬到PC没有竞争力,而手游提升为3A级别,基本等于重做,不现实。3D游戏会想跨平台,一般指先做高品质PC版,再压缩模型、材质,变成手机版。
这种情况,要么unreal,要么继续死守unity目前的标准流程,忘掉HDRP和URP的新体系。
但是一定要注意,unreal手游发热特别严重,严重到会影响人气。吃鸡、堡垒之夜的手游,都是unreal,你可以去搜索看那个发热,多少人在抱怨。


3. 收费
这个其实不用太考虑。现在,反而越是大公司,越是愿意用unreal。因为挣钱多,提成5%也能接受。
而预估收入比较微薄的小公司,则一般选择unity,因为本来挣钱钱就少,再提成5%就很抵触了。而且C++的员工成本更高,小公司招C++人员也更难。
CryEngine目前不值一用,虽然支持C#,但Unity也有3A水准的效果了,cryengine目前没有任何优势可言,除非以后它的文档完善了、手机支持也完善了。


4. 附录:Unity HDRP、Build-in(传统流程)、URP的区别
Build-in:可以通过设置,能得到和HDRP、URP一致的渲染效果。但不支持实时区域光、不支持节点shader和特效,不支持光线追踪,3个流程中性能最差。
HDRP:支持庞大的灯光数量、拟真毛发系统、节点shader和节点特效制作、支持实时区域光、支持高光灯(只影响高光的灯)、支持N卡的Ray Tracing(光线追踪)。一切以追求3A效果为目标。材质拥有更多选项,调节比Build-in方便,但也更复杂。
URP:和HDRP一样采用线性色彩空间,但使用单通道前置渲染,性能比Build-in同设置高35%,而且未来将取代Build-in流程。支持节点shader,但不支持实时区域光。URP对灯光数量有严格限制。未来,URP会提供优化的后置渲染,就能增加灯光数量。注意,URP是全CPU渲染,不使用GPU。(最新版有了GPU渲染的预览版)
页: [1]
查看完整版本: 游戏引擎Unity, Unreal, CryEngine的比较和扫雷