Release candidate: Godot 4.5.1 RC 1
It’s been just over two weeks since the release of Godot 4.5, and the overwhelmingly positive community response has been an absolute treat to behold! Our hard-working contributors have taken this energy to kick-start the development phase of Godot 4.6, resulting in our first snapshot coming out earlier this week.
In saying that, the main focus was always going to be hammering out newly reported regressions encountered in the 4.5 release, and integrating any fixes deemed too risky to merge at the time. As such, we’ve already prepared a healthy number of regression fixes for a 4.5.1 maintenance release. This release candidate is intended to validate the fixes in an environment isolated from the new enhancements and features that 4.6 is already boasting. Your testing is crucial to detect and squash any new issues that weren’t present in 4.5-stable, in order to ensure that this hotfix is as clean of an upgrade as possible.
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 illustration picture for this article comes from Coal LLC, a capitalism simulator where you fulfill increasingly absurd quotas through increasingly dubious methods. You can buy the game or try out the demo on Steam, and follow the developers on their website.
What’s new
31 contributors submitted 33 improvements for this release. See our interactive changelog for the complete list of changes since the 4.5-stable release.
- Audio: Add one padding frame to QOA buffer for short streams (GH-110515).
- Buildsystem: Windows: Migrate
godot.manifest
toplatform/windows
, include as dependency (GH-110897). - Core: Initialize
Quaternion
variant with identity (GH-84658). - Core: Avoid repeated
_copy_on_write()
calls inArray::resize()
(GH-110535). - Core: Check for
NUL
characters in string parsing functions (GH-110556). - Core: X11 input: prevent non-printable keys from producing empty strings (GH-110635).
- Documentation: Document typed dictionaries and arrays in the class reference (GH-107071).
- Documentation: Clarify that velocity doesn’t need delta multiplication in CharacterBody documentation (GH-109925).
- Documentation: Document the interaction between Light3D cull mask and GI/volumetric fog (GH-110423).
- Documentation: Fix Basis.determinant() doc: uniform scale determinant is scale^3 (GH-110424).
- Editor: Correct the order of Diagonal Mode in Add Property (GH-109214).
- Editor: Fix typos in BlendSpace2D editor’s axis labels’ accessibility names (GH-109847).
- Export: Android: Ensure proper cleanup of the fragment (GH-109764).
- Export: Metal: Fix Metal compiler version inspection (GH-110873).
- GDExtension: Fix
--dump-extension-api-with-docs
indentation (GH-110557). - GUI: Fix LineEdit icon positon in right-to-left layout (GH-109363).
- Import: Material Conversion Error Handling (GH-109369).
- Navigation: [Navigation 2D] Fix sign of cross product (GH-110815).
- Navigation: Make navmesh rasterization errors more lenient (GH-110841).
- Physics: Fix bug in ManifoldBetweenTwoFaces (GH-110507).
- Physics: Fix CCD bodies adding multiple contact manifolds when using Jolt (GH-110914).
- Porting: Workaround X11 crash issue (GH-106798).
- Rendering: DirectX DescriptorsHeap pooling on CPU (GH-106809).
- Rendering: Disable unsupported SSR, SSS, DoF on transparent viewports (GH-108206).
- Rendering: Windows: Try reading GPU driver information directly from registry (GH-109346).
- Rendering: Compatibility: Fix backface culling gets ignored when double-sided shadows are used (GH-109793).
- Rendering: OpenXR: Fix ViewportTextures not displaying correct texture (OpenGL) (GH-110002).
- Rendering: Increase precision of SpotLight attenuation calculation to avoid driver bug on Intel devices (GH-110363).
- Rendering: Move check for sky cubemap array back into the SkyRD initializer (GH-110627).
- Rendering: Fix OpenXR with D3D12 using the wrong clip space projection matrix (GH-110865).
- Rendering: Fix d3d12 stencil buffer not clearing (GH-111032).
- Rendering: Sort render list correctly in RD renderers (GH-111054).
- XR: Fix late destruction access violation with OpenXRAPIExtension object (GH-110868).
This release is built from commit c834443ef
.
Downloads
Godot is downloading…
Godot exists thanks to donations from people like you. Help us continue our work:
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
During the Release Candidate stage, we focus exclusively on solving showstopping regressions (i.e. something that worked in a previous release is now broken, without workaround). You can have a look at our current list of regressions and significant issues which we aim to address before releasing 4.5.1. This list is dynamic and will be updated if we discover new showstopping issues after more users start testing the RC snapshots.
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.
Unciv: 4.18.3
Dev snapshot: Godot 4.6 dev 1
The first development snapshot for 4.6 has arrived! As is often the case for our first development snapshot, a significant portion of quality PRs from our backlog are finally able to see the light of day, as they were either locked out from the 4.5 feature freeze or deemed too risky to merge for the stable release. In saying that though, this is by far the biggest our backlog has ever been, so getting it all in for an initial snapshot was unrealistic. As such, while this may mean a slower trickle of PRs initially, you can expect future development snapshots to further expand on the foundation that this release sets.
The overwhelming majority of changes this time around are bugfixes, with most already slated to be backported to 4.5.1-stable in the very near future! In a sense, this release is serving not only as a foundation for 4.6, but for 4.5.1 as well; meaning, testing this build is crucial to ensure a smooth release for both. However, we’ve already got quite a few enhancements and features integrated that will remain exclusive to 4.6, so those wishing to stick with 4.5 may want to hold out for 4.5.1-rc1 coming later this week.
As usual, safety precautions should be taken with any pre-release environment. While we prepare these snapshots with the intent to be suitable for general testing, there will always be a non-zero risk of data loss/corruption. Creating backups before hand and/or utilizing version control are strongly recommended!
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 RAM: Random Access Mayhem, a rougelike where you play as the enemies. You can buy the game or try out the demo on Steam, and follow the developers on Twitter or YouTube.
Highlights
Drag-and-drop @export
variables
Part of starting out slow with enhancements in the development cycle means that you can expect quite a lot of QOL additions in the near future. One such addition that we’re excited to showcase comes from fkeyz: the ability to drag-and-drop objects to the script editor to automatically create an exported variable! (GH-106341)
OpenXR: Add support for Spatial Entities Extensions
As Bastiaan Olij notes in his PR GH-107391, the OpenXR Spatial Entities Extensions was introduced to standardize obtaining and interacting with information about the user’s real world environment. This is an absolute goliath of a specification, and is reflected in the implementation seeing over 75 hundred lines of code changed. If you’re interested in seeing the changes firsthand (and have the necessary equipment for it), be sure to check out Bastiaan’s accompanying demo project.
Hide Control
focus when given via mouse input
Courtesy of Michael Alexsander, the focus state logic for mouse and touch is now decoupled from keyboard and joypad (GH-110250). While it’s common for programs to have significant overlap between registering inputs of these types, it’s not uncommon for systems to deliberately stylize the two types separately, often handling their inputs in entirely separate ways. This change enables that granular control for toolmakers and UI designers. Included in the PR is a comprehensive ruleset for when focus is shown, which we’ve included below:
Situation | |
---|---|
Clicking a Control with the mouse, giving it focus. |
❌ |
Successfully switching focus via keyboard/joypad actions. | ✔️ |
Attempting to switch focus via keyboard/joypad actions but still remaining on the same Control . |
✔️ |
Clicking somewhere with the mouse while having a Control with visible focus. |
❌ |
Clicking with the mouse a visibly focused Control (deviates from how it works in browsers). |
❌ |
Using Control.grab_focus(true) . |
❌ |
The previous behavior can be achieved by enabling gui/common/always_show_focus_state
.
Remove prompt to restart editor after changing custom theme
A common pain-point we’ve heard from creators attempting to integrate custom themes for the Godot editor itself is how pace-breaking the process can feel. This was a direct result of swapping between themes requiring a hard reset of the entire editor instance, making incremental tests tedious and realtime comparison virtually impossible. This makes sense, of course, as an editor’s theme is surely baked into the editor itself such that any change of the sort would need to jump through countless hurdles to make this feature possible. After all, you can’t just flip a switch and have everything “just work”.
Anyway, Robert Yevdokimov flipped a switch and everything “just worked”. (GH-100876)
Oops.
To clarify: once-upon-a-time this reset was almost certainly necessary. Our internal logic for theming and customization is unrecognizable compared to their humble beginnings, and this is far from the first setting that was elevated to real-time support. It’s common for settings that become real-time to have a PR that explicitly targets the feature in question, but it’s rare for such features to have their changes exist in a vacuum. Perhaps there are other features out there, just like this, that have pre-conceived restrictions long-addressed without anyone realizing it. Until someone shows up to challenge those restrictions, we may never know.
The theme showcased for comparison is the Godot Minimal Theme by passivestar.
And more!
There are too many exciting changes to list them all here, but here’s a curated selection:
- 2D: Avoid unnecessary updates in
TileMapLayer
(GH-109243). - 3D: Do not require editor restart when changing manipulator gizmo opacity setting (GH-108549).
- C#: Add C# translation parser support (GH-99195).
- Core: Add ‘Find Sequence’ to
Span
s, and consolidate negative indexing behavior (GH-104332). - Editor: Allow to use sliders for integers in
EditorSpinSlider
(GH-110459). - Editor: FindInFiles: Show the number of matches for each file (GH-110770).
- Editor: Fix vertical alignment of Inspector category titles (GH-110303).
- Editor: Show “No Translations Configured” message for empty translation preview menu (GH-107649).
- Editor: Speed up large selections in the editor (GH-109515).
- Editor: Use a fixed-width font for the expression evaluator (GH-109166).
- Export: Add “Show Encryption Key” toggle (GH-106146).
- GDScript: Elide unnecessary copies in
CONSTRUCT_TYPED_*
opcodes (GH-110717). - Import: Switch LOD generation to use iterative simplification (GH-110027).
- Porting: Wayland: Implement the xdg-toplevel-icon-v1 protocol (GH-107096).
- Rendering: Add methods to draw ellipses (GH-85080).
- Rendering: Add ubershader support to material and SDF variants in Forward+ (GH-109401).
Changelog
98 contributors submitted 220 fixes for this release. See our interactive changelog for the complete list of changes since the 4.5-stable.
This release is built from commit 8d8041bd4
.
Downloads
Godot is downloading…
Godot exists thanks to donations from people like you. Help us continue our work:
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
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 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.