We’re making great progress in the development branch for Godot 4.2! The faster paced release cycle we started following after the 4.0 release seems to be working well, with pull requests being opened, reviewed, and merged at a steady rate. This fourth dev snapshot contains nearly 250 PRs merged in a little over 3 weeks since the dev 3 snapshot.

The overall state of the master branch seems pretty good and on track for reaching the beta stage at the start of October, and stable in early November 2023.

This snapshot brings a lot of goodies! Here are some of the highlights, with a bigger list available below:

  • The initial support for C# on Android merged for dev 3 (GH-73257) is now ready for mass testing! Official export templates are provided in the .NET (“Mono”) build, so you can start exporting your C# projects to Android and give us feedback on what works and what doesn’t. Keep in mind that this feature requires using .NET 7.0 as the target framework, which you can set in the .csproj file with <TargetFramework>net7.0</TargetFramework>. It’s still a work in progress, with caveats outlined in the PR. Notably, we already know that it’s not working on the arm32 architecture.

  • A number of rendering bugfixes and improvements were merged for this snapshot, including:
    • Motion vectors for skeletons/blend shapes and particles (GH-80618 and GH-80688). This is the last bit of work necessary before we implement AMD’s FSR 2.2 into Godot. On that note, there is already a PR for FSR 2.2 support (GH-81197), so please test it out and give us your feedback.
    • Fixing a crash caused by having more than 204 Lights/Decals/ReflectionProbes in a scene at once (GH-80845). This bug stopped users from fully flexing the strength of the Forward+ renderer as it limited users to a combined 204 OmniLight3Ds/SpotLight3Ds/Decals/ReflectionProbes (by default). Now users are free to use up to 512 of each in the default configuration (this limit can be increased).
    • Additionally, rendering contributors have been busy removing barriers and preparing to implement more items from the list of rendering priorities.
  • A solution was finally merged (GH-80859) for an infamous input bug affecting the typical input action combinations used for character movement (e.g. WASD + D-Pad). We’re expecting potential regressions (and already found one, with a pending fix as GH-81170), so please test it thoroughly and report any issue.

  • GDScript got a number of bug fixes, but also new features such as static typing for for loop variables (GH-80247), improved documentation generation (GH-80745), and the possibility to use local constants (e.g. preloaded scripts) as type hints (GH-80964).

  • Initial work was merged to improve the developer experience with GDExtension on Windows, by copying DLLs to a temporary location before opening them (GH-80188). This makes it possible to overwrite the original DLL (e.g. by compiling a new version) without running into Windows file locking conflicts. This paves the way to implementing live reloading of GDExtension, for which a PR is currently open and ready for testing (GH-80284).

  • The editor got a lot of usability improvements, such as custom color support for project folders in the FileSystem dock (GH-80440), and improvements to the signals connection dock (GH-80411, GH-81092).

  • On the import side, support was merged for the KTX image format so that we can use Basis Universal for GLTF (GH-76572).

  • A project setting was added to define the content scale stretch modes, implementing the long-requested integer scaling out of the box (GH-75784).

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 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 showcases AssetPlacer, a level design plugin by CookieBadger. It is developed in C# and supports Godot 4.0 and 4.1 at the time of writing. You can get it on itch.io and browse the documentation.

What’s new

100 contributors submitted over 250 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. Below are the most notable changes compared to 4.2-dev3:

  • 2D: Various tiles editor improvements (GH-77316, GH-77986, GH-79678, GH-80529, GH-80658, GH-80729, GH-80754, GH-80943, GH-80968).
  • 2D: Fix CanvasModulate logic for modulating the canvas (GH-79747).
  • 2D: Fix multiple usability issues in the texture region editor (GH-80435).
  • 3D: Implement numeric blender-style transforms (GH-58389).
  • 3D: Expose compute_convex_mesh_points function to GDScript (GH-78871).
  • 3D: Make CSGShape follow curve’s tilt in Path mode (GH-79355).
  • 3D: Add handles to control Curve3D tilt (GH-80329).
  • 3D: Add global_basis property to Node3D (GH-80512).
  • Animation: Avoid emitting signals if the animation is not ready to be processed (GH-80367).
  • Animation: Fix initial value with delay in PropertyTweener (GH-80702).
  • Animation: Ensure methods skipped by AnimationPlayer::seek are not called (GH-80708).
  • Animation: Prevent errors if Tween callback’s object is freed (GH-81127).
  • Audio: Context aware MIDI event printing (GH-68820).
  • Audio: Add a --audio-output-latency command-line argument (GH-78013).
  • Audio: Simpler default values for AudioStreamRandomizer (GH-80171).
  • Buildsystem: SCons: Disable misbehaving MSVC incremental linking (GH-80482).
  • Buildsystem: SCons: Disable C++ exception handling (GH-80612).
  • Buildsystem: SCons: Add option for MSVC incremental linking (GH-81144).
  • C#: Fix exporting for Android (GH-80521).
  • C#: Various improvements to the binding generator (GH-80628, GH-80630, GH-80631).
  • Core: Add settings_changed signal to ProjectSettings (GH-62038).
  • Core: Expose _validate_property() for scripting (GH-75778).
  • Core: Add function ZIPReader::file_exists (GH-76860).
  • Core: Add a --max-fps command-line argument to set a FPS limit (GH-78012).
  • Core: Add String.reverse method (GH-78529).
  • Core: Fix Object::notification order (GH-78634).
  • Core: FastNoiseLite: Fix cellular jitter using incorrect default value (GH-79922).
  • Core: Fix global transform validity for Node2D and Control (GH-80105).
  • Core: Deprecate project_settings_changed signal (GH-80450).
  • Core: Allow to get a list of visible embedded Windows (GH-80673).
  • Core: Implement center window function (GH-81012).
  • Core: Fix JavaScriptBridge.eval() never returning PackedByteArray (GH-81015).
  • Core: Add check to ensure registered classes are declared (GH-81020).
  • Core: Fix consistency of GradientTexture changes (GH-81137).
  • Editor: Replace all flags with one value when holding Ctrl/Cmd in the layers editor (GH-39364).
  • Editor: Streamline the project import workflow (GH-51478).
  • Editor: Make EditorInterface accessible as a singleton (GH-75694).
  • Editor: Show only compatible nodes in ‘Select a node’ window (GH-79213).
  • Editor: Improve Signal Dock for script classes (GH-80411).
  • Editor: Add custom color support to project folders (GH-80440).
  • Editor: Avoid unnecessary inspector updates when loading or switching scenes (GH-80517).
  • Editor: Revert to the old Camera icons (GH-80865).
  • Editor: Display time of last save in the unsaved changes confirmation editor dialog (GH-80976).
  • Editor: Improve warnings when running scripts in the editor (GH-81022).
  • Editor: Properly remember custom text color in scene tree (GH-81061).
  • Editor: Fix Quick Open not opening binary resources (GH-81068).
  • Editor: Signal Connection Dock improvements (GH-81092).
  • Export: Add a button in the export dialog to fix missing texture formats (GH-78457).
  • GDExtension: Fix GDExtension classes derived from abstract GDExtension classes always being registered as abstract (GH-67512).
  • GDExtension: Copy DLL to a temp file before opening (GH-80188).
  • GDExtension: Expose PlaceHolderScriptInstance to GDExtension (GH-80394).
  • GDExtension: Fix version check for GDExtension (GH-80591).
  • GDExtension: Exclude unexposed classes from the extension_api.json (GH-80852).
  • GDExtension: Fix overriding _export_begin, _export_file and _export_end from GDExtension (GH-80999).
  • GDScript: Add a script method to get its class icon (GH-75656).
  • GDScript: Add static typing for for loop variable (GH-80247).
  • GDScript: Fix get_method from named lambda (GH-80506).
  • GDScript: Fix “Identifier not found” error when accessing inner class from inside (GH-80510).
  • GDScript: Fixes LSP connection error when launched in a separate thread (GH-80686).
  • GDScript: Improve DocGen (GH-80745).
  • GDScript: Fix lambda resolution with cyclic references (GH-80923).
  • GDScript: Allow using local constants as types (GH-80964).
  • GUI: Add option to allow echo events in menu shortcuts (GH-36493).
  • GUI: Fix text overlapping icon in Tree (GH-78756).
  • GUI: Add shortcut handling to OptionButton (GH-80203).
  • GUI: Fix CodeEdit completion being very slow in certain cases (GH-80472).
  • GUI: RTL: Improve scroll bar responsiveness during updates (GH-80606).
  • GUI: Add buttons to reorder inspector array items without dragging (GH-80617).
  • GUI: Fix 2D/3D viewport context switching issues when script editor is floating (GH-80647).
  • GUI: TextServer: Fix system font fallback and caret/selection behavior for composite characters (GH-80650).
  • GUI: RTL: Adds “lang” tag to allow overriding language specific text rendering without starting a new paragraph (GH-80848).
  • GUI: TextServer: Store extra spacing of individual font variations (GH-80954).
  • GUI: Only allow finite numbers in Range.value (GH-81076).
  • GUI: Unfocus LineEdit when pressing Escape (GH-81128).
  • GUI: ItemList: Draw separators before selected style boxes (GH-81155).
  • Import: Add support for KTX image format so that we can use Basis Universal for GLTF (GH-76572).
  • Import: GLTF: Add center of mass property (GH-80463).
  • Import: Revert “Implement loading DDS textures at run-time” (GH-81126).
  • Import: Fix grayscale DDS loading (GH-81134).
  • Input: Make GridMap shortcuts editable and not conflict with other plugins (GH-79529).
  • Input: Ensure TileMap editor shortcuts are handled (GH-80317).
  • Input: Fix nodes receiving mouse events in black bars of Window (GH-80334).
  • Input: Properly load multiple action sets in XR (GH-80419).
  • Input: Fix action state when multiple events are assigned (GH-80859).
  • Multiplayer: Fix watch properties not being correctly removed (GH-81033).
  • Multiplayer: Improve SceneReplicationConfig editor UX + optimizations (GH-81136).
  • Navigation: Add multi-threaded NavMesh baking to NavigationServer (GH-79972).
  • Particles: Fix particle shader deterministic random values (GH-80638).
  • Particles: Add motion vector support for GPU 3D Particles (GH-80688).
  • Particles: Implement conversion from CPUParticles to GPUParticles (3D/2D) (GH-80779).
  • Particles: Fix GPUParticle2D offset stutter (GH-80984).
  • Physics: Add Mass Distribution, Deactivation, Solver inspector property groups (GH-77943).
  • Porting: Android: Add option to always use WiFi to connect to remote debug (GH-79504).
  • Porting: Android: Add export setting to control whether to show the Godot app in the app library (GH-80569).
  • Porting: Linux: Use EWMH for DisplayServerX11::_window_minimize_check() implementation (GH-80036).
  • Porting: Linux: Implement native file selection dialog support (GH-80104).
  • Porting: Windows: Make safe save more resilient (GH-81001).
  • Rendering: Abort on startup with a visible alert if required Vulkan features are missing (GH-73999).
  • Rendering: Add content scale stretch modes, implement integer scaling (GH-75784).
  • Rendering: Add support for GLSL source-level debugging with RenderDoc (GH-77975).
  • Rendering: Clear the previously set state when configuring for a new scene root node (GH-79201).
  • Rendering: Fix GLES3 changing 2D shadow atlas size is broken (GH-80151).
  • Rendering: Ensure POINT_SIZE takes effect in the canvas item shader (GH-80323).
  • Rendering: Improve handling of motion vectors for multimesh instances (GH-80414).
  • Rendering: Add buffer_copy method to RenderingDevice (GH-80424).
  • Rendering: Clamp Volumetric Fog Length property to prevent rendering issues (GH-80485).
  • Rendering: Add motion vector support for animated surfaces (GH-80618).
  • Rendering: Fallback to linear color texture when using 2D HDR and MSDF font (GH-80651).
  • Rendering: Fix global shader uniform texture loading (GH-80654).
  • Rendering: Improve visual feedback when using the motion vectors debug view option (GH-80723).
  • Rendering: Fix Vulkan texture update (GH-80781).
  • Rendering: Fix Vulkan crash with many Omni/SpotLights, Decals or ReflectionProbes (GH-80845).
  • Rendering: Clear SDFGI textures when created (GH-80889).
  • Rendering: Fix integer value for GL_MAX_UNIFORM_BLOCK_SIZE overflowing (GH-80909).
  • Rendering: Fix clear color on mobile renderer (GH-80933).
  • Rendering: Fix VoxelGI CameraAttributes exposure normalization handling (GH-81067).
  • Rendering: Flip convention of motion vectors (GH-81074).
  • Shaders: Fix Shader and ShaderInclude resource loading (GH-80705).
  • XR: Change to new PICO interaction profiles (GH-79570).
  • XR: Ensure OpenXR classes are declared properly (GH-81037).
  • Thirdparty: freetype 2.13.2, thorvg 0.10.0.

This release is built from commit 549fcce5f (see README).

Downloads

The downloads for this pre-release build can be found in our GitHub repository:

Standard build includes support for GDScript and GDExtension.

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

  • .NET build requires .NET SDK 6.0 or 7.0 installed in a standard location. To export to Android, .NET 7.0 is required, and should be set as the target framework in the .csproj file.

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 4.2 dev 4).

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!

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.