时隔 5 年,3 年匠心打造的 Godot Engine 4.0 都带来了哪些惊喜?

8975a592ae649a6f16fb95899606e629.gif

【CSDN 编者按】语言经历了漫长的等待,万众瞩目的 Godot Engine 4.0 正式版在其 3.0 版本发布 5 年以后,终于带着海量令人兴奋的新功能横空出世!

整理 | 开发游戏的老王    责编 | 王子彧    

出品 | CSDN(ID:CSDNnews)

821a2e3514a3313c45c12e2ab8a48d2e.png

6872847456bb835b83037250a28dcbb8.png

什么是Godot Engine?

它是一款完全免费的轻量级、开源、跨平台、2D/3D游戏引擎。Godot Engine 最初由它的创始人阿根廷资深游戏开发者 Juan Linietsky 在 2014 年开源,历经近十年的打磨,在其 2.0、3.0 版本问世以后逐渐广为人知,近几年 Godot Engine 更是成为了游戏开发界的“网红”产品,在国内外技术媒体的游戏引擎评测专题中,Godot 经常成为 Unreal Engine 以及 Unity 等重量级游戏引擎的比较对象。

8188d76f058303b15bbb1b36db3d8878.png

d306bd780854b6b4ff8be4d73710f88c.png

笔者近几年也先后为 Godot Engine 撰写了一系列的开发教程,并且还曾基于 Godot Engine 复刻过「羊了个羊」。

近几年由 Godot Engine 开发的商业游戏作品更是不断涌现:

e77f78f73de2ab30aafba1e9b5d9c795.png

Primal Light - Fat Gem

39df887228121e5551cf9c57b4a96e7b.png

Fist of the Forgotten - Lone Wulf Studio

24e27ab39483f5adc5b7b7aa81258819.png

Pingo Adventure - Orb Square Studio

您可能很好奇:为什么一个由小团队开发的游戏引擎能够在今天这个强手如林的游戏引擎战场被人们如此津津乐道?作为 Godot Engine 的小迷弟,老王很自豪地告诉您:Godot 是资深游戏匠人为游戏开发者量身定制的一款简约而不简单的匠心之作!它的核心理念就是“专治游戏开发中的各种痛点”,简单地说就是“友好”。单论“友好”二字,如果 Godot 在引擎界排第二,那么绝没有哪个引擎敢自称第一。

d9ac1125cf70bcb849273b1fca1af322.png

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 的体贴友好会让每一个游戏开发者爱不释手,即使它尚未成为您的主要开发工具,这个引擎的发展也绝对值得您的关注。

9312c812b4143b0a9fffedd9994029c4.png

全新升级版本惊喜不断

Godot Engine 在它的 3.0 时代可以说已经赚足了开发者们的眼球,但作为一个“小作坊”开发的游戏引擎,必须诚实地讲,它的渲染性能、精度以及高级游戏内容制作能力方面还有很大的提升空间。这也是为什么截至目前,市面上的 3A 级游戏鲜有使用 Godot 开发的原因。然而,Godot Engine 4.0 作为近 5 年来体量最大的一次版本升级,可以说再次为开发者带来了巨大的惊喜。接下来,本文就为大家简单介绍一下 4.0 版本中有哪些值得大家瞩目的亮点。

以下内容参考了Godot官方文章《Godot 4.0 sets sail: All aboard for new horizons 》


bba4bfc2114b5c36bdcd6d1fc24afb0d.png

3D 游戏及渲染方面的提升

基于 Vulkan 的渲染模块

Godot Engine 4.0 最大亮点无疑是重新构建了自身的渲染模块。面向高性能终端设备 Godot 加入了号称性能怪兽的 Vulkan 渲染库,Vulkan 的引入让Godot 的渲染效果有了前所未有的巨大提升,更加高质量的光照以及更加干净通透的阴影效果,让人简直不敢相信这是曾经的 Godot。

995e91550e16036029f53f168a17ce36.png

96ae8cdbd8f701093add287e296ec78b.png

而面向低性能终端及移动设备,Godot 也重构了底层的 OpenGL 封装,并且在未来还会增加阴影及反射探头等功能的支持。专门面向 Windows 和 XBox 的 DirectX 12 支持,也将在下一个版本更新中于大家见面。

b9adcc1a72427dfec07b720471a33e82.png

全新的全局光照系统(SDFGI – Signed Distance Field Global Illumination)

Godot 4.0 从零开始构建了新的基于有向距离场(SDF 即 Signed Distance Field)的实时全局光照系统,该系统主要面向大型开放场景的全局光照。笔者曾经在 2020 年翻译过 Godot 关于 SDF 的官方文档,有兴趣的朋友欢迎进一步阅读(详见《Godot 4.0 中的基于有向距离场 SDF(Signed Distance Field)的实时全局光照技术》)

ea53607ae176067dac633893d4920711.png

基于体素的全局光照(Voxel Based Global Illumination)

面向中小型场景全新的基于体素的实时全局光照系统代替了原有的 GIProbe,这使得诸如室内这样的场景中,实时全局光照的细节有了巨大的提升,即使你依然使用烘焙光照贴图的传统方式,4.0 版本采用的 GPU 烘焙方式,也可以大大提升你的处理速度。

3be4ddc1dd005d482f60f75092bc62e5.png

新的渲染优化技术

新的遮挡剔除(Occlusion Culling)技术可以动态检测被其它物体遮挡的模型并从渲染队列里将其移除,从而提升 CPU 和 GPU 的效率。

8e301b6dd5646bbaae8686f5df9aebd4.png

c7c88376c0035afc54008156ddab441d.png

在大型开放场景中由于只有少数对象互相重叠,遮挡剔除的效果并不明显,此时我们可以选择使用新的自动网格 LOD 或手动 HLOD 以达到对可视范围的全面掌控。

7964ce25750c5932c69e1d0538837b7c.png

中期及后期处理能力的提升

面向高性能终端,Godot 4.0提供 SSIL(Screen Space Indirect Lighting)即:屏幕空间间接光照技术,该技术可以通过对屏幕空间的采样提升可视范围内的暗部以及间接光照的效果。另外,通过强大的 SSAO(Screen Space Ambient Occlusion) 即屏幕空间环境光遮蔽技术,开发者可以访问诸如光效(即:受直射光影响的程度)等设置,并通过环境光遮蔽贴图来忽略指定对象,从而达到优化的目的。

对于摄影向的用户,可以通过 Godot 4.0 提供的拟真光照单位(Realistic Light Units)来调节光照强度,并使用标准照相机设置(诸如:光圈、快门和 ISO)等参数场景的最终亮度。在默认情况下,物理光照单位(Physical Light Units)是被关闭的,但你可以在项目设置中将它开启。

fce382541a2eabb7d68a884ccc3b972d.png

2D 游戏及渲染方面的提升

Godot 4.0 对 2D 游戏开发的提升主要体现在工作流的显著改善。

新的关卡编辑器

综合了广大用户的诸多反馈和建议以后,Godot 新版本中重新设计了瓦块地图编辑器,在新的编辑器中开发者可以更加自由地编辑地图以及为瓦块添加元数据和动画,并且可以更加高效地调整碰撞盒、导航、锚点等属性。

f379a36461553d63371bac60fc0f81f9.gif

新的编辑器还拥有一个自动地形生成系统,用以提高大型场景绘制效率。还有一个随机绘制系统用以随机摆放诸如植物、石头这类东西。我们还可以把选择的对象以图章的形式保存并复用。瓦块的贴图还可以自动延展以避免缝隙。这个全新的地图编辑器虽然可能会带来一点学习上的门槛,但真的很值得!

aed95a906445810539e3f273818397b6.png

2D 光照和阴影的提升

在着色器中使用有向距离场,可以使我们获得很多诸如长阴影、光晕、清晰描边等高级效果。我们还可以使用法线贴图让画面更具立体感。

5ef83d45131c54ca2991457372a162da.png

a102c3b1d2e3e51445f723dfd77b19ce.png

着色器和特效方面的提升

新的大气效果

体积雾 (Volumetric fog )在 Godot 4.0 中第一次亮相。通过 FogVolume 节点,我们可以定义全局体积雾效果或者指定区域的体积雾效果,甚至还可以通过编写 FogVolume 节点上的着色器创造更复杂的动态体积雾效果。

ca08ff10e67f620d2632b9c957fb90f0.png

Godot4.0 中还引入了天空着色器(Sky Shader),通过它我们可以创建可以实时更新的动态天空效果。

0fd04cba4400d77b5e37a0ca1d1c1935.png

纹理和材质投影(贴花)

Godot 也有动态贴花了,为模型增加一些表面细节,甚至做一些涂鸦以及血迹效果,太方便了!

beeb8e628e79e10c15fcce84e49b9102.png

cff6390bb583fe7c5b6255b80fbc02b6.png


a8417b1d546781ad7a88ed330e064dcd.png

脚本语言方面的提升

GDScript

依然是在接受了众多用户反馈的基础上,Godot 4.0 中的 GDScript 语言增加了很多大家期待已久的功能。提升了静态类型系统的稳定性,并且消除了循环依赖的问题,而且可以定义静态数组类型了。增加了属性(Property)句法,以及 await 和 super 关键字等等。

4123aec4982452329cd222ddcb66016e.png

虽然功能增强了,但运行效率和稳定性反而大大提升。

C#

Godot 4.0 对 C# 的支持也进一步提升,.Net 的版本升级到了 .Net 6,同时 C# 10 也成为默认的 C# 版本。

GDExtension(实验性功能)

GDExtension 是 Godot 4.0 推出的一个新系统,旨在创建 GDNative 扩展以及使用 C、C++、Rust 等高性能语言自定义引擎模块。需要注意的是,该系统目前处于实验性阶段,其 API 有可能变更。

68e55b16aa1d22e1bb988897ff7935a8.png

物理方面的提升

自研的游戏专用物理引擎

Godot 4.0 中抛弃了原先使用的 Bullet 物理引擎,重新自研了一套暂定名为Godot Physics 的游戏专用物理引擎。说实话这一点颇让笔者意外,这个决定无疑是大胆且充满野心的。但是我还是相信 Godot 团队的思路,正如他们最初放弃市面上所有现成的编程语言,为自己的引擎量身定制了 GDScript 一样。相信游戏专用物理引擎会带来更大的灵活性。目前这个物理引擎正在逐一实现Bullet 的原有功能。

7f7a7dddeec48ec45c80fad36039dbc0.gif

物理方面其它的提升

  • 多线程支持及性能优化;

  • 更好的 API 接口;

  • 更好的物理模拟稳定性。


84abb79aedccb564258893de24adfa2a.png

动画方面的提升

5971fc4edb19ae39f07032bc744f9278.png

  • 动画编辑器现在支持混合形变轨道,以及提升了贝塞尔曲线的工作流可以选择并编辑多个曲线;

  • 改进了 3D 动画的工作流;

  • 实现了动画库以及重定向系统;

  • 提供了对混合复杂动画的支持;

  • 重写了 Tween 动画系统,API 更加简洁易用,甚至无需再创建 Tween 节点了。

10c06a95f9a2d09b051ce0a97ba9e682.png

其它方面的提升

这次 Godot Engine 4.0 带来的惊喜实在太多了,上面仅仅列举了一部分,还有诸如:UI、Editor、XR、Networking、Audio、Platform Support 等方面的更新和提升笔者就不一一列举了。意犹未尽的朋友敬请移步到 Godot官方文档,了解更加详细的内容。

3fb870aeedf7048e1ce0bbd36c0ad32f.png

 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

 

d4af65a475cb2dbab409d05089286242.gif

 

bc1ed65f8f98467bbcf8d4670887a058.jpeg

☞京东“百亿补贴”提前20小时上线,电商价格战开打;iPhone 15 Pro玻璃面板泄露;凹语言 0.5.0发布|极客头条
☞首批 ChatGPT 应用将打响 To B 的编程应用争夺战!
☞代码越“整洁”,性能越“拉胯”,甚至导致程序变慢 15 倍!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/71958.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chatgpt赋能python:Python中如何暂停程序的执行

Python中如何暂停程序的执行 Python是一种高级的编程语言,它的语法简洁、易于理解,并且在各种领域都有广泛的应用。在编写代码时,我们经常需要在程序的执行过程中暂停或延迟某些操作,这在很多情况下对程序的性能、稳定性和可读性…

【GPT】文本生成任务(生成摘要、文本纠错、机器翻译等的模型微调)

note 文章目录 note一、NLG任务二、NLG之文本摘要2.1 基于mT5的文本摘要2.2 基于openai接口测试2.3 基于chatGPT接口 三、根据自己的数据集进行模型微调四、文本纠错任务五、机器翻译任务Reference 一、NLG任务 NLG:自然语言生成任务,很多NLP任务可以被…

英语四六级考试技巧/英语四六级真题

先问一个残忍的问题: 同学,四六级英语考试准备好了吗 介绍一下四六级占分比例:写作 15%听力 35%阅读 35%翻译 15% 如果时间够多的话 当然是积累词汇量了选择一款背单词APP准备起来没事听听英语听力,找到感觉 如果时间不够多的话&…

服务器远程拒绝访问解决办法之一

把如图所示的用户权限分配中的【拒绝通过远程桌面服务登录】里面的用户删掉。

拒绝用户访问

Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.6:generate (default-cli) on project booksys: Access denied for user ‘root’‘localhost’ (using password: 出现这个问题有很多种可能导致: 解决方案1: 重新启…

访问 www.xxx.com 的请求遭到拒绝您未获授权,无法查看此网页。HTTP ERROR 403

该项目是一个在本地搭建的微服务项目,结果所有的模块都没报错,转换工具也都搞定,用谷歌访问本地出现403错误,而在微软上访问正常,经过查证才知道是自己的访问路径上加了谷歌自带的加密协议,原来是https://x…

不止于专业:解锁10种提升职业竞争力的秘密武器

职场中的软技能是在工作和职业发展中非常重要的能力,它们与专业技能(硬技能)一起,共同构成了一个成功职业生涯所需的综合素质。 这类技能为软技能,我也称之为可迁移技能,养成后,你切换在任何一个…

史上最全从0开始教你玩转wsl2+docker,构建自己的开发环境

1、安装wsl 需要windows版本大于 搜索启用或关闭windows功能 把图片中红点标注的功能勾选,注意勾选hyper-v就不能使用虚拟机类软件,如vm,安卓模拟器一类,点击确定,重启电脑。 打开任务管理器 确保虚拟化已经启用&…

Android 包体积优化建议-资源篇

这是 Android 官方文档给出的一些减少包体积的建议,最近正好在看这方面内容,顺手记录、分享一下。本文主要是针对 Android 的资源(Resource) 相关优化建议。 1 移除无用资源 使用 lint 静态代码分析工具查找出未使用的 res 资源。 注意 assert 和 lib…

云炬Android开发笔记 2-2 Android studio项目上传到Github及无法连接Github的问题处理

本文将介绍如何将AS上的项目发布到GitHub上: 选择 VCS——enable verSion control integrate : 选择GIT: 此时可以发现左侧的类都变红了: 此处的颜色含义: 绿色,已经加入控制暂未提交 红色,未加…

【Python】JupyterLab 4.0 来了

来源丨Deephub Imba JupyterLab 是 Jupyter Notebook 的下一代版本,它提供了更强大的功能和更灵活的用户界面,6月6日,官方发布了JupyterLab 4.0的说明,并且说该版本是下一个主要的版本。 JupyterLab的主要改进是: 用户界面&#x…

关于安装基于Anaconda的Pytorch报错问题(文章为所有安装步骤)

由于一开始Pycharm无法下载资源包,所以打算重新安装一下Anaconda,没想到想在官网下载Anaconda时文件丢失,缺少Sprits文件,在网上尝试了很多方法也没有成功,最后猜测应该是之前卸载Anaconda时没有卸载干净,导…

分享一个免费开源的视频剪辑软件(Shotcut)-附带安装教程以及中文设置

Shotcut是什么? Shotcut是一个免费开源跨平台的视频编辑器,内置丰富的视频效果,音频效果,转场效果,最重要是shotcut这款软件操作极其简单,尤其适合新手,是新手入门自媒体的最佳工具 下载Shotcut 官网地址: https://www.shotcut.org 官网下载页面: https://www.shotcut.org/…

剪映专业版大更新:一款全能好用的视频编辑工具

剪映专业版 for Mac是一款全能好用的视频编辑工具,使用剪映专业版能够轻松对视频进行各种编辑,包括卡点、去水印,特效制作、倒放、变速等,还有专业风格滤镜,精选贴纸给你的视频加点乐趣。 本次更新功能: …

剪映专业版v1.4.1正式版!一款全能好用的视频编辑工具

电脑版的剪映称之为“专业版”,相对手机版功能更加强大。比如,Windows 版和 Mac 版支持多视频轨 / 多音频轨编辑,支持 4K 视频分辨率与 60fps 帧率,可一键添加变速效果,拥有多类型蒙版,多视频轨道编辑创作等…

为什么都不想去中科创达_排了10000桌的超级文和友,我这辈子都不想再去了

■ 作者 桃之 ■ 内容转载自Vista氢商业(ID:Qingshangye666) 提起长沙,你最先想到什么? 芒果TV?No,No,No! 而今的长沙主题热议,是茶颜悦色和超级文和友。 当你朋友圈的人在长沙玩时…

HTTP代理服务器

代理服务器实现流程 创建一个监听服务器,监听客户端的连接。客户端连接上后,将客户端要上网的信息,发给网络web服务器,然后从那里读取数据,再发给客户端。 注:客户端是通过浏览器的设置,来设置…

nginx获取代理服务ip及客户端真实ip

一、问题背景   在实际应用中,我们可能需要获取用户的ip地址,比如做异地登陆的判断,或者统计ip访问次数等,通常情况下我们使用 request.getRemoteAddr() 就可以获取到客户端ip,但是当我们使用了nginx 作为反向代理后…

如何使用国内代理ip?

现在市面上有很多代理ip,功能多种多样,五花八门的产品让用户挑花了眼,下面是购买代理IP时应该是注意的几点。 代理IP类型代理IP分为多种类型,按照匿名度区可分为透明代理、普通代理、高匿代理;按照用途可分为HTTP代理…

获取客户端IP地址(nginx代理)

需求 对接支付系统的时候, 需要传入 付款方,也就是客户端的IP地址 现象 客户端的请求走我们的 nginx 代理了, 获取到的客户端ip地址不对, 变成了 nginx 服务器的地址了 data 的值是nginx服务器的地址, 这样很明显不对 没有加之前的配置 解决方案 在 nginx 的配置里面加上…