Unity3D和UE4哪个才是未来的方向

举报
呆呆敲代码的小Y 发表于 2021/08/03 10:53:17 2021/08/03
【摘要】 Unity3D和UE4哪个才是未来的方向,简单做一下对比参考


Unity3D和UE4哪个才是未来的方向🔥

UE4 的工具链完善,框架也更合理; Unity 提供轻量灵活的底层。二者各有各的侧重点,并且在细分领域越来越稳固。

就目前的手游市场而言,Unity占比市场毋庸置疑是最大的,相比较UE4来说,Unity则更擅长轻量级多一些。但是对于大型游戏的端游而言,还是UE4用的更多一点。并不是Unity做不了高质量画面或者大的程序,毕竟从历史发展来看,UE的地位还是前辈级的,Unity作为后起之秀,做的效果也是无话可说。而且对于小众游戏开发者和独立开发者来说,Unity的使用成本也相对低一些,入门门槛比UE要低不少。


UE4⛄️

UE发展史❄️

四年前的一个深夜,或者说是一个早晨,Unreal的传奇开始了。它发生在马里兰州一个不起眼的市镇Rockvill,在一套公寓大楼里回响起一支墨西哥流浪乐队的曲子,那里住着Epic MegaGames的游戏开发成员。

清晨5点,三位游戏设计师还在听着最后一首曲子,那墨西哥人特有的华美旋律直透墙壁传至外间。毕竟,在游戏世界里,清晨5点,并不是指公鸡打鸣天要亮了,而是意味着程序师们苦熬了一个夜晚后终于可以关灯睡觉了。

作一名游戏开发者从来就不是潮流,而在当时那个年代,它更是没有什么迷人之处。Rockville市这家自诩“Epic Apartment”(史诗部门)的公司其实也与其它的工作室一样地乏味无奇。然而它却是Epic MegaGames的创始人Tim Sweeney的重中之重,在那,有他的王牌制作人所组成的智囊团,正为了他们最新的游戏而通宵达旦地工作着。 就在前面所说的那个晚上,一位年轻的加拿大设计师James Schmalz作出了一个决定。他准备向他的同伴Cliff Bleszinski展示他那新游戏的最初设计原型,那是他早期成就的继续,赫赫有名的弹珠台游戏“Extreme Pinball”便出自他手。

尽管他的下一部游戏其时还仅仅停留在理论研究阶段——也许比屏幕上飞舞的那些实线条要强上一点——但却是朝向Schmalz的目标所迈出的第一步,他把这一目标称之为“一个类似《魔毯》的可自由穿梭于地穴的游戏环境。”

Unreal的故事就是这样展开的。虽说其间背景的设定从最初的地穴改为了后来的城堡,游戏图像也从粗糙变得华丽无比,但四年后,Schmalz与Bleszinski,连同Tim Sweeney一块,最终无可争议地亲手造就了这一年度最伟大的游戏。


在这里插入图片描述

💬 从工具链的角度看,UE4 是完胜的。以动画控制为例:UE4 的动画控制,逻辑和状态机是绑定的,在较大的项目中,就不会出现找不到动画控制的触发逻辑,或者想增加动画控制逻辑时不知道如何组织代码结构的问题。Unity 的 AnimatorController 则将变量通过 Animator 暴露给 GameObject,由 MonoBehavior 操作,并且操作的过程是以硬编码的方式做的。UE4 的工具链完善,框架也更合理;Unity 提供轻量灵活的底层。二者各有各的侧重点,并且在细分领域越来越稳固。

  • UE4 的动画控制,逻辑和状态机是绑定的,在较大的项目中,就不会出现找不到动画控制的触发逻辑,或者想增加动画控制逻辑时不知道如何组织代码结构的问题。
  • Unity 的 AnimatorController 则将变量通过 Animator 暴露给 GameObject,由 MonoBehavior 操作,并且操作的过程是以硬编码的方式做的。
// AnimState 是 AnimatorController 中定义的变量
ator1.SetInteger("AnimState", mAnimIndex % mAnimTotal);
复制代码

在引擎设计的思路上,UE4 采用 engine + framework 的模式,将框架定义的非常仔细,针对游戏开发进行了完善的抽象,围绕它们做了完整的工具链。

在这里插入图片描述UE 考虑到了主要工种的配合问题,蓝图的引入让功能层的编写门槛降低了不少。在规模较大的项目中,由于完善的分层,总体上使用体验比 unity 舒服很多(就引擎本体而言)。

缺点就是学习过程中需要按着 UE 引擎所设计的思路去掌握各种概念,但因为这套抽象是相当合理的,所以理解起来也不算困难。只是引擎里藏了很多设置项,背后都是专业细致的领域知识,理解起来还是有门槛的。

还有一个问题是项目过大,做小东西往往显得臃肿,大材小用,而且无论做什么,框架都是要遵守的。在与 unity 的竞争中,首先就失去了轻量化和兼顾低性能设备的阵地,因而 2D 部分得不到发展,此消彼长,现在 2D 组件已经远远比不上 unity 了。


Unity⛄️

unity发展史❄️

游戏的起源是电子游戏,电子游戏于1952年面世,在真空管电脑的平台上,开发出第一款电子游戏——井字棋游戏,并在1958年10月18日研发出游戏《双人网球》。

ATARI时期在不久之后到来,标志着第一个游戏市场的出现,被称为“雅达利时代”,在这个时代,玩家素质低、游戏概念不清、大量厂商浑水摸鱼成为了这个时代最为鲜明的特征,而电子游戏《ET》也被研发出世。紧接着,在70年代,文字式游戏出现,并伴随着日本另一大厂商——Taito加入。经典游戏《太空侵略者》被开发,《吃豆人》、《创世纪》等游戏也相继出现。在80年代,世嘉,Atari,任天堂则开始将游戏界的战火引向游戏机硬件方面。 80年代末期,电子游戏出现转折,电脑得到显卡,开始崛起。与此同时,任天堂推出Game Boy,更打开了便携式游戏机的发展空间,但此时游戏引擎还尚未出现。

直到90年代,copcom推出街头霸王,Pentium芯片面世,《仙剑奇侠传》、《神话传说》等经典游戏也相继被推出,任天堂亦被世嘉Sega Saturn 与索尼的Plag Station击败。1992年,3D Realms公司/Apoges公司发布的小游戏《德军司令部》和id Software 公司的射击游戏《Doom》,成为了引擎诞生初期的两部代表作,而Doom引擎也成为了第一个被用于授权的引擎。在1993年底,Raven公司采用改进后的Doom引擎开发了《投影者》游戏,这也成为游戏史上第一例成功的嫁接手术。 Quake引擎——第一款完全支持多边形模型,动画以及粒子特效的真正意义上的3D引擎,在1994年,通过Quake引擎开发出了游戏《雷神之锤》。之后,Quake引擎开发的游戏《Quake》,其中游戏的操作方式树立了FPS游戏标准。 一年之后,id Software公司又再次推出《雷神之锤2》。通过再用一套全新的引擎,充分利用3D加速和OpenGL技术,在图像和网络方面有了质的飞跃,也成功奠定了id Software公司在3D引擎市场上的霸主地位。1999年,id公司的QuakeⅢ又一次独霸市场,Epic Megagames(EPIC)公司却在此时退出了Unreal引擎,并且很快推出了Unreal2引擎。同时进行了升级,成为Unreal2.5,开发了众多知名游戏,包括《汤姆克兰西之细胞分裂2:明日潘多拉》、《天堂2》、《荒野大嫖客》等。游戏引擎的告诉发展进一步推动了游戏产业的扩大。

21世纪,家用游戏形成三足并立局面,游戏领域空前发展,而游戏引擎也得到空前发展。2002年,Direct9时代到来,EPIC又推出了支持64位的HDRR高精度动态渲染、多种类光照和高级动态阴影特效的Unreal3引擎,并提供了强大的编辑工具。同时,在此期间,Monolith公司的Lith Tech引擎迅速崛起,而代表作便是《F.E.A.R》以及《F.E.A.R2》。之后,MAX-FX引擎、Geo-Mod引擎、Serious引擎等各种引擎相继出现。 正在此时,由于来自丹麦的Joachion与德国的Nicholas Francis非常喜欢做游戏,因此邀请了来自冰岛的David成立了团队Over the Edge Entertainment,开发了第一代版本的unity引擎,而unity公司也于2004年在丹麦的阿姆特丹诞生,并在2005年,将公司总部设立在了美国旧金山,同时发布了unity1.0引擎版本。至此,Unity引擎正式诞生。


在这里插入图片描述

💬 Unity 可以说只做了 engine + framework bus(总线)。所谓 framework bus,指的是 unity 并没有约定 gameplay 的框架,只规定用 **EC (entity + component)**结构组织一切,所有的逻辑都挂在 monobehavior 上执行(虽然 UE4 在 BP 中也是按 EC 组织的,但它编写功能的思路是 OO 的)。

这种结构简单清晰,对新手具有相当的友好程度,但缺点也很明显:大型项目需要从头定义 gameplay framework 和一系列工具链。并且由于 MonoBehavior 使用反射(c# reflection)收集,其执行序不可控,并且过多的 MonoBehavior 会影响效率,进一步逼迫大型项目在引擎的基础上魔改。实际使用中,往往是一个 mono 作为入口,负责拉起、回收自定义框架,并提供心跳(deltaTime),然后一些边角系统独立跑 mono,以减少反射收集。

这个过程中,程序的可操作空间太大,与 js 一样,灵活往往带来混乱,加上立项前期需求的频繁变动,架构设计这个给程序减熵的工作就尤其难做,很多时候是大补丁套小补丁的用,还防不住新同学茫然无措的把某个 flag 插到天涯海角,导致 debug 的时候找都找不到(其他人读的时候即使运行正确也不知道是怎么出来的)。在这里插入图片描述

虽然 unity 因为结构的松散,和不实际使用自己的引擎下场做大型项目,导致引擎提供的工具链完全不如 UE,但 EC 结构 确实是简洁高效的,而且越是小项目,优势越明显。这也是 unity 在 2D 领域称王称霸的关键。

这两年 unity 在渲染流程和 2D toolkit 上下了不少功夫,画质已经可以赶上 UE 了,虽说很多东西是 UE 玩剩下的,但针对 EC 的特点做的 burst complier + job system + ECS (DOTS),使得在进一步轻量化的方向上还大有潜力,project tiny 就是很值得期待的新工具。我个人认为,把偏平化的引擎进一步扁平化,切片到极致的 ECS 才是 unity 下一步想要脱颖而出的关键,而 UE 是不可能抛弃成型的 gameplay framework 去用 ECS 的。

ECS 也可以用在大型项目上,对于需要频繁 spawn 物体的游戏效果极佳,比如枪战类(守望先锋)、模拟经营(戴森球计划),但很不擅长流程化的内容,这就有违引擎的初衷。所以 pure ECS 对 unity 来说会是一个向下不兼容的调整,短期内应该还是见不到的(但很希望能有,出个 pure ECS 分支也行,就像建蓝图项目和C++项目一样)。

在这里插入图片描述

结论🏠

游戏引擎没有统一的未来,正如好的游戏设计没有统一的范式。除了 Unity 和 UE,市面上还有很多没听过的引擎,比如cocos等,也有开发者热爱使用和维护着。

这两个第一梯队的引擎逐渐展露出了面向不同市场的态度:

  • UE4 倾向于加入最先进的图形功能,优化工具链和针对工种设计使用体验,拉高产出作品的上限。适合做体量大的游戏和联机游戏。Unity 倾向于优化灵活性,针对灵活性去设计编程模式,拉高产出作品的下限。提高上限的工作交给了游戏公司,通过设计适合自己游戏类型的架构和渲染流程来实现。
  • Unity 玩的最好的公司(米哈游,叠纸)都是买了源码一通魔改,把引擎吃透了的。就引擎本身来说,适合做 2D 游戏,中小型独立游戏,未来可以期待高品质优化强的页游。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200