Unity、UE和Godot的优劣对比

大家对Unity和UE比较熟悉,Godot目前的普及度还不是太高,这里有Godot的详细特性:

Godot-CSDN博客

整体

先说下两个商业引擎,Unity和UE这两个商业引擎占据了几乎所有的游戏引擎市场,是行业的两座灯塔,对整个游戏引擎的发展具有引领的作用。我从2016年开始就开始使用和研究这两个引擎,也结合一下业内的共识,一般来说认为,Unity更擅长移动端的开发,而UE更擅长PC项目的开发。Unity的易用性做的最好,当原生功能不满足的时候,非常容易去修改,比方说,渲染管线的修改。而UE的设计理念是,原生功能特别丰富,一般来说做项目是够用的。但是如果要修改的话很难,一般的团队玩不转。另外呢,Unity不开源,如果要想看代码,需要公司额外花钱。UE是开源引擎,但属于重量级引擎,光运行时就有几百万行代码,一般小团队改不动。两家引擎的成熟度非常高。毕竟经过了这么多年的发展,做了这么多的项目,锤炼的非常好了,不论是在易用性上,还是说在功能性上都做的非常好。

Godot是开源引擎里的一匹黑马,关注这个引擎也有几年了。工作这十几年里,研究过不少开源引擎,都各有千秋,但也都有致命的缺陷。只有Godot是唯一一个例外,没有致命的缺陷,整体上最接近商业引擎。但毕竟是开源引擎,资源有限,跟商业引擎相比,成熟度肯定要差很多。虽然也有成功游戏上线,但是还是少了几个数量级。不过,由于开源免费,易用性和功能性也不错,越来越多的人开始使用这个引擎。

源码和收费标准

Unity不开源,需要额外花钱购买源码阅读权限。

UE开源。

Godot完全开源免费,遵从MIT协议

政策层面

Unity和UE都是美国公司的产品,未来开发政府类项目时,很可能会有较大的政策风险,尤其是开发军队相关的项目

Godot是位于阿根廷的某个组织开发的,不存在此种风险

工具集

编辑器和工具链

Unity的易用性最好,工具链也最全。UE较为差一些。有个同事从Unity转到UE开发移动端游戏,大呼:“太麻烦了”。

Godot要差不少。毕竟是开源引擎,资金有限,编辑器的易用性跟商业引擎相比有不小的差距。

编程语言

UE原生支持C++和蓝图两种方式,前者用于程序员开发正式的功能,后者用于策划和美术快速验证原型。

Unity原生支持C#和Visual script(类似UE的蓝图)。为了提升C#的性能,支持IL2CPP功能。

Godot支持自己开发的GDScript脚本语言,语法特别类似Python。3.x支持可视化脚本,但4.0开始官方不再支持,比较遗憾。

运行时

功能

还有,效果和性能上也有些差距。

接下来可以以SDFGI为例,可以看一下Unity下边儿的效果,可以再可以看一下Godot里的效果。UE的Lumen和Godot的SDFGI对比

性能

渲染管线

Unity支持可编程渲染管线scriptable rendering pipeline(简称SRP),SRP又根据项目的目标平台分为URP和HDRP。SRP、URP、HDRP都是以包的形式存在的,引擎版本升级后不需要额外维护。也都开源,修改起来很方便。原生的着色模式也很齐全,以URP为例,支持前向着色、延迟着色和Forward+。

UE的管线是写死在C++里的,代码庞大,修改起来较难。由于修改了运行时代码,需要每次升级引擎时都要移植改动的代码。并且管线随着版本升级经常调整,给开发和维护带来很多工作量。这就是为什么UE只有大厂能够玩得起。支持延迟和前向着色管线。

Godot的C++里支持三个管线ForwardClustered、Mobile和gl_compatibility,分别用于PC端、移动端和web端。跟UE一样修改的话需要动引擎核心代码,以后需要随着引擎版本升级进行维护,较为麻烦。不过由于引擎比较轻量,相对于UE来说好改一些。不过没有支持延迟着色,一大遗憾,因为现在PC上用的都是延迟着色这个方案。

综合来看,Unity将管线独立成包的形式是最好的。首先,将渲染管线和引擎运行时解耦了,不用担心引擎升级后还要讲对管线的改动代码进行移植。

需要说明的是,这些内置的渲染管线必须通用,这就意味着针对每一个具体的项目来说,效果和性能都有较大的优化空间。

图形API

Unity和UE支持几乎所有的图形API,例如Vulkan、DirectX 11、OpenGL、Metal等。引擎抽象出了一层RHI,每种图形API分别进行实现。

Godot只支持Vulkan和OpenGL ES。前者用于web之外的所有平台,后者仅用于web端。MacOS和iOS原生不支持Vulkan,但Mac上安装Molten后,可以直接运行Vulkan,打出的iOS包也能在iPhone上直接运行。Molten的作用是,通过封装Metal,实现Vulkan的接口。

只支持一种图形API有很大的好处,由于可以去除RHI层,可以大幅提升性能。例如,测试过Unity的一个大型项目,Vulkan相较于OpenGL ES的性能提升只有10%左右,这跟Vulkan官方所宣称的几十倍的性能提升有较大出入。

可扩展性

Unity很容易扩展,但不能改C++部分。

Godot本身轻量,容易魔改,在局部达到碾压商业引擎的效果。也提供了GDE、等方式扩展。

社区

Unity的社区最为强大,UE较小。Godot的普及程度较低,社区还比较小。

强大的社区有很多好处。一、相关的技术资料很多,遇到问题有很多人可以讨论。二、插件和资源很多,加速开发速度。

跨平台

三个引擎都支持常见的几大操作系统,例如Windows、Linux、MacOS、Android、iOS、web。

UE从5.0开始不再支持web端,貌似是要重点发展云引擎的方式。Unity的中国版——“团结引擎”有车机版,额外支持HMI Android、QNX、Embedded Linux多种操作系统。

个人水平有限,不免挂一漏万,恳请读者不吝赐教。

未完,待续。。。

猜你喜欢

转载自blog.csdn.net/CrazyEngine/article/details/134563569