After a short end-of-year break, and then a lot of heavy merging work prior to 4.0 beta 11, we found a lot of regressions – as we expected!

Our contributors could fix many of the new regressions quickly, and we merged another big batch of important fixes and improvements. As the pace intensifies in the lead-up to the first Release Candidate, we decided to make more frequent beta snapshots for testing.

This beta includes a few big changes which may interest a lot of users:

  • Regression fix for a major GDScript issue that could lead to seemingly random crashes (e.g. when dealing with PackedArrays) which many beta 11 users experienced (GH-71228).
  • A lot more GDScript fixes and improvements! See the list below.
  • A refactor of Animation APIs to change the stop(reset: bool) to two separate stop() and pause() methods (GH-71218), as was heavily requested by the community.
  • A couple fixes to the text resource loader which could impact notably reloading scripts (GH-71170).
  • Fix Tab key usage in the inspector (GH-71271).
  • Add expand modes to TextureRect (GH-58517).
  • OBJ mesh import now supports vertex colors as exported by Blender (GH-71033).
  • New NavigationServer performance monitor (GH-70731).
  • Physics fixes and improvements for sphere-capsule, sphere-box, sphere-cylinder, and capsule-cylinder collisions (GH-70660, GH-70787).
  • As always, a bunch of nice rendering fixes! See the list below.

Jump to the Downloads section.

You can also try the Web editor (early testing, it’s still slow and unstable).

The illustration picture for this article is from Gawr Gura: Quest for Bread by Kenny Park. The game is currently being ported to Godot 4.0 beta. Follow Kenny Park on Twitter or Mastodon for development updates, and check his website to discover other games and applications.

What’s new

If you’re interested in an overview of what’s new in Godot 4.0 beta in general, have a look at the detailed release notes for 4.0 beta 1. In this blog post, we will only cover the main changes since the previous beta release.

See the changelog on GitHub, or the list of merged PRs, for an overview of all changes since 4.0 beta 11 (76 commits – excluding merge commits ― from 39 contributors).

While we do our best to minimize compatibility breaking changes for existing beta users, there are still occasional changes in the API which may impact your Godot 4 projects. See the list of PRs with the breaks compat label for details.

Some of the most notables feature changes in this update are:

  • Animation: Split pause() from AnimationPlayer’s stop() (GH-71218).
  • Core: Fix escaping closing brackets in ConfigFile tags (GH-68450).
  • Core: Add SceneTree.unload_current_scene() (GH-71105).
  • Core: Change set_drag_forwarding() to use Callables (GH-71127).
  • Core: Fix Callable call error reporting (GH-71157).
  • Core: Text resource loader fixes (GH-71170).
  • Core: Improve CanvasItem draw_dashed_line() alignment and make it optional (GH-71317).
  • Editor: Automatically reparent editor progress dialog to avoid error spam (GH-71209).
  • Editor: Fix Tab key usage in EditorSpinSlider (and hence inpector) (GH-71271).
  • Editor: Fix the Frame Selection (Shift + F) functionality in the 2D editor (GH-71272).
  • Export: Fix missing “debug”/”release” export presets feature tags (GH-71274).
  • GDScript: Fix getting type from PropertyInfo for Variant arguments (GH-70644).
  • GDScript: Fix extending abstract classes, forbid their construction (GH-70700).
  • GDScript: Fix false name conflicts for unnamed enums (GH-70713).
  • GDScript: Fix some issues with assignments that involve untyped things (GH-70733).
  • GDScript: Fix parse error using Vector{2,3,4}.INF (GH-70899).
  • GDScript: Fix missing conversion for default argument values (GH-70987).
  • GDScript: Fix use of conversion assign for variant values (GH-71192).
  • GDScript: Add default virtual gdscript:// path to GDScript instances (GH-71197).
  • GDScript: Fix temp values being written without proper clear (GH-71228).
  • GDScript: Fix small inconsistencies with resolve_datatype (GH-71253).
  • GUI: Add expand modes to TextureRect (GH-58517).
  • GUI: Fix text search in Tree with multiselect (GH-71042).
  • GUI: Ensure that the cached layout mode is in sync (GH-71183).
  • Import: Add vertex color support to OBJ importer (GH-71033).
  • iOS: Check Xcode output and display errors if code signing, project build or .ipa export failed (GH-71212).
  • Navigation: Add NavigationServer performance monitor (GH-70731).
  • Navigation: Fix for navmesh baking when parsing StaticBody colliders (GH-70904).
  • Navigation: Tweak NavigationAgent2D defaults (GH-71250).
  • OpenXR: Add Pico controller profile (GH-70167).
  • OpenXR: Fix Android loader extension detection (GH-71034).
  • OpenXR: Do not use SRGB swapchains with OpenGL (GH-71224).
  • Physics: Fix sphere-capsule collision logic (GH-70660).
  • Physics: Analytic sphere-box, sphere-cylinder, and capsule-cylinder collisions (GH-70787).
  • Rendering: Only disable depth writing in opaque pipelines (GH-71124).
  • Rendering: Fix multiple issues that make the normal roughness texture unusable (GH-71130).
  • Rendering: OpenGL: Add support for FORMAT_{ETC2,DXT5}_RA_AS_RG (GH-71248).
  • Rendering: Take alpha antialising options into account when setting up materials (GH-71261).
  • Rendering: Only setup depth framebuffer properties when not rendering ReflectionProbes (GH-71303).
  • Visual Shader: Add few improvements for VisualShaderNodeParticleRandomness (GH-71123).
  • Windows: Allow OS.kill() method to terminate non-child processes (GH-71269).
  • Windows/macOS: Avoid color flash on window creation and resizing (GH-71289, GH-71295).

This release is built from commit 3c9bf4bc2.

Downloads

The downloads for this dev snapshot can be found directly on our repository:

  • Standard build (GDScript, GDExtension).
  • .NET 6 build (C#, GDScript, GDExtension).
    • Requires .NET SDK 6.0 installed in a standard location. .NET 7.0 is not supported yet, so make sure to install .NET 6.0 specifically.

Known issues

As we are still in the early beta phase of development, there are still many issues to fix, some of which have already been reported and are being worked on. See the GitHub issue tracker for a list of known bugs in the 4.0 milestone.

Bug reports

As a tester, you are encouraged to open bug reports if you experience issues with this release. Please check first the existing issues on GitHub, using the search function with relevant keywords, to ensure that the bug you experience is not known already.

As in any major release there are going to be compatibility breaking changes. However, we still try to provide a migration path for your projects. If you experience a regression without a known migration path or workaround, do not hesitate to report it.

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 thankyou 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.