Dev Planet

Avatar photo

RSS feed aggregator for FOSS game development.

Dev snapshot: Godot 4.6 dev 6

Woah, two development snapshots in the same week? Indeed, we’re gonna be handling the transition to the beta stage a little differently this time around.

During the development pipeline of Godot 4.x, we developed a bit of a bad habit by starting the feature freeze AT the first beta release. While not inherently bad, this did lead to somewhat bloated blog posts that had to juggle both newly-added features and the more general feature roundup for the release as a whole. So while this format may work for some organizations, we’re trying something new by implementing the feature freeze preemptively. As of this moment: Godot 4.6 is in feature freeze, and dev 6 will be our final development snapshot.

A big benefit of this is the ability to isolate the big additions and fixes for the final new features that made it over the finish line in time. So while this will be a smaller roundup than usual, there’s still plenty of exciting additions we’re eager to showcase.

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.

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, the XR 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.


The cover illustration is from WAR RATS: The Rat em Up, a tactical shoot ‘em up, where you lead your fearless troops in the Great Rat War against the onslaught of the TechnoRat legion. You can get the game on Steam, and check out the developers on Twitter or Instagram!

Highlights

GDScript: Tracy profiler support

In the 4.6 dev 4 blog post, we had a section featuring dedicated profiler support. That section was written for more technical users that were already familiar with how dedicated profilers operated, so it focused on their immediate benefit of profiling the C++ code of the Godot Engine itself. In hindsight, we could’ve expanded it to be more readable for the average user, as this system had the potential to expand to profiling well beyond our system internals. It was ultimately considered superfluous, as no such integrations existed, and implementing them in a handful of weeks before feature freeze was extremely unlikely.

…You read the header, you know where this is going. Lukas Tenbrink, the original implementer of dedicated profiler support, collaborated with enetheru to bring this native support to GDScript (GH-113279)! While currently limited to tracy, this is a major first step in allowing these dedicated profilers to be a universal solution for debugging performance.

Documentation on how to utilize these native profilers yourself will soon be available here (currently in PR form).

Android: Storage Access Framework support

Godot apps on Android have this unfortunate hurdle of effectively requiring the MANAGE_EXTERNAL_STORAGE permission. Without it, users were limited to files within the Documents/Download directories that the app itself created. Despite other scoped permissions being available for media files (READ_MEDIA_IMAGES, READ_MEDIA_AUDIO, and READ_MEDIA_VIDEO), non-media files (.txt, .json, etc) still required the special MANAGE_EXTERNAL_STORAGE permission. While workarounds did exist, the best solution would be one that sidesteps the issue entirely.

syntaxerror247 has brought a solution in the form of implementing full Storage Access Framework (SAF) support (GH-112215). With the addition of SAF, users are now free to open and save files from any directory with the system file picker. Because the system itself handles the logic for permissions, the app no longer needs to concern itself with requesting explicit permissions from the end-user.

And more!

There are too many exciting changes to list them all here, but here’s a curated selection:

  • Animation: Add BoneTwistDisperser3D to propagate IK target’s twist (GH-113284).
  • Animation: Add solo/hide/lock/delete buttons to node groups in bezier track editor (GH-110866).
  • Audio: AudioServer to have function to access microphone buffer directly (GH-113288).
  • Core: Add Apple Instruments support (GH-113342).
  • Core: Reuse/optimize common OperatorEvaluator*::evaluate logic (GH-113132).
  • GDScript: Prevent shallow scripts from leaking into the ResourceCache (GH-109345).
  • GUI: Add scroll hints to ScrollContainer and Tree (GH-112491).
  • GUI: Make EditorFileDialog inherit FileDialog (GH-111212).
  • Rendering: Add white, contrast, and future HDR support to the AgX tonemapper (GH-106940).
  • Rendering: Implement point size emulation in the forward shader for D3D12 (GH-112191).
  • Rendering: Rewrite Radiance and Reflection probes to use Octahedral maps (GH-107902).
  • Rendering: Use re-spirv in the Vulkan driver to optimize shaders (GH-111452).

Changelog

67 contributors submitted 140 fixes for this release. See our interactive changelog for the complete list of changes since 4.6-dev5. You can also review all changes included in 4.6 compared to the previous 4.5 feature release.

This release is built from commit dec5a373d.

Downloads

Godot is downloading…

Godot exists thanks to donations from people like you. Help us continue our work:


Make a Donation

Close this popup

Standard build includes support for GDScript and GDExtension.

.NET build (marked as mono) includes support for C#, as well as GDScript and GDExtension.

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.

Known issues

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.

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.

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).

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 and 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!

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.

Donate now

Castle Game Engine: November improvements: huge animation upgrade, guidelines about AI usage, Codeberg mirror, various fixes

We have a few things to report from November. Enjoy 🙂 We have merged a big branch with numerous improvements to our animation handling (skinned animation and other). The important new functionality is documented here. This merge features: Skinned animation loaded from glTF is now performed on GPU (mesh is deformed using shaders). This allows …

Dev snapshot: Godot 4.6 dev 5

As the Northern Hemisphere’s days get shorter and colder, we get closer to our much anticipated feature freeze. Dev 5 is jam-packed with new features and enhancements as contributors try to finish off their big contributions before we hit the feature freeze and Beta 1 shortly after. As a reminder, feature freeze is the period where we stop merging anything except for bug fixes as we shift our focus to polishing the existing code in preparation for release. We plan on entering our feature freeze on December 3 and only releasing one more dev snapshot before entering the Beta phase.

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.

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, the XR 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.


The cover illustration is from Kingdoms of the Dump, a SNES-inspired JRPG where Trash Can Knight, a trash can knight, guides their party through a fantasy world of garbage. You can get the game on Steam, and check out the developer websites for Roach Games and Dream Sloth Games. Notably: this title was created using Godot 2.1!

Highlights

Use D3D12 by default on Windows

Ever since its addition in Godot 4.3 by RandomShaper and further refinement by DarioSamo, Direct3D 12 has been a mainstay renderer for supported devices (Windows). This is because Vulkan is unfortunately unstable on Windows, with GPU drivers being poorly maintained compared to their Direct3D 12 counterparts. As such, for the 4.6 release cycle, Skyth was sponsored by the Godot Foundation to make Direct3D 12 the default RenderingDevice driver on Windows. His efforts paid off, and the change was integrated just before feature freeze (GH-113213).

This will only impact new projects created in 4.6-dev5 or later. To use this new default in pre-existing Godot 4.5 projects, you should set the rendering/rendering_device/driver.windows project setting to d3d12 manually.

Add support for delta encoding to patch PCKs

In Godot 4.4 we introduced the ability to export PCK files as a patch PCK, by letting you provide a set of base PCK files with which to compare against, and then only export the files that had actually changed since then. While this isn’t strictly needed when dealing with most of the major distribution platforms, since they will often distribute only the minimal difference between any two releases anyway, it can become important if you’re distributing content patches through your own means, where things like disk space, bandwidth costs and metered connections come more into focus.

However, while this initial implementation did allow for much smaller PCK files compared to exporting everything, it was still an all-or-nothing deal on a per-file level. This meant that if you changed just a single character in some localization string, you would end up exporting the entire localization file for that language, which can potentially be dozens of megabytes in size. This also applied to certain metadata files that Godot manages behind the scenes, which can grow quite big in large-scale projects, and which would be modified anytime you added or removed resources.

To help with this, Mikael Hermansson added support for what’s called “delta encoding”, also known as “binary patching” or “binary diffing” (GH-112011). This is the same technique used by the major distribution platforms in order to figure out what the minimal difference is between the latest release and the one you have installed, where you simply compare two arbitrary files (binary or otherwise) and try to extract the minimal set of changes from it. This means that you can now optionally export only the parts of a file that actually changed since your last patch, meaning changing a single character in some localization string results in a patch that’s on the order of a few dozen bytes, as opposed to megabytes.

Note that this feature must be explicitly enabled, under the “Patching” tab in the export dialog, because it comes with a slight runtime overhead when patches are applied, which they are every time a patched file is loaded. This overhead can be as much as a few milliseconds in the worst case.

Dedicated build app for Gradle builds on Android

Godot supports two ways to export to Android: injecting your game’s data into a pre-built APK (the default) or by running the Gradle build system, which is how native Android apps are usually built.

Modifying the pre-built APK is faster and requires less setup, but is more limited. If you want to use Godot Android Plugins to integrate, for example, Google Play Billing, AdMob, or build an XR app, you need to use Gradle.

While the Godot editor itself runs on Android, allowing you to develop games on your phone or tablet, it has only ever supported exporting via the pre-built APK… until now!

Thanks to the efforts of David Snopek and Logan Lang in GH-111732, Godot is now able to initiate Gradle builds on Android, by sending commands to a companion app that provides a full Linux-like build environment to run Gradle. Using a companion app allows us to make setup easy by including everything you need within the app, while keeping Godot itself lightweight. We plan to release the app on Google Play and other Android stores before Godot 4.6 stable is released, but for now you can download an APK from the PR.

Moving OpenXR forward

Godot now supports OpenXR 1.1 and will automatically enable OpenXR 1.1 features on devices that support this (GH-109302). This comes with a compatibility layer to make this as transparent as possible for developers who want to deploy their games both to headsets that support OpenXR 1.1, and those that only support OpenXR 1.0.

The OpenXR loader logic for AOSP platforms has moved from the vendor plugin into the core (GH-106891). Godot can now export to any supported OpenXR platform without relying on any plugins. This enables creating and distributing a single APK that runs on nearly all AOSP devices, a potential game changer for tutorial makers and developers who target vendor-agnostic stores like itch.io. The Godot OpenXR vendor plugin remains an important first-party plugin that enables the use of vendor extensions and implements support for specific vendor permissions and feature settings.

Massive optimizations to the 2D renderer

In Godot 4.4 we introduced automatic 2D batching which is an optimization that saves a huge amount of CPU resources by drawing similar objects in a single draw call. 2D batching results in huge wins for content that can easily be batched, like text-heavy games or bullet hells.

Batching doesn’t come without a cost, when the batching system is unable to create any batches, then it adds a performance cost, but doesn’t improve performance. It also makes rendering slightly more expensive for the GPU.

In our testing we found that most scenes we tested were CPU-bottlenecked, so the increase in GPU cost did not make a noticeable difference, and where it did, the decrease in performance was very small.

However, over time we have had a few concerning reports of 4.4 being significantly slower than 4.3, especially on older and lower-end mobile devices. These devices also tended to be GPU-bottlenecked, which made the performance regression even more concerning.

In this release, we did a huge overhaul to the design of our 2D renderer to reduce the GPU performance cost when batching. The end result is significantly better performance on a range of hardware. In our testing this change has resulted in improved performance on all devices (in GPU-bound scenarios) ranging from 1.1x to 7x as fast.

To read more and see the benchmarks, check out the pull request.

And more!

There are too many exciting changes to list them all here, but here’s a curated selection:

  • 2D: Add support for rotating scene tiles in TileMapLayer (GH-108010).
  • Animation: Add option to BoneConstraint3D to make reference target allow to set Node3D (GH-110336).
  • Animation: Change AnimationLibrary serialization to avoid using Dictionary (GH-110502).
  • Core: Add RequiredParam<T> and RequiredResult<T> to mark Object * arguments and return values as required (GH-86079).
  • Core: Fix EnumDevices stall using IAT hooks (issue with certain USB peripherals) (GH-113013).
  • Core: Implement support for reading and writing extended file attributes/alternate data streams (GH-102232).
  • Editor: Add “Use Local Space” option to the 2D editor (GH-107264).
  • Editor: Add ability to add new EditorSettings shortcuts (GH-102889).
  • Editor: Add expression history to evaluator (GH-108391).
  • Editor: Add tab menu button to list currently opened scenes (GH-108079).
  • Editor: Allow customization of TabContainer tabs in editor (GH-58749).
  • Editor: Allow dragging setting flags in layers property editor (GH-112174).
  • Editor: Allow editing groups on multiple nodes (GH-112729).
  • Editor: Allow resizing the length of animations by dragging the timeline (GH-110623).
  • Editor: Make bottom panel into available dock slot (GH-108647).
  • Editor: Make rotation gizmo white outline a 4th handle that rotates around the camera’s view-axis (GH-108608).
  • Editor: Move History dock to the bottom left by default (GH-112996).
  • Editor: Rename Select Mode to Transform Mode, and create a new Select Mode without transform gizmo (GH-101168).
  • Editor: Separate Node editor dock into two new docks: Signals and Groups (GH-101787).
  • Editor: Show a warning toast when saving a large text-based scene (GH-53679).
  • GDExtension: Store source of gdextension_interface.h in JSON (GH-107845).
  • GDScript: Add debug/gdscript/warnings/directory_rules project setting (GH-93889).
  • GDScript: Add step out to script debugger (GH-97758).
  • GDScript: LSP: Rework and extend BBCode to Markdown docstring conversion (GH-113099).
  • GUI: Allow SplitContainer to have more than two children (GH-90411).
  • Platforms: Android: Adjust script editor size for virtual keyboard (GH-112766).
  • Platforms: Wayland: Implement game embedding (GH-107435).
  • Rendering: Refactor rendering driver copy APIs to fix several D3D12 issues (GH-111954).
  • Rendering: TAA adjustment to reduce ghosting (GH-112196).
  • XR: Add support for Android XR devices to the Godot XR Editor (GH-112777).
  • XR: Implement XR_KHR_android_thread_settings (GH-112889).
  • XR: Implement XR_META_foveation_eye_tracked (GH-112888).
  • XR: OpenXR: Add profiling macro for process, xrWaitFrame() and acquiring swapchain (GH-112893).

Changelog

134 contributors submitted 323 fixes for this release. See our interactive changelog for the complete list of changes since 4.6-dev4. You can also review all changes included in 4.6 compared to the previous 4.5 feature release.

This release is built from commit f5918a9d3.

Downloads

Godot is downloading…

Godot exists thanks to donations from people like you. Help us continue our work:


Make a Donation

Close this popup

Standard build includes support for GDScript and GDExtension.

.NET build (marked as mono) includes support for C#, as well as GDScript and GDExtension.

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.

Known issues

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.

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.

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).

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 and 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!

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.

Donate now

Dev snapshot: Godot 4.6 dev 4

With GodotFest now behind us, it’s only natural that some users would be left with a sense of longing. Well we have just the thing: our most recent Godot 4.6 development snapshot! It’s not even been two weeks since the last one, but we couldn’t just leave y’all hanging for more Godot content. As always, these snapshots feature big changes, meaning they’re likely accompanied by big regressions and bugs; get those tests and reports in as early as possible to ensure an expedient release cycle!

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.

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, the XR 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.


The cover illustration is from House of Necrosis, a turn-based, horror PRG where you must survive the horrors of a mansion that changes every time it’s entered. You can get the game or try the demo on Steam, and follow the developer on YouTube, Bluesky, or itch.io.

Highlights

Animation: Add SkeletonModifier3D IKs as IKModifier3D

For those that aren’t already aware, SkeletonModificationStack3D was removed in the transition from 3.x to 4.0, as it was deemed wildly unstable and unsalvageable. Since then, Tokage has been on a journey to reincorporate the functionality such that it lives up to the standards the rest of the engine aims for. This started early last year with the incorporation of SkeletonModifier3D (GH-87888), which restored the majority of baseline functionality. However, there was one area which didn’t make the transiton: IKs.

The process of supporting IKs proved to be far more involved, as it too needed to be incorporated in a way that matched the engine’s standards and expectations. Consequently, that meant a solution that naturally expands off our Node paradigm; a tall order for how many use-cases and scenarios one must consider and account for when dealing with IKs. This resulted in SkeletonModifier3D receiving 8 new subclasses, which are as follows:

Attempting to go over all of these is well beyond the scope of this blog post, so readers wanting more information should check out the pull request for more details. Instead, we’ll show off one of the bugfixes to this new system in (GH-112573), as it provides an easily digestable visualization of that this system is capable of.

Before

gmod-ragdoll.mp3

After

Project manager: Various improvements

The editor recieved a lot of love this development snapshot, with many features well worth a look in the curated highlights. However, for this blog post, we’ll be focusing on an oft-overlooked element of our editor: the project manager. While technically separate from the editor in the traditional sense, it’s editor-exclusive functionality which exists to launch project editors, so they’re invariably intertwined. With the project manager getting an uncharacteristic amount of attention this cycle, here’s a quick lightning-round of changes:

Rindbee is starting things off with an improved UI navigation (GH-101129). The previous implementation clashed with our recent AccessKit integration, as it didn’t lend itself to keyboard navigation. Now a newly procided focus style makes navigation easier than ever:

Next is Malcolm Anderson, who implemented functionality for opening the project in the file explorer as a “Show in File Manager” button (GH-111624). Unfortunately, while a highly-requested feature, it proved to be too cluttered and was slated for a revert. Not being one to throw out the baby with the bathwater, Tomasz Chabora saved the functionality by reimplementing it in the form of a newly-added right-click menu:

Speaking of Tomasz, he’s here to round things off with yet another highly-requested feature: the ability to modify editor settings within the project manager (GH-82212). Now opening a project just to make general adjustments is no longer necessary, as it can all be handled in the much more lightweight context of the project manager:

Buildsystem: Support dedicated profilers

This is unapologetically super-nerd territory, and strictly targeting those who already know what this is talking about. Everyone else, feel free to jump to the curated highlights instead.

It’s rare for our blog posts to mention the buildsystem in any capacity — let alone as a featured highlight — but this is a very special exception: Godot can now natively support dedicated profilers GH-104851! Note that this is separate from Godot’s built-in profiler, as that’s suited for projects running in the engine, rather than the engine itself. Godot’s built-in profiler is still very useful, but these dedicated profilers are a great option for people who are very serious about optimizing Godot or their games.

Thanks to the efforts of Lukas Tenbrink, engine developers will no longer need to manually integrate (and constantly re-integrate) profiling logic to the engine. Instead, they merely need to pass the appropriate path to profiler_path, and our buildsystem will automatically detect and integrate the given profiler. Currently, the buildsystem supports Tracy and Perfetto, but the groundwork exists for additional tools to be integrated down the road.

And more!

There are too many exciting changes to list them all here, but here’s a curated selection:

  • 2D: Fix smart snapping lines to disappear after using the pivot tool (GH-105203).
  • 3D: Add Bresenham Line Algorithm to GridMap Drawing (GH-105292).
  • Core: Add ability to get list of Project Settings changed, similar to Editor Settings functionality (GH-110748).
  • Editor: Add indicator to linked resources (GH-109458).
  • Editor: Allow concurrent unbinding and binding of signal arguments in editor (GH-108741).
  • Editor: Autoloads with UIDs (GH-112193).
  • Editor: Automatically open newly created script (GH-108342).
  • Editor: Fix edit resource on inspector when inside array or dictionary (GH-106099).
  • Editor: Open source code errors in external editor (GH-111805).
  • Editor: Persist fullscreen setting on Android Editor (GH-112246).
  • GUI: PopupMenu: Add theme option for merging icon and checkbox gutters (GH-112545).
  • I18n: Add CSV translation template generation (GH-112149).
  • I18n: Make editor language setting default to Auto (GH-112317).
  • Input: Add support for setting a joypad’s LED light color (GH-111681).
  • Rendering: Apply viewport oversampling to Polygon2D (GH-112352).
  • XR: OpenXR: Add support for frame synthesis (GH-109803).

Changelog

83 contributors submitted 168 fixes for this release. See our interactive changelog for the complete list of changes since 4.6-dev3. You can also review all changes included in 4.6 compared to the previous 4.5 feature release.

This release is built from commit bd2ca13c6.

Downloads

Godot is downloading…

Godot exists thanks to donations from people like you. Help us continue our work:


Make a Donation

Close this popup

Standard build includes support for GDScript and GDExtension.

.NET build (marked as mono) includes support for C#, as well as GDScript and GDExtension.

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.

Known issues

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.

Additionally, SCons fails to detect/utilize Visual Studio 2026 when attempting a build. While not technically an engine issue, a number of contributors have expressed confusion over the lack of support, so it’s worth an explicit mention. This issue has since been resolved upstream, and will be incorporated in the next official release; anyone requiring the fix immediately should build SCons from the source repository.

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.

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).

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 and 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!

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.

Donate now

Dev snapshot: Godot 3.7 dev 1

Although the vast majority of contributors are busily working on Godot 4, a small problematic group refuse to stop improving Godot 3. Since Godot 3.6’s release in September 2024, we have been working hard on the new feature branch, 3.7.

Although a number of features are still in preparation, there have already been a number of improvements since 3.6, so consider this a sneak peek at some of the advances that will be available.

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.

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 for this release.


The cover illustration is from Soul Dier – Part 1, a turn-based JRPG where you embark on a story-driven journey in a mysterious, hand-crafted world. You can buy the game or try out the demo on Steam and follow the developers on their website, YouTube, or Discord.

Highlights

Core

Thanks to work particularly by lawnjelly and Lukas Tenbrink, much of core has been heavily optimized, including faster access to ProjectSettings, faster object casting, move semantics, and use of faster data structures benefiting 2D and 3D.

3D physics interpolation

In tandem with work on Godot 4.5, the 3D physics interpolation has been rewritten from the ground up (GH-103685).

This has enabled us to fix a number of longstanding bugs and usability issues (particularly with non-interpolated tree branches), as well as more accurately representing pivot relationships which should give a smoother result.

Luckily we have already worked through a lot of the bugs in 4.5 betas, but let us know if you spot any!

Blob shadows

As an alternative to traditional shadow mapping, Godot 3.7 introduces support for analytical sphere and capsule soft shadows. While this requires some setup of blob shadow caster nodes, the results can look great, and can perform better than shadow mapping in many situations, and are an attractive option especially on mobile.

BlobShadow illustration

Blob shadows are typically only used on moving objects (as only a limited number of blobs can be used at one time), and are ideally used in conjunction with lightmaps for static geometry.

See (GH-84804) for full details.

Mutable audio drivers

While most of you will be making games with constant audio, those making applications (as well as users of the Editor itself) can now benefit from experimental “mutable audio” via hotswapping the audio driver (GH-63458). This can dramatically reduce CPU usage. Audio is surprisingly one of the biggest CPU hogs in the Editor, despite it rarely playing any sounds!

This is good news especially for those of you using low-power PCs, or developing on battery-powered devices.

Note that we are expecting regressions on some platforms / systems if hotswapping is not supported, this release is experimental and we are using it to identify problem platforms. You can help us by testing this in the editor, by checking that sound effects play correctly. If you encounter problems playing sounds, please report it on GitHub so we can investigate, and temporarily clear the muting flags in the editor in editor_settings/interface/audio/ until we have it fixed.

Bug fixes and backports

As always, in addition to feature work, there have been a number of bugs fixed, and backports from Godot 4.x. These are detailed in the notes below. Of course the flow is two-way. Godot 4.x has also benefited from a number of new features forward ported from 3.x.

And more!

There are too many exciting changes to list them all here, but here’s a curated selection:

  • 2D: Make selected tile in TileSet more visible through red outline (GH-105439).
  • 3D: FTI – global_transform_interpolated() on demand for invisible nodes (GH-107307).
  • 3D: Pre-calculate is_visible_in_tree() (GH-107324).
  • Audio: Add ability to mute AudioServer (GH-63458).
  • Codestyle: Simplify ObjectDB::get_instance() casting (GH-100603).
  • Core: Allow constructing Quat from two Vector3s (GH-90464).
  • Core: Object::call() prevent debug lock accessing dangling pointer (GH-96862).
  • Core: Add move semantics to core containers (GH-100995).
  • Core: Add GLOBAL_GET cached macros (GH-103763).
  • Editor: Cancel tooltips when the mouse leaves the window (GH-95978).
  • Editor: Improve Class display in Create dialog (GH-105459).
  • Editor: Add an editor option to copy system info to clipboard (GH-105674).
  • GDScript: Backport “Cleanup function state connections when destroying instance” for Godot 3 (GH-97464).
  • GUI: Expose some helper methods on Viewport (GH-92573).
  • Input: Fix Xbox Controller on Android (GH-106021).
  • Physics: Fix physics platform behaviour regression (GH-97316).
  • Plugin: Backport “[Editor] Add EditorPlugin::scene_saved signal” (GH-99857).
  • Rendering: Implement glow map effect (GH-93133).
  • Rendering: Physics Interpolation – Move 3D FTI to SceneTree (GH-103685).
  • Rendering: FTI – Add custom interpolation for wheels (GH-105816).
  • Rendering: Blob shadows (GH-84804).
  • VisualScript: Bind Array and Pool*Array get and set functions (GH-96135).

Changelog

44 contributors submitted 130 fixes for this release. See our interactive changelog for the complete list of changes since 3.6-stable.

This release is built from commit a117d512b.

Downloads

Godot is downloading…

Godot exists thanks to donations from people like you. Help us continue our work:


Make a Donation

Close this popup

Standard build includes support for GDScript, GDNative, and VisualScript.

.NET build (marked as mono) includes support for C#, as well as GDScript, GDNative, and VisualScript.

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.

Known issues

There are currently no known issues introduced by this release.

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.

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.

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 3.x releases, but no longer works in this snapshot).

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 and 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!

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.

Donate now