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
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.
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.
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.
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
- Core: Fix escaping closing brackets in ConfigFile tags (GH-68450).
- Core: Add
- 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
- 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
- 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
- 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
- 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.
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.
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.
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.
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!