We are entering the final stretch of the feature development for this dev cycle. There is probably one more Godot 4.2 dev snapshot left before the project enters the feature freeze and all efforts turn towards fixing remaining bugs and stabilizing the release. In the past 2 months contributors have been shaping what Godot 4.2 is going to be, and we will soon pass the mark of 1000 changes.

A significant part of this snapshot contains changes aimed at improving the user experience throughout the editor. We are also introducing a new version of the Godot Android plugin API. As always, many bugs and crashes have been squashed and other issues resolved. Here’s a short highlights section, ahead of a more complete list below:

  • The 3D viewport received a de-cluttering and will now display auxiliary visual information only for selected objects (GH-75303). At the same time elements like decals and fog volumes now have extra indicators which make them easier to select via the viewport (GH-81554). Various parts of the inspector and signal docks were enhanced with documentation tooltips and related bugfixes (GH-81221). Code region support was added to the code editor, allowing you to define parts of the script to fold them and help with navigation within longer scripts (GH-74843). And if you are working on editor plugins, you can now preview the current editor theme on your GUI elements directly in the 2D viewport (GH-81130).

  • Two very important issues related to tilemaps and the tilemap editor were addressed for this release. You can now flip and rotate tiles and entire tile patterns when placing them in the world (GH-80144). A significant boost to performance, thanks to smart tile grouping and other optimizations, should make larger tilemaps considerably less laggy (GH-81070).

  • Godot aims to be as version-control-friendly as possible, and contributors are well aware of several issues related to sporadic resource ID changes. In this snapshot we’re shipping one of the fixes that aims to address the issue (GH-65011). Related to this, multiple problems with renamed and moved files causing crashes and scene corruption have been fixed (GH-80503, GH-81657).

  • A new version of the Godot Android plugin framework is introduced in this release (GH-80740, GH-81368). Please make sure to test these changes and provide feedback to our Android platform maintainers who want to ensure a smooth migration process. You can refer to this draft documentation PR for more information about the changes and new requirements.

  • Speaking of Android, this release adds Android Stylus pressure and tilt support (GH-80644). This complements Apple Pencil support added in Godot 4.0.

  • If you’re relying on GraphEdit in your games and tools, you will be happy to know that this snapshot concludes the main part of the refactoring of the node (GH-79307, GH-79308, GH-79311). Please make sure to give it a test and see if everything is working as expected. For the time being the comment node feature has been removed — to be reintroduced later as a dedicated node with improved behavior together with other nodes. Until the feature freeze there may still be smaller compatibility breaking changes, so make sure to read future release notes.

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 is taken from Starter Kit 3D Platformer, a template project made by Kenney for Godot 4. Kenney is a one-man powerhouse producing game assets, tools, and template projects like this one, and sharing them for free. Kenney’s assets come in all popular formats, so even if something is not made for Godot specifically you can still import it and kickstart your fun gamedev adventure by focusing on the gameplay and what makes your game interesting and unique! You can follow Kenney on social networks (Twitter, Mastodon) to get updates on and help shape new asset packs. And please consider sponsoring his work which benefits everyone in the gamedev community!

What’s new

68 contributors submitted almost 200 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-dev4:

  • 2D: Add per-tile flipping and transposing (GH-80144).
  • 2D: Improve TileMap performances by using quadrants only for rendering (GH-81070).
  • 2D: Allow configuring primary guide line X/Ys separately (GH-81255).
  • 3D: Show visual-oriented 3D node gizmos only when selected (GH-75303).
  • 3D: Add helper for 3D gizmos and unify box (GH-80278).
  • 3D: GridMap: Ensure the visibility is updated when entering the tree (GH-81106).
  • 3D: Fix some keys triggering their actions twice in GridMap (GH-81531).
  • 3D: Add 3D editor gizmo icons for Decal, LightmapProbe and FogVolume (GH-81554).
  • Animation: Fix animation keyframes being skipped when played backwards (GH-81452).
  • Animation: Remove animation tracks with correct indices (GH-81651).
  • AssetLib: Improve handling of archives when installing assets (GH-81358).
  • Audio: Add a bus_renamed AudioServer signal (GH-81641).
  • Buildsystem: Fix build options configuration for Visual Studio projects (GH-79238).
  • Buildsystem: Web: Workaround Emscripten 3.1.42+ LTO regression (GH-81340).
  • Buildsystem: Remove UWP and Haiku platform ports (GH-81416, GH-81420).
  • C#: Include argument types in generated methods (GH-80629).
  • C#: Hide hostfxr not found error (GH-81690).
  • Core: Fix behavior of resource properties in the sub-scene root node (GH-65011).
  • Core: Deprecate Resource.setup_local_to_scene (GH-67082).
  • Core: Add a type conversion method to Variant Utility and expose to scripting (GH-70080).
  • Core: Ensure binds are duplicated with Node signals (GH-75382).
  • Core: Add inverse hyperbolic functions asinh(), acosh(), atanh() (GH-78404, GH-81229).
  • Core: String: Fix string conversion for -0.0 float values (GH-81328).
  • Editor: Improve signal callback generation (GH-79366).
  • Editor: Prevent crashes and scene corruption when files are renamed or moved (GH-80503, GH-81657).
  • Editor: Prevent creating any type of file with a leading dot (GH-81075).
  • Editor: Use ui_text_submit instead of ui_accept to confirm and close text prompts (GH-81189).
  • Editor: Inspector and Signal docks improvements (GH-81221).
  • Editor: Add XML files to default TextFile extensions in the editor (GH-81625).
  • GDExtension: Allow GDExtension to register unexposed classes (GH-70329).
  • GDExtension: Make PtrToArg::convert() use const-reference where possible (GH-80075).
  • GDExtension: Allow implementing validate_property() from extension classes and scripts (GH-81261, GH-81515).
  • GDScript: Add code region folding to CodeEdit (GH-74843).
  • GDScript: Language Server: Improve hovered symbol resolution, fix renaming bugs, implement reference lookup (GH-80973).
  • GDScript: Fix subclass methods not inheriting RPC info (GH-81201).
  • GDScript: Add an optional untyped_declaration warning (GH-81355).
  • GDScript: Fix various lambda bugs (GH-81605).
  • GDScript: Fix POT generator crash on assignee with index (GH-81653).
  • GUI: Add closed property to Line2D (GH-79182).
  • GUI: Clean up/refactor GraphNode and make it more flexible (GH-79311).
  • GUI: Deselect multi caret when alt clicking on it (GH-80956).
  • GUI: Implement a system to contextualize global themes (GH-81130).
  • GUI: Update and properly list versions of the built-in fonts (GH-81326).
  • Import: GLTF: Allow specifying export image format including from extensions (GH-79314).
  • Import: Fix doubly-reserved unique names in GLTF scene name assignment (GH-80270).
  • Import: GLTF: Change “Camera3D” generated node name to “Camera” (GH-81264).
  • Input: Android Stylus pressure and tilt support (GH-80644).
  • Input: Fix Android input routing logic when using a hardware keyboard (GH-80932).
  • Input: Prevent axis-based actions from getting stuck (GH-81170).
  • Particles: Fix z-billboard + y to velocity transform alignment to correctly respect non-uniform scale (GH-81315).
  • Physics: Expose the get_rid method of Joint2D and Joint3D (GH-80736).
  • Porting: Android: Godot Android plugin re-architecture (GH-80740, GH-81368).
  • Porting: Android: Change the default “org.godotengine” package name to “com.example” (GH-80761).
  • Porting: iOS: Switch export target extension based on export type (GH-81365).
  • Porting: macOS: Fix live resize with the latest MoltenVK version (GH-81339).
  • Porting: Fix MSVC ARM build after mbedtls 2.28.3 enabled AES-NI intrinsics (GH-81405).
  • Rendering: Enhance Vulkan PSO caching (GH-80296).
  • Rendering: Implement render mode fog_disabled and BaseMaterial3D setting “Disable Fog” (GH-81286).
  • Rendering: Fix clear color’s alpha value will affects 2D editor in Compatibility mode (GH-81395).
  • Rendering: Improve GLES3 scene renderer compatibility with older devices (GH-81650).
  • Rendering: Fix validation error when using pipeline cache control (GH-81771).
  • XR: Expose OpenXR raw hand tracking data (GH-78032).
  • XR: Add XR tracking state-change signals (GH-81239).
  • XR: Fix issue with OpenXR environment blend mode not being applied properly (GH-81561).
  • Thirdparty: HarfBuzz 8.1.1, libwebp 1.3.2, zlib/minizip 1.3

This release is built from commit e3e2528ba (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. .NET 8.0 is not supported yet.

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 5).

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.