我是水曜日鸡,一个在游戏行业摸爬滚打了5年的行业老兵。在Unity和UE4各有两年半的开发经验。曾参与开发了索尼中国之星计划之一的 《硬核机甲》 项目,用的是Unity引擎。目前在上海某大厂参与研发 开放世界项目,用的是UE4引擎。今天我就来终结游戏行业讨论了多年的到底是学UE好还是学Unity好的话题。经过这几年的沉淀,我可以明确的告诉大家,如果你想在游戏开发这一行走的更远,尽早转UE。如果你短时间内转不了,也建议尽早学UE。 下面我会详细说原因。
Unity VS UE,谁更容易做出高质量的游戏
说到近些年来用Unity研发的项目,《原神》 是避不开的话题。讨论Unity还是UE好,总会有人说用Unity能做出《原神》,你用UE行吗?那么,我问大家一个问题?
《原神》的成功,是Unity牛逼,还是米哈游牛逼?
这个问题的答案显而易见。如果是Unity牛逼,为什么和《原神》同一级别水准的没有几个呢?因为没有一家公司可以把Unity魔改到能够做出《原神》的水平。所以《原神》的成功根本证明不了Unity牛逼,只能证明米哈游牛逼。
相反,我们来看UE。我们也有用UE研发的3A或者准3A级别的游戏——《黑神话·悟空》。
《黑神话》牛逼还是《原神》牛逼也是游戏社区经久不衰的话题。那么有没有一种可能,《黑神话》可以拿来和《原神》比,它已经赢太多了。《黑悟空》刚曝光的时候,游戏科学也就不到30来人,即使是现在,研发了五年左右,人数也只在百人左右。《黑神话》还是游戏科学的第一款大型单机项目。而米哈游在做《原神》之前,已经有两款成功项目的技术积累和人才储备。游戏科学这种小团队做的游戏,可以和成立多年成熟的商业公司大作进行相提并论,足以证明UE的过人之处。
即使是抛开国内的情况,国外用UE做的3A级别的游戏也是数不胜数,《蝙蝠侠》、《最终幻想7重置》、《王国之心》等。所以对于Unity和UE,谁的上限更高或者说是谁更容易做出高品质的游戏,UE可以说是遥遥领先。
目前国内的游戏玩家,口味越来越吊,对于游戏品质的要求越来越高,已经不是随便什么游戏就能打动玩家了。如果你是公司的决策层,想要自己公司的游戏未来在游戏市场里有一席之地,同时又不像米哈游有着非常多年深耕Unity的积累,那么UE绝对是你们团体技术方案选型的首选。
如果你是一个普通的游戏行业从业人员,或者是想要踏入游戏行业的准新人,以做出一款自己满意的好游戏为职业目标,UE也是你早晚要学的游戏引擎。
没有研发 VS 有研发经验的人做的引擎,差距有多大
如果一个人从来不懂电脑,现在忽然跟你说他想卖电脑了,你觉得这件事靠谱吗?
如果一个做游戏引擎的团队,从来没有用这个引擎做过能够上线的游戏,你觉得这个引擎能好用吗?
什么?能用就行?你知道他给配的电脑有多少坑在里面吗?你知道他给你配的杂牌电源什么时候会爆炸吗?你不知道,因为你不懂,他也不懂。就算他和别人卖给你一模一样的东西,一模一样的价格,售后也是天差地别。懂行的,你电脑开不了机了,对面一看,哪根线没插,哪个灯没亮,一眼就能知道问题。不懂行的,可能就是让你换配件,换就完事了。这就是懂行和不懂行的差距。
刚从Unity转UE那会,我也各种不习惯,没事就在群里怒喷UE。但是用久了之后,你真的能体会到UE在很多界面和功能的细节上做的就是比Unity好,因为UE的团队真的是用UE这个引擎做过游戏的,他们能够知道高效的工具流是什么样的,知道研发人员在使用引擎的痛点在哪些地方。比如在属性设置面板上一定有搜索框,想查找资源引用和被引用关系的时候有详细的树状图,想快速验证玩法可以蓝图连线,想搞角色动画有AnimationGraph,想做剧情过场动画有Slate,想做技能有GAS,想做联网有DS等等。
当然你要说Unity能不能开发这种功能,那肯定能,就算自己不会写,也有一堆第三方插件。但是就像我前面说的,不懂电脑的人卖的电脑,你要说能不能用那肯定能用。但是你不知道有多少坑在里面,你不知道什么时候你就爆炸了。之前我所在团队做《硬核机甲》的时候,也是用了一个叫做“Slate”的插件做的剧情演出。但是它的曲线编辑功能难用到被美术同学天天吐槽,严重拖慢了开发效率,还好它是开源的,最后程序同学直接修改源码让编辑器好用了不少。
最后再看Unity和UE推出的新功能的表现,UE5当时推出的时候,同行都在赞叹:Lumen和Nanite都是什么黑科技?就算没有用过UE的人,很多也会下载个《古代山谷》体验一下引擎的逼真表现力。反观Unity,我就问Unity的Dots到现在有几个团队用过?我观察下来各个团队大家普遍觉得:
这么‘’好‘’的功能,应该友商先用,友商用了没有坑,我们再用。
一转眼到现在我转UE也快三年了,只能说年轻时诋毁UE,长大后理解UE,成熟后赞美UE。
开源 VS 不开源,遥遥领先
我第一次用UE的开源代码编译成功的时候,我就知道:
使用不开源引擎的日子,已经回不去了。
不知道大家有没有小时候上机房电脑课的经历,上电脑课的时候,老师会监控所有人的画面,并且会强制控制所有人的电脑。讲课的时候,你只能看到老师想给你看到的画面。即使解除了远程,每次你想打开游戏爽玩的时候,老师都能发现。这是因为虽然你在用这个东西,但是这个东西不是你的。
多年以后,我拥有了第一台自己的电脑,才能做到小时候我一直想做的事情,我可以装任何我想装的东西,我甚至可以把操作系统搞成mac系统,因为这是属于我的电脑。
开源引擎和非开源引擎的区别就在于此。对于不开源的Unity引擎来说,归根到底你 只是个使用这个引擎的人,你不是这个引擎的主人。你只能使用它允许的功能。 对于它不支持的功能,你想要怎么办?如果它有接口可以拼出来你想要的功能还好说,如果没有怎么办?凉拌。
想起之前做《硬核机甲》的时候,因为我们是PC和主机游戏,所以手柄是一定要支持的。手柄在上下左右移动的时候,我们想让UI焦点从一个UI控件移到另外一个可以配置的UI控件,当时的Unity版本支持不太好。
对于小工作室根本没钱买源码,无奈之下只能反编译代码,然后改代码,再编译成dll文件放到工程里面。而我们每次升级Unity版本,都要把这个操作重复一遍别提多蛋疼。
说到升级Unity版本,可能也有人好奇,没事升级版本干嘛?这就是因为它不开源导致的。比如Unity某个版本修了一个Bug,或者加了一个小优化,我们很需要,怎么办?因为不开源,我们不知道我们需要的代码在哪,也没有办法复制我们需要的那段代码。最后只能升级整个引擎。就我在团队里的时候,升级了至少3次。升级引擎会产生新的后果,原先用的第三方插件怎么办?比如某个插件只支持到Unity2017,你升到2018,插件不支持怎么办?只有三种选项:插件是开源的自己动手改;等作者更新;换插件。
一切的万恶之源都是Unity它是不开源的。大公司有钱直接买源码当然无所谓,小工作室没钱买只能另辟蹊径。
但是如果你用UE,完全没有这个问题。我现在团队用的UE4版本是4.26,从来没有升级过,因为根本不需要。UE新版本哪个功能我们需要,直接复制对应的代码稍微改一改就完事了,没事升级引擎干嘛?
同样是游戏引擎,一个是开源,另一个不开源,可以说UE是遥遥领先。
通过上面的对比,相比大家已经知道,UE对比Unity,已经领先太多了。接下来我将反驳所谓学Unity更好的言论常说的观点。
Unity VS UE 学习门槛低真的是优势吗
Unity学习门槛低,比UE好学。这个确实毋庸置疑。Unity功能少,整个引擎比较轻量,C#也比C++简单。但是我们仔细想想,一个东西很好学很容易就能入门了,对于想要在游戏行业深耕的你我来说,真的是优势吗?
为什么程序员对比医生,大家会普遍觉得医生的社会地位更高?即使很多程序员赚的钱比医生更多。很大一个原因就是成为一个医生比成为一个程序员更难。成为一个合格的医生从在校期间到能够诊治患者至少需要10年,而成为一个程序员,以我这个半路转行的为例,一年就行了。
这就是门槛。门槛越低的工作,竞争越激烈,越容易被人替代。所以程序员很容易被替代,因为低级程序员的门槛实在是太低了。
选择引擎也是这个道理,你希望你很快就能成为一名Unity程序员,然后之后拼命卷,就为了自己不被替代。还是前期苦一点,费老半天劲,终于跨过了UE的门槛,然后之后不用像前者那么卷也没那么容易淘汰。
而且学会了门槛高的东西也能侧面证明作为一个程序员你有着优秀的学习能力。经常在知乎上看到有人讨论:
作为一个XXX程序员,你觉得自己的核心竞争力是什么?
核心竞争力是什么,就是我会的东西,别人不会;我有的东西,别人没有。Unity这种门槛低的引擎,你会的东西,别人很快就能学会;你有的东西,别人很快就能有。因为大家都知道,这个东西好学,大家都知道,这个东西学了好找工作,就像现在学图形学的学TA的也一大堆。最后就变成现在这样,整个市场饱和的一笔,现在想靠Unity入行,你要比几年前多学很多很多东西。以游戏打怪升级为例,Unity,从Lv1升到Lv10很好升,但是你要升到Lv30才能找到工作。UE,从Lv1升到Lv10很难,但是升到Lv15就能找到工作。
人越多,越卷,想要赢别人越难。人越少,越不卷,想要赢别人越容易。
Unity VS UE 学习资料多,社区活跃
之所以造成这种感觉,纯粹是因为国内用Unity比用UE的多的多罢了。而大部分人用百度搜索问题,而很多博客互相抄来抄去。让你很容易就搜索到,让人产生了学习资料多的感觉。当然国内的博客也有写的好的。只是不容易搜到。对于一个初学者来说,最容易搜到的就是那种广告满天飞,内容写都写不明白的低质博客。
其实只要你会用谷歌和油管。Unity也好UE也罢,学习资料也是大把大把。因为UE在国外和国内完全不一样,它是一个非常热门的引擎。你遇到的任何问题,只要善用谷歌和油管,99%都能解决(剩下1%属于底层问题,可以通过看源码或改源码解决)。即使看不懂英文,也可以善用网页翻译以及油管自动翻译的字幕。
更不用说UE官方的说明文档,以及UE自己出的很多视频教程,都做的非常非常好。我自己也是靠着这些学习资料才能在短时间内入门UE引擎。
C# VS C++,学哪个更好
C#比C++好学,所以学C#更好。这个我前面已经说过了,门槛低的东西不一定更好。那么,抛开学习门槛来看,C#和C++哪种语言更好?毫无疑问,C++也是遥遥领先。
我刚入行的时候也有过这个疑问,直到有个老前辈告诉我:
做游戏程序员,C++是必学的。
我当时也困惑,我用Unity的话C#完全够用了啊。当时我又不转引擎,即使如此C++也如此重要吗?直到我为了学习UE引擎深入学习了C++,才知道:其实C#就是C++的Mini版,C++就是C#的ProPlusMax版本。C#有的功能,C++都能搞出来,反而C++有的,C#的很难有。
而且如果你是为了用UE4学的C++,完全不用操心C#转C++遇到困难。 C#的反射很好用,C++没有?没关系,UE帮你做了Property整个反射系统。离开C#我不知道怎么垃圾回收?没关系,UE只要是你标记UProperty的属性自己会计数自己会回收。我用指针经常把项目搞崩溃?没关系UE提供了多种智能指针,你只要不用裸指针想崩溃都难。
接着看运行效率,可以说C++把C#爆了十条街。这就是为什么Unity,Godot,Unreal各大引擎底层全是C++。
最后是退路,如果学C++最后不想做游戏了怎么办,没有关系C++能做的事情非常多。可以说只要学会C++绝对不愁饿死,相反C#的岗位,比C++的岗位不是少的一点半点。
以上就是身为行业五年老兵的我的肺腑之言了。其实劝人学UE这种事情有点像什么呢?就像20年前劝人买房,10年前劝人买比特币。 要么不信,要信早信。
20年前,你劝人买房,一般人会觉得你疯了。
10年前,你劝人买比特币,一般人会觉得你疯了。
现在,我劝你投入UE的怀抱,你是否会觉得我疯了呢?