说明
本文获得授权转载,感谢作者 gougou 槐宏文的分享。gougou 槐宏文曾参与《战神》与《光环 6》的开发。
引言
今天写一个小小的总结,对比一下当下最火的两个引擎,unity 和 ue4。到目前为止,我也花了不少时间使用和研究这两个引擎,不敢称专家,但是也算两个引擎都入门了,总结一下我大体的感觉:
原则
unity 基于的是相对比较开放的原则,ue4 基于的是相对比较封闭的原则,也就是说,一般意义上,不修改源代码的情况下,unity 可以自定义的自由度比 ue4 高,ue4 相对封闭,很多东西都提供了完善的工具,但是并不太提供自定义和修改。其实很难说哪个更好,举个例子,unity 的 character controller 基本需要自己写或者通过 plugin 完善,类似的例子还有很多,比如 behavior tree,unity 也没有提供官方的解决方案目前,网上大多数的 plugin 确实是好使,但是大部分也是看上去能用,要真的打磨到 production level 也需要不少精力。ue4 呢?很多工具都已经做到很不错的质量,能够实现的功能一般都比 unity 的第三方插件好,但是也是有那个问题,需要做一些修改的时候如果不改代码就很难,虽然封装的很不错但是有点“强迫你 follow 它的架构的意思”。
社区
资料和文档还有视频和社区,unity 其实已经非常非常成熟了,经历了这么多年的迭代,有全球最大的社区,最多的资料和视频,非常非常多的人使用 unity,可以这么说,一个新游戏需要踩的坑基本全世界肯定有人踩过了,这对团队来说是极大的优势,但是有一个很严重的问题,一般的开发团队没有源代码,真正遇到坑之后,基本没有太好的办法去解决,这对一个成熟的团队来说是很致命的,所以现在很多使用 unity 的成熟团队都购买了源代码。ue4 我记得 2014 年的时候我也研究过一段时间,当时的感觉真的是,资料非常少,但是过了这么多年,再转头重新研究,发现真的是完全改善了,这也得益于 epic 大量的投入和开发者越来越庞大,一般的问题基本都能找到答案,但是还有一个天然的优势,就是源代码的开放,就算你不修改,阅读源代码也比很多文档直接好用很多,同时这也是一把双刃剑,对于不熟悉 c++ 的团队来说这反而成了一种阻碍,大体来说还是 unity 的支持更好一点点,但是也差不太多,特别是这两年 epic 的急剧发展。
架构
最后稍微介绍一下 gameplay framework 方面的对比,unity 采用 gameobject 和 component 的架构,ue4 也采取了类似的架构,但是更加 hybrid 一点,无论是历史遗留原因还是其他原因,ue4 有很冗长的继承结构,actor 也能有 component,但是很多例子也有直接使用 actor 自身的,不完全依赖 component。unity 采用的是 prefab,ue4 相应的功能有 blueprint,这个结合我自身的经验,ue4 的 robust 程度和方便程度远远大于 unity,他的每一个模块的自定义 editor 真的比 unity 的方便太多,特别是 setup 方面的。从引擎内定的 editor 来比较 ue4的迭代效率比 unity 高很多,特别是中大型项目的迭代速度。另外个人感觉如果比较熟悉的话小团队制作一些游戏 prototype 速度也不会比 unity 慢。
总结
总结来说我个人感觉还是 ue4 使用的比较顺手,但是 unity 也一直在进化,马上 unity6 就会出来,这个比较也只是揭露冰山一角,以后有时间我会针对更具体的特性和模块更深入讨论,希望对大家有点帮助,有兴趣的朋友可以找我多交流。
文章写的很good,有些地方very有用,mark了。
准确来说,是Unity 5 v.s. UE4
作者对ue4的理解还是比较深入的,手动赞一个
UE4比较封闭??????
你是站在完全不写代码的角度得出的结论吗????
我就是想进来看看,这个引战标题下面有多少回复。顺便,用什么引擎完全看老大心情。
中文夹着英文看的头疼,而且比较的版本有点老了。不过UE4确实强大
unity越来越强大,也越来越复杂,如果只是实现简单的功能倒还好,稍微高大上的就需要学很多新东西