Safety goggles on, people! Features and Quality-of-Life are being integrated at blinding speeds; precautions must be taken to view them head-on. Once secure, we can dive into what’s shaping up to be one of the final development snapshots before 4.4-beta builds roll out! Keep in mind that while we try to make sure each dev snapshot is stable enough for general testing, 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. 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, XR editor, or the Android editor for this release (join the Android editor testing group to get access to pre-release builds). Jump to the Downloads Downloads section Web editor Web editor XR editor XR editor Android editor Android editor testing group The original cover illustration is from Malware, an installation simulator where players must navigate a minefield of circa-1999 malware! It is developed by Odd Games. You can purchase the game on Steam. The original cover illustration is from Malware Malware an installation simulator where players must navigate a minefield of circa-1999 malware! It is developed by Odd Games. You can purchase the game on Steam. Odd Games on Steam Highlights In case you missed them, see the 4.4 dev 1, 4.4 dev 2, 4.4 dev 3, 4.4 dev 4, and 4.4 dev 5 release notes for an overview of some key features which were already in those snapshots, and are therefore still available for testing in dev 6. 4.4 dev 1 4.4 dev 2 4.4 dev 3 4.4 dev 4 4.4 dev 5 Here are highlights of a few new features in dev 6 that you might find particularly exciting! Camera3D preview in inspector Previously, adjusting the view of a Camera3D in a scene could be a chore to handle. It required activating the camera you wanted to preview, and then reverting it back if it wasn’t the main camera. You could pin a preview of a camera in a dedicated viewport, but that meant reducing the real-estate of your main viewport. Camera3D Now, with Haoyu Qiu’s feature (GH-90778), every selected 3D camera shows a preview inside the inspector. No switching cameras needed to preview anymore. Haoyu Qiu GH-90778 CollisionShape3D debug color customization 3D collision shapes now have parity with their 2D counterparts with the newly added debug_color and debug_fill properties, which lets you customize the appearance of debug collision shapes in the editor, or at runtime if “Visible Collision Shapes” is enabled in the Debug menu. Thanks to first-time contributor BattyBovine for implementing this much-requested proposal (GH-90644). debug_color debug_fill BattyBovine GH-90644 Replace internal CSG implementation with Manifold library Godot added support for CSG, or Constructive Solid Geometry, back in 3.1. This is a great tool for rapidly prototyping level geometry or even simple props and characters by combining 3D primitives with various boolean operations (union, intersection, subtraction). back in 3.1 Our implementation suffered from a number of bugs and stability issues, with no dedicated maintainer to tackle them. Thankfully, a great open source library has been released since then which can be used as a well-maintained replacement for our CSG internals: Emmett Lalish’s Manifold. Emmett Lalish Manifold Ernest Lee did an amazing work implementing Manifold in Godot, with help from Emmett to ensure that the library fits our requirements (GH-94321). As this is a fairly big change to how Godot’s CSG works internally (but with minimal impact on the user API), you might notice differences in your projects using CSG. Please report any change that appears to have a negative impact on your usage. Ernest Lee GH-94321 Runtime WAV file loading First-time contributor cherry 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). cherry GH-93831 Extend Curve to allow for domains outside of [0, 1] [0, 1] Have you ever wished that you could edit a Curve in a domain that goes beyond the normalized [0, 1] range? ocean finally got their implementation of this feature merged (GH-67857), which should give you greater flexibility in how to map your functions and data to Godot’s ubiquitous Curve resource. Curve [0, 1] ocean GH-67857 Temporary file and directory utilities Tool creators, Adam Scott cooked a little something that could be interesting for you. A brand new API lets you create and dispose of temporary files. Handy if you need to write content on disk, but without worrying about polluting user data. These temporary files and directories even dispose of themselves after use by default. For more information, see (GH-98397). Adam Scott GH-98397 And more! There are too many exciting changes to list them all here, but here’s a curated selection: 2D: Change how multi selection scale is applied to canvas item (GH-99506). 2D: Ensure primitive meshes are created before connected to changed signal (GH-99740). 3D: Add ShadowCastingSetting to MeshLibrary / GridMap items (GH-85443). 3D: Add CollisionShape3D custom debug colors (GH-90644). 3D: Add Camera3D preview in Inspector (GH-90778). 3D: Allow tool scripts to alter transform of Node3DEditorViewport camera (GH-93503). 3D: Fix mesh corruption of CSG by using elalish/manifold (GH-94321). 3D: Adjust VoxelGI gizmo opacity (GH-99969). Animation: Add persistent folding to Animation Library Editor (GH-86481). Animation: Fix crash when re-importing model with AnimationPlayer panel open and node selected (GH-95795). Animation: Add RetargetModifier3D for realtime retarget to keep original rest (GH-97824). Animation: Prioritize proximity to green arrow when selecting overlapping transitions in AnimationNodeStateMachine (GH-98401). Audio: Add runtime file loading to AudioStreamWAV (GH-93831). Audio: Fix AudioStreamPlayer2D/3D’s get_playback_position returning 0 right after calling seek (GH-99759). C#: Preserve no-hint behavior for unmarshallable generics in dictionaries (GH-99485). Core: RegEx: Fix handling of unset/unknown capture groups (GH-73973). Core: FileAccess: Return error codes from store_* methods (GH-78289). Core: Avoid duplicating signals from scene instances into packed scenes (GH-97303). Core: Make loading translations from threads safe (GH-99527). Core: Do not generate *.uid files for JSON, certificates, and translations (GH-99540). Core: Convert line breaks to \n and strip line break from the end of string returned by OS::read_string_from_stdin/OS::get_stdin_string (GH-99542). Core: Fix OS::has_feature() skipping custom features (GH-99864). Core: Add temp utilities (alias OS::get_temp_dir(), FileAccess::create_temp(), and DirAccess::create_temp()) (GH-98397). Editor: Extend Curve to allow for domains outside of [0, 1] (GH-67857). Editor: Implement zooming and panning in the profiler (GH-76055). Editor: Fix jumping to editor help does not scroll correctly sometimes (GH-96449). Editor: Show file names in remove files confirmation dialog (GH-98539). Editor: Add editor setting to stop the bottom panel from switching to the Stack Trace (GH-98657). Editor: Don’t tint editor bottom panel icons when hovered or pressed (GH-98765). Editor: Add copy button to toast notification (GH-98778). Editor: Enable editing of controls inside viewports in editor (GH-99401). Editor: Improve appearance of external links in built-in docs (GH-99480). Editor: Make the alt selection menu available for all modes (GH-99795). Export: Ensure excluded GDExtension files are not included in extension_list.cfg (GH-97216). Export: Write text server data from memory, instead of using temporary file (GH-99164). GDExtension: Register Engine, OS, ProjectSettings, and Time singletons in time for INITIZATION_LEVEL_CORE (GH-98862). GDExtension: Support extension icons in ScriptCreateDialog (GH-98914). GDScript: Fix crash when division by zero/modulo by zero happen on vectors (GH-95172). GDScript: Improve GDScript autocompletion for methods (GH-99102). GDScript: LSP: Fix spec violations that break the VSCode outline (GH-99295). GDScript: Core: Fix built-in enum constant bindings (GH-99424). GDScript: Support tracking multiple analyzer and runtime errors in tests (GH-99490). GUI: Add a Viewport method to get automatically computed 2D stretch transform (GH-80965). GUI: Make FileDialog filtering case insensitive (GH-85789). GUI: Make TextEdit autocompletion replace word unless Shift is held (GH-90723). GUI: Reshape and update button on oversampling change (GH-95511). GUI: Prevent infinite recursion in first _draw (GH-97328). GUI: Add theme type variations for secondary Trees and ItemLists (GH-97884). GUI: RTL: Add support for vertical alignment (GH-97963). GUI: Introduce a SubViewportContainer config for drag-and-drop target locations (GH-99270, GH-99691). GUI: Fix SVG font rendering (GH-99459). GUI: Add tooltip support to meta/url tag (GH-99481). Import: Generate thumbnails on imported scenes (GH-96544). Import: Blend file import: Don’t keep original files when not unpacking them (GH-96782). Import: Betsy: Add BC3 and BC5 support (GH-99537). Multiplayer: Fix UID support in MultiplayerSpawner (GH-99712). Navigation: Improve NavMeshQueries3D::polygons_get_closest_point_info performance (GH-97928). Navigation: Make NavMap objects request sync only on demand (GH-99646). Network: Add half precision floating point support to StreamPeer and FileAccess (GH-97716). Network: Allow disabling UPNP implementation on the Web (GH-99597). Physics: Fix GodotSpace3D::test_body_motion() not setting local_shape (GH-99901). Porting: Android: Fix immersive mode issue (GH-98917). Porting: macOS: Change the shortcut for Align Transform with View (GH-94026). Porting: Unix: Don’t create world-writable files when safe save is enabled (GH-96399). Porting: Windows: Fix restoring fullscreen window (GH-98631). Porting: Windows: Fix Inspector tooltips blinking on Windows (GH-99988). Porting: Windows: Improve frame pacing by busy waiting as needed (GH-99833). Porting: Implement DisplayServer.beep (GH-99371). Rendering: Optimize RenderForwardClustered::_setup_render_pass_uniform_set by reducing Vector allocations (GH-94368). Rendering: Deprecate the pointless unsafe threading model for rendering (GH-98383). Rendering: Automatically resolve initial and final action for draw lists (GH-98670). Rendering: Fix occlusion culling for double builds by enforcing float conversion for Embree (GH-98770). Rendering: Mask out shadows on CanvasItems that don’t have a matching item_shadow_mask (GH-98835). Rendering: Add lightmap bake cancelling (GH-99483). Rendering: Add VoxelGI bake cancelling and progress UI improvement (GH-99562). Rendering: Fix ReflectionProbe AABB (GH-99802). Shaders: Allow SCREEN_UV to be used in light function of spatial shader (GH-94981). Shaders: VisualShader: Add LinearToSRGB and SRGBToLinear to ColorFunc node (GH-97388). 2D: Change how multi selection scale is applied to canvas item (GH-99506). GH-99506 2D: Ensure primitive meshes are created before connected to changed signal (GH-99740). GH-99740 3D: Add ShadowCastingSetting to MeshLibrary / GridMap items (GH-85443). GH-85443 3D: Add CollisionShape3D custom debug colors (GH-90644). GH-90644 3D: Add Camera3D preview in Inspector (GH-90778). GH-90778 3D: Allow tool scripts to alter transform of Node3DEditorViewport camera (GH-93503). GH-93503 3D: Fix mesh corruption of CSG by using elalish/manifold (GH-94321). GH-94321 3D: Adjust VoxelGI gizmo opacity (GH-99969). GH-99969 Animation: Add persistent folding to Animation Library Editor (GH-86481). GH-86481 Animation: Fix crash when re-importing model with AnimationPlayer panel open and node selected (GH-95795). GH-95795 Animation: Add RetargetModifier3D for realtime retarget to keep original rest (GH-97824). GH-97824 Animation: Prioritize proximity to green arrow when selecting overlapping transitions in AnimationNodeStateMachine (GH-98401). GH-98401 Audio: Add runtime file loading to AudioStreamWAV (GH-93831). AudioStreamWAV GH-93831 Audio: Fix AudioStreamPlayer2D/3D’s get_playback_position returning 0 right after calling seek (GH-99759). get_playback_position 0 seek GH-99759 C#: Preserve no-hint behavior for unmarshallable generics in dictionaries (GH-99485). GH-99485 Core: RegEx: Fix handling of unset/unknown capture groups (GH-73973). GH-73973 Core: FileAccess: Return error codes from store_* methods (GH-78289). store_* GH-78289 Core: Avoid duplicating signals from scene instances into packed scenes (GH-97303). GH-97303 Core: Make loading translations from threads safe (GH-99527). GH-99527 Core: Do not generate *.uid files for JSON, certificates, and translations (GH-99540). *.uid GH-99540 Core: Convert line breaks to \n and strip line break from the end of string returned by OS::read_string_from_stdin/OS::get_stdin_string (GH-99542). \n OS::read_string_from_stdin OS::get_stdin_string GH-99542 Core: Fix OS::has_feature() skipping custom features (GH-99864). OS::has_feature() GH-99864 Core: Add temp utilities (alias OS::get_temp_dir(), FileAccess::create_temp(), and DirAccess::create_temp()) (GH-98397). OS::get_temp_dir() FileAccess::create_temp() DirAccess::create_temp() GH-98397 Editor: Extend Curve to allow for domains outside of [0, 1] (GH-67857). [0, 1] GH-67857 Editor: Implement zooming and panning in the profiler (GH-76055). GH-76055 Editor: Fix jumping to editor help does not scroll correctly sometimes (GH-96449). GH-96449 Editor: Show file names in remove files confirmation dialog (GH-98539). GH-98539 Editor: Add editor setting to stop the bottom panel from switching to the Stack Trace (GH-98657). GH-98657 Editor: Don’t tint editor bottom panel icons when hovered or pressed (GH-98765). GH-98765 Editor: Add copy button to toast notification (GH-98778). GH-98778 Editor: Enable editing of controls inside viewports in editor (GH-99401). GH-99401 Editor: Improve appearance of external links in built-in docs (GH-99480). GH-99480 Editor: Make the alt selection menu available for all modes (GH-99795). GH-99795 Export: Ensure excluded GDExtension files are not included in extension_list.cfg (GH-97216). extension_list.cfg GH-97216 Export: Write text server data from memory, instead of using temporary file (GH-99164). GH-99164 GDExtension: Register Engine, OS, ProjectSettings, and Time singletons in time for INITIZATION_LEVEL_CORE (GH-98862). INITIZATION_LEVEL_CORE GH-98862 GDExtension: Support extension icons in ScriptCreateDialog (GH-98914). GH-98914 GDScript: Fix crash when division by zero/modulo by zero happen on vectors (GH-95172). GH-95172 GDScript: Improve GDScript autocompletion for methods (GH-99102). GH-99102 GDScript: LSP: Fix spec violations that break the VSCode outline (GH-99295). GH-99295 GDScript: Core: Fix built-in enum constant bindings (GH-99424). GH-99424 GDScript: Support tracking multiple analyzer and runtime errors in tests (GH-99490). GH-99490 GUI: Add a Viewport method to get automatically computed 2D stretch transform (GH-80965). GH-80965 GUI: Make FileDialog filtering case insensitive (GH-85789). FileDialog GH-85789 GUI: Make TextEdit autocompletion replace word unless Shift is held (GH-90723). GH-90723 GUI: Reshape and update button on oversampling change (GH-95511). GH-95511 GUI: Prevent infinite recursion in first _draw (GH-97328). _draw GH-97328 GUI: Add theme type variations for secondary Trees and ItemLists (GH-97884). GH-97884 GUI: RTL: Add support for vertical alignment (GH-97963). GH-97963 GUI: Introduce a SubViewportContainer config for drag-and-drop target locations (GH-99270, GH-99691). SubViewportContainer GH-99270 GH-99691 GUI: Fix SVG font rendering (GH-99459). GH-99459 GUI: Add tooltip support to meta/url tag (GH-99481). GH-99481 Import: Generate thumbnails on imported scenes (GH-96544). GH-96544 Import: Blend file import: Don’t keep original files when not unpacking them (GH-96782). GH-96782 Import: Betsy: Add BC3 and BC5 support (GH-99537). GH-99537 Multiplayer: Fix UID support in MultiplayerSpawner (GH-99712). GH-99712 Navigation: Improve NavMeshQueries3D::polygons_get_closest_point_info performance (GH-97928). NavMeshQueries3D::polygons_get_closest_point_info GH-97928 Navigation: Make NavMap objects request sync only on demand (GH-99646). GH-99646 Network: Add half precision floating point support to StreamPeer and FileAccess (GH-97716). StreamPeer FileAccess GH-97716 Network: Allow disabling UPNP implementation on the Web (GH-99597). GH-99597 Physics: Fix GodotSpace3D::test_body_motion() not setting local_shape (GH-99901). GodotSpace3D::test_body_motion() local_shape GH-99901 Porting: Android: Fix immersive mode issue (GH-98917). GH-98917 Porting: macOS: Change the shortcut for Align Transform with View (GH-94026). GH-94026 Porting: Unix: Don’t create world-writable files when safe save is enabled (GH-96399). GH-96399 Porting: Windows: Fix restoring fullscreen window (GH-98631). GH-98631 Porting: Windows: Fix Inspector tooltips blinking on Windows (GH-99988). GH-99988 Porting: Windows: Improve frame pacing by busy waiting as needed (GH-99833). GH-99833 Porting: Implement DisplayServer.beep (GH-99371). DisplayServer.beep GH-99371 Rendering: Optimize RenderForwardClustered::_setup_render_pass_uniform_set by reducing Vector allocations (GH-94368). RenderForwardClustered::_setup_render_pass_uniform_set GH-94368 Rendering: Deprecate the pointless unsafe threading model for rendering (GH-98383). GH-98383 Rendering: Automatically resolve initial and final action for draw lists (GH-98670). GH-98670 Rendering: Fix occlusion culling for double builds by enforcing float conversion for Embree (GH-98770). GH-98770 Rendering: Mask out shadows on CanvasItems that don’t have a matching item_shadow_mask (GH-98835). item_shadow_mask GH-98835 Rendering: Add lightmap bake cancelling (GH-99483). GH-99483 Rendering: Add VoxelGI bake cancelling and progress UI improvement (GH-99562). GH-99562 Rendering: Fix ReflectionProbe AABB (GH-99802). GH-99802 Shaders: Allow SCREEN_UV to be used in light function of spatial shader (GH-94981). SCREEN_UV GH-94981 Shaders: VisualShader: Add LinearToSRGB and SRGBToLinear to ColorFunc node (GH-97388). GH-97388 Changelog 114 contributors submitted 259 improvements for this new snapshot. See our interactive changelog for the complete list of changes since the previous 4.4-dev5 snapshot. 114 contributors 259 improvements interactive changelog interactive changelog This release is built from commit 1f47e4c4e. 1f47e4c4e Downloads Download Godot 4.4 dev6 Download Godot 4.4 dev6 Standard build includes support for GDScript and GDExtension. Standard build .NET build (marked as mono) includes support for C#, as well as GDScript and GDExtension. .NET build mono See also C# platform support. See also C# platform support. C# platform support 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. a pre-release piece of software 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. known bugs Here are some known regressions introduced in this snapshot: Occlusion culling randomly occluding things completely in the open (GH-10032). A pull request is already open to fix this in the next dev snapshot (GH-100060). Error “Manifold creation from mesh failed” with Plane and Quad shapes, which do not get rendered (GH-100014). Planes and Quads cannot be used with CSG, and just seemed to be usable previously. We’ll improve the usability so they cannot be selected for CSGMesh3D. Instead, use MeshInstance3D to place Planes and Quads. Occlusion culling randomly occluding things completely in the open (GH-10032). A pull request is already open to fix this in the next dev snapshot (GH-100060). GH-10032 A pull request is already open to fix this in the next dev snapshot (GH-100060). A pull request is already open to fix this in the next dev snapshot (GH-100060). GH-100060 Error “Manifold creation from mesh failed” with Plane and Quad shapes, which do not get rendered (GH-100014). Planes and Quads cannot be used with CSG, and just seemed to be usable previously. We’ll improve the usability so they cannot be selected for CSGMesh3D. Instead, use MeshInstance3D to place Planes and Quads. GH-100014 Planes and Quads cannot be used with CSG, and just seemed to be usable previously. We’ll improve the usability so they cannot be selected for CSGMesh3D. Instead, use MeshInstance3D to place Planes and Quads. Planes and Quads cannot be used with CSG, and just seemed to be usable previously. We’ll improve the usability so they cannot be selected for CSGMesh3D. Instead, use MeshInstance3D to place Planes and Quads. 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. open bug reports existing issues on 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). 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! generous donations from the Godot community their time their financial support 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 Development Fund Godot Foundation alternative ways to donate By Thaddeus Crews Also published here here Photo by Robert Katzki on Unsplash Robert Katzki Unsplash