It has been a while since our last beta, and admittedly 3.6 seems to have been in development for ever (beta 1 was over a year ago!).

There are fewer developers now working on 3.x branch, but the main bottleneck to 3.x development has been on the release management side (i.e. reviewing, approving, and merging pull requests and building releases). Rémi usually manages releases, but his time has been largely monopolized by the huge growth in contributors to 4.x, and the consequent increase in his workload. For this reason we have been trying to get other engine maintainers more actively involved in release management, which is allowing enthusiasts to take on more of the work, and get everything running in a more efficient manner.

This is great news for Godot 3, as it means in the future we will more efficiently be able to address bugs, improve performance, and add new features, to keep Godot 4’s baby brother as a force to be reckoned with.

This beta represents feature freeze for 3.6. We will now concentrate on bug fixing until we reach a stable release. Any new features will be scheduled for 3.7.

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 cover illustration is from Backpack Battles, a massively popular PvP inventory management auto battler, developed by PlayWithFurcifer in Godot 3.5. The game was released in early access in March, and is gearing up towards a great full release later this year. You can buy or wishlist it on Steam, and follow the developers on Twitter and YouTube.

Highlights

It’s been a while since the previous beta snapshot, so we wouldn’t be surprised if you’re not fully up-to-date on what are the most exciting changes going from Godot 3.5 to the current 3.6 beta. This beta 5 blog post focuses on changes since beta 4, so have a look at previous beta blog posts for a more complete overview of what’s new (beta 1, beta 2, beta 3, beta 4).

For a complete overview of the changes, see our interactive changelog.

Previous snapshots contained many 2D features, and this beta 5 adds a number of 3D features so now there should be something for everyone:

Tighter Shadow Culling (GH-84745)

Godot shadow mapping involves taking a simplified camera shot from the point of view of each shadow casting light, when objects move within this light volume. This happens every frame when objects are moving, and this can add up to a lot of draw calls for each light.

Tighter shadow culling reduces this workload considerably by eliminating draw calls for shadow casters that cannot cast a shadow that is visible from the main camera view. This involves some clever geometry, but the upshot is you should often see significantly better frame rates when using shadows.

This happens automatically.

Discrete Level of Detail (LOD) (GH-85437)

LOD node example

The new LOD node provides simple but powerful LOD capabilities, allowing the engine to automatically change visual representation of objects based on the distance from the camera. An example would be simplifying trees in the distance in open world games.

This implementation of LOD differs dramatically from how LOD is implemented in Godot 4 as we chose to use a different implementation that better fits the architecture of Godot 3. In particular, we have removed the LOD settings from GeometryInstances and instead provide an LOD node which controls the LOD behavior of its children.

Mesh Merging (GH-61568)

MergeGroup example

Godot 3.6 now offers a comprehensive system for mesh merging, both at design time and at runtime. OpenGL can be severely bottlenecked by draw calls and state changes when drawing lots of objects. Now you can blast through these barriers and potentially render any number of similar objects in a single draw call.

As well as allowing you to optimize existing maps and moving objects, this also makes new procedural game types possible, as thousands of procedurally placed objects can be merged at runtime so as to render efficiently (think vegetation, rocks, furniture, houses, etc.).

Please test this out and give us lots of feedback. This is a new feature in 3.6 that hasn’t been implemented for 4.x. We would like to use the feedback we get on this implementation to potentially add a mesh merging feature to Godot 4.x.

See the MergeGroups documentation for details.

ORM Materials (GH-76023)

Ansraer added support for ORM materials, which is a standard format where occlusion, roughness, and metallic are combined into a single texture. This means these standard PBR textures can be used without modification, and rendering performance will likely be increased where they are used (compared to the old workflow).

Vertex cache optimization (GH-86339)

In the mesh import options (e.g. obj, gltf, dae) you will find a new setting for “vertex cache optimization”. This may increase rendering performance for high poly models on low-end hardware.

In order to take advantage of vertex cache optimization in an already completed project, simply delete the hidden .godot folder (which contains imported data), and this imported data (including optimized meshes) will be recreated next time you open the editor.

2D fixes

Fixes to physics interpolation, and hierarchical culling, as well as performance increases.

View Selected Mesh Stats (GH-88207)

View mesh stats example

The 3D view menu now offers a new (long overdue) option, “View Selected Mesh Stats”. This will display total triangle, vertex, and index counts for the selected meshes (and multimeshes).

This is incredibly useful information for diagnosing performance and checking imported meshes, and for use in conjunction with mesh merging and LOD.

SceneTree dock’s filter improvements (GH-67347)

Now supports multiple terms, filter by type or group.

Changes

40 contributors submitted exactly 100 improvements for this release. See our interactive changelog for the complete list of changes since the previous 3.6-beta4 snapshot. You can also review all changes included in 3.6 compared to the previous 3.5 feature release.

This release is built from commit 2a347ab86.

Downloads

Standard build includes support for GDScript, GDNative, and VisualScript.

.NET build includes support for C#, as well as GDScript, GDNative, and VisualScript.

  • You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.198 are included in this build.

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.

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 3.x releases no longer works in this release).

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.