An important part of the new release schedule for Godot is the change in mentality. Instead of working towards “the one true” release, such as has been the case with Godot 4.0, we aim to bring incremental changes to the engine at regular intervals. Godot 4.1 builds on top of the foundation created by the previous release, and we are getting confident in its current state.
This means that 4.1 beta 3 is likely to be the final beta release of this cycle, and the first release candidate is soon to follow. Please make sure to give these builds a good test. If you find an issue that affects your work, please give one of the previous releases a try as well, and Godot 4.0.3 too for good measure. Engine contributors are after regressions at this point, so testing your case with multiple releases ensures that what you’re experiencing is new and thus critical. Don’t hesitate to open bug reports in any case, every bit helps!
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.
The illustration picture for this article is from The Adventures of Mouth Man, an action-packed 3D platformer made by Retrocade Media and friends in just one week for the Pursuing Pixels Game Jam. If you are a fan of quirky retro-looking games, you can check it out for free on itch.io. And you can follow Ashton on Twitter if you want to learn more about his projects.
What’s new
74 contributors submitted around 150 improvements for this release. You can review the complete list of changes with our interactive changelog, which contains links to relevant commits and PRs for this and every previous release.
Here are some of the main changes you might be interested in:
- 2D: Consider all triangles for retention in Delaunay triangulation (GH-78368).
- 2D: Tilemaps: Fix crashes when painting a large area in a tilemap (GH-76548).
- 2D: Tilemaps: Fix TileMap draw preview when switching CanvasItem editor tool (GH-78467).
- 2D: Tilemaps: Fix TileSet set as local to scene (GH-78477).
- 3D: Fix non-functional Node3D
top_level
property (GH-77629). - 3D: Clamp
PathFollow3D
progress when not looping (GH-78280). - 3D: Fix GridMap tile picking when a search filter is applied (GH-78504).
- Animation: Fix insert key crash with no animation (GH-76398).
- Animation: Fix Import Tracks import setting for single clip (GH-78495).
- Audio: Fix AudioListener2D ignoring rotation for positional audio (GH-69027).
- Buildsystem: SCons: Move platform logo/run icon to
export
folder (GH-78435). - C#: Fix issues with special characters in the project name (GH-74516).
- C#: Add version defines to help users deal with breaking changes (GH-78249, GH-78466).
- C#: Add compatibility overloads (GH-78452).
- Core: Fix read-only dictionaries adding missing keys (GH-74730).
- Core: Fix recursive
Node.find_children
(GH-75459). - Core: Properly update NodePaths with batch rename (GH-76376).
- Core: Further fixes for exported typed node arrays (GH-77735).
- Documentation: Display
BitField[Enum]
in docs to distinguish from Enum
(GH-74641). - Editor: Add property hints for debugger/profiler editor settings (GH-75200).
- Editor: Prevent quoted args in
editor/main_run_args
from being split at spaces (GH-75444). - Editor: Fix missing UID handling for binary formats (GH-78326).
- Editor: Fix placement and style of the “Make Floating” button (GH-78350).
- Editor: Allow base types in method params of connection dialog (GH-78354).
- Export: macOS: Finish checking templates before validating texture formats (GH-78455).
- Export: Check if the required texture format is imported in the export dialog (GH-78456).
- GDExtension: Fix GDExtension Variant type conversion (GH-75758).
- GDExtension: Fix wrapping Objects in GDExtension that aren’t exposed (GH-78061).
- GDExtension: Fix
Ref<>.is_valid()
for ScriptInstanceExtension (GH-78392). - GDExtension: Use
Uninitialized*Ptr
for constructors/converters using placement new (GH-78419). - GDScript: Fix: Typed arrays aren’t working with + (GH-73540).
- GDScript: Allow to reference a class constructor as a
Callable
(GH-73657). - GDScript: Allow boolean operators for all Variant types (GH-74741).
- GDScript: Fix several issues with static variables and functions (GH-77129).
- GDScript: Allow
String
s and StringName
s match each other in a match
statement (GH-78389). - GUI: Expose all auto-wrap modes in
TextEdit
(GH-74813). - GUI: Fix multithreaded resizing in
RichTextLabel
(GH-78241). - GUI: Add method to check if native window is focused (GH-78262).
- GUI: Fix position and size of the
MenuButton
popup (GH-78269). - GUI: Fix wrong order in auto-completion sorting with empty string to complete (GH-78321).
- Import: Fix Basis Universal compressing with normal maps (GH-62718).
- Import: Respect
compress_binary_resources
editor setting on scene import (GH-76630). - Input: Fix
OS.find_scancode_from_string
not working with modifiers (GH-47996). - Input: Fix clearing custom cursor (GH-74511).
- Navigation: Add agent pause mode to
NavigationServer
(GH-75888). - Navigation: Fix
NavigationAgent2D
path debug hidden behind canvas items (GH-78438). - Network: Allow
ENetConnection
to send a packet to an arbitrary destination (GH-77627). - Physics: Improve rigid body CCD against moving bodies (GH-76138).
- Plugin: Add relative path support for
EditorPlugin.add_autoload_singleton
(GH-78109). - Porting: Android: Allow exporting release builds without a debug keystore (GH-78123).
- Porting: Linux/BSD: Fix
bsd
feature tag includes only “other BSDs” (GH-78272). - Porting: Linux/BSD: Fix temporary file permissions (GH-78347).
- Rendering: Add RENDERING_INFO parameters to GL Compatibility renderer (GH-77536).
- Rendering: Ensure filter/repeat is cached by Viewport texture in GL Compatibility renderer (GH-78285).
- Rendering: Copy texture filter/repeat modes when replacing a texture in the GL Compatibility backend (GH-78287).
- Rendering: Fix invalid RID errors when freeing a mesh with blend shapes (GH-78433).
- Rendering: Fix volumetric fog in stereo by projection vertex in combined space (GH-78436).
- Documentation and translation updates.
This release is built from commit ada712e06.
Downloads
The downloads for this dev snapshot can be found directly on our repository:
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 list of known bugs in the 4.1 milestone.
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 4.0.x, but no longer works in 4.1 beta 3).
Support
Godot is a non-profit, open source game engine developed by hundreds of contributors on their free time, and a handful of part or full-time developers hired thanks to donations from the Godot community. A big thank you to everyone who has contributed their time or 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 on Patreon or PayPal.