Godot 4.3 has been released, thanks to the efforts of more than 500 contributors over the past nine months since the 4.2 release. Project manager Rémi Verschelde noted that this release surpassed the original development plans, resulting in a substantial update.

Verschelde highlighted that the user experience is now more stable and polished, with fewer obscure bugs that could disrupt games or workflows. Additionally, the feature set has been expanded with numerous highly anticipated improvements across all areas of the engine.

Without further ado, let's dive into what's new in this release:

2D

On the 2D side of the engine, there have been improvements for pixel art games, addressing issues with pixel stability. These improvements depend on the rendering/2d/snap/snap_2d_transforms_to_pixel project setting.

Physics interpolation has been implemented for 2D, decoupling physics ticks from display frame rates. This feature creates additional frames between the last and current physics positions, reducing jitter and resulting in a smoother appearance.

Showcase of the Physics Interpolation feature: no interpolation on the left, with interpolation on the right.

A new Parallax2D node has also been introduced, designed to supersede the existing ParallaxLayer and ParallaxBackground nodes. This new node eliminates many of the previous limitations, such as the ability to apply overlay effects, which were not possible before.

The new Parallax2D node with overlaid effects.

TileMap layers are now exposed as individual TileMapLayer nodes, resulting in less clutter in the Inspector and a simpler API, while also bringing the design more in line with common Godot patterns.

Demonstration of the new TileMapLayer node.

Editor

The editor has received fixes for a common user complaint: the ability to load scenes with corrupted or missing dependencies. The updated version now allows users to open and fix such scenes without the need for external tools.

Support for importing .fbx files has been added by incorporating the popular ufbx library. The conversion of .fbx files to glTF using the FBX2glTF tool is no longer required, as .fbx files can now be imported directly.

Importing .fbx files in Godot 4.3.

Other additions include the ability to move the FileSystem dock to the bottom section of the editor, providing access to a wide horizontal panel instead of a vertical one.

Drag and drop of resources is now supported across bottom panels by hovering over the relevant label, similar to how browser tabs work.

The project manager has also undergone a visual and usability overhaul, with an improved layout and a look that aligns with the UI conventions of the editor.

The improved project manager.

Additionally, there is now an automatic check for engine updates, enabling users to be notified when the next dev or beta snapshots are published, as well as for new maintenance or feature releases in stable branches. However, out of concern for users' privacy, this feature is not enabled by default.

Finally, the serialization of PackedByteArray properties in the text-based scene/resource format (tscn/tres) has been changed to use Base64 encoding, resulting in more compact data, especially for larger arrays.

Audio

On the audio front, support for interactive music has been added. New stream types, including AudioStreamInteractive, AudioStreamPlaylist, and AudioStreamSynchronized can be combined to create sophisticated music systems similar to those in software like WWise, FMOD, or Elias.

The new AudioStreamInteractive and its Transition Editor.

This functionality enables you to design music that dynamically adapts to gameplay, enhancing immersion. Combined with Blips.fm adaptive music packs, this feature makes integrating professional soundtracks into your game easier than ever.

An article explaining the new music functionality in Godot 4.3 will be published next week here on the Blips blog.

Still on this topic, a new compression format option for WAV audio files has been added.  This option uses the Quite OK Audio (QOA) format, which offers a favorable trade-off between performance, file size, and quality compared to the existing options. It provides higher quality and reduced file sizes compared to the IMA-ADPCM option, with the trade-off of being slightly more CPU-intensive.

Display

With this release, there's now Wayland support for Linux, a protocol that applications can use to communicate with a display server to make themselves visible and receive input from the user.

Additionally, OpenGL ES driver support for desktop devices has been introduced, currently limited to Linux (note that Windows drivers generally do not support OpenGL ES natively).

Godot now also supports the Direct3D 12 rendering API as an optional backend on Windows devices.

Web

Godot 4.3 reintroduces the option for single-threaded web exports. While multi-threaded exports are now well-supported by all major browsers and have resolved several audio issues, they can pose challenges for web servers that aren't self-hosted. Additionally, multi-threading may conflict with web game monetization methods like advertisements or payment processing. The single-threaded export option bypasses these issues, making it easier to distribute games on publishing platforms like itch.io or CrazyGames.

The single/multi-thread option for web exports.

Support for the Web Audio API has also been added to address persistent audio issues in single-threaded web builds, ensuring low-latency and high-quality audio.

Setting a splash screen for Web exports is now possible and can be customized to your liking. Additionally, the Web progress bar has been reworked.

Rendering and Shaders

Godot has introduced a new feature called the Acyclic Command Graph for Rendering Device. This feature automatically records and reorders rendering commands in the RenderingDevice backend, enabling optimizations that would otherwise be impossible.

A new CompositorEffects API has been added, allowing developers to register callback functions that run between rendering passes, enabling the insertion of rendering commands into the middle of Godot's built-in rendering pipeline.

Godot now includes depth-based fog, allowing you to specify where the fog begins and when it transitions to fully opaque. Compared to the existing exponential fog mode, it may look less realistic, but it makes it easier to achieve atmospheres similar to those in old-school horror games.

Showcase of the new depth-based fog.

With this update, premultiplied alpha blending in 3D shaders is now available, enabling you to create better-looking flames and fireworks. The same particle can now have the properties of additive blending (for the flame) and mix blending (for the smoke).

Premultiplied alpha blending demo: The left barrel flames (additive blending) lack the smoke visible in the right barrel flames (premultiplied alpha blending).

The visual shader editor has been revamped from the ground up, to be more visually appealing and to enhance the readability of large, complex shader graphs.

Two new node types have been added: the reroute node and the frame node. The reroute node allows you to insert a node into an existing connection between other nodes and move it freely. The frame node is used to visually group related nodes together.

Showcase of the revamped visual shader editor and its new nodes.

The Compatibility rendering backend is now feature-complete with the addition of MSAA (Multisample Anti-Aliasing), resolution scaling, Glow, ReflectionProbes, LightMapGI (LightMap Global Illumination), Adjustments, and Color Correction.

To top it all off, the RenderingDevice context management has been refactored to further address stability issues in the Vulkan backend.

Animation

The update introduces a new node class named SkeletonModifier3D. This node serves as the foundation for IK (Inverse Kinematics), constraints, XR body tracking, and skeletal physics. It also makes the process of moving bones via script both easier to understand and more flexible.

Several new features have also been added to assist in retargeting animation sets, particularly those in .fbx format. These include the ability to import a rest pose as a RESET animation, a retargeting option to use a template for silhouette, and the ability to preserve the initial bone pose in the rest fixer.

Another addition is a new scene import option to import as Skeleton, which addresses issues common in .fbx files without meshes. Furthermore, the update includes several other bug fixes related to skeletal animation import.

 

Skeletal animation import options.

After its introduction in version 4.2, the AnimationMixer continues to receive several fixes and enhancements to bring its functionality to parity with AnimationPlayer. The update adds several features, including expanded AnimationMixer and AnimationPlayer APIs, and support for selecting, copying, pasting, and duplicating keyframes within the AnimationPlayer.

Demo of the new editing operations in AnimationPlayer.

Finally, a new CallbackModeDiscrete option has been added to significantly improve behavior when blending continuous and discrete tracks, along with several fixes to how audio is handled by AnimationPlayers.

Navigation

In Godot 4.3, you can now automatically split navigation meshes into chunks using new properties for defining baking bounds and border size offsets. These properties ensure that the navigation mesh chunks are baked with perfectly aligned edges to match their neighboring chunks.

Visual representation of splitting navigation meshes into chunks.

NavigationObstacle2D and NavigationObstacle3D now include two new properties that affect baking, allowing obstacles to discard other source geometry within them. In 3D, this helps eliminate unwanted navigation meshes inside objects like walls or roofs.

A new path simplification option has been added to NavigationAgent nodes, allowing for the algorithmic removal of less critical path points.

C#

Regarding the .NET version of the engine, the C# language has received several fixes and usability improvements. Among these are improved handling of C# generic types and user indications in the inspector when rebuilding the C# assembly is needed.

Godot screen capture highlighting the rebuild notification for .NET projects.

For C# projects that haven't yet been built, the editor now remembers the values of exported Node properties instead of discarding them, which helps prevent data loss.

Variant types (such as Vector2, Vector3, Rect2, Transform3D, etc.) now use InvariantCulture by default, ensuring uniform formatting regardless of the language of the platform on which the game is running.

Exporting projects with missing C# files is no longer allowed, preventing the creation of executables that fail silently.

Finally, the script reloading process has been improved, making the rebuild process less error-prone.

GDScript

GDScript, the primary scripting language in Godot, has reintroduced the 3.x functionality to export GDScript files in a binary format. This feature hides the source code and slightly reduces the export size.

The new export mode for GDScript files.

A new is not operator has been introduced, enabling more natural negative type comparisons. Built-in type methods and utility functions are now callable as Callable, making it possible to easily invoke variadic functions such as print with Callable.callv().

Export annotations now allow exported arrays to set property hints for their elements. Two new export annotations have been added: @export_storage, which hides the property from the Inspector while still exporting the value, and @export_custom, which allows for more complex hints or potential future hints.

This release enhances autocompletion for several components, including enums, subscripts, and get_node(). It also addresses issues with Lambda hot-reloading, the @warning_ignore annotation, and circular dependencies, making your scenes more resilient and stable. Additionally, some warnings have been adjusted.

GDExtension

The GDExtension system now allows the registration of runtime classes, which is especially useful for those using GDExtensions to write game logic.

With this release, GDExtension classes can also define their own virtual methods, which can be implemented by scripts attached to them. 

Additionally, you can now add documentation to your GDExtension code, similar to how the editor includes an offline copy of the Class Reference section from the Godot Docs.

XR

On the XR (Extended Reality) front, support has been added for composition layers, allowing 2D viewports to be displayed at much higher quality within XR environments.

The Meta XR Simulator, a free tool for testing XR applications in a simulated Quest headset, now works directly within the Godot editor, making it easier to iterate during development.

Screen capture of the Meta XR Simulator tool.

Godot now supports Meta's scene discovery for augmented reality, allowing developers to access a mesh of the surrounding environment and key element positions. Additionally, developers can add their own Spatial Anchors for the headset to track and remember across sessions.

Demonstration of Meta's scene discovery feature.

Improvements have been made to the core OpenXR loop, enhancing tracking stability and preparing XR for running render processes on a separate thread.

Other enhancements include improved foveated rendering/VRS, passthrough, and various supporting systems. Additionally, support for hand/finger tracking, body tracking, and face tracking has been improved and standardized.

Other improvements include fixes for tracking issues in the native mobile interface.

Documentation

Regarding the engine's documentation, comments are now enabled on the online docs. This functionality is supported by Giscus, a FOSS project that uses GitHub Discussions to enable comments on pages.

Self links to methods, properties, and other elements in the online class reference have been added, allowing you to link directly to a method while reading the description.

Syntax highlighting and a copy button for code blocks in the built-in documentation viewer have also been added.

Support for deprecated and experimental messages has been introduced, including the use of deprecation messages when generating bindings in C#.

Additionally, documentation from GDExtensions can now be generated using --gdextension-docs with --doctool.

Core

When it comes to the core of the engine, the additions include a new PackedVector4Array Variant type and the use of WorkerThreadPool for server threads. The latter represents an important step in fixing and optimizing the multithreaded rendering option.

Additionally, multiple fixes have been made to improve thread safety during resource loading. These improvements make the multithreaded resource loader safer to use and reduce the risk of deadlocks.

This is a summary of the new features and improvements in Godot 4.3. For more information, be sure to visit the Godot Engine website.

Blips Game Music Packs

Note: You're leaving the Blips Blog. The visited links may be subject to different privacy and cookie policies.