如果你想开发商用或个人XR应用,现在就是最好的时机。Unity3D和Unreal这样的3D游戏引擎使得没有XR开发经验的小白也可以快速创造出ARVR应用。最初,这些软件是用于开发3D电子游戏的,但是由于VR/AR开发与游戏开发有很多相似之处,这些游戏引擎就被XR开发群体采用了。
那么你应该选择什么引擎?Unity3D和Unreal还是其他引擎?虽然有其他选择(CryEngine、ApertusVR、Amazon‘s Sumerian),但是Unity3D和Unreal Engine 4在XR开发市场上占据主导地位。它们最大的优势就是这两个游戏引擎都可以免费使用。
本文帮助你客观地选择一个最适合的引擎。虽然本文是从一个虚拟现实开发者的角度出发的,但是对游戏开发者也会有所启发。
关于Unity
Unity3D第一版于2005年发布,从那时开始,它就成了世界上最流行的2D、3D开发平台。这有一些统计数据:
60%的AR/VR内容和50%的手游是由Unity3D开发的
过去12个月有超过240亿次安装
支持28个平台(从iOS、Oculus到Window混合现实等等)
由于它在移动端的广泛应用,一直有传言说它只擅长移动端项目开发。这主要是因为Unity3D过去非常重视移动市场,尤其是苹果和谷歌的应用商店崛起期间。但实际上,过去几年它已经升级成了全能开发平台,可以胜任任何复杂的XR项目开发。
疑问:Unity只擅长移动端VR/AR开发
解答:Unity还适用于交叉平台以及复杂XR项目(比如,奥迪的物流和车辆配置培训)
关于UE
作为一款游戏引擎,Unreal有悠久的历史,可以追溯到1998年。有相当多的3A大作比如《虚幻竞技场》、《杀出重围》等都是用它开发的。它已经升级了好几代,之前还有Unreal 2、Unreal 3。2015年推出免费的Unreal 4。
小贴士:当时是Unreal向每季度营收超过3000美金的游戏收取5%的版权费用,而建筑、汽车、电影、电视、直播、培训、模拟等非游戏项目是不收费的。(当前收费政策有变化。)
参见官网:
https://www.unrealengine.com/zh-CN/
现在,独立开发者和大型工作室都用Unreal 4创建项目,用于游戏、教育、商业解决方案等。现在人们普遍认可,Unreal 4已成为构建百万级项目,尤其是电子游戏项目的强力工具。
2020年用Unreal Engine 4引擎开发的3A游戏大作
还有一些非常流行的游戏也是用UE4构建的,比如《堡垒之夜》。UE4所属公司Epic Games也在积极部署移动游戏领域,并且推出了“虚幻引擎开发者资助计划”。同时还有VR游戏,比如《蝙蝠侠:阿卡姆VR》。
疑问:Unreal Engine 只擅长3A游戏开发
解答:Unreal Engine 4也适用于VR/AR以及2D/3D移动应用开发。
近年来,Unity3D和Unreal Engine都弥补了他们的弱点,所以在他们中二选一并不是一项简单的任务。下面我们探讨一下XR开发中两个引擎的差异。
为了准确的比较这两个引擎,你得明白不仅是技术,引擎本身的基础环境也很重要。比如资源商店、指导文档、技术社区等。下面我们分别讨论:
1、资源商店
虚拟环境是需要用真实或想象世界中的虚拟对象来填充的,下图是某能源公司VR培训项目的场景:
你可以用Maya, Blender 或者 3ds Max建模软件从草图开始创建3D物体,也可以直接从资源商店购买模型。Unreal Engine的资源市场大概有16000个项目。
Unity的资源商店大约是Unreal Engine的4倍,包括超过37000个3D资源。
虚幻引擎资产往往更倾向于成品游戏制作。其中许多以前曾在AAA游戏中使用过。在这些资产中,有城堡,科幻技术和怪物等模型。
小tip:如果你在开发场景相对梦幻或者科幻的游戏,并且在资源商店找到了相应资源,这就成了一个决定性因素。同时,如果你正在开发VR商业应用,图像质量相比于现实相关度和迭代速度来说不那么重要,那么Unity3D的资源商店会有更多选择。这里很容易找到现实模型、场景模板等商业环境,不用再花钱雇人从草图开始建模了。
下图是Unity资源商店里的一个喷气发动机的3D模型,可以用于喷气发动机保养的VR培训中。
在资源上,Unity3D是非常齐全的。但Unreal Engine也在追赶,Epic Games 最近发布了一包Quixel MegaScans资源,包含了Quixel库中的10000种贴图材料。
2、指导文档和培训
Unity3D和Unreal Engine 4都有非常详细的XR开发指导文档:
U3D的:
https://docs.unity3d.com/Manual/XR.html
UE4的:
https://docs.unrealengine.com/en-US/SharingAndReleasing/XRDevelopment/VR/index.html
但真正有教学价值的是培训课程。虽然二者都有XR的培训课程,但Unity的课程数量要明显更多。比如,Udemy上有大约2200门Unreal开发课程,而Unity有5500门。虽然大多数课程都是教你开发游戏的,但一些基础知识也可以用于其它应用开发。对于商业和企业开发,则倾向于用Unity,因为它的资源丰富、容易上手。
3、开发者社区
近年来,开发者们在不断扩展XR内容的边界。虽然两款引擎都尽力为开发者提供了指导文档和培训课程,但开发者社区也是不容忽视的因素。Bug、错误、崩溃、看不懂的谜之代码每天都在发生,谁来帮你解决这些问题?尤其是你独立开发的时候?——其他开发者。
这就是开发者社区至关重要的原因,尤其是在新兴的XR行业。Unity3D存在时间比Unreal长,所以自然就有更大的开发者社区。比如,Unreal社区有12000+的C++编程话题,4600+个话题扩展到了AR/VR开发。而Unity社区有128000+编程话题,6100+扩展到了VR开发。也就是说,发生问题时,在Unity社区中更可能找到帮你解决问题的人。
还有一点,UE4社区分为用Blueprint的非编程开发者和用C++的开发者,且前者占多数,大约是后者的2倍。用C++的不会用Blueprint,用Blueprint的也不懂C++,两种人群割裂开来,无法解决对方人群的问题。反过来Unity的开发者都用C#,所以有经验的开发者可以很容易解决初学者的问题。这也是我们一般从Unity开始教XR开发的原因。
4、开发流程
两个引擎在XR开发上有许多共同点,主要的区别有以下几点。
1. C# VS C++或Blueprint
这是两款引擎最大的区别了,虽然Unity还可以用一些其它语言,但C#是主要的。C#和C++哪个更好,已经争论了多年,坦白地说,这个争论没有意义。两种语言都能用于XR开发,就看哪个你用得顺手了。然而对于初学者,C#要更容易上手。
我们注意到,用UE4需要建两个脚本文件,一个用于声明,一个用于定义。看起来是有点复杂。下面是用Blueprint的脚本系统,不需编程:
几乎UE4的指导文档中的每一部分都有C++和Blueprint例子。学Blueprint非常容易,但要想使用UE4的大部分功能,建议学习C++,把Blueprint的结果和代码联系起来。
小贴士:Unity3D也有个小插件:Playmaker,和Blueprint一样是可视化脚本。
C#的另一个优势是,90%的VR/AR开发公司都用C#,意味着有更多的代码和测试结果参考。
5、 平台源代码资源:Unreal Engine VS Unity3D
这两个平台的代码资源都足够丰富,提供的工具和工作流对于XR开发来说绰绰有余,无需修改。然而,二者还是有一个重要区别的——UE4是开源引擎,U3D不是。这就意味着,你可以根据需要修改UE4的源码,还免费。然而U3D的代码虽然也能看,但是要想编辑就需要有企业许可了。虽然开源对一些大作来说有吸引力,但对于小开发团队,需要认真考虑是否真的有必要修改引擎源码,否则一个小小的修复升级就可能带来雪崩式Bug。如果你只需要U3D的一些常用功能,大多数情况下平台的原装脚本和插件就足够了。
6、图形效果对比
如果我们回到2012年,UE4刚刚发布的时候,它的图形效果绝对空前。当U3D主要专注于独立游戏和移动游戏开发时,UE4主要用于3A游戏开发。从那时起,就一直传言:如果你想要写实主义画面,就要用UE4。
疑问:如果你想要极佳的画面,就选UE4?
解答:UE4和U3D都能创作写实主义场景,都提供创作极佳视觉效果的工具包。
也就是说,UE4在图形效果上是有一点优势的。所有在UE4上可以拿来就用的项目,比如资源、场景、教学项目都看起来效果更好。U3D资源你可能需要对获取到资源稍作调整来优化效果。渲染、光照、材料...... 一开始,在UE4中需要的这些设置工作要比U3D少。然而,如果你用Blueprint,复杂的流程节点会导致显示出错。大量节点、复杂的数学模型、循环迭代会导致运行变慢。
下面是个例子,相比于C++,用Blueprint会造成FPS降低。不过,启用多线程和本地化进程后,这种差异似乎被消除了。
用C++和Blueprint的效果对比
总的来说,你完全可以用U3D达到同样的效果。这一点上两个引擎都可以在视觉效果上表现完美。
两款引擎都被用到过3A游戏和独立游戏开发中,近年的很多知名游戏也是由UE4或U3D开发的。然而,这两年还发生了戏剧性的变化,两款引擎不仅被用于娱乐产业,也开始应用于实用项目和商业项目。由于XR技术的进步,商务、教育、制造业都开始使用XR应用来优化流程、提高效益。
1、用UE4开发的XR项目
例如,医药开发公司C4X Discovery用UE4来把分子数据可视化,进而加快了新药开发进度。用VR使复杂数据可视化使得研究人员能从新的视角观察成分,更容易发现设计缺陷。
用VR使复杂数据可视化还有许多应用。比如加拿大航空公司,使用UE创作了VR场景,用于给客户展示头等舱的服务。
值得一提的是这个项目97%使用Blueprint做的,没有用编程。这是因为,用于展示的VR项目是比XR培训更容易实现,XR培训需要更加复杂的交互,VR更多的是观察。
2、用U3D引擎的XR项目
德国汽车巨头奥迪,开发了有20个训练项目、多语言可选的VR培训模型,来优化物流、服务和生产培训流程。
奥迪的VR培训很受员工喜欢,提高了员工的学习效率、动力以及目标。
总部在美国的全球有机物、化学中间体生产厂商INVISTA,利用U3D做的XR项目来模拟工作环境,用VR培训员工,以减少培训时长、节约原材料成本、减少设备停机时间。
波音、通用电气、美国空军也用基于U3D开发的VR/AR应用来提高人员训练效率,这样不仅记得牢,而且还安全、可以减少设备停机。当然还有丰田汽车:丰田汽车通过Unity、Microsoft HoloLens 2和AI技术提高汽车生产各环节效率
然而,也有公司用U3D做展示项目的。下面是宝马2019展示案例,猜一猜哪个是模型哪个是真车?
过去几年,两款引擎都在突飞猛进,弥补缺点、紧跟产业潮流。以前是用U3D做移动项目,用UE4做3A游戏。但现在情况已经发生了很大的变化。两款引擎都可以几乎完美地用于XR和独立项目开发。都能做出极佳的视觉效果、都能兼容许多平台。虽然U3D可以兼容更多平台,可以跨平台开发。但两款引擎都对当前市场上的XR技术进行了针对性优化。
很多开发者表示Unity是不错的选择,因为好上手。选哪个,需要看你以前的经验和现在项目的环境。你熟练掌握C++吗?是的话可以用UE4。
如果你只是个新手,那用C#和Unity更现实一点,它的开发者社区更大,ARVR代码库也很多、相关的项目也很多。如果你的应用注重表现力和图形效果,比如3A级别的主机游戏或者商用虚拟展示,那么可能UE4加上Blueprint是个不错的选择。另一方面,如果你的项目十分复杂,需要很多定制、迭代、原型和优化,学习U3D可能是不错的选择。