Software 42837 Published by

The Godot 4.0.4 maintenance release is now available. The Godot Engine is a free, all-in-one, cross-platform game engine that makes it easy for you to create 2D and 3D games.



Maintenance release: Godot 4.0.4

It has been a busy few months since the release of  Godot 4.0.3, the previous stable version of the 4.0 branch. And while some of the developers took the opportunity to migrate their projects to the latest release of  Godot 4.1.1 or even to try our experimental builds of  Godot 4.2, many others chose to pin the version and stick to it for the sake of stability.

And so it’s our goal to improve said stability as long as we can manage it. Godot 4.0.4 contains a multitude of changes — addressing reported issues, performance problems and some frictions in the usability department. It also adds some of the missing documentation, and corrects a few mistakes in existing descriptions.

One important change in this release is a security fix for a potential denial of service when using ENet. If your project uses ENetMultiplayerPeer or the low-level ENetConnection, then we strongly recommend updating to this version. Thanks to  Facundo Fernández for reporting this vulnerability. A patch has been submitted to the upstream ENet repository as well.

Download Godot 4.0.4 now or try the  online version of the Godot editor.

The illustration picture used for this release is from  Sky Runner — a speed running game by  Leon Stansfield where your goal is simple: get from point A to point B… across a set of sky islands with some tricks up your sleeve. It’s being made with Godot 4 and you get try out the demo on  itch.io right now! You should also follow Leon on  Twitter or  Mastodon for updates and other demos and experiments that he creates with Godot.

Changes

72 contributors made 158 pull-requests (or 166 commits) as a part of this release. See the  curated changelog for a list of most notable differences, or browse our  interactive changelog for a complete list of changes with links to relevant PRs and commits.

Here are the main changes since 4.0.3-stable:

  • 2D: Don’t create bones from empty scene ( GH-77473).
  • 2D: Draw materials in tile atlas view ( GH-77909).
  • 2D: Fix various crashes in the tileset editor ( GH-77382 GH-78165 GH-78796).
  • 3D: Fix CSGPolygon3D in path mode disappearing at runtime ( GH-77118).
  • Animation: Adjust BoneAttachment3D children/meshes during rest fixer ( GH-77123).
  • Animation: Improve Skeleton3D::find_bone() performance ( GH-77307).
  • Animation: Fix for SkeletonIK3D interpolation and bone roll ( GH-77469).
  • Animation: Fix AnimationPlayer cumulative speed_scale ( GH-77500).
  • Audio: Fix trim when importing WAV ( GH-75261).
  • Audio: Fix 2D audio in multiple viewports ( GH-76713).
  • C#: Synchronize adding ScriptInstances ( GH-75188).
  • C#: Fix C# glue generation for enums with negative values ( GH-77018).
  • C#: Add version defines to help users deal with breaking changes ( GH-78270).
  • Core: Fix StringName comparison ( GH-77197).
  • Core: Ignore the project_settings_override file when in editor ( GH-77459).
  • Editor: Add an editor option to copy system info to clipboard ( GH-65902).
  • Editor: Add a scale_gizmo_handles entry to the Touchscreen editor settings ( GH-75718).
  • Editor: Make sure script cache is created after reimport ( GH-75798).
  • Editor: Allow up to INT32_MAX max size in Array/Dictionary editor ( GH-77225).
  • Editor: Avoid error spam on first opening of a not yet imported project ( GH-77276).
  • Editor: Fix Window derived nodes being unselectable for ViewportTexture NodePath ( GH-77312).
  • GDScript: Fix warning ignoring for member variables ( GH-76203).
  • GDScript: Fix extraction of chained tr() calls ( GH-77538).
  • GDScript: Treat BitField<Enum> as int (not Enum) ( GH-77579).
  • GUI: ItemList: Fix item text positions in RTL mode ( GH-77166).
  • GUI: Use defined key mapping for closing popups and dialogs ( GH-77297).
  • GUI: TextServer: Prevent duplicate line breaks on virtual spaces when line width is significantly smaller than character width ( GH-77514).
  • Input: Improve touchpad and mouse support for the Android editor ( GH-77498).
  • Input: Fix spatial viewport multitouch detection support ( GH-78083).
  • Network: Fix HTTPClient _request` using wrong size ( GH-75867).
  • Network: Better handle truncated socket messages ( GH-79699).
  • Particles: Correctly reset particle size and rotation in ParticlesProcessMaterial ( GH-78021).
  • Physics: Fix width and center position of CapsuleShape2D::get_rect ( GH-77065).
  • Porting: Android: Fix crash in the Android editor when creating a new AudioStreamMicrophone ( GH-77686).
  • Porting: Android: Set pending intent flag to stop insta-crash ( GH-78175).
  • Porting: Windows: Fix for Win+M crashing the editor ( GH-78235).
  • Rendering: Disable AMD switchable graphics on Windows with Vulkan to fix driver issue ( GH-73450).
  • Rendering: Fix modulation propagation for Y-sorted CanvasItems ( GH-77079).
  • Rendering: Fix LightmapGI dynamic object lighting ( GH-77089).
  • Rendering: Fix calculation of skinned AABB for unused bones ( GH-77265).
  • Rendering: Take 3D resolution scaling into account for mesh LOD ( GH-77294).
  • Rendering: Fix uninitialized Y-sort modulate for CanvasItems ( GH-78134).
  • Thirdparty: CA certificates 2023.06, brotli ed1995b6b, msdfgen 1.10, recast 1.6.0, tinyexr 1.0.5, wslay 0e7d106ff, zstd 1.5.5.
  • As well as many improvements to the documentation.

One previously accepted change from RC1 was reverted in the stable release to preserve compatibility:

  • Animation: Fix get_bone_global_pose_no_override() returning incorrect values ( GH-77194).

Known incompatibilities

As of now, there are no known incompatibilities with previous Godot 4.0 releases. We encourage all users to upgrade to 4.0.4.

If you experience any unexpected behavior change in your projects after upgrading to 4.0.4, please  file an issue on GitHub.

Gnome_shell_screenshot_gryh61

Maintenance release: Godot 4.0.4