Godot 4.1 is celebrating its 3 month anniversary this week, and that means Godot 4.2 is entering the beta testing phase shortly after. This development cycle has been packed with bugfixes and other improvements. As always, we take the safest of these contributions and we compile them into a patch release for the current stable version of the engine.
Such is the case of Godot 4.1.2, which is officially available starting today! Engine contributors provided fixes for almost every area of the engine, so make sure to read the changelog below. Here’s a short summary of some of the more interesting changes.
A number of performance issues have been addressed in rendering (GH-80070, GH-80407), GUI (GH-79325, GH-80857), and engine core (GH-81037). The latter fix should also improve the memory profile of the engine if you instance a lot of plain objects.
Another series of changes in rendering squashes a variety of conditions for crashes, and improves the visuals by fixing glitches (GH-80485, GH-79660) and removing leaks when using the lightmapper on Vulkan (GH-81872).
A previously reported issue with Steam Input and gamepads causing some input events to be doubled is addressed by 4.1.2 (GH-76045). This issue affects the Linux platform, which means it’s a very welcome fix for all Steam Deck developers and users.
Another critical platform-specific bug has been identified for the web platform, with file system operations failing and causing issues for developers and users of Godot’s own online editor. It is now fixed (GH-79866), which means you can once again save your projects while working on the web.
As many game developers compile Godot and its custom forks by themselves, it’s important for us to ensure buildsystem stability and flexibility as well as that of the rest of the engine — even for previous releases. This version includes fixes to XCode 15 compatibility (GH-82458), a number of changes reducing build times (GH-80612, GH-80482, GH-81144), as well as Visual Studio and MSVC quality-of-life improvements (GH-79238).
The illustration picture used in this announcement comes from Robot Detour — a puzzle game by Nozomu Games made with Godot 4. Flex your brains as you operate cute robots attached to a stretchy string through challenges and traps, and don’t get entangled, because the demo comes out later this year! For now, you can follow Nozomu Games on Twitter for more updates and check out their previous games on itch.io.
60 contributors made 154 pull-requests (or 161 commits) as a part of this release. See the curated changelog for a list of most notable differences, or browse our interactive changelog for a complete list of changes with links to relevant PRs and commits.
Here are the main changes since 4.1.1-stable:
- 2D: Fix Camera2D crash when edited scene root is null (GH-79645).
- 2D: Fix
CanvasModulatelogic for modulating the canvas (GH-79747).
- 3D: Fix VoxelGI saving VoxelGIData as a built-in file when prompted to save to an external file (GH-78772).
- 3D: Change property hint range for camera attributes exposure multiplier (GH-79138).
- 3D: Fix Curve3D baking up vectors for nontrivial curves (GH-81885).
- Animation: Fix
Animation::subtract_variantfor affine transforms (GH-79279).
- Animation: Fix
AnimationNodeTransitionwith negative time scale (GH-79403).
- Animation: Remove animation tracks with correct indices (GH-81651).
- Audio: Fix audio stream generators getting freed accidentally (GH-81508).
- Buildsystem: Allow unbundling OpenXR (for Linux distros) (GH-73443).
- Buildsystem: Disable C++ exception handling (off by default in 4.1) (GH-80612).
- Buildsystem: macOS: Fix builds with XCode 15 (GH-82458).
- Buildsystem: MSVC: Pass build options configuration to Visual Studio projects (GH-79238).
- Buildsystem: MSVC: Make incremental linking optional (GH-80482, GH-81144).
- Buildsystem: MSVC: Enable
/WXon LINKFLAGS with
- C#: Fix deserialization of delegates that are 0-parameter overloads (GH-78877).
- C#: Add missing
useModelFrontparameter to GodotSharp Basis and Transform (GH-79082).
- C#: Hide hostfxr not found error (GH-81690).
- C#: Fix compatibility with Visual Studio 2022 for macOS (GH-81802).
- Core: Fix range error for
- Core: Fix byte to float color conversion in
- Core: Fix recursion level check for array stringification (GH-79370).
- Core: Fix global transform validity for
- Core: Fix recursion level check for
VariantWriter::write()with objects (GH-81123).
- Core: Fix string conversion for -0.0 float values (GH-81328).
- Editor: Fix history mismatch (GH-78827).
- Editor: Improve resolution of script type icons (GH-79203, GH-81336).
- Editor: Don’t use splash minimum display time in editor (GH-79388).
- Editor: Automatically add path to built-in scripts (GH-79920).
- Editor: Use
ui_acceptto confirm and close text prompts (GH-81189).
- Export: Fix Windows console wrapper and icon being swapped (GH-80357).
- GDExtension: Fix version check for GDExtension (GH-80591).
- GDExtension: Fix overriding
_export_endfrom GDExtension (GH-80999).
- GDScript: Fix conflict between property and group names (GH-78254).
- GDScript: Properly track extents of constants (GH-79301).
- GDScript: Fix POT generator crash on assignee with index (GH-82004).
- GUI: Fix
Treeperformance regression by using cache (GH-79325).
- GUI: Fix
root_node_layout_directionproject setting being incorrectly exposed as a range (GH-79611).
- GUI: Fix
CodeEditcompletion being very slow in certain cases (GH-80472).
- GUI: RTL: Improve performance by using list iterators for item/paragraph removal (GH-80857).
- GUI: Enable transparent background for GUI tooltips (GH-81669).
- Import: Use image index instead of texture index for
- Input: Prevent double input events on gamepad when running through Steam Input (GH-76045).
- Input: Android: Set
echoproperty for the physical keyboard events (GH-79089).
- Navigation: Fix NavigationObstacle2D debug position (GH-79392).
- Navigation: Fix NavMesh
map_update_idreturning 0 results in errors (GH-80189).
- Network: Prevent crash when accessing
NodeMultiplayer from thread (GH-79332).
- Network: ENet: Better handle truncated socket messages (GH-79699).
- Network: ENet: Properly set transfer flags when using custom channels (GH-80293).
- Network: Web: Always return -1 as body length in HTTPClientWeb (GH-79846).
- Particles: Add motion vector support for GPU 3D Particles (GH-80688).
- Porting: Fix file permissions for the web platform (affects every Unix-like platform) (GH-79866).
- Porting: macOS: Fix uncapped frame rate for windows in the non-active workspaces (GH-79572).
- Porting: Web: Fix
- Rendering: Enable depth writes during shadow pass and depth pass, disable during color pass (GH-80070).
- Rendering: Fix motion vectors being corrupted when using
- Rendering: Remove GPU readback from
- Rendering: Clamp Volumetric Fog Length property to prevent rendering issues (GH-80485).
- Rendering: Propagate error correctly when max texture size for lightmaps is too small (GH-81543).
- Rendering: Add half-pixel offset to lightmapper rasterization (GH-81872).
- Rendering: GLES3: Reset anisotropic filtering when changing texture filtering mode (GH-79568).
- Rendering: GLES3: Fix multimesh rendering when using colors or custom data (GH-79660).
- Rendering: GLES3: Fix memory access error for
- Rendering: Vulkan: Fix texture update (GH-80781).
- Rendering: Vulkan: Fix crash with many Omni/SpotLights, Decals or ReflectionProbes (GH-80845).
- Shaders: Allow more hint types for uniform arrays (GH-79100).
- Shaders: Fix shader type detection (GH-79287).
- Shaders: Fix Shader and ShaderInclude resource loading (GH-80705).
- XR: Fix issue with accessing hand tracking without timing info (GH-78817).
- XR: Ensure OpenXR classes are declared properly (GH-81037).
Thirdparty: FreeType 2.13.2, ICU4C 73.2, libpng 1.6.40, libwebp 1.3.2, mbedtls 2.28.4, miniupnpc 2.2.5, openxr 1.0.28, tinyexr 1.0.7.
- As well as many improvements to the documentation.
Edited on October 11, 2023.
One regression was identified for iOS export when using Xcode 14 or earlier (GH-83085), caused by a fix to support the new Xcode 15. The regression fix (GH-83088) was applied directly to the export templates archive, so users who downloaded 4.1.2 export templates prior to October 11, 2023 should re-download them if they intend to export projects to iOS with Xcode 14 or earlier.
Aside from the above, there are no known incompatibilities with previous Godot 4.1.x releases. We encourage all users to upgrade to 4.1.2.
If you experience any unexpected behavior change in your projects after upgrading to 4.1.2, please file an issue on GitHub.
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!
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.