
开发快照:Godot 4.4 beta 1
Dev snapshot: Godot 4.4 beta 1
Dev 快照:Godot 4.4 测试版 1Pre-release 预发布
We have reached the first beta release for the 4.4 release cycle. This officially marks the start of feature freeze for 4.4. This means contributors are encouraged to focus their efforts on fixing regressions and other outstanding bugs. We won’t risk merging any new features or risky bug fixes until after we release 4.4 and begin preparing for 4.5.
我们已达到 4.4 发布周期的第一个 beta 版本。这正式标志着 4.4 特性冻结的开始。这意味着贡献者应集中精力修复回归和其他未解决的 bug。在发布 4.4 并开始准备 5.5 之前,我们不会冒险合并任何新特性或风险 bug 修复。
We will aim to release 4.4 in around a month, but as usual, this timeline will depend on how quickly we are able to fix the outstanding bugs and what new bugs are identified in the beta process. We ask that users test these beta releases and report bugs as soon as you spot them to help us ensure a quick beta period and a timely release of 4.4.
我们将努力在一个月内发布 4.4 版本,但像往常一样,这个时间表将取决于我们修复现有问题的速度以及测试过程中发现的新问题。我们要求用户测试这些测试版,并在发现问题时立即报告,以帮助我们确保快速完成测试期和及时发布 4.4 版本。
Please, consider supporting the project financially, if you are able. Godot is maintained by the efforts of volunteers and a small team of paid contributors. Your donations go towards sponsoring their work and ensuring they can dedicate their undivided attention to the needs of the project.
请考虑在您能力范围内为项目提供财务支持。Godot 由志愿者和一小支付费贡献者维护。您的捐赠将用于赞助他们的工作,并确保他们能够全身心投入到项目需求中。
Jump to the Downloads section, and give it a spin right now, or continue reading to learn more about improvements in this release. You can also try the Web editor or the Android editor for this release. If you are interested in the latter, please request to join our testing group to get access to pre-release builds.
跳转到下载部分,立即尝试,或者继续阅读以了解更多关于本版改进的内容。您还可以尝试本版的网页编辑器或 Android 编辑器。如果您对后者感兴趣,请申请加入我们的测试小组以获取预发布版本。
The cover illustration is from WEBFISHING, a multiplayer online casual fishing game where you relax, hang out, make friends, and catch fish! You can buy the game on Steam, and follow the development on Twitter.
封面插图来自 WEBFISHING,一款多人在线休闲钓鱼游戏,在这里你可以放松身心、结交朋友、钓鱼!你可以在 Steam 上购买游戏,并在 Twitter 上关注其开发动态。
Highlights 高光
Many features originally intended for 4.3 ended up making it into 4.4 meaning that Godot 4.4 is jam-packed with new features despite having a much shorter development period than 4.3.
许多原本打算用于 4.3 的功能最终被纳入了 4.4,这意味着尽管 Godot 4.4 的开发周期比 4.3 短得多,但它仍然功能丰富。
- New in Beta 1!
新在 Beta 1! - Breaking changes 重大变更
- Animation 动画
- Audio 音频
- C#
- Core 核心
- Editor 编辑
- GDScript
- Import 导入
- Input 输入
- Physics 物理学
- Platforms 平台
- Rendering and shaders 渲染和着色器
- XR
New in Beta 1! 新在 Beta 1!
Normally our Beta 1 release notes summarize all the most exciting changes from the previous dev releases. But the team managed to merge an unusually large number of exciting PRs right before the beta this time around, so we would like to first introduce some of the exciting changes that are new in this beta.
通常我们的 Beta 1 版本说明总结了之前开发版本中所有最激动人心的变化。但这次团队在 beta 版本发布前成功合并了异常大量的激动人心的 PR,因此我们首先想介绍一些在这个 beta 版本中新出现的激动人心的变化。
A short word of warning, new means “untested”, so consider the following the most untested part of the beta release and make sure to let us know if you run into any issues!
一句简短的警告,新意味着“未经测试”,所以请将以下内容视为测试版中最未经测试的部分,并在遇到任何问题时务必告知我们!
Game window embedding 游戏窗口嵌入
Game window embedding makes it possible to run the game while being able to interact with the full editor window, without needing to move the game window to the side of the editor window. This is particularly useful on single-monitor setups and laptops where screen real estate is at a premium. However, this was challenging to implement as Godot runs the game as a separate process from the editor for two reasons:
游戏窗口嵌入使您能够在与完整编辑器窗口交互的同时运行游戏,无需将游戏窗口移至编辑器窗口的一侧。这在单显示器设置和笔记本电脑上尤其有用,因为屏幕空间非常宝贵。然而,由于 Godot 将游戏作为与编辑器分开的独立进程运行,这给实现带来了挑战:
- The game process uses its own address space and therefore doesn’t have to share CPU/GPU resources with the editor (or at least, not as much as if it was the same process).
游戏进程使用自己的地址空间,因此不需要与编辑器共享 CPU/GPU 资源(至少,不像它们是同一个进程那样共享)。 - Most importantly, if the game crashes for any reason, the editor does not crash at the same time (which could cause data loss).
最重要的是,如果游戏因任何原因崩溃,编辑器不会同时崩溃(这可能导致数据丢失)。
The approach we decided upon relies on window management tricks instead, so that the game window is still a separate process, but it looks like it’s embedded within the editor. Contributor Hilderin took upon this task and implemented seamless window embedding on Windows and Linux. Support in Android is coming in Beta 2 while support in macOS will require a different approach for technical reasons.
我们决定采用基于窗口管理技巧的方法,因此游戏窗口仍然是一个独立进程,但看起来它被嵌入在编辑器中。贡献者 Hilderin 承担了这个任务,并在 Windows 和 Linux 上实现了无缝窗口嵌入。Android 的支持将在 Beta 2 中到来,而 macOS 的支持由于技术原因需要不同的方法。
Game window embedding was implemented to support our recent interactive in-game editing feature. Now you can easily run your game, override the game camera, and select objects in game, all from the editor!
游戏窗口嵌入已实现,以支持我们最近推出的游戏内交互式编辑功能。现在您可以从编辑器轻松运行游戏、覆盖游戏摄像头以及选择游戏中的对象!
For more information and a handy video, check out the PR GH-99010.
有关更多信息及实用视频,请查看 PR GH-99010。
Use property editors instead of labels to display keys
使用属性编辑器而不是标签来显示键
With the addition of typed dictionaries, one glaring issue quickly revealed itself in the inspector: keys were always displayed as strings! While this was the case even before typed dictionaries, the issue only became more pronounced as it undermined the benefits of static-typing. bruvzg came to the rescue with GH-100512, which allows the inspector to treat ALL dictionary keys as a read-only field for their respective types.
在添加了类型化字典后,检查器中迅速暴露出一个明显的问题:键总是以字符串形式显示!尽管在类型化字典出现之前也是如此,但这个问题随着它削弱了静态类型化的优势而变得更加明显。bruvzg 通过 GH-100512 来拯救,它允许检查器将所有字典键作为它们各自类型的只读字段来处理。
Apple Game Controller improvements
苹果游戏手柄改进
We’ve made some improvements to how Game Controllers work on iOS and macOS. We’ve unified the code to make sure it works the same on both platforms, and we’ve fixed some bugs. These changes improve reliability of controller discovery and manipulating the rumble motors, which should make the gaming experience even better. You can learn more about these changes in GH-94580.
我们对 iOS 和 macOS 上的游戏手柄工作方式进行了改进。我们统一了代码,确保它在两个平台上都能正常工作,并修复了一些 bug。这些更改提高了控制器发现和操作震动马达的可靠性,这将使游戏体验更加出色。您可以在 GH-94580 中了解更多关于这些更改的信息。
Add 2D shader instance uniforms
添加二维着色器实例均匀值
Previously, Godot only supported shader instance uniforms in Spatial shaders. Thanks to KoBeWi, EIREXE, huwpascoe, and Patrick Exner this release will add support for shader instance uniforms for CanvasItem shaders (GH-99230). Shader instance uniforms allow you to assign a different value to the uniform for each CanvasItem that uses it. Importantly, this works without breaking batching, so it can be used as a performant way to add unique effects to CanvasItems without having to juggle materials.
之前,Godot 只支持空间着色器的着色器实例统一变量。感谢 KoBeWi、EIREXE、huwpascoe 和 Patrick Exner,这次发布将添加对 CanvasItem 着色器实例统一变量的支持(GH-99230)。着色器实例统一变量允许您为使用它的每个 CanvasItem 分配不同的值。重要的是,这不会破坏批处理,因此可以作为高效的方式为 CanvasItems 添加独特效果,而无需处理材质。
Add visualization of 3D particle emission shapes
添加 3D 粒子发射形状的可视化
Up until now, users of the particle system had to guess from the emission shape properties where particles would appear. This improvement (GH-100113) by Patrick Exner adds a visualization of the emission shapes for 3D CPU and GPU particle systems.
截至目前,粒子系统的用户必须根据发射形状属性猜测粒子会出现的位置。此改进(GH-100113)由 Patrick Exner 添加,为 3D CPU 和 GPU 粒子系统提供了发射形状的可视化。
undefined
Add support for MetalFX upscaling on macOS and iOS
支持 macOS 和 iOS 上的 MetalFX 上采样
We’ve added support for MetalFX upscaling as an option for Apple platforms using the Metal driver. MetalFX provides a high-performance alternative to FSR1 or FSR2, leveraging Apple’s optimized GPU pipeline to deliver smooth upscaling and enhanced visual fidelity with minimal overhead.
我们已为使用 Metal 驱动器的 Apple 平台添加了对 MetalFX 超采样的支持。MetalFX 提供了对 FSR1 或 FSR2 的高性能替代方案,利用 Apple 优化的 GPU 管道,以最小的开销提供平滑的超采样和增强的视觉保真度。
This integration ensures developers targeting macOS or iOS can achieve excellent rendering quality and performance on supported Apple hardware. For more details, check out GH-99603.
此集成确保针对 macOS 或 iOS 的开发者能够在支持的苹果硬件上实现出色的渲染质量和性能。有关更多详细信息,请查看 GH-99603。
Add support for AgX tone mapping
支持 AgX 色调映射
AgX is the cool, new kid on the block when it comes to tone mapping algorithms. Last year Blender made waves by replacing their previous “filmic” tone mapper with AgX. We have implemented a version of AgX that closely matches Blender’s while being not quite as high quality, but much more suitable for real time. AgX is a stylized tone mapper intended to give a filmic quality to images that handles very bright scenes much better than our other tone mappers.
AgX 是块上新潮的调色映射算法。去年,Blender 通过用 AgX 替换之前的“电影式”调色映射器而引起了轰动。我们实现了一个与 Blender 非常接近的 AgX 版本,虽然质量略低,但更适合实时应用。AgX 是一种风格化的调色映射器,旨在为图像赋予电影般的质感,并且比我们的其他调色映射器更好地处理非常明亮的场景。
Add transparency support for LightmapGI
添加对 LightmapGI 的透明度支持
Currently when baking lightmaps users have to choose between transparent objects casting shadows as if they were fully opaque, or not casting shadows at all. This has been a major limitation in both the quality of lightmap baking and the ergonomics of the lightmap baking workflow.
当前在烘焙光照贴图时,用户必须在透明物体投射阴影如同完全不透明或完全不投射阴影之间做出选择。这已经成为光照贴图烘焙质量和光照贴图烘焙工作流程的人机工程学的一个主要限制。
In GH-99538, Hendrik Brucker added support for baking with transparent objects, including having tinted shadows (something that dynamic shadows don’t support yet). Since this is brand new in Beta 1, please test it carefully and report any issues.
在 GH-99538 中,Hendrik Brucker 增加了对透明物体烘焙的支持,包括具有着色阴影(这是动态阴影目前还不支持的)。由于这是 Beta 1 中的新功能,请仔细测试并报告任何问题。
Breaking changes 重大变更
We try to minimize breaking changes, but sometimes they are necessary in order to fix high priority issues. Where we do break compatibility, we do our best to make sure that the changes are minimal and require few changes in user projects.
我们尽量减少破坏性变更,但有时为了修复高优先级问题,这些变更是必要的。在我们需要破坏兼容性时,我们会尽力确保变更最小化,并且用户项目需要做出的改动很少。
You can find a list of such issues by filtering the merged PRs in the 4.3 milestone with the breaks compat
label. Here are some which are worth being aware of:
您可以通过使用带有 breaks compat
标签的过滤器在 4.3 里程碑中筛选合并的 PR 来找到此类问题列表。以下是一些值得注意的:
- Universal UID support. This will create several
.uid
files for resources that lacked this metadata. These should be added to version control, much like.import
files. (GH-97352)
通用 UID 支持。这将为缺少此元数据的资源创建几个.uid
文件。这些文件应添加到版本控制中,就像.import
文件一样。(GH-97352) - Floats converted to strings now display as a decimal by default, even for whole numbers. This makes printed types more explicit, which can be used to catch bugs that were previously invisible. That is:
print(1.0)
will now print1.0
instead of1
. (GH-47502)
浮点数转换为字符串现在默认以十进制显示,即使对于整数也是如此。这使得打印的数字更明确,可以用来捕获之前不可见的错误。也就是说:现在将打印1.0
而不是1
。 (GH-47502) - Changed
KEY_MODIFIER_MASK
to correct value. Unlikely to directly affect any projects, as the previous value was simply wrong. (GH-98441)
修改了KEY_MODIFIER_MASK
为正确值。不太可能直接影响任何项目,因为之前的值只是错误的。( GH-98441) - Control’s
offset_*
get/set type changed fromint
tofloat
. This matches the behavior described in the documentation. (GH-98443)
控制器的offset_*
类型从int
更改为float
。这与文档中描述的行为相匹配。( GH-98443) OpenXR
action maps opened in Godot 4.4 aren’t compatible with earlier versions. (GH-98163)
Godot 4.4 中打开的动作映射与早期版本不兼容。(GH-98163)CSGMesh3D
now explicitly requires the mesh to be manifold. A manifold mesh must be closed, have each edge connected to only two faces, and have volume. Commonly, this means that it needs to be a “watertight” mesh without any holes and where you can never see the backside of the triangles. (GH-100014)
现在显式要求网格必须是单连通的。单连通网格必须是封闭的,每条边只能连接两个面,并且有体积。通常,这意味着它需要是一个“无孔”网格,没有任何洞,并且你永远看不到三角形的背面。(GH-100014)- StringName Dictionary keys are saved as-is, without being converted to String beforehand. For the majority of cases this shouldn’t cause breakage, as String & StringName are largely interchangeable. This should only be relevant when performing type-checking (
is
,is_instance_of()
,typeof()
) and/or strict comparison (is_same()
). (GH-70096)
字符串名称字典键以原样保存,无需先转换为字符串。在大多数情况下,这不会导致损坏,因为字符串和字符串名称在很大程度上可以互换。这仅在执行类型检查(is
,is_instance_of()
,typeof()
)和/或严格比较(is_same()
)时才相关。(GH-70096) - Remove “Raycast Normals” and associated “Normal Split Angle” settings from LOD import. We removed this because the quality is almost always better now without it and import time is much faster without it. (GH-93727)
删除“Raycast Normals”及其相关的“Normal Split Angle”设置从 LOD 导入。我们移除了这个设置,因为现在没有它几乎总是质量更好,而且导入时间也更快。(GH-93727) - Make PopupMenu/Panel shadows properly visible again. This makes PopupMenu/Panel’s transparent by default now. When using non-embedded popups, you will still need to enable
display/window/per_pixel_transparency/allowed
to see the shadows. (GH-91333)
使 Popup 菜单/面板的阴影再次正确可见。现在 Popup 菜单/面板默认为透明。当使用非嵌入式弹出窗口时,您仍然需要启用display/window/per_pixel_transparency/allowed
才能看到阴影。(GH-91333) - The names of imported blend shapes and animation libraries from glTF files have changed as unsupported characters are automatically removed. All “
:
” for blendshapes are now removed, and any of “/
”, “:
”, “,
”, and “[
” are removed for animation libraries. (GH-94783)
导入的 glTF 文件中混合形状和动画库的名称已更改,因为不支持字符被自动删除。所有“:
”用于混合形状的现在都被删除,以及“/
”、“:
”、“,
”和“[
”用于动画库的也被删除。(GH-94783) - Change NavigationMesh to also parse collision shapes by default. This is part of an effort to encourage users to use collision shapes for NavigationMesh instead of visual meshes as collision shapes are much simpler and thus more efficient for Navigation. (GH-95013)
将导航网格默认也解析碰撞形状。这是鼓励用户使用碰撞形状而不是视觉网格作为导航网格的一部分,因为碰撞形状更简单,因此对导航更有效。(GH-95013) - XR: Disable hand tracking by default. This has a non-trivial performance cost and is not needed for many games. Users need to enable the setting if they want to use hand tracking now. (GH-95153)
XR:默认禁用手部追踪。这会产生非平凡的性能成本,并且对于许多游戏来说并不需要。如果用户现在想使用手部追踪,需要启用此设置。(GH-95153) - Automatically resolve initial and final action for draw lists.
RenderingDevice.draw_list_begin()
has been vastly simplified and so it will be much easier to use. The old method signature will continue to work, but we recommend using the new method since it is much simpler. (GH-98670)
自动解决绘制列表的初始和最终动作。RenderingDevice.draw_list_begin()
已大幅简化,因此使用起来将更加方便。旧的方法签名将继续工作,但我们建议使用新方法,因为它更简单。( GH-98670) - Editor camera override has moved from the editor viewport to the “Game” tab. (GH-97257)
编辑器相机覆盖已从编辑器视口移动到“游戏”标签页。(GH-97257)
UIDs in particular are a pretty massive shake-up to existing project structures, and have understandably been among the more contentious changes of the 4.4 development cycle. Read this blog post to better understand the rationale behind that change, as well as the benefits it brings to the table: UID changes coming to Godot 4.4
UIDs 在特定情况下对现有项目结构产生了相当大的影响,这可以理解地成为 4.4 开发周期中更具争议性的变化之一。阅读这篇博客文章,以更好地理解这一变化的理由,以及它带来的好处:即将到来的 Godot 4.4 中的 UID 变化
Animation 动画
One of our newest additions to the animator’s toolkit is markers (GH-91765) by ChocolaMint. Markers allow you to create sub regions of an animation that can be jumped to, or looped without playing the entire animation. This functionality is even supported inside AnimationTree, where you can easily create an AnimationNode’s custom timeline based on the markers.
动画师工具包中的最新增项之一是 ChocolaMint 的标记(GH-91765)。标记允许您创建动画的子区域,可以跳转到或循环播放,而无需播放整个动画。此功能甚至在 AnimationTree 内部得到支持,您可以根据标记轻松创建 AnimationNode 的自定义时间线。
We’ve also added LookAtModifier3D
(GH-98446) to handle 3D model procedural animation, partially replacing the deprecated SkeletonIK3D
. Thanks to the efforts of animation expert Silc Renew (Tokage), users no longer need to rely on specific bone structures and arbitrary layouts; this new tool allows for angle limitations, forward axis settings, etc., and is specialized for making a 3D character model look in the target direction.
我们还在其中添加了 LookAtModifier3D
(GH-98446)来处理 3D 模型过程动画,部分替代了已弃用的 SkeletonIK3D
。感谢动画专家 Silc Renew(Tokage)的努力,用户不再需要依赖特定的骨骼结构和任意布局;这个新工具允许设置角度限制、前轴设置等,并专门用于使 3D 角色模型朝向目标方向。
Sneaking in right before the feature freeze, the Animation team added SpringBoneSimulator3D
(GH-101409) as well. The spring bone is an open source cross-platform module that is distributed by the VRM consortium under the MIT license. It has been available in Godot as an add-on for a while now, but there were some difficulties in stability and complex setup due to the complicated data structure. Tokage refined it based on SkeletonModifier3D
with some improvements by leaning on existing core functionality, so it is now much improved and easier to use!
在特性冻结前偷偷加入,动画团队还添加了 SpringBoneSimulator3D
(GH-101409)。弹簧骨骼是一个开源跨平台模块,由 VRM 联盟根据 MIT 许可证分发。它已经作为 Godot 的附加组件存在了一段时间,但由于数据结构复杂,在稳定性和复杂设置方面存在一些困难。Tokage 基于 SkeletonModifier3D
进行了一些改进,并依靠现有核心功能,因此现在它得到了很大改进,更容易使用!
undefined
Audio 音频
First-time contributor what-is-a-git implemented the long-requested support for runtime loading of WAV files (GH-93831). This adds parity with Ogg Vorbis audio tracks, and will be a welcome addition for users who want to load user-generated content at runtime (including non-game audio applications).
首次贡献者 what-is-a-git 实现了对运行时加载 WAV 文件的长久请求支持(GH-93831)。这增加了与 Ogg Vorbis 音频轨道的兼容性,并将是用户在运行时加载用户生成内容(包括非游戏音频应用程序)的热烈欢迎的补充。
C#
Paul Joannon and Raul Santos have put the final pieces in place for moving both the GodotSharp library and user projects to .NET 8 (GH-92131 and GH-100195). All new projects will use .NET 8 by default and existing projects will automatically update to .NET 8 once opened with this release or any newer 4.4 build. For more details, check out the recent article on Godot C# packages moving to .NET 8.
保罗·若阿诺和劳尔·桑托斯已经为将 GodotSharp 库和用户项目迁移到.NET 8(GH-92131 和 GH-100195)做好了最后准备。所有新项目将默认使用.NET 8,现有项目在用此版本或任何更新的 4.4 版本打开时将自动更新到.NET 8。更多详情,请查看关于 Godot C#包迁移到.NET 8 的最新文章。
For C# developers targeting Android platforms, exported projects will now use the android
runtime identifier (GH-88803). This means C# Android exports now support all available architectures (arm32, arm64, x32, and x64) whereas previously it only supported 64-bit architectures. The necessary Java library to bind the .NET cryptography implementation to the Android OS functions is now also included in exported projects, which fixes issues such as crashing when using SSL with the BCL-provided HttpClient
.
针对 Android 平台的 C#开发者,导出的项目现在将使用 android
运行时标识符(GH-88803)。这意味着 C# Android 导出现在支持所有可用的架构(arm32、arm64、x32 和 x64),而之前它仅支持 64 位架构。现在,将.NET 加密实现绑定到 Android OS 功能所需的 Java 库也已包含在导出的项目中,这解决了使用 BCL 提供的 HttpClient
时 SSL 崩溃等问题。
Core 核心
As mentioned in our last development update, the improvements to the core of our codebase have been absolutely staggering! Lukas Tenbrink has spearheaded optimizations to strings and the speed/efficiency at which they’re parsed. Adam Scott opened the door for tool makers to take advantage of temporary files and directories (GH-98397). Ocean has broadened the scope in which Curve
can be applied, allowing for domains outside of [0, 1]
(GH-67857).
如上一次开发更新中提到的,我们对代码库核心的改进绝对令人震惊!卢卡斯·滕布林克领导了对字符串及其解析速度/效率的优化。亚当·斯科特为工具制作者打开了利用临时文件和目录的大门(GH-98397)。Ocean 扩展了 Curve
的应用范围,使其能够应用于 [0, 1]
之外的域名(GH-67857)。
But perhaps the biggest highlight of them all is Typed Dictionaries. After the introduction of Typed Arrays in 4.0 by George Marques (GH-46830), Typed Dictionaries rapidly became one of the engine’s most requested features. Thanks to the efforts of Thaddeus Crews (GH-78656), this is finally a reality! This feature being implemented at the core of the engine means that all scripting languages (GDScript, C#, C++) can take advantage by interfacing with Godot’s Dictionary type. You can now export typed dictionaries from scripts and benefit from a much improved Inspector UX to assign the right keys and values.
但也许是其中最大的亮点是类型化字典。在 4.0 版本中,由 George Marques(GH-46830)引入了类型化数组之后,类型化字典迅速成为引擎中最受欢迎的功能之一。多亏了 Thaddeus Crews(GH-78656)的努力,这终于成为现实!这个特性在引擎核心中实现,意味着所有脚本语言(GDScript、C#、C++)都可以通过接口利用 Godot 的字典类型。现在您可以从脚本中导出类型化字典,并从改进的检查器 UX 中受益,以分配正确的键和值。
Editor 编辑
Thanks to the contribution from YeldhamDev of Lone Wolf Technology and W4 Games we now have a new “Game” tab along with the existing “2D”, 3D”, “Script”, and “AssetLib” tabs that allows users to have fine-tuned control over the running game from the editor. This includes overriding the in-game camera and selecting objects in game.
感谢 Lone Wolf Technology 和 W4 Games 的 YeldhamDev 的贡献,我们现在有了新的“游戏”标签,以及现有的“2D”、“3D”、“脚本”和“AssetLib”标签,使用户能够从编辑器中对运行中的游戏进行精细控制。这包括覆盖游戏中的摄像头和选择游戏中的对象。
Check out the PR (GH-97257) and the video below to see exactly what this change enables.
查看 PR(GH-97257)和下面的视频,以了解这个更改具体实现了什么。
undefined game window embedding
参见上文提到的游戏窗口嵌入功能,该功能与此功能协同工作。请注意,这些功能可以单独使用:即使游戏被分割到单独的窗口,您仍然可以使用游戏内的交互式编辑。 GH-90778
编辑器中操作 Camera3Ds 也得到了改进!在 GH-90778 中,裘好宇的新功能使得每个选中的 3D 相机在检查器中都会显示预览。不再需要切换相机来预览了。GH-92303 GH-93972 GH-92667
希尔德林勇敢地穿越了依赖性和多线程陷阱的迷宫,为我们带来了期待已久的圣杯:项目首次导入无错误。这需要多个 PR(GH-92303、GH-93972 和 GH-92667)之间的大量努力,但解决了任何从网上下载现有项目的用户面临的主要烦恼。GH-93064GH-95678
此外,凭借这一新发现的知识,Hilderin 还进一步改善了第一个项目导入体验,使文件系统坞在扫描资源时更加响应迅速(GH-93064),并提高了大型项目的整体编辑器启动速度(GH-95678)。大型项目在加载项目时可以期待高达 3 倍的速度提升,在进行任何扫描文件系统的操作时也有类似的加速。GH-99700
HP van Braam 在移动或重命名 SceneTree 中的节点时能够实现类似的性能提升(GH-99700)。Godot 现在在编辑包含数百或数千个节点的场景时应该感觉要快得多。GH-97647
调试面板现在具有一个表达式评估器,它为调试面板添加了一个新标签页,允许你在脚本在断点处停止时使用本地状态评估表达式。许多用户都熟悉来自其他 REPL 调试器的这种工作流程。这个功能已经进行了一段时间,最近已完成并合并(GH-97647)。感谢 Oğuzhan、Erik 和 Tomek 将这个功能带到终点线。GH-96759
为进一步提升您的调试体验,Hendrik 引入了一个复选框,允许您在从编辑器运行游戏时自动启动分析器,并立即捕获有价值的分析数据(GH-96759)。GH-96740
编辑器对每个人来说都变得更加人性化!Ryevdokimov 为编辑器添加了对象吸附功能,以便在编辑器中移动 3D 对象(GH-96740),这允许您在移动对象时将其吸附到其他对象上。这可以通过选择一个对象并按 Shift+G 来切换。
为了减少检查器中的杂乱,并突出您最关心的属性,YeldhamDev 为我们带来了期待已久的在检查器中固定您最喜欢的属性的功能!查看 PR GH-97352 中的实现。
感谢 Danil Alexeev,GDScript 代码编辑器现在在您悬停于函数、变量、类等上方时,将显示包含有关信息(包括您使用我们的文档系统编写的文档)的工具提示(GH-91060)。这使得使用集成文档系统更加强大,因为您不再需要在代码编辑器和相关文档之间切换,以快速获取信息。
本版本 GDScript 添加了许多提升开发体验的生活品质特性。例如,现在您可以使用新注解 @export_tool_button
在 @tool
脚本中无缝创建按钮。这是由 Macksaur 在 GH-96290 中添加的。
丹尼尔·阿列克谢夫为我们带来了 @warning_ignore_start
和 @warning_ignore_restore
(GH-76020),以安全的方式在整个代码部分抑制警告。同样, @warning_ignore
不再适用于函数。这是因为它之前具有未记录的功能,意外地将警告应用于整个函数。现在用户有更多的控制权,并且注释应该更符合您的预期。 导入
4.4 版本带来了对纹理导入质量和速度的巨大改进,归功于新维护者 Bluecube3310。使用“VRAM 压缩”导入设置的纹理导入时间通过集成基于 GPU 的 Betsy 纹理压缩器得到了显著提升。最大的区别在于导入 HDR 图像(如 HDRIs 或光照贴图)时,之前可能需要几分钟。多亏了 Betsy,以及其他对导入过程的优化(GH-92291 和 GH-95291),这个时间已经大幅减少。此外,默认情况下,不使用“高质量”导入设置的纹理应该看起来更好,因为我们之前不得不为了更快的导入时间而牺牲质量。此外,对纹理导入过程进行了无数改进,以提高跨设备的兼容性和支持的纹理格式数量。总的来说,纹理导入应该比以往任何时候都要快和稳定。
新的重定向方法,RetargetModifier3D,是 Tokage 的新功能,允许用户在不丢弃在外部 DCC(GH-97824)中设置的原始骨骼休息的情况下使用动画重定向。KHR_animation_pointer
Godot 现在支持 KHR_animation_pointer
glTF 扩展,多亏了 Aaron Franke(GH-94165)的努力。这使得导入的动画可以针对自定义属性进行操作,除了位置、旋转、缩放和网格混合形状权重(这是之前支持的)。例如,现在您可以动画化灯光的颜色、摄像机的视野(FOV)、材质的漫反射颜色、材质的 UV 偏移等。 输入
输入在本次开发周期中进行了许多渐进式改进和润色。值得注意的是,rptfrg 通过将新动作的默认死区从 0.5 降低到 0.2(GH-97281)做出了他们的首次贡献。这应该会使输入默认情况下感觉更加灵敏。此外,经过多年的勤奋努力,Markus Sauermann 已经扩展了拖放系统,支持在不同 Viewports
甚至 Windows
之间进行拖放操作。更多信息,请参阅 GH-67531。 导航
导航包含引擎中最古老的代码之一。虽然它仍在履行其职责,但其中很大一部分已经过时,需要清理。因此,导航团队,特别是 smix8,勇敢地站了出来,开始了改善遗留代码的艰难过程。幸运的是,他们的工作已经开始取得成果,表现为更干净的代码库和更快的导航功能。
值得注意的是,导航地图同步现在以异步方式在后台线程中发生,因此对帧率的冲击要小得多。而不是让整个游戏在低端系统上变慢,更新将只会发生得更少。
也有许多生活质量改进,例如显示导航链接方向的调试指示器(GH-101010)以及使用节点的变换来转换导航障碍节点(GH-96730)。 物理学
自 2022 年底成立以来,godot-jolt 逐渐成为许多开发者的默认 3D 物理引擎。因此,Godot Jolt 维护者 Mikael Hermansson 和 Jorrit Rouwe 将 Jolt 直接集成到引擎中,这一点并不令人惊讶。他们的团队和 Godot 之间已经存在共生关系,为两者添加了许多功能,但集成一个官方模块并非易事;他们的拉取请求(GH-99895)最终添加了超过 500 个文件和 11.5 万行代码!
注意:在撰写本文时,这并不取代 Godot 物理作为默认的 3D 物理引擎。Godot 中的 Jolt 物理集成被视为实验性的,未来版本可能会有所变化。它还缺少一些 Godot 物理的功能,因此不能作为完全的替代品。如果您的兴趣/用例得到支持,可以通过将“物理”>“3D”>“物理引擎”项目设置更改为 Jolt 物理来启用此工具。
我们的希望是许多用户选择使用 Jolt 作为他们的 3D 物理后端,并给我们提供宝贵的反馈,以便我们改进与 Jolt 的集成,并最终使其成为所有新项目的默认物理引擎。 平台
pkowal1982 的长期拉取请求 GH-53666 终于合并,为 Linux 平台添加了相机支持,允许开发者在其游戏中访问连接的相机。 安卓
感谢 Fredia Huya-Kouadio 和 Anish Mishra(我们最新的 Android 维护者)的不懈努力,Android 设备上的 Android 设备开发体验已显著提升。在 GH-93526 中,Fredia 增加了从 Android 编辑器导出游戏的支持。之前,开发者导出游戏时必须离开他们的 Android 设备。Fredia 还在 GH-95700 中增加了在 PiP 模式下启动 Play 窗口的支持,使开发者更容易在 Android 设备上开发时利用编辑器和运行游戏之间的紧密集成。
为了进一步提升 Android 上的开发体验,Anish 添加了对本地文件选择器的支持(在 GH-98350 中),因此现在 Android 游戏和应用开发者可以受益于使用 Android 提供的文件选择器,Android 用户也习惯了这种选择器。同样,Fredia 添加了新的 AndroidRuntime 插件,该插件公开了 Android 运行时,使得在游戏/应用中访问 Android 库和 SDK 变得更加容易。例如,对于包含在 Android 操作系统中的 API,无需额外设置,可以直接使用这个新插件进行访问。更多详情,请参阅 GH-97500。 渲染和着色器
许多重要的渲染更改在 4.3 开发周期结束时完成,略微太晚,无法包含在 4.3 版本中。因此,4.4 版本包含大量令人兴奋的功能,太多无法在此列出,但这里有一些。
对于苹果用户,Stuart Carnie 一直在努力工作,确保您通过整合 Metal 渲染后端(GH-88199,开发快照:Godot 4.4 开发版 1)和 MetalFX 上采样器(如上所述)获得最佳性能的益处。
去年,DarioSamo 花了几个月时间完善了 Ubershader 系统,该系统是由 Juan Linietsky 和 Clay John 在 Godot 4 早期开发阶段设计的。Ubershader 允许引擎在加载时编译一个灵活但较慢的着色器版本,在优化着色器后台编译的同时可以作为后备使用。这项技术使用户能够发布游戏而无需着色器卡顿,并且无需手动在加载屏幕后显示每个可能的材质和对象组合。
阴影投射器蒙版,来自 EMBYRDEV 的长期期待改进,允许用户在 Light3Ds 上应用蒙版以选择在投射阴影时将考虑哪些渲染层(GH-85338)。之前,只能禁用 GeometryInstance(针对所有 Light3Ds)或 Light3D(针对所有 GeometryInstances)的阴影。这允许更精细的控制,使用户能够进一步优化动态光源并控制阴影在游戏中的出现位置。
在解决早期快照中合并的金属渲染后端后,Stuart 又做出了另一项令人印象深刻的渲染贡献:2D 批处理!自 4.0 版本发布以来,兼容性渲染器已经实现了批处理。这次发布通过在 Forward+ 和移动后端使用批处理,将相同的性能优势带到了其他后端(GH-92797)。现在,所有后端之间的 2D 性能相当。
持续优化纹理导入和 Betsy 纹理压缩器的出色工作,BlueCube 通过添加以下内容对光贴图器进行了巨大改进:GH-89919
支持对双三次采样进行平滑处理,以改善低分辨率光照贴图烘焙的结果(GH-89919)GH-85653
阴影遮罩,允许在动态光照范围外回退到烘焙光照(GH-85653)GH-100327
压缩光照贴图纹理以减少大光照贴图纹理的内存使用和渲染开销(GH-100327)。
Hendrik Brucker,一位长期贡献者,也决定这次版本中 lightmaps 值得一些关注,并通过实现 lightmap 超采样(将 lightmap 烘焙到更高分辨率以减少锯齿并捕捉更精细的细节)以及添加对透明对象的支持到 lightmap 烘焙(包括半透明阴影)的方式,完成了 Hugo Locurcio 和 Guerro323 的工作。
里卡多·伯宁继续在将物理插值引入 Godot 4 中做出了惊人的工作。这次他增加了对 3D 对象(包括 Multimesh!)的支持。物理插值是一种技术,允许你在非常低的 FPS 下运行物理更新,同时保持平滑的运动。这让你既能节省 CPU 开销,又能让游戏看起来更加流畅。指出 ReflectionProbes 存在许多限制后,Lander-vr 决定亲自动手,在 GH-100241 中对 ReflectionProbes 的混合逻辑进行彻底改造,使较小的探针自动优先于较大的探针,从而避免了看起来奇怪的“双重反射”效果。此外,在 GH-99958 中,他添加了一个混合距离属性,现在您可以配置反射开始淡出的距离。反射开始淡出的默认距离现在比之前低得多,确保在 ReflectionProbe 的范围内可以看到完整的反射。不满意止步于此,Lander-vr 还显著提升了 ReflectionProbe 和 VoxelGI 编辑器的用户体验,通过使它们的控件更不干扰(在 GH-99920、GH-99969 和 GH-100370 中)。经过社区许多人的多次请求和多年的耐心等待,我们终于重新引入了顶点着色,这不仅是一项重要的性能优化,也是重现 PSX 风格图形的不可或缺的一部分(GH-83360)。这成为了 ywmaa 的一项重大任务,他招募了资深渲染贡献者 Clay John 的帮助,以确保这一功能顺利完成。当前在尝试在不支持 Vulkan、D3D12 或 Metal 的设备上运行 Godot 时,如果使用 Forward+或 Mobile 后端,引擎将向用户显示一个操作系统警报,告知他们没有所需图形 API 的支持,并需要尝试使用兼容性后端再次运行。这个警报已被证明让用户感到困惑,并且打开场景的过程变得繁琐。现在,随着 GH-97142,SheepYhangCN 的第一个贡献,当其他后端不可用时,引擎将自动回退到使用 OpenGL(兼容性后端)。这应该为旧设备上的用户提供最流畅的体验。渲染贡献者在这一个发布周期中不懈地识别和实施性能提升。渲染器的许多领域,包括 2D 和 3D,都进行了优化,我们预计许多用户将在这个发布周期中注意到性能的提升,尤其是在 2D 照明、移动设备上的渲染以及一般的 2D 渲染方面。感谢 Godot 编辑器使用自身引擎制作的独特特性,我们能够将 Godot 编辑器带到非传统的地方,例如网页和 Android 设备。在后者基础上,Fredia Huya-Kouadio 完成了 Bastiaan Olij 多年前启动的概念验证,以添加在 XR 设备上使用 Android 编辑器的支持,使用 OpenXR(GH-96624)!XR 编辑器目前可通过 Horizon Store 在 Meta Quest 3 和 Quest Pro 上使用。PICO 4 Ultra 的支持也在进行中,并将很快可用。OpenXR 对 Metal 的支持(GH-98872)已添加,提升了使用 Meta XR 模拟器的 MacOS 开发者的开发体验。一些 OpenXR 运行时支持将修饰符应用于动作映射,例如应用阈值或触觉触发器,现在您也可以在 Godot 中配置这些功能(GH-97140)!Godot 4.3 添加了对 OpenXR 组合层的支持,允许开发者显示清晰明亮的 2D 面板,展示来自 Godot SubViewport 的内容。现在,在 Godot 4.4 中,我们增加了显示来自 Android 表面的内容的功能,允许在 Android 上进行高效的 XR 媒体播放(GH-96185)。更新日志140 位贡献者为此版本提交了 406 项改进。查看我们的交互式变更日志,以获取自 4.4-dev7 快照以来的完整变更列表。您还可以查看与上一个 4.3 功能版本相比包含在 4.4 中的所有变更。此版本基于提交 d33da79d3
构建。
Standard build includes support for GDScript and GDExtension.
标准构建包含对 GDScript 和 GDExtension 的支持。
.NET build (marked as mono
) includes support for C#, as well as GDScript and GDExtension.
.NET 构建(标记为 mono
)包括对 C#的支持,以及 GDScript 和 GDExtension。
- .NET 8.0 or newer is required for this build, changing the minimal supported version from .NET 6 to 8.
.NET 8.0 或更高版本是必需的,将最低支持版本从 .NET 6 更改为 8。
While engine maintainers try their best to ensure that each preview snapshot and release candidate is stable, this is by definition a pre-release piece of software. Be sure to make frequent backups, or use a version control system such as Git, to preserve your projects in case of corruption or data loss.
尽管引擎维护者尽力确保每个预览快照和候选版本都是稳定的,但根据定义,这仍然是一个预发布软件。请确保经常备份,或者使用 Git 等版本控制系统来保存您的项目,以防损坏或数据丢失。
Known issues 已知问题
During the beta stage, we focus on solving both regressions (i.e. something that worked in a previous release is now broken) and significant new bugs introduced by new features. You can have a look at our current list of regressions and significant issues which we aim to address before releasing 4.4. This list is dynamic and will be updated if we discover new showstopping issues after more users start testing the beta snapshots.
在测试阶段,我们专注于解决回归问题(即之前版本中工作正常但现在出问题的内容)以及由新功能引入的重大新错误。您可以查看我们当前要解决的回归问题和重大问题列表,这些是我们发布 4.4 版本前要解决的问题。此列表是动态的,如果我们在更多用户开始测试测试版快照后发现新的严重问题,此列表将进行更新。
With every release, we accept that there are going to be various issues which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a complete list of known bugs.
随着每个版本的发布,我们接受将会有各种问题,这些问题已经被报告但尚未修复。请参阅 GitHub 问题跟踪器以获取已知错误的完整列表。
- Baking a Lightmap3D is more prone to crash after we added support for transparency. The issue is tracked in GH-101391.
烘焙 Lightmap3D 后,添加了对透明度的支持后更容易崩溃。问题在 GH-101391 中跟踪。 - Changes to scenes are not reflected in APK exports after the initial export in the Android editor. The issue is tracked in GH-101007.
场景更改在 Android 编辑器中的初始导出后不会反映在 APK 导出中。问题已在 GH-101007 中跟踪。
Bug reports 错误报告
As a tester, we encourage you to open bug reports if you experience issues with this release. Please check the existing issues on GitHub first, using the search function with relevant keywords, to ensure that the bug you experience is not already known.
作为测试人员,我们鼓励您在遇到本版本问题的情况下提交错误报告。请首先在 GitHub 上检查现有问题,使用相关关键词进行搜索,以确保您遇到的问题尚未被知晓。
In particular, any change that would cause a regression in your projects is very important to report (e.g. if something that worked fine in previous 4.x releases, but no longer works in this snapshot).
特别是,任何可能导致您项目回归的更改都非常重要报告(例如,如果某个在先前的 4.x 版本中运行良好的功能,但在本次快照中不再工作)。
Support 支持
Godot is a non-profit, open source game engine developed by hundreds of contributors on their free time, as well as a handful of part or full-time developers hired thanks to generous donations from the Godot community. A big thank you to everyone who has contributed their time or their financial support to the project!
Godot 是一个非盈利的、开源的游戏引擎,由数百名在业余时间贡献的参与者以及一些因 Godot 社区慷慨捐赠而雇佣的兼职或全职开发者共同开发。向所有为该项目贡献时间和财务支持的人表示衷心的感谢!
If you’d like to support the project financially and help us secure our future hires, you can do so using the Godot Development Fund platform managed by Godot Foundation. There are also several alternative ways to donate which you may find more suitable.
如果您想从经济上支持该项目并帮助我们确保未来的招聘,您可以使用由 Godot 基金会管理的 Godot 开发基金平台进行捐赠。还有几种不同的捐赠方式,您可能会觉得更合适。