【CSDN 编者按】经历了漫长的等待,万众瞩目的 Godot Engine 4.0 正式版在其 3.0 版本发布 5 年以后,终于带着海量令人兴奋的新功能横空出世!
整理 | 开发游戏的老王 责编 | 王子彧
出品 | CSDN(ID:CSDNnews)
什么是Godot Engine?
它是一款完全免费的轻量级、开源、跨平台、2D/3D游戏引擎。Godot Engine 最初由它的创始人阿根廷资深游戏开发者 Juan Linietsky 在 2014 年开源,历经近十年的打磨,在其 2.0、3.0 版本问世以后逐渐广为人知,近几年 Godot Engine 更是成为了游戏开发界的“网红”产品,在国内外技术媒体的游戏引擎评测专题中,Godot 经常成为 Unreal Engine 以及 Unity 等重量级游戏引擎的比较对象。
笔者近几年也先后为 Godot Engine 撰写了一系列的开发教程,并且还曾基于 Godot Engine 复刻过「羊了个羊」。
近几年由 Godot Engine 开发的商业游戏作品更是不断涌现:
Primal Light - Fat Gem
Fist of the Forgotten - Lone Wulf Studio
Pingo Adventure - Orb Square Studio
您可能很好奇:为什么一个由小团队开发的游戏引擎能够在今天这个强手如林的游戏引擎战场被人们如此津津乐道?作为 Godot Engine 的小迷弟,老王很自豪地告诉您:Godot 是资深游戏匠人为游戏开发者量身定制的一款简约而不简单的匠心之作!它的核心理念就是“专治游戏开发中的各种痛点”,简单地说就是“友好”。单论“友好”二字,如果 Godot 在引擎界排第二,那么绝没有哪个引擎敢自称第一。
Godot 很“友好”
Godot 的友好性主要体现在如下几个方面:
-
免费:而且是绝对的免费,正如 Godot 在 2015 年声明免费时提出的口号 “Your game is all yours”。
-
轻量:不足百兆的体积里包含着真正意义上的 All-in-One 游戏引擎(引擎编辑器以及代码编辑器),并且它是无需安装的绿色软件,开箱即用,对初学者友好至极。
-
开源:Godot Engine的Github地址
-
跨平台:支持 Windows、macOS、Linux,还拥有基于浏览器的版本。Godot 甚至在苹果刚发布 M1 芯片不久就第一时间提供支持该芯片的引擎版本。
-
简单易用的脚本语言:Godot 内置了一种名为 GDScript 的自研脚本语言,完全针对 Godot Engine 并且极其简单易用,即便对于编程零基础的小白也非常容易上手。(附《GDScript官方文档》)
-
基于节点(Node)的开发模式:Godot 的工作逻辑也非常简单清晰,概括成一句话,那就是:“开发节点、使用节点”,只要理解了节点,Godot 的工作逻辑也就掌握得八九不离十了。因为在 Godot 中,万事万物皆为节点。
Godot 的节点模式几乎可以等价转换成 Unity 中的游戏体-组件模式,所以有 Unity 使用经验的游戏开发者几乎可以无缝过渡到 Godot 引擎。
- 高度可扩展性:Godot Engine 不仅拥有完善的插件扩展系统,它的语言扩展系统也是非常优秀的,除了上文提到的内置 GDScript 以及原生的 C++ 和可视化编程的支持。社区开发者还为 Godot 提供了诸如 C#、JS、TS、Rust、Lua 等第三方开发语言的支持。
综上所述,Godot Engine 的体贴友好会让每一个游戏开发者爱不释手,即使它尚未成为您的主要开发工具,这个引擎的发展也绝对值得您的关注。
全新升级版本惊喜不断
Godot Engine 在它的 3.0 时代可以说已经赚足了开发者们的眼球,但作为一个“小作坊”开发的游戏引擎,必须诚实地讲,它的渲染性能、精度以及高级游戏内容制作能力方面还有很大的提升空间。这也是为什么截至目前,市面上的 3A 级游戏鲜有使用 Godot 开发的原因。然而,Godot Engine 4.0 作为近 5 年来体量最大的一次版本升级,可以说再次为开发者带来了巨大的惊喜。接下来,本文就为大家简单介绍一下 4.0 版本中有哪些值得大家瞩目的亮点。
以下内容参考了Godot官方文章《Godot 4.0 sets sail: All aboard for new horizons 》
3D 游戏及渲染方面的提升
基于 Vulkan 的渲染模块
Godot Engine 4.0 最大亮点无疑是重新构建了自身的渲染模块。面向高性能终端设备 Godot 加入了号称性能怪兽的 Vulkan 渲染库,Vulkan 的引入让Godot 的渲染效果有了前所未有的巨大提升,更加高质量的光照以及更加干净通透的阴影效果,让人简直不敢相信这是曾经的 Godot。
而面向低性能终端及移动设备,Godot 也重构了底层的 OpenGL 封装,并且在未来还会增加阴影及反射探头等功能的支持。专门面向 Windows 和 XBox 的 DirectX 12 支持,也将在下一个版本更新中于大家见面。
全新的全局光照系统(SDFGI – Signed Distance Field Global Illumination)
Godot 4.0 从零开始构建了新的基于有向距离场(SDF 即 Signed Distance Field)的实时全局光照系统,该系统主要面向大型开放场景的全局光照。笔者曾经在 2020 年翻译过 Godot 关于 SDF 的官方文档,有兴趣的朋友欢迎进一步阅读(详见《Godot 4.0 中的基于有向距离场 SDF(Signed Distance Field)的实时全局光照技术》)
基于体素的全局光照(Voxel Based Global Illumination)
面向中小型场景全新的基于体素的实时全局光照系统代替了原有的 GIProbe,这使得诸如室内这样的场景中,实时全局光照的细节有了巨大的提升,即使你依然使用烘焙光照贴图的传统方式,4.0 版本采用的 GPU 烘焙方式,也可以大大提升你的处理速度。
新的渲染优化技术
新的遮挡剔除(Occlusion Culling)技术可以动态检测被其它物体遮挡的模型并从渲染队列里将其移除,从而提升 CPU 和 GPU 的效率。
在大型开放场景中由于只有少数对象互相重叠,遮挡剔除的效果并不明显,此时我们可以选择使用新的自动网格 LOD 或手动 HLOD 以达到对可视范围的全面掌控。
中期及后期处理能力的提升
面向高性能终端,Godot 4.0提供 SSIL(Screen Space Indirect Lighting)即:屏幕空间间接光照技术,该技术可以通过对屏幕空间的采样提升可视范围内的暗部以及间接光照的效果。另外,通过强大的 SSAO(Screen Space Ambient Occlusion) 即屏幕空间环境光遮蔽技术,开发者可以访问诸如光效(即:受直射光影响的程度)等设置,并通过环境光遮蔽贴图来忽略指定对象,从而达到优化的目的。
对于摄影向的用户,可以通过 Godot 4.0 提供的拟真光照单位(Realistic Light Units)来调节光照强度,并使用标准照相机设置(诸如:光圈、快门和 ISO)等参数场景的最终亮度。在默认情况下,物理光照单位(Physical Light Units)是被关闭的,但你可以在项目设置中将它开启。
2D 游戏及渲染方面的提升
Godot 4.0 对 2D 游戏开发的提升主要体现在工作流的显著改善。
新的关卡编辑器
综合了广大用户的诸多反馈和建议以后,Godot 新版本中重新设计了瓦块地图编辑器,在新的编辑器中开发者可以更加自由地编辑地图以及为瓦块添加元数据和动画,并且可以更加高效地调整碰撞盒、导航、锚点等属性。
新的编辑器还拥有一个自动地形生成系统,用以提高大型场景绘制效率。还有一个随机绘制系统用以随机摆放诸如植物、石头这类东西。我们还可以把选择的对象以图章的形式保存并复用。瓦块的贴图还可以自动延展以避免缝隙。这个全新的地图编辑器虽然可能会带来一点学习上的门槛,但真的很值得!
2D 光照和阴影的提升
在着色器中使用有向距离场,可以使我们获得很多诸如长阴影、光晕、清晰描边等高级效果。我们还可以使用法线贴图让画面更具立体感。
着色器和特效方面的提升
新的大气效果
体积雾 (Volumetric fog )在 Godot 4.0 中第一次亮相。通过 FogVolume 节点,我们可以定义全局体积雾效果或者指定区域的体积雾效果,甚至还可以通过编写 FogVolume 节点上的着色器创造更复杂的动态体积雾效果。
Godot4.0 中还引入了天空着色器(Sky Shader),通过它我们可以创建可以实时更新的动态天空效果。
纹理和材质投影(贴花)
Godot 也有动态贴花了,为模型增加一些表面细节,甚至做一些涂鸦以及血迹效果,太方便了!
脚本语言方面的提升
GDScript
依然是在接受了众多用户反馈的基础上,Godot 4.0 中的 GDScript 语言增加了很多大家期待已久的功能。提升了静态类型系统的稳定性,并且消除了循环依赖的问题,而且可以定义静态数组类型了。增加了属性(Property)句法,以及 await 和 super 关键字等等。
虽然功能增强了,但运行效率和稳定性反而大大提升。
C#
Godot 4.0 对 C# 的支持也进一步提升,.Net 的版本升级到了 .Net 6,同时 C# 10 也成为默认的 C# 版本。
GDExtension(实验性功能)
GDExtension
GDExtension 是 Godot 4.0 推出的一个新系统,旨在创建 GDNative 扩展以及使用 C、C++、Rust 等高性能语言自定义引擎模块。需要注意的是,该系统目前处于实验性阶段,其 API 有可能变更。
物理方面的提升
自研的游戏专用物理引擎
Godot 4.0 中抛弃了原先使用的 Bullet 物理引擎,重新自研了一套暂定名为Godot Physics 的游戏专用物理引擎。说实话这一点颇让笔者意外,这个决定无疑是大胆且充满野心的。但是我还是相信 Godot 团队的思路,正如他们最初放弃市面上所有现成的编程语言,为自己的引擎量身定制了 GDScript 一样。相信游戏专用物理引擎会带来更大的灵活性。目前这个物理引擎正在逐一实现Bullet 的原有功能。
物理方面其它的提升
- 多线程支持及性能优化;
- 更好的 API 接口;
- 更好的物理模拟稳定性。
动画方面的提升
- 动画编辑器现在支持混合形变轨道,以及提升了贝塞尔曲线的工作流可以选择并编辑多个曲线;
- 改进了 3D 动画的工作流;
- 实现了动画库以及重定向系统;
- 提供了对混合复杂动画的支持;
- 重写了 Tween 动画系统,API 更加简洁易用,甚至无需再创建 Tween 节点了。
其它方面的提升
这次 Godot Engine 4.0 带来的惊喜实在太多了,上面仅仅列举了一部分,还有诸如:UI、Editor、XR、Networking、Audio、Platform Support 等方面的更新和提升笔者就不一一列举了。意犹未尽的朋友敬请移步到 Godot官方文档,了解更加详细的内容。
Godot:只是开始,未来可期
看完上述令人兴奋的新功能,各位看官意下如何?笔者真是迫不及待地想用 Godot 4.0 开发一个新项目了。然而,开发团队在其官网中说虽然 4.0 是漫长的三年等待的结束,但对于 Godot 来讲它只是一个开始,未来他们将继续打磨引擎并且更加快速地迭代。来,大家一起喊:“ Godot,Yes!不负众望,未来可期!”
参考链接:
- Godot 4.0 sets sail: All aboard for new horizons:https://godotengine.org/article/godot-4-0-sets-sail/
- 【手把手带你Godot游戏开发 第一弹】零基础入门案例:FlappyBird(教程目录及源代码)https://orzgame.blog.csdn.net/article/details/105266192
- 【手把手带你Godot游戏开发 第二弹】名场面临摹https://orzgame.blog.csdn.net/article/details/105342392
- Godot 4.0中的基于有向距离场SDF(Signed Distance Field)的实时全局光照技术:https://orzgame.blog.csdn.net/article/details/107008958