CPU particles have been maintained alongside GPU particles for a long time, but it’s becoming harder and harder to keep feature parity , especially after big changes such as the ones described above. CPU particles were added at the time of the GLES2 renderer in Godot 3, which did not have the capability to support GPU particles. Godot 4 has Vulkan and GLES3 renderers, both of which support GPU particles. This makes it hard to justify maintaining four separate nodes in two different languages (GLSL and C++).
For now, development around particles will remain focused on fixing bugs that may have gotten past the review. While a lot of people tested the PR, there still can be lesser used features and edge cases with issues. Thanks to everyone who helped with the development and testing! It was a huge undertaking and it wouldn’t be possible without every single one of you <3
I will be taking time to assess the current needs of the VFX pipeline in Godot. My goal, first and foremost, is to enable an artist-friendly workflow. This means reducing the number of technicalities and “gotchas” that Godot currently puts in front of technical artists. In no specific order, here are a couple of things currently on my mind: visual shader support for process materials, additional visual shader nodes, and more spawn options for particles. You can check the VFX and Techart wishlist on GitHub for more information on what’s in the works.
Note that there’s currently no contributor specifically hired to work on particles, therefore I cannot promise any timeline for all this planned work. All those things depend on how much time I can dedicate to Godot and how much time other contributors can offer for this area as well.
If you would like to help with the development of these features, please, consider supporting the project financially ! More funding allows us to sponsor volunteer contributors and better respond to technical demands of project users.
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 .
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 the Godot Foundation . There are also several alternative ways to donate which you may find more suitable.
As a tester, you are encouraged to open bug reports if you experience issues with 3.1 RC. Please check first the existing issues , using the search function with relevant keywords, to ensure that the bug you experience is not known already.
At this stage, we are mostly interested in critical bugs which could be showstoppers in Godot 3.1 stable. Yet feel free to report non-critical issues and enhancement proposals that will be worked on once 3.1 has been released, and can eventually be included in 3.1.x patch releases.
As a tester, you are encouraged to open bug reports if you experience issues with 3.1 RC. Please check first the existing issues , using the search function with relevant keywords, to ensure that the bug you experience is not known already.
At this stage, we are mostly interested in critical bugs which could be showstoppers in Godot 3.1 stable. Yet feel free to report non-critical issues and enhancement proposals that will be worked on once 3.1 has been released, and can eventually be included in 3.1.x patch releases.
As a tester, you are encouraged to open bug reports if you experience issues with 3.1 RC. Please check first the existing issues , using the search function with relevant keywords, to ensure that the bug you experience is not known already.
At this stage, we are mostly interested in critical bugs which could be showstoppers in Godot 3.1 stable. Yet feel free to report non-critical issues and enhancement proposals that will be worked on once 3.1 has been released, and can eventually be included in 3.1.x patch releases.
Since RC 1, a couple regressions have been fixed, and a few additional bug fixes, documentation updates and usability enhancements have been included. We now publish Godot 3.2.1 RC 2 to validate those additional changes. 53 new commits have been cherry-picked to the 3.2
branch, for a total of 171 commits since the 3.2-stable
release.
There are no huge changes planned in this release, but mostly a focus on fixing some blocking regressions and important bugs, such as:
Some new/improved features are planned further down the road for the 3.2.x releases, but the focus for 3.2.1 is on stability and fixing regressions.
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 3.1.x or 3.2 no longer works in 3.2.1 RC 2).
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 3.2.1 no longer works in 3.2.2 RC 1).
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 3.2.1 no longer works in 3.2.2 RC 2).
API documentation updates.See the full changelog since 3.3-stable .
This release is built from commit f6c29d1cf5eddebbace38172c0f30b6d4ab5e5f2 .
Downloads The download links for dev snapshots are not featured on the Download page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary that matches your platform:
Standard build (GDScript, GDNative, VisualScript).Note: UWP export templates are missing from this build, will be re-added in the next build. Mono build (C# support + all the above). You need to have MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.122 are included in this build.Bug reports As a tester, you are encouraged to open bug reports if you experience issues with 3.3.1 RC 2. 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.
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 3.3 no longer works in 3.3.1 RC 2).
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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-3-3-rc-1/index.html b/article/release-candidate-godot-3-3-3-rc-1/index.html
index 7e4fd66f86..1f39824cf4 100644
--- a/article/release-candidate-godot-3-3-3-rc-1/index.html
+++ b/article/release-candidate-godot-3-3-3-rc-1/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 4 August 2021 While we’re busy working on both the upcoming Godot 4.0 and 3.4 releases (with a dev snapshot for 3.4 beta 2 available now), we still cherry-pick important bug fixes to the 3.3 branch regularly for maintenance releases (see our release policy ).
Godot 3.3.2 was released in May, and a number of useful fixes have been queued in the 3.3
branch since then, so now’s a good time to push them in production.
As there is no new feature and only bug fixes, this RC 1 should be as stable as 3.3.2-stable and can be used in production if you need one of the fixes it includes.
As usual, you can try it live with the online version of the Godot editor updated for this release.
Changes Here are some of the main changes since 3.3.2-stable:
Android: Add GDNative libraries to Android custom Gradle builds (GH-49912 ). Android: Disable resource optimizations for legacy release builds (GH-50664 ). Animation: Fixed issue where bones become detached if multiple SkeletonIK nodes are used (GH-49031 ). Core: Save binary ProjectSettings
key length properly (GH-49649 ). C#: Fix C# bindings generator for default value types (GH-49702 ). C#: Ignore paths with invalid chars in PathWhich
(GH-50918 ). Editor: Fix slow load/save of scenes with many instances of the same script (GH-49570 ). Editor: Fix logic for showing tilemap debug collision (GH-49075 ). Editor: Fix handling of HiDPI scaling for the curve editor’s handles (GH-50627 ). GraphEdit: Allow higher and lower maximum zoom values in GraphEdit (GH-49437 ). GridMap: Fix GridMap erasing octants in the wrong order (GH-50052 ). HTML5: Raise default initial memory to 32 MiB (GH-50422 ). Import: glTF: Fix mesh nodes which are also bones (GH-49119 ). Import: Fix loading RLE compressed TGA files (GH-49603 ). Input: Fix game controllers ignoring the last listed button (GH-48934 ). Input: Add action_get_deadzone()
method to InputMap (GH-50065 ). iOS: Fix plugin configuration loading (GH-50433 ). iOS: Remove duplicate orientation settings in the iOS export preset (GH-48943 ). Lightmapper: Fix potential BakedLightmap crash (GH-50150 ). Linux: Fix crash when using ALSA MIDI with PulseAudio (GH-48350 ). LSP: Translate file path to URI on LSP symbol requests (GH-49687 ). LSP: Implement didClose
notification (GH-50277 ). LSP: Fix SymbolKind
reporting wrong types (GH-50914 ). macOS: Fix custom mouse cursor not set after mouse mode change (GH-49848 ). Networking: Fix parsing some IPv6 URLs for WebSocket (GH-48205 ). Networking: WebsocketPeer outbound buffer fixes and buffer size query (GH-51037 ). Physics: Avoid NaNs when calculating inertias for bodies without mass/area (GH-49185 ). Physics: Ignore disabled shapes for mass property calculations (GH-49699 ). Porting: Fix Directory::get_space_left()
result on macOS and Linux (GH-49222 ). Rendering: VisualServer now sorts based on AABB position (GH-43506 ). Rendering: Fixes depth sorting of meshes with transparent textures (GH-50721 ). Rendering: Fix CanvasItem bounding rect calculation in some cases (GH-49160 ). Rendering: Fix flipped binormal in SpatialMaterial triplanar mapping (GH-49950 ). RichTextLabel: Fix auto-wrapping on CJK texts (GH-49280 ). Windows: Fix code signing with osslsigncode
from Linux/macOS (GH-49985 ). Thirdparty library updates: mbedtls 2.16.11. Translation updates. API documentation updates. See the full changelog since 3.3.2-stable on GitHub , or in text form (sorted by authors or chronologically ).
This release is built from commit f6c29d1cf5eddebbace38172c0f30b6d4ab5e5f2 .
Downloads The download links for dev snapshots are not featured on the Download page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary that matches your platform:
Standard build (GDScript, GDNative, VisualScript).Note: UWP export templates are missing from this build, will be re-added in the next build. Mono build (C# support + all the above). You need to have MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.122 are included in this build.Bug reports As a tester, you are encouraged to open bug reports if you experience issues with 3.3.3 RC 1. 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.
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 3.3 no longer works in 3.3.3 RC 1).
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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-3-3-rc-2/index.html b/article/release-candidate-godot-3-3-3-rc-2/index.html
index ee37979212..1faec8b0e3 100644
--- a/article/release-candidate-godot-3-3-3-rc-2/index.html
+++ b/article/release-candidate-godot-3-3-3-rc-2/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 16 August 2021 While we’re busy working on both the upcoming Godot 4.0 and 3.4 releases (with a dev snapshot for 3.4 beta 3 available now), we still cherry-pick important bug fixes to the 3.3 branch regularly for maintenance releases (see our release policy ).
Godot 3.3.2 was released in May, and a number of useful fixes have been queued in the 3.3
branch since then, so now’s a good time to push them in production.
As there is no new feature and only bug fixes, this RC 2 should be as stable as 3.3.2-stable and can be used in production if you need one of the fixes it includes.
A notable change in 3.3.2 RC 2 is that the Android builds now target API level 30 as required by Google Play , and have partial support for Android scoped storage. The minimum API level has also been increased from 18 to 19.
As usual, you can try it live with the online version of the Godot editor updated for this release.
Changes Here are some of the main changes since 3.3.2-stable:
Android: Add partial support for Android scoped storage, target API level 30 (GH-50359 ). Android: Add GDNative libraries to Android custom Gradle builds (GH-49912 ). Android: Disable resource optimizations for legacy release builds (GH-50664 ). Android: Resolve issue where the Godot app remains stuck when resuming (GH-51584 ). Animation: Fixed issue where bones become detached if multiple SkeletonIK nodes are used (GH-49031 ). Audio: Fix cubic resampling algorithm (GH-51082 ). Core: Save binary ProjectSettings
key length properly (GH-49649 ). C#: Fix C# bindings generator for default value types (GH-49702 ). C#: Ignore paths with invalid chars in PathWhich
(GH-50918 ). Editor: Fix slow load/save of scenes with many instances of the same script (GH-49570 ). Editor: Fix logic for showing tilemap debug collision (GH-49075 ). Editor: Fix handling of HiDPI scaling for the curve editor’s handles (GH-50627 ). GraphEdit: Allow higher and lower maximum zoom values in GraphEdit (GH-49437 ). GridMap: Fix GridMap erasing octants in the wrong order (GH-50052 ). HTML5: Raise default initial memory to 32 MiB (GH-50422 ). Import: glTF: Fix mesh nodes which are also bones (GH-49119 ). Import: Fix loading RLE compressed TGA files (GH-49603 ). Input: Fix game controllers ignoring the last listed button (GH-48934 ). Input: Add action_get_deadzone()
method to InputMap (GH-50065 ). iOS: Fix plugin configuration loading (GH-50433 ). iOS: Remove duplicate orientation settings in the iOS export preset (GH-48943 ). Lightmapper: Fix potential BakedLightmap crash (GH-50150 ). Linux: Fix crash when using ALSA MIDI with PulseAudio (GH-48350 ). LSP: Translate file path to URI on LSP symbol requests (GH-49687 ). LSP: Implement didClose
notification (GH-50277 ). LSP: Fix SymbolKind
reporting wrong types and get_node()
parsing (GH-50914 , GH-51283 ). macOS: Fix custom mouse cursor not set after mouse mode change (GH-49848 ). Networking: Fix parsing some IPv6 URLs for WebSocket (GH-48205 ). Networking: WebsocketPeer outbound buffer fixes and buffer size query (GH-51037 ). Networking: Fix IP address resolution incorrectly locking the main thread (GH-51212 ). PathFollow: Fix forward calculation for the position at the end of the curve (GH-50986 ). Physics: Avoid NaNs when calculating inertias for bodies without mass/area (GH-49185 ). Physics: Ignore disabled shapes for mass property calculations (GH-49699 ). Porting: Fix Directory::get_space_left()
result on macOS and Linux (GH-49222 ). Rendering: VisualServer now sorts based on AABB position (GH-43506 ). Rendering: Fixes depth sorting of meshes with transparent textures (GH-50721 ). Rendering: Fix CanvasItem bounding rect calculation in some cases (GH-49160 ). Rendering: Fix flipped binormal in SpatialMaterial triplanar mapping (GH-49950 ). RichTextLabel: Fix auto-wrapping on CJK texts (GH-49280 ). Windows: Fix platform file access to allow file sharing with external programs (GH-51430 ). Windows: Fix code signing with osslsigncode
from Linux/macOS (GH-49985 ). Thirdparty library updates: mbedtls 2.16.11, CA root certifactes. Translation updates. API documentation updates. See the full changelog since 3.3.2-stable on GitHub , or in text form (sorted by authors or chronologically ). You can also review the changes since 3.3.3 RC 1 .
This release is built from commit f66ff33b25e1a1298d119b6a198f2562789e5f0c .
Downloads The download links for dev snapshots are not featured on the Download page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary that matches your platform:
Standard build (GDScript, GDNative, VisualScript).Note: UWP export templates are missing from this build, will be re-added in the next build. Mono build (C# support + all the above). You need to have MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.122 are included in this build.Bug reports As a tester, you are encouraged to open bug reports if you experience issues with 3.3.3 RC 2. 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.
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 3.3 no longer works in 3.3.3 RC 2).
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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-3-4-rc-1/index.html b/article/release-candidate-godot-3-3-4-rc-1/index.html
index 1434d57208..ea8e60dfe8 100644
--- a/article/release-candidate-godot-3-3-4-rc-1/index.html
+++ b/article/release-candidate-godot-3-3-4-rc-1/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 29 September 2021 While we’re busy working on both the upcoming Godot 4.0 and 3.4 releases (with a dev snapshot for 3.4 beta 5 available now), we still cherry-pick important bug fixes to the 3.3 branch regularly for maintenance releases (see our release policy ).
Godot 3.3.3 was released a month ago, and a handful of important fixes have been queued in the 3.3
branch since then. Most notably, users of the GDScript LSP in Visual Studio Code have been experiencing crashes in 3.3.3, which are fixed in this new Godot 3.3.4 RC 1 .
Note: Version numbers can be confusing with three branches worked on in parallel - this release is 3.3.4 , i.e. a maintenance update to the 3.3 branch. This is not the upcoming 3.4 feature release.
As there is no new feature and only bug fixes, this RC 1 should be as stable as 3.3.3-stable and can be used in production if you need one of the fixes it includes.
As usual, you can try it live with the online version of the Godot editor updated for this release.
Changes Here are some of the main changes since 3.3.3-stable:
Android: Fix crash when calling OS.vibrate_handheld(0)
(GH-51953 ). C# / macOS: Automatically enable JIT entitlements for the Mono exports (GH-50317 ). C#: Fix reloading tool scripts in the editor (GH-52883 ). Core: Fix LocalVector
crash on insert (GH-52121 ). Core: Quote and escape ConfigFile keys when necessary (GH-52180 ). Core: Compare signal connections by ObjectID, avoids spurious reordering in .tscn files (GH-52493 ). CSG: Don’t update CSGShape when not inside tree (GH-52647 ). Debugger: Fix invalid “Too many warnings!” error in remote script debugger (GH-52416 ). Editor: Fix setting NodePath properties on multiple nodes at once (GH-51981 ). Editor: Fix preview grid and preserve source texture margins in SpriteFrames editor (GH-52910 ). GLES3: Fix multimesh being colored by other nodes (GH-47582 ). GLES3: Properly clear cubemap filter state when texture array environment disabled (GH-51938 ). GLES3: Fix Light2D UBO initialization (GH-52243 ). GUI: Remove deprecation warning for BaseButton.enabled_focus_mode
(GH-51993 ). GUI: LinkButton’s text is now automatically translated (GH-52138 ). GUI: TabContainer: Fix drawing current tab when it’s disabled (GH-52299 ). HTML5: Fix bug in AudioWorklet when reading output buffer (GH-52696 ). HTML5: Use browser mix rate by default on the Web (GH-52723 ). iOS: Implement missing OS set
/get_clipboard()
methods (GH-52540 ). LSP: Fix completion crashing on scene-less scripts (GH-51333 ). Rendering: Prevent shaders from generating code before the constructor finishes (GH-52475 ). VisualScript: Fix VisualScriptPropertySet value hint (GH-52219 ). API documentation updates. See the full changelog since 3.3.3-stable on GitHub , or in text form (sorted by authors or chronologically ).
This release is built from commit 90022710ab6e5490e4b1e563f163bc5edc9b9735 .
Downloads The download links for dev snapshots are not featured on the Download page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary that matches your platform:
Standard build (GDScript, GDNative, VisualScript).Note: UWP export templates are missing from this build, will be re-added in the next build. Mono build (C# support + all the above). You need to have MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.122 are included in this build.Bug reports As a tester, you are encouraged to open bug reports if you experience issues with 3.3.4 RC 1. 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.
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 3.3 no longer works in 3.3.4 RC 1).
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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-3-rc-6/index.html b/article/release-candidate-godot-3-3-rc-6/index.html
index 14269a2270..f172804c8e 100644
--- a/article/release-candidate-godot-3-3-rc-6/index.html
+++ b/article/release-candidate-godot-3-3-rc-6/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 19 March 2021 Godot 3.3 ? Weren’t we working on a version 3.2.4?If you missed the recent news, we decided to change our versioning for Godot 3.x and rename the upcoming version 3.2.4 to Godot 3.3 , thereby starting a new stable branch. Check the dedicated blog post for details.
But aside from the name change, it’s still the same release. Our last testing build was 3.2.4 RC 5 and so this new Release Candidate is named 3.3 RC 6 . The version change doesn’t mean that we’re reopening the branch for new features, and so Godot 3.3 is very close to its stable release.
We still need a good round of testing on this new build to ensure that everything works as we want it before we make this the new stable branch (which will supersede the current 3.2.3 stable version).
As usual, you can try it live with the online version of the Godot editor updated for this release.
Highlights The main changes coming in Godot 3.3 and included in this Release Candidate are:
All these need to be thoroughly tested to ensure that they work as intended in the upcoming 3.3-stable.
Changes The main new features are highlighted in bold. Refer to the linked pull requests for details.
Android: Add support for the Android App Bundle format (GH-42185 ). Android: Add support for embedding Godot as a subview in Android applications (GH-42186 ). Android: Fix splash screen loading (GH-42389 ). Android: Add notch cutout support for Android P and later (GH-43104 ). Android: Add support for mouse events (GH-42360 ). Android: Add support for keyboard modifiers and arrow keys (GH-40398 ). Android: Fix screen orientation settings and API (GH-43022 , GH-43248 ), GH-43511 ). Android: Update logic to sign prebuilt APKs with apksigner
instead of jarsigner
, as required for Android API 30 (GH-44645 ). Audio: Add MP3 loading and playback support (GH-43007 ).Audio: Fix pops in play()
for spatial audio players (GH-46151 ). Audio: Add AudioEffectCapture
to access the microphone in real-time (GH-45593 ). Buildsystem: Add production=yes
option to set optimal options for production builds (GH-45679 ).Users making custom builds should use this option which is equivalent to use_lto=yes debug_symbols=no use_static_cpp=yes
. Note for Linux builds: use_static_cpp=yes
and udev=yes
are now the default values, so you need libudev
and libstdc++-static
development packages to build in optimal conditions. C#: Official builds now use Mono 6.12.0.114. C#: Re-work solution build output panel (GH-42547 ). C#: Godot.NET.Sdk/3.3.0 - Fix targeting .NETFramework with .NET 5 (GH-44135 ). C#: Fixes to WebAssembly support (GH-44105 , GH-44374 ).C#: Fix System.Collections.Generic.List marshalling (GH-45029 ).C#: Fix support for Unicode identifiers (GH-45310 ). C#: Add generic support to PackedScene.Instance
(GH-42588 ). Camera2D: Fix frame delay and smoothing processing issues (GH-46697 , GH-46717 ). Core: Optimize octree and fix leak (GH-41123 ). Core: Modernization of the multi-threading APIs (GH-45618 ). Core: Disable decayment of freed Objects to null in debug builds (GH-41866 ). Core: More fixes to Variant and Reference pointers (GH-43049 ). Core: Add append_array
method to Array
class (GH-43398 ). Core: Add ability to restore RandomNumberGenerator
state (GH-45019 ). CSG: Various bug fixes. Editor: Improved Inspector sub-resource editing (GH-45907 ). Editor: Detect external modification of scenes (GH-31747 ). Editor: Add support for copy-pasting nodes (GH-34892 ). Editor: Fixed renaming/moving of nodes with exported NodePaths in the editor (GH-42314 ). Editor: Improve 3D rotation gizmo (GH-43016 ). Editor: Add a dynamic infinite grid to the 3D editor (GH-43206 ). Editor: Use 75% editor scale on small displays automatically (GH-43611 ). Editor: Require Ctrl for switching between editors, bind F2 to Rename Node (GH-38201 ). Editor: 3D editor grid improvements (GH-45594 ). Editor: Adjust auto-scale on 4K monitors to 150% (GH-45910 ). FBX: Rewritten and improved importer (GH-42941 ).Font: Load dynamic fonts to memory on all platforms to avoid locked files (GH-44117 ). Font: Fix fallback emoji font color (GH-44212 ). GDScript: Fix leaks due to cyclic references (GH-41931 ). GLES2/GLES3: Fix buffer orphaning on desktop (GH-42734 ). GLES2/GLES3: Fix flipped normal mapping in 2D with batching and nvidia workaround (GH-41323 , GH-41254 ). GLES2: Various improvements to 2D batching (GH-42119 ). See GH-42899 for instructions on how to test the improved 2D batching and report your results. GLES2: Fix glow on devices with only 8 texture slots (GH-42446 ). GLES2: Use separate texture unit for light_texture
(GH-42538 ). GLES2: Fix PanoramaSky artifacts on Android (GH-44489 ). GLES2: Fix reflection probes for WebGL 1.0 (GH-45465 ). GLES2: Add support for anisotropic filtering (GH-45654 ). GLES2: Improve PCF13 shadow rendering by using a soft PCF filter (GH-46301 ). GLES3: Add 2D batching support, unified architecture with GLES2 (GH-42119 ). See GH-42899 for instructions on how to test the new GLES3 2D batching and report your results. GLES3: Fixes to Screen Space Reflections (GH-38954 , GH-41892 ). GLES3: Ensure that color values in Reinhard tonemapping are positive (GH-42056 ). glTF: Use vertex colors by default (GH-41007 ). glTF: Fix parsing base64-encoded buffer and image data (GH-42501 , GH-42504 ). glTF: Fix handling of normalized
accessor property (GH-44746 ). glTF: Relax node and bone naming constraints (GH-45545 , GH-47074 ). GraphEdit: Add minimap support, enabled by default (GH-43416 ).GUI: Add AspectRatioContainer
class (GH-45129 ).HTML5: Synchronous main, better persistence, handlers fixes, optional full screen (GH-42266 ). HTML5: Move audio processing to thread when threads are enabled (GH-42510 ). HTML5: Merged code for web editor prototype (GH-42790 ). HTML5: Add AudioWorklet support in multithreaded builds (GH-43454 ).HTML5: Add optional GDNative support (GH-44076 ).HTML5: Use internal implementation of the Gamepad API (GH-45078 ).HTML5: Tons of fixes all around to better support the Web editor :) HTML5: Refactored and simplified HTML page template (GH-46200 ). HTML5: Add PWA support to the editor page (GH-46796 ). Import: New editor to configure default import presets (GH-46354 ). Import: Fixed lossy_quality
setting for ETC import (GH-44682 ).See the linked PR for details, high lossy_quality
values will now incur significantly longer import times (but correspondingly higher quality). Input: Add mouse event pass-through support for the game window (GH-40205 ). Input: Add support for buttons and D-pads mapped to half axes (GH-42800 ). Input: Add driving joystick type to windows joystick handling (GH-44082 ). Input: Add support for new SDL gamecontroller keywords (used e.g. by PS5 controller) (GH-45798 ). iOS: Add support for iOS plugins, with a similar interface to Android plugins (GH-41340 ).You can read the updated documentation on godot-docs#4213 , until it’s merged and included in the 3.2
documentation. Previously built-in iOS features like ARKit, camera support, GameCenter, ICloud and InAppStore modules are now first-party plugins which can be installed from godot-ios-plugins . The relevant documentation will soon be updated to be clarify their usage with 3.3-stable. iOS: Fix multiple issues with PVRTC import, disable ETC1 (GH-38076 ). iOS: Add touch delay value to project settings (GH-42457 ). iOS: Fixes to keyboard input, including better IME support (GH-43560 ). iOS: Native loading screen implementation (GH-45693 ). Lighting: New CPU lightmapper (GH-44628 ).Linux: Fix issues related to delay when processing events (GH-42341 ). Linux: Implement --no-window
mode (GH-42276 ). Linux: Prevent audio corruption in the ALSA driver (GH-43928 ). macOS: ARM64 support in official binaries. Currently only for standard builds, Mono ARM64 builds are still a work in progress. macOS: Editor binary is now signed and notarized! Linux: Dynamically load libpulse.so.0
, libasound.so.1
and libudev.so.1
(GH-46107 , GH-46117 ). Linux: Fix PRIME detection on Steam (GH-46792 ). Linux: Binaries are now stripped of string and symbol tables, which reduces their size significantly:Editor: 9 MB less (standard) and 35 MB less (Mono). Templates: 5-6 MB less (standard) and 30 MB less (Mono). macOS: Fix mouse position in captured mode (GH-42328 ). macOS: Fix get_screen_dpi
for non-fractional display scales (GH-42478 ). macOS: Implement --no-window
mode (GH-42276 ). macOS: Improve Mono distribution in .app bundle to allow codesigning exported binaries (GH-43768 ). macOS: Add entitlements config and export template dylib
signing to the export (GH-46618 ). macOS: Binaries are now stripped of string and symbol tables, which reduces their size significantly:Editor: 14 MB less (standard) and 9 MB less (Mono). Templates: 9-10 MB less (standard) and 6 MB less (Mono). MeshInstance: Add option for software skinning (GH-40313 ). Node: Fix Editable Children issues with node renaming, moving, duplicating and instancing (GH-39533 ). Particles: Fix impact of lifetime_randomness
on properties using a curve (GH-45496 ). Physics: New dynamic BVH for GodotPhysics backends (GH-44901 ). Physics: Various bug fixes for 2D and 3D. Physics: Fix multiple issues with one-way collisions (GH-42574 ). Physics: Implement pause-aware picking (GH-39421 ). This breaks compat but is not enabled by default for existing projects (see project setting physics/common/enable_pause_aware_picking
). It will be enabled by default for new projects created with 3.3. Physics: Implement CollisionPolygon
margin
property for Bullet (GH-45855 ). Physics: Implement Cylinder support in GodotPhysics3D (GH-45854 ). Physics: Allow CollisionObject
to show collision shape meshes (GH-45783 ). Plugins: Detect plugins recursively (GH-43734 ). Rendering: Add fast approximate antialiasing (FXAA) to Viewport (GH-42006 ). Rendering: Disable lights for objects with baked lighting (GH-41629 ). Rendering: New dynamic BVH (GH-44901 ). Rendering: Add METALLIC
to light()
builtins (GH-42548 ). Rendering: Various fixes to light culling (GH-46694 ). Spatial: Optimize transform propagation for hidden 3D objects (GH-45583 ). Sprite3D: Use full float UV for better precision (GH-42537 ) [regression fix]. TileMap: Add show_collision
property to see collision shapes in editor and at run-time (GH-46623 ). VR: Add WebXR support for VR games (GH-42397 ).Windows: Fix debugger not getting focused on break on Windows (GH-40555 ). YSort: Make rendering order more deterministic (GH-42375 ). Thirdparty library updates (enet 1.3.17, freetype 2.10.4, mbedtls 2.16.10, miniupnpc 2.2.2, pcre2 10.36, tinyexr 1.0.0, zstd 1.4.8). API documentation updates. Editor translation updates. And many more bug fixes and usability enhancements all around the engine! See the full changelog since 3.2.3-stable (chronological , or for each contributor ), or the changes since the previous RC 5 build .
This release is built from commit 15ff752737c53a1727cbc011068afa15683509be .
Downloads The download links for dev snapshots are not featured on the Download page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary that matches your platform:
Standard build (GDScript, GDNative, VisualScript).Mono build (C# support + all the above). You need to have MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.114 are included in this build.Bug reports As a tester, you are encouraged to open bug reports if you experience issues with 3.3 RC 6. 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.
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 3.2.3 or earlier no longer works in 3.3 RC 6).
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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-3-rc-7/index.html b/article/release-candidate-godot-3-3-rc-7/index.html
index 4e8a1b1993..0fa533c499 100644
--- a/article/release-candidate-godot-3-3-rc-7/index.html
+++ b/article/release-candidate-godot-3-3-rc-7/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 30 March 2021 In case you missed the recent news, we decided to change our versioning for Godot 3.x and rename the upcoming version 3.2.4 to Godot 3.3 , thereby starting a new stable branch. Check the dedicated blog post for details.
This 7th Release Candidate fixes a number of regressions which had been introduced since 3.2.3. Nearly all critical regressions have now been fixed, so we should be able to release Godot 3.3 stable in the near future.
If you haven’t tried 3.3 RC builds yet, now would be a great time to do it to help us ensure everything upgrades smoothly from 3.2.3 to 3.3.
As usual, you can try it live with the online version of the Godot editor updated for this release.
Highlights The main changes coming in Godot 3.3 and included in this Release Candidate are:
All these need to be thoroughly tested to ensure that they work as intended in the upcoming 3.3-stable.
Changes The main new features are highlighted in bold. Refer to the linked pull requests for details.
Android: Add support for the Android App Bundle format (GH-42185 ). Android: Add support for embedding Godot as a subview in Android applications (GH-42186 ). Android: Fix splash screen loading (GH-42389 ). Android: Add notch cutout support for Android P and later (GH-43104 ). Android: Add support for mouse events (GH-42360 ). Android: Add support for keyboard modifiers and arrow keys (GH-40398 ). Android: Fix screen orientation settings and API (GH-43022 , GH-43248 ), GH-43511 ). Android: Update logic to sign prebuilt APKs with apksigner
instead of jarsigner
, as required for Android API 30 (GH-44645 ). Audio: Add MP3 loading and playback support (GH-43007 ).Audio: Fix pops in play()
for spatial audio players (GH-46151 ). Audio: Add AudioEffectCapture
to access the microphone in real-time (GH-45593 ). Buildsystem: Add production=yes
option to set optimal options for production builds (GH-45679 ).Users making custom builds should use this option which is equivalent to use_lto=yes debug_symbols=no use_static_cpp=yes
. Note for Linux builds: use_static_cpp=yes
and udev=yes
are now the default values, so you need libudev
and libstdc++-static
development packages to build in optimal conditions. C#: Official builds now use Mono 6.12.0.114. C#: Re-work solution build output panel (GH-42547 ). C#: Godot.NET.Sdk/3.3.0 - Fix targeting .NETFramework with .NET 5 (GH-44135 ). C#: Fixes to WebAssembly support (GH-44105 , GH-44374 ).C#: Fix System.Collections.Generic.List marshalling (GH-45029 ).C#: Fix support for Unicode identifiers (GH-45310 ). C#: Add generic support to PackedScene.Instance
(GH-42588 ). Camera2D: Fix frame delay and smoothing processing issues (GH-46697 , GH-46717 ). Core: Optimize octree and fix leak (GH-41123 ). Core: Modernization of the multi-threading APIs (GH-45618 ). Core: Disable decayment of freed Objects to null in debug builds (GH-41866 ). Core: More fixes to Variant and Reference pointers (GH-43049 ). Core: Add append_array
method to Array
class (GH-43398 ). Core: Add ability to restore RandomNumberGenerator
state (GH-45019 ). CSG: Various bug fixes. Editor: Improved Inspector sub-resource editing (GH-45907 ). Editor: Detect external modification of scenes (GH-31747 ). Editor: Add support for copy-pasting nodes (GH-34892 ). Editor: Fixed renaming/moving of nodes with exported NodePaths in the editor (GH-42314 ). Editor: Improve 3D rotation gizmo (GH-43016 ). Editor: Add a dynamic infinite grid to the 3D editor (GH-43206 ). Editor: Use 75% editor scale on small displays automatically (GH-43611 ). Editor: Require Ctrl for switching between editors, bind F2 to Rename Node (GH-38201 ). Editor: 3D editor grid improvements (GH-45594 ). Editor: Adjust auto-scale on 4K monitors to 150% (GH-45910 ). FBX: Rewritten and improved importer (GH-42941 ).Font: Load dynamic fonts to memory on all platforms to avoid locked files (GH-44117 ). Font: Fix fallback emoji font color (GH-44212 ). GDScript: Fix leaks due to cyclic references (GH-41931 ). GLES2/GLES3: Fix buffer orphaning on desktop (GH-42734 ). GLES2/GLES3: Fix flipped normal mapping in 2D with batching and nvidia workaround (GH-41323 , GH-41254 ). GLES2: Various improvements to 2D batching (GH-42119 ). See GH-42899 for instructions on how to test the improved 2D batching and report your results. GLES2: Fix glow on devices with only 8 texture slots (GH-42446 ). GLES2: Use separate texture unit for light_texture
(GH-42538 ). GLES2: Fix PanoramaSky artifacts on Android (GH-44489 ). GLES2: Fix reflection probes for WebGL 1.0 (GH-45465 ). GLES2: Add support for anisotropic filtering (GH-45654 ). GLES2: Improve PCF13 shadow rendering by using a soft PCF filter (GH-46301 ). GLES3: Add 2D batching support, unified architecture with GLES2 (GH-42119 ). See GH-42899 for instructions on how to test the new GLES3 2D batching and report your results. GLES3: Fixes to Screen Space Reflections (GH-38954 , GH-41892 ). GLES3: Ensure that color values in Reinhard tonemapping are positive (GH-42056 ). glTF: Use vertex colors by default (GH-41007 ). glTF: Fix parsing base64-encoded buffer and image data (GH-42501 , GH-42504 ). glTF: Fix handling of normalized
accessor property (GH-44746 ). glTF: Relax node and bone naming constraints (GH-45545 , GH-47074 ). GraphEdit: Add minimap support, enabled by default (GH-43416 ).GUI: Add AspectRatioContainer
class (GH-45129 ).HTML5: Synchronous main, better persistence, handlers fixes, optional full screen (GH-42266 ). HTML5: Move audio processing to thread when threads are enabled (GH-42510 ). HTML5: Merged code for web editor prototype (GH-42790 ). HTML5: Add AudioWorklet support in multithreaded builds (GH-43454 ).HTML5: Add optional GDNative support (GH-44076 ).HTML5: Use internal implementation of the Gamepad API (GH-45078 ).HTML5: Tons of fixes all around to better support the Web editor :) HTML5: Refactored and simplified HTML page template (GH-46200 ). HTML5: Add PWA support to the editor page (GH-46796 ). Import: New editor to configure default import presets (GH-46354 ). Import: Add “Keep” import mode to keep files as-is and export them (GH-47268 ). Import: Fixed lossy_quality
setting for ETC import (GH-44682 ).See the linked PR for details, high lossy_quality
values will now incur significantly longer import times (but correspondingly higher quality). Input: Add mouse event pass-through support for the game window (GH-40205 ). Input: Add support for buttons and D-pads mapped to half axes (GH-42800 ). Input: Add driving joystick type to windows joystick handling (GH-44082 ). Input: Add support for new SDL gamecontroller keywords (used e.g. by PS5 controller) (GH-45798 ). iOS: Add support for iOS plugins, with a similar interface to Android plugins (GH-41340 ).You can read the updated documentation on godot-docs#4213 , until it’s merged and included in the 3.2
documentation. Previously built-in iOS features like ARKit, camera support, GameCenter, ICloud and InAppStore modules are now first-party plugins which can be installed from godot-ios-plugins . The relevant documentation will soon be updated to be clarify their usage with 3.3-stable. iOS: Fix multiple issues with PVRTC import, disable ETC1 (GH-38076 ). iOS: Add touch delay value to project settings (GH-42457 ). iOS: Fixes to keyboard input, including better IME support (GH-43560 ). iOS: Native loading screen implementation (GH-45693 ). Lighting: New CPU lightmapper (GH-44628 ).Linux: Fix issues related to delay when processing events (GH-42341 ). Linux: Implement --no-window
mode (GH-42276 ). Linux: Prevent audio corruption in the ALSA driver (GH-43928 ). macOS: ARM64 support in official binaries. Currently only for standard builds, Mono ARM64 builds are still a work in progress. macOS: Editor binary is now signed and notarized! Linux: Dynamically load libpulse.so.0
, libasound.so.1
and libudev.so.1
(GH-46107 , GH-46117 ). Linux: Fix PRIME detection on Steam (GH-46792 ). Linux: Binaries are now stripped of string and symbol tables, which reduces their size significantly:Editor: 9 MB less (standard) and 35 MB less (Mono). Templates: 5-6 MB less (standard) and 30 MB less (Mono). macOS: Fix mouse position in captured mode (GH-42328 ). macOS: Fix get_screen_dpi
for non-fractional display scales (GH-42478 ). macOS: Implement --no-window
mode (GH-42276 ). macOS: Improve Mono distribution in .app bundle to allow codesigning exported binaries (GH-43768 ). macOS: Add entitlements config and export template dylib
signing to the export (GH-46618 ). macOS: Binaries are now stripped of string and symbol tables, which reduces their size significantly:Editor: 14 MB less (standard) and 9 MB less (Mono). Templates: 9-10 MB less (standard) and 6 MB less (Mono). MeshInstance: Add option for software skinning (GH-40313 ). Node: Fix Editable Children issues with node renaming, moving, duplicating and instancing (GH-39533 ). Particles: Fix impact of lifetime_randomness
on properties using a curve (GH-45496 ). Physics: New dynamic BVH for GodotPhysics backends (GH-44901 ). Physics: Various bug fixes for 2D and 3D. Physics: Fix multiple issues with one-way collisions (GH-42574 ). Physics: Implement pause-aware picking (GH-39421 ). This breaks compat but is not enabled by default for existing projects (see project setting physics/common/enable_pause_aware_picking
). It will be enabled by default for new projects created with 3.3. Physics: Implement CollisionPolygon
margin
property for Bullet (GH-45855 ). Physics: Implement Cylinder support in GodotPhysics3D (GH-45854 ). Physics: Allow CollisionObject
to show collision shape meshes (GH-45783 ). Plugins: Detect plugins recursively (GH-43734 ). Rendering: Add fast approximate antialiasing (FXAA) to Viewport (GH-42006 ). Rendering: Disable lights for objects with baked lighting (GH-41629 ). Rendering: New dynamic BVH (GH-44901 ). Rendering: Add METALLIC
to light()
builtins (GH-42548 ). Rendering: Various fixes to light culling (GH-46694 ). Spatial: Optimize transform propagation for hidden 3D objects (GH-45583 ). Sprite3D: Use full float UV for better precision (GH-42537 ) [regression fix]. TileMap: Add show_collision
property to see collision shapes in editor and at run-time (GH-46623 ). VR: Add WebXR support for VR games (GH-42397 ).Windows: Fix debugger not getting focused on break on Windows (GH-40555 ). YSort: Make rendering order more deterministic (GH-42375 ). Thirdparty library updates (enet 1.3.17, freetype 2.10.4, mbedtls 2.16.10, miniupnpc 2.2.2, pcre2 10.36, tinyexr 1.0.0, zstd 1.4.8). API documentation updates. Editor translation updates. And many more bug fixes and usability enhancements all around the engine! See the full changelog since 3.2.3-stable (chronological , or for each contributor ), or the changes since the previous RC 6 build .
This release is built from commit cca2637b9b9dcb16070eb50a69c601a5f076c683 .
Downloads The download links for dev snapshots are not featured on the Download page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary that matches your platform:
Standard build (GDScript, GDNative, VisualScript).Mono build (C# support + all the above). You need to have MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.122 are included in this build. (Note: Previous builds used Mono 6.12.0.114.)Bug reports As a tester, you are encouraged to open bug reports if you experience issues with 3.3 RC 7. 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.
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 3.2.3 or earlier no longer works in 3.3 RC 7).
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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-3-rc-8/index.html b/article/release-candidate-godot-3-3-rc-8/index.html
index b8959df2a9..c5aee04b4e 100644
--- a/article/release-candidate-godot-3-3-rc-8/index.html
+++ b/article/release-candidate-godot-3-3-rc-8/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 7 April 2021 In case you missed the recent news, we decided to change our versioning for Godot 3.x and rename the upcoming version 3.2.4 to Godot 3.3 , thereby starting a new stable branch. Check the dedicated blog post for details.
Here’s another Release Candidate for Godot 3.3! Keeping this post short as there wasn’t much change, just a handful of fixes - refer to the 3.3 RC 7 post for details on new features.
We’re pretty confident about this candidate (Famous Last Words™) so if no new regression is found, the next build should hopefully be the stable release! If you haven’t tried 3.3 RC builds yet, now would be a great time to do it to help us ensure everything upgrades smoothly from 3.2.3 to 3.3.
As usual, you can try it live with the online version of the Godot editor updated for this release.
Changes Compared to the previous RC 7 build, this release fixes a few regressions in GDNative, rendering, GodotPhysics (BVH), and Android JNI threads. It also fixes the GLES2 fallback option for HTML5 exports.
See the full changelog since 3.2.3-stable (chronological , or for each contributor ), or the changes since the previous RC 7 build .
This release is built from commit b076150b086a5001b190a9a20a425d1bc842fe21 .
Downloads The download links for dev snapshots are not featured on the Download page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary that matches your platform:
Standard build (GDScript, GDNative, VisualScript).Mono build (C# support + all the above). You need to have MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.122 are included in this build. (Note: Builds prior to 3.3 RC 7 used Mono 6.12.0.114.)Bug reports As a tester, you are encouraged to open bug reports if you experience issues with 3.3 RC 8. 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.
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 3.2.3 or earlier no longer works in 3.3 RC 8).
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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-3-rc-9/index.html b/article/release-candidate-godot-3-3-rc-9/index.html
index d53bf9dee7..aa16c91ed3 100644
--- a/article/release-candidate-godot-3-3-rc-9/index.html
+++ b/article/release-candidate-godot-3-3-rc-9/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 14 April 2021 In case you missed the recent news, we decided to change our versioning for Godot 3.x and rename the upcoming version 3.2.4 to Godot 3.3 , thereby starting a new stable branch. Check the dedicated blog post for details.
Here’s another Release Candidate for Godot 3.3! Keeping this post short as there wasn’t much change, just a handful of fixes - refer to the 3.3 RC 7 post for details on new features.
We’re pretty confident about this candidate (Famous Last Words™) so if no new regression is found, the next build should hopefully be the stable release (yes, we said that for RC8 too)! If you haven’t tried 3.3 RC builds yet, now would be a great time to do it to help us ensure everything upgrades smoothly from 3.2.3 to 3.3.
As usual, you can try it live with the online version of the Godot editor updated for this release.
Changes Compared to the previous RC 8 build, this release fixes a few issues with: 2D batching, SkeletonIK root bone rotation, Android plugin API and splash screen, various crash fixes.
For 2D rendering, we’re also re-adding some testing options which were used in earlier betas to allow users to test different scenarios which may impact performance for some OpenGL drivers (especially on Windows and macOS). See GH-47864 for details. For the legacy render path (non-batching), we’re changing a flag to GL_STREAM_DRAW
which seems to give significant FPS gains on some test cases. Please report if you see any suspicious FPS drop in RC9 compared to RC8!
See the full changelog since 3.2.3-stable (chronological , or for each contributor ), or the changes since the previous RC 8 build .
This release is built from commit 00d087e47d9f1d9ae358a19a9ac0862349d391ce .
Downloads The download links for dev snapshots are not featured on the Download page to avoid confusion for new users. Instead, browse our download repository and fetch the editor binary that matches your platform:
Standard build (GDScript, GDNative, VisualScript).Mono build (C# support + all the above). You need to have MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.122 are included in this build. (Note: Builds prior to 3.3 RC 7 used Mono 6.12.0.114.)Bug reports As a tester, you are encouraged to open bug reports if you experience issues with 3.3 RC 9. 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.
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 3.2.3 or earlier no longer works in 3.3 RC 9).
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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-4-1-rc-1/index.html b/article/release-candidate-godot-3-4-1-rc-1/index.html
index 8a68b56bf4..7a2b997fb1 100644
--- a/article/release-candidate-godot-3-4-1-rc-1/index.html
+++ b/article/release-candidate-godot-3-4-1-rc-1/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 26 November 2021 Godot 3.4 was released earlier this month, and it went fairly smoothly! Many thanks to all the contributors who worked on it, including all testers who tried beta and RC releases to ensure that the 3.4-stable branch would be an easy and worthwhile upgrade path for all users.
No software release is perfect though, so there will always be some things to iron out, which is why we usually provide maintenance releases for stable branches, focusing on bugfixing and preserving compatibility (see our release policy ). A number of fixes have been queued already in the 3.4
branch for Godot 3.4.1, so here’s a first release candidate to validate them.
Jump to the Downloads section.
As usual, you can try it live with the online version of the Godot editor updated for this release.
Changes Here are some of the main changes since 3.4-stable:
Android: Fix get_screen_orientation()
not returning valid values (GH-55210 ). Editor: Clamp rotation for up/down orbiting shortcuts (GH-54788 ). Editor: Fix swapped rest pose action names in the Skeleton2D editor (GH-54851 ). Editor: Fix Theme Editor crash when clicking the element picker (GH-55186 ). Editor: Improve project export and MeshLibrary export checkboxes (GH-55215 ). GDScript: Don’t ignore the type mismatch in setter function (GH-54117 ). GDScript: Support multiline indexing with []
(GH-54227 ). HTML5: Fix input not focusing canvas, check Gamepad API errors (GH-55111 ). Import: Prevent OBJ importer from printing misleading error (GH-54694 ). Import: Fix incorrect glTF cubic spline interpolation times/values size error (GH-54805 ). Import: Fix support for CSG and GridMap in glTF scene export (GH-54911 ). Import: Fix texture atlas generation when source sprite is larger than generated atlas (GH-55094 ). Import: Fix crash when exporting meshes to glTF that have no skin (GH-55246 ). Input: Add Input.is_physical_key_pressed()
method (GH-55251 ). iOS: Capture and display xcodebuild
output (GH-54711 ). macOS: Enable multithreaded OpenGL engine flag when using multithreaded VisualServer (GH-54526 ). macOS: Read and ZIP project files in 16K chunks instead of reading the whole file at once (GH-54673 ). macOS: Fix crash on DualShock 4 joypad removal (GH-55034 ). Networking: Fix HTTP request headers being included in response (GH-54683 ). Physics: Expose intersect_point
in 3D physics server (GH-54577 ). Physics: Fix the volume calculation for cylinders in GodotPhysics (GH-54642 ). Physics: Fix errors in KinematicBody when floor is destroyed or removed (GH-54819 ). Physics: Fix test_move
reporting collision when touching another body (GH-54845 ). Physics: BVH: Fix pairing for teleported or fast moving objects (GH-54925 ). Physics: BVH: Detect shrinkage within expanded bounds (GH-55050 ). Physics: BVH: Add option for expanded AABBs in leaves (GH-55096 ). Rendering: Fix vertex attribute specification for octahedral compression (GH-54768 ). Rendering: Update CanvasItem when MultiMesh instance transform changes (GH-54899 ). Rendering: GLES3: Fix particles emitting at old location (GH-54733 ). Rendering: Portals: Allow user to set roaming expansion margin (GH-54921 ). TextEdit: Allow toggling bookmark gutter (GH-55197 ). Tiles: Fix TileSet editor workspace breaking (GH-55059 ). Tiles: Only add light occlusion for visible TileMaps (GH-54435 ). Tiles: Fix selecting next/previous subtile in TileSet editor (GH-55261 ). Viewport: Show tooltips even when paused or time_scale
is 0 (GH-55224 ). XR: Add support for OpenXR export configurations (GH-55158 ). Thirdparty library updates: libogg 1.3.5, libvorbis 1.3.7, CA certificates from 2021-11-01. API documentation and translation updates. See the full changelog since 3.4-stable on GitHub , or in text form (sorted by authors or chronologically ).
This release is built from commit 7b0801c7f
(see README ).
Downloads The downloads for this dev snapshot can be found directly on our repository:
Standard build (GDScript, GDNative, VisualScript).Mono build (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.158 are included in this build.Bug reports As a tester, you are encouraged to open bug reports if you experience issues with 3.4.1 RC 1. 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.
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 3.4 no longer works in 3.4.1 RC 1).
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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-4-1-rc-2/index.html b/article/release-candidate-godot-3-4-1-rc-2/index.html
index 5bab7e146b..7e63d4773a 100644
--- a/article/release-candidate-godot-3-4-1-rc-2/index.html
+++ b/article/release-candidate-godot-3-4-1-rc-2/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 8 December 2021 Godot 3.4 was released a month ago, and it went fairly smoothly! Many thanks to all the contributors who worked on it, including all testers who tried beta and RC releases to ensure that the 3.4-stable branch would be an easy and worthwhile upgrade path for all users.
No software release is perfect though, so there will always be some things to iron out, which is why we usually provide maintenance releases for stable branches, focusing on bugfixing and preserving compatibility (see our release policy ). A number of fixes have been queued already in the 3.4
branch for Godot 3.4.1, so here’s a new release candidate to validate them.
Jump to the Downloads section.
As usual, you can try it live with the online version of the Godot editor updated for this release.
Changes Here are some of the main changes since 3.4-stable:
Android: Fix get_screen_orientation()
not returning valid values (GH-55210 ). Camera2D: Fix condition on ‘jump to limits’ logic (GH-55417 ). Editor: Clamp rotation for up/down orbiting shortcuts (GH-54788 ). Editor: Fix swapped rest pose action names in the Skeleton2D editor (GH-54851 ). Editor: Fix Theme Editor crash when clicking the element picker (GH-55186 ). Editor: Improve project export and MeshLibrary export checkboxes (GH-55215 ). Editor: Remove editor splash screen with sponsors logo (GH-55467 ). Editor: Fix EditorPlugin.remove_inspector_plugin()
instance cleanup (GH-55658 ). GDScript: Don’t ignore the type mismatch in setter function (GH-54117 ). GDScript: Support multiline indexing with []
(GH-54227 ). HTML5: Fix input not focusing canvas, check Gamepad API errors (GH-55111 , GH-55342 ). HTML5: Fix multi-touch input handling (GH-55466 ). HTML5: Use absolute path for JS lib/pre/externs for compatibility with latest Emscripten (GH-55347 ). HTML5: Use compatibility function for glGetBufferSubData
to preserve support for older Emscripten (GH-55354 ). Import: Prevent OBJ importer from printing misleading error (GH-54694 ). Import: Fix incorrect glTF cubic spline interpolation times/values size error (GH-54805 ). Import: Fix support for CSG and GridMap in glTF scene export (GH-54911 ). Import: Fix texture atlas generation when source sprite is larger than generated atlas (GH-55094 ). Import: Fix crash when exporting meshes to glTF that have no skin (GH-55246 ). Input: Add Input.is_physical_key_pressed()
method (GH-55251 ). iOS: Capture and display xcodebuild
output (GH-54711 ). LSP: Prevent LSP adding signal callbacks to non GDScripts (GH-55624 ). macOS: Enable multithreaded OpenGL engine flag when using multithreaded VisualServer (GH-54526 ). macOS: Read and ZIP project files in 16K chunks instead of reading the whole file at once (GH-54673 ). macOS: Fix crash on DualShock 4 joypad removal (GH-55034 ). macOS: Fix driver crash when enabling per-pixel transparency on M1 macs (GH-55464 ). Networking: Fix HTTP request headers being included in response (GH-54683 ). Networking: Fix potential infinite loop when connecting HTTPClient (GH-55358 ). Particles: Fix for double use of seed in random shader variables (GH-55607 ). Physics: Expose intersect_point
in 3D physics server (GH-54577 ). Physics: Fix the volume calculation for cylinders in GodotPhysics (GH-54642 ). Physics: Fix errors in KinematicBody when floor is destroyed or removed (GH-54819 ). Physics: Fix test_move
reporting collision when touching another body (GH-54845 ). Physics: BVH: Fix pairing for teleported or fast moving objects (GH-54925 ). Physics: BVH: Detect shrinkage within expanded bounds (GH-55050 ). Physics: BVH: Add option for expanded AABBs in leaves (GH-55096 ). Rendering: Fix vertex attribute specification for octahedral compression (GH-54768 ). Rendering: Update CanvasItem when MultiMesh instance transform changes (GH-54899 ). Rendering: Portals: Allow user to set roaming expansion margin (GH-54921 ). Rendering: Fix incorrect RID cleanup in Rasterizers (GH-55673 , GH-55669 ). RichTextLabel: Fix right alignment regression (GH-55439 ). RichTextLabel: Fix min/max line width calculation (GH-55440 ). Tabs: Prevent hidden tab close buttons from intercepting input (GH-55453 ). TextEdit: Allow toggling bookmark gutter (GH-55197 ). TextEdit: Add methods to get position from column and line (GH-55416 ). TextureProgress: Fix position of reference cross with progress_offset
(GH-55377 ). Theme: Make default/project theme wait for modules before initializing (fixes WebP support for custom themes) (GH-55484 ). Tiles: Fix TileSet editor workspace breaking (GH-55059 ). Tiles: Only add light occlusion for visible TileMaps (GH-54435 ). Tiles: Fix selecting next/previous subtile in TileSet editor (GH-55261 ). Viewport: Show tooltips even when paused or time_scale
is 0 (GH-55224 ). XR: Add support for OpenXR export configurations (GH-55158 ). Thirdparty library updates: libogg 1.3.5, libvorbis 1.3.7, minimp3 from 2021-11-30, CA certificates from 2021-11-01. API documentation and translation updates. See the full changelog since 3.4-stable on GitHub , or in text form (sorted by authors or chronologically ).
If you reviewed changes in 3.4.1 RC 1 already, here’s the changelog between RC 1 and RC 2 .
This release is built from commit d5aa00c2c
(see README ).
Downloads The downloads for this dev snapshot can be found directly on our repository:
Standard build (GDScript, GDNative, VisualScript).Mono build (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.158 are included in this build.Bug reports As a tester, you are encouraged to open bug reports if you experience issues with 3.4.1 RC 2. 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.
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 3.4 no longer works in 3.4.1 RC 2).
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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-4-1-rc-3/index.html b/article/release-candidate-godot-3-4-1-rc-3/index.html
index 73e9e7cdf6..5fba2a3712 100644
--- a/article/release-candidate-godot-3-4-1-rc-3/index.html
+++ b/article/release-candidate-godot-3-4-1-rc-3/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 15 December 2021 Godot 3.4 was released a month ago, and it went fairly smoothly! Many thanks to all the contributors who worked on it, including all testers who tried beta and RC releases to ensure that the 3.4-stable branch would be an easy and worthwhile upgrade path for all users.
No software release is perfect though, so there will always be some things to iron out, which is why we usually provide maintenance releases for stable branches, focusing on bugfixing and preserving compatibility (see our release policy ). A number of fixes have been queued already in the 3.4
branch for Godot 3.4.1, so here’s a new release candidate to validate them.
This RC 3 notably adds a change for the terminal handling on Windows to work around a design limitation of Windows 11’s new default Windows Terminal (GH-54076 ). Please test it on Windows (any version) to confirm that editing a project from the project manager, and running a project from the editor, both work fine.
Jump to the Downloads section.
As usual, you can try it live with the online version of the Godot editor updated for this release.
Changes Here are some of the main changes since 3.4-stable:
Android: Fix get_screen_orientation()
not returning valid values (GH-55210 ). Android: Add configs to specify the min and target sdk versions (GH-55735 ). Android: Add support for configuring the XR hand tracking frequency mode (GH-55768 ). Camera2D: Fix condition on ‘jump to limits’ logic (GH-55417 ). Editor: Clamp rotation for up/down orbiting shortcuts (GH-54788 ). Editor: Fix swapped rest pose action names in the Skeleton2D editor (GH-54851 ). Editor: Fix Theme Editor crash when clicking the element picker (GH-55186 ). Editor: Improve project export and MeshLibrary export checkboxes (GH-55215 ). Editor: Remove editor splash screen with sponsors logo (GH-55467 ). Editor: Fix EditorPlugin.remove_inspector_plugin()
instance cleanup (GH-55658 ). Editor: Sort and group theme properties in docs, improve formatting for theme and enums (GH-55526 ). Editor: Expose ScriptEditor::edit
to scripting (GH-55709 ). GDScript: Don’t ignore the type mismatch in setter function (GH-54117 ). GDScript: Support multiline indexing with []
(GH-54227 ). HTML5: Fix input not focusing canvas, check Gamepad API errors (GH-55111 , GH-55342 ). HTML5: Fix multi-touch input handling (GH-55466 ). HTML5: Use absolute path for JS lib/pre/externs for compatibility with latest Emscripten (GH-55347 ). HTML5: Use compatibility function for glGetBufferSubData
to preserve support for older Emscripten (GH-55354 ). HTML5: Fix files_dropped
in exported Mono builds (GH-55594 ). Import: Prevent OBJ importer from printing misleading error (GH-54694 ). Import: Fix incorrect glTF cubic spline interpolation times/values size error (GH-54805 ). Import: Fix support for CSG and GridMap in glTF scene export (GH-54911 ). Import: Fix texture atlas generation when source sprite is larger than generated atlas (GH-55094 ). Import: Fix crash when exporting meshes to glTF that have no skin (GH-55246 ). Input: Add Input.is_physical_key_pressed()
method (GH-55251 ). Input: Fix regression in UI navigation with joysticks (GH-55480 ). iOS: Capture and display xcodebuild
output (GH-54711 ). LSP: Prevent LSP adding signal callbacks to non GDScripts (GH-55624 ). macOS: Enable multithreaded OpenGL engine flag when using multithreaded VisualServer (GH-54526 ). macOS: Read and ZIP project files in 16K chunks instead of reading the whole file at once (GH-54673 ). macOS: Fix crash on DualShock 4 joypad removal (GH-55034 ). macOS: Fix driver crash when enabling per-pixel transparency on M1 macs (GH-55464 ). macOS: Fix crash handler not printing function names on M1 Macs (GH-55019 ). Networking: Fix HTTP request headers being included in response (GH-54683 ). Networking: Fix potential infinite loop when connecting HTTPClient (GH-55358 ). Particles: Fix for double use of seed in random shader variables (GH-55607 ). Physics: Expose intersect_point
in 3D physics server (GH-54577 ). Physics: Fix the volume calculation for cylinders in GodotPhysics (GH-54642 ). Physics: Fix errors in KinematicBody when floor is destroyed or removed (GH-54819 ). Physics: Fix test_move
reporting collision when touching another body (GH-54845 ). Physics: BVH: Fix pairing for teleported or fast moving objects (GH-54925 ). Physics: BVH: Detect shrinkage within expanded bounds (GH-55050 ). Physics: BVH: Add option for expanded AABBs in leaves (GH-55096 ). Rendering: Fix vertex attribute specification for octahedral compression (GH-54768 ). Rendering: Update CanvasItem when MultiMesh instance transform changes (GH-54899 ). Rendering: Portals: Allow user to set roaming expansion margin (GH-54921 ). Rendering: Fix incorrect VisualServer RID cleanup in various locations (GH-55673 , GH-55669 , GH-55701 , GH-54650 ). Rendering: Fix occasional dangling OmniLight RID (GH-41360 ). RichTextLabel: Fix right alignment regression (GH-55439 ). RichTextLabel: Fix min/max line width calculation (GH-55440 ). Tabs: Prevent hidden tab close buttons from intercepting input (GH-55453 ). TextEdit: Allow toggling bookmark gutter (GH-55197 ). TextEdit: Add methods to get position from column and line (GH-55416 ). TextureProgress: Fix position of reference cross with progress_offset
(GH-55377 ). Theme: Make default/project theme wait for modules before initializing (fixes WebP support for custom themes) (GH-55484 ). Tiles: Fix TileSet editor workspace breaking (GH-55059 ). Tiles: Only add light occlusion for visible TileMaps (GH-54435 ). Tiles: Fix selecting next/previous subtile in TileSet editor (GH-55261 ). Viewport: Show tooltips even when paused or time_scale
is 0 (GH-55224 ). Windows: Open a new console window for the editor instances (GH-55925 ).This is needed to workaround a design change in Windows 11’s new Windows Terminal, which broke Godot (GH-54076 ). XR: Add support for OpenXR export configurations (GH-55158 ). Thirdparty library updates: libogg 1.3.5, libvorbis 1.3.7, minimp3 from 2021-11-30, CA certificates from 2021-11-01. API documentation and translation updates. See the full changelog since 3.4-stable on GitHub , or in text form (sorted by authors or chronologically ).
If you reviewed changes in 3.4.1 RC 2 already, here’s the changelog between RC 2 and RC 3 .
This release is built from commit 69585b051
(see README ).
Downloads The downloads for this dev snapshot can be found directly on our repository:
Standard build (GDScript, GDNative, VisualScript).Mono build (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.158 are included in this build.Bug reports As a tester, you are encouraged to open bug reports if you experience issues with 3.4.1 RC 3. 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.
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 3.4 no longer works in 3.4.1 RC 3).
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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-4-3-rc-1/index.html b/article/release-candidate-godot-3-4-3-rc-1/index.html
index 74df7e2031..b99518b878 100644
--- a/article/release-candidate-godot-3-4-3-rc-1/index.html
+++ b/article/release-candidate-godot-3-4-3-rc-1/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 3 February 2022 In parallel to our work on Godot 3.5 (with a first beta ) and 4.0 (and finally alpha 1! ), we backport important fixes to the stable 3.4 branch for use in production.
A number of such fixes have been queued since the 3.4.2 release , so we’re getting ready to release Godot 3.4.3, and this first Release Candidate is your chance to help us validate it.
Jump to the Downloads section.
As usual, you can try it live with the online version of the Godot editor updated for this release.Edit: Or not, there’s a regression for the web editor in this build (GH-57592 ). This will be fixed in the next build.
Changes Here are some of the main changes since 3.4.2-stable:
Android: Fix relative keystore paths on Android exporter with custom build (GH-56676 ). Animation: Expose AnimationNodeOneShot::mix_mode
as a property (GH-37945 ). C#: Allow configuring Mono debugger agent with command line arguments (GH-56835 ). C#: Fix KeyValuePairAt
memory leak (GH-56183 ). C#: Fix getting properties state when reloading scripts (GH-56300 ). C#: Fix marshaling values of generic Godot Dictionary (GH-56735 ). C#: Fix Android AAB export failing to load native libs (GH-57420 ). Core: Fix decoding UTF-8 filenames on unzipping (GH-56517 ).Fixes exporting Android APKs when project files use non-ASCII characters in their file name (GH-18222 ). Core: Replicate load-as-placeholder state on node duplication (GH-56831 ). CSG: Fix selection of CSG objects (GH-56604 ). Editor: Fix undo/redo operations in Input Map (GH-56222 ). GDScript: Clear pending function states when reloading script (GH-56296 ). GDScript: Fix crash when is
keyword is tested against a String variable (GH-56791 ). GridMap: Fix “Convert to MeshLibrary” not respecting collision transforms (GH-56907 ). GridMap: Fix editing MeshLibrary’s Shapes array from the Inspector (GH-56891 ). GUI: Release focus of Control node when exiting tree (GH-56255 ). GUI: Fix LineEdit center and right alignment (GH-56837 ). GUI: Fix PopupMenu bad item offset with custom vseparation (GH-56471 ). GUI: Fix RichTextLabel underline appearance when inside fill tag (GH-54296 ). GUI: Fix RichTextLabel underline prevents strikethrough from rendering (GH-56686 ). GUI: Fix TabContainer not setting layout immediately (GH-56206 ). GUI: Fix TextEdit blocking side scrolling in ScrollContainer (GH-56637 ). GUI: Fix TextureButton focus texture logic (GH-56472 ).Note: There’s a known regression from this change (GH-57388 ) whose fix was missed in this RC. Will be fixed in the next build (GH-57405 ). GUI: Fix nine patch of circular TextureProgressBar (GH-54345 ). HTML5: Fix GPU particles transform feedback error for WebGL 2 (GH-56465 ). HTML5: Fix gamepad samples not being properly reset (GH-57482 ). Import: Fix AtlasPacker incorrectly deducing zero height in some cases (GH-56111 ). Import: Fix glTF scene export crash on null normal texture (GH-56380 ). Import: Fix wrong RGBA channel mapping when saving OpenEXR (GH-56715 ). Input: Increase joystick max button number and fix possible crash (GH-56666 ). iOS: Fix export with manually specified signing/provisioning data (GH-57203 ). Linux: Fix tablet tilt values returning bad values (GH-56439 ). macOS: Improve window activation hack (GH-56700 ). Networking: Fix HTTPRequest support for requests with “content-length” above 2.1 GB (GH-56331 ). Portals: Fix gameplay monitor unloading (GH-57033 ). Portals: Fix gameplay monitor ticking (GH-57186 ). Portals: Fix DYNAMIC particle systems (GH-57546 ). Rendering: Fix blend shapes when octahedral compression is used (GH-56161 ). Rendering: Fix invalid read when using LightOccluder2D (GH-56859 ). Rendering: Fixed accessing a null MeshInstance object in BakedLightmap instead of the GeometryInstance (GH-57110 ). Rendering: GLES3: Fix shader compile error with Oren Nayar + Vertex Lighting (GH-56802 ). Rendering: GLES3: Fix visible background line in intersections in screen-space reflections (GH-56843 ). TileMap: Expose autotile_coord
parameter in TileMap.set_cellv
(GH-56284 ). Windows: Fix key mapping mixup for brace and bracket keys (GH-56588 ). Windows: Fix RegEx.search()
memory leak (GH-56763 ). Windows: Prevent LTCG (MSVC LTO) from removing “pck” section (GH-57450 ). XR: Fix external textures being freed by Godot (GH-56148 ). XR: Fix Android manifest XR metadata (GH-57263 ). API documentation and translation updates. See the full changelog since 3.4.2-stable on GitHub , or in text form (sorted by authors or chronologically ).
This release is built from commit 894b6d504
(see README ).
Downloads The downloads for this dev snapshot can be found directly on our repository:
Standard build (GDScript, GDNative, VisualScript).Mono build (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.158 are included in this build.Bug reports As a tester, you are encouraged to open bug reports if you experience issues with 3.4.3 RC 1. 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.
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 earlier 3.4.x releases no longer works in 3.4.3 RC 1).
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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-4-3-rc-2/index.html b/article/release-candidate-godot-3-4-3-rc-2/index.html
index 0d17912a8c..29f911ac77 100644
--- a/article/release-candidate-godot-3-4-3-rc-2/index.html
+++ b/article/release-candidate-godot-3-4-3-rc-2/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 17 February 2022 In parallel to our work on Godot 3.5 (with a first beta ) and 4.0 (now at alpha 2! ), we backport important fixes to the stable 3.4 branch for use in production.
A number of such fixes have been queued since the 3.4.2 release , so we’re getting ready to release Godot 3.4.3, and this second Release Candidate is your chance to help us validate it.
Jump to the Downloads section.
As usual, you can try it live with the online version of the Godot editor updated for this release.
Changes Here are some of the main changes since 3.4.2-stable:
Android: Fix relative keystore paths on Android exporter with custom build (GH-56676 ). Animation: Expose AnimationNodeOneShot::mix_mode
as a property (GH-37945 ). Audio: Fix PitchShift effect quality degradation and improve performance (GH-57985 ). C#: Allow configuring Mono debugger agent with command line arguments (GH-56835 ). C#: Fix KeyValuePairAt
memory leak (GH-56183 ). C#: Fix getting properties state when reloading scripts (GH-56300 ). C#: Fix marshaling values of generic Godot Dictionary (GH-56735 ). C#: Fix Android AAB export failing to load native libs (GH-57420 ). C#: Attach mono thread before getting nativeName
field, fixing potential tool script crash (GH-57739 ). C#: Add support for opening Visual Studio 2022 as external editor (GH-57609 ). Core: Fix potential infinite recursion crash in Variant decoding (GH-58111 ). Core: Fix decoding UTF-8 filenames on unzipping (GH-56517 ).Fixes exporting Android APKs when project files use non-ASCII characters in their file name (GH-18222 ). Core: Replicate load-as-placeholder state on node duplication (GH-56831 ). Core: Add hexadecimal and binary literals support to Expression
parser, fix parsing of exponent literals (GH-57571 , GH-57620 ). Core: Fix ProjectSettings.has_setting()
to handle feature overrides like get_setting()
(GH-57972 ). CSG: Fix selection of CSG objects (GH-56604 ). Editor: Fix undo/redo operations in Input Map (GH-56222 ). Editor: Performance increase for opening the editor on big projects (GH-57737 ). GDScript: Clear pending function states when reloading script (GH-56296 ). GDScript: Fix crash when is
keyword is tested against a String variable (GH-56791 ). GridMap: Fix “Convert to MeshLibrary” not respecting collision transforms (GH-56907 ). GridMap: Fix editing MeshLibrary’s Shapes array from the Inspector (GH-56891 ). GUI: Release focus of Control node when exiting tree (GH-56255 ). GUI: Fix LineEdit center and right alignment (GH-56837 ). GUI: Fix PopupMenu bad item offset with custom vseparation (GH-56471 ). GUI: Fix RichTextLabel underline appearance when inside fill tag (GH-54296 ). GUI: Fix RichTextLabel underline prevents strikethrough from rendering (GH-56686 ). GUI: Fix TabContainer not setting layout immediately (GH-56206 ). GUI: Fix TextEdit blocking side scrolling in ScrollContainer (GH-56637 ). GUI: Fix TextureButton focus texture logic (GH-56472 ). GUI: Fix nine patch of circular TextureProgressBar (GH-54345 ). HTML5: Fix GPU particles transform feedback error for WebGL 2 (GH-56465 ). HTML5: Fix gamepad samples not being properly reset (GH-57482 ). HTML5: Fetch API now passes credentials (GH-57934 ). Import: Fix AtlasPacker incorrectly deducing zero height in some cases (GH-56111 ). Import: Fix glTF scene export crash on null normal texture (GH-56380 ). Import: Fix wrong RGBA channel mapping when saving OpenEXR (GH-56715 ). Import: Skip S3TC compression even if supported on Android and iOS (GH-32255 ). Input: Increase joystick max button number and fix possible crash (GH-56666 ). iOS: Fix export with manually specified signing/provisioning data (GH-57203 ). iOS: Fix disabling half float for compressed vertex attributes on GLES2 (GH-57688 ). iOS: Fix touch handling for overlay views (GH-57604 ). Linux: Fix tablet tilt values returning bad values (GH-56439 ). macOS: Improve window activation hack (GH-56700 ). macOS: Add lang placeholders to both editor and project apps bundle to allow OS translation detection (GH-52945 , GH-57577 ). Networking: Fix HTTPRequest support for requests with “content-length” above 2.1 GB (GH-56331 ). Physics: Fix RayCast clear_exceptions
clearing the parent node exception despite exclude_parent
(GH-57792 ). Portals: Fix gameplay monitor unloading (GH-57033 ). Portals: Fix gameplay monitor ticking (GH-57186 ). Portals: Fix DYNAMIC particle systems (GH-57546 ). Rendering: Fix blend shapes when octahedral compression is used (GH-56161 ). Rendering: Fix invalid read when using LightOccluder2D (GH-56859 ). Rendering: Fixed accessing a null MeshInstance object in BakedLightmap instead of the GeometryInstance (GH-57110 ). Rendering: GLES2: Fix buffer upload size bugs affecting blendshapes (GH-58085 ). Rendering: GLES3: Fix shader compile error with Oren Nayar + Vertex Lighting (GH-56802 ). Rendering: GLES3: Fix visible background line in intersections in screen-space reflections (GH-56843 ). TileMap: Expose autotile_coord
parameter in TileMap.set_cellv
(GH-56284 ). VisualScript: Fix crash when using Set Index node (GH-58174 ). Windows: Fix key mapping mixup for brace and bracket keys (GH-56588 ). Windows: Fix RegEx.search()
memory leak (GH-56763 ). Windows: Prevent LTCG (MSVC LTO) from removing “pck” section (GH-57450 ). XR: Fix external textures being freed by Godot (GH-56148 ). XR: Fix Android manifest XR metadata (GH-57263 ). API documentation and translation updates. See the full GitHub changelog since 3.4.2-stable or since 3.4.3 RC 1 , or in text form (sorted by authors or chronologically ).
This release is built from commit 894b6d504
(see README ).
Downloads The downloads for this dev snapshot can be found directly on our repository:
Standard build (GDScript, GDNative, VisualScript).Mono build (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.158 are included in this build.Bug reports As a tester, you are encouraged to open bug reports if you experience issues with 3.4.3 RC 2. 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.
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 earlier 3.4.x releases no longer works in 3.4.3 RC 2).
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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-4-4-rc-1/index.html b/article/release-candidate-godot-3-4-4-rc-1/index.html
index c9fbf3f9f9..6d18258dd3 100644
--- a/article/release-candidate-godot-3-4-4-rc-1/index.html
+++ b/article/release-candidate-godot-3-4-4-rc-1/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 8 March 2022 Godot 3.4.3 was released less than 2 weeks ago , but a few significant regressions were found in that release, so we’re fast-tracking the release of Godot 3.4.4 to solve those.
This Release Candidate adds a handful of fixes, including several regression fixes. Please make sure to test it on your projects and to report any issue, so that we can release 3.4.4 stable in the coming days.
Jump to the Downloads section.
As usual, you can try it live with the online version of the Godot editor updated for this release.
Changes Here are the main changes since 3.4.3-stable:
Animation: Fix cubic interpolate when looping (GH-58651 ). Audio: Revert “PitchShift effect quality and performance tweaks for different pitch scale values” (GH-58668 ) [regression fix] .This fixed a valid issue while introducing a new one, so it was reverted for the time being until a better fix can be found. Core: Print every file exported with PCKPacker.flush()
’s verbose parameter (GH-58520 ). Core: Fix UndoRedo::create_action()
invalid memory usage (GH-58652 ). Core: Revert “Fix ProjectSettings has_setting()
when used on a overriden setting with feature tags” (GH-58859 ). CSG: Fix visible seam on smoothed sphere and cylinder shapes (GH-58208 ). Editor: Fix showing Extend Script option without script attached to the node (GH-58821 ). HTML5: Revert “[HTML5] Fetch API now passes credentials.” (GH-58862 ) [regression fix] .This turned out not to be a good option with the current state of the web standard. iOS: Fix multitouch not working correctly (GH-58586 ) [regression fix] . Physics: Fix premature return in GodotPhysics Area call_queries
(GH-58531 ). Physics: Update joints on NOTIFICATION_POST_ENTER_TREE
(GH-58642 ). Portals: Fix duplication of instanced scenes during conversion (GH-58650 ). Rendering: GLES2: Fix compression on blend shapes (GH-58838 ). Rendering: GLES2: Fix VersionKey
comparison in shader binding (GH-58855 ). Rendering: GLES3: Fix shader state caching when blend shapes used (GH-58808 ) [regression fix] . API documentation updates. See the full changelog since 3.4.3-stable on GitHub , or in text form (sorted by authors or chronologically ).
This release is built from commit 6b4d7d20a
(see README ).
Downloads The downloads for this dev snapshot can be found directly on our repository:
Standard build (GDScript, GDNative, VisualScript).Mono build (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.158 are included in this build.Note: The Windows builds are signed, but the certificate expired recently. We’re working on having it renewed, this should be fixed in time for 3.4.4 stable.
Bug reports As a tester, you are encouraged to open bug reports if you experience issues with 3.4.4 RC 1. 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.
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 earlier 3.4.x releases no longer works in 3.4.4 RC 1).
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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-4-4-rc-2/index.html b/article/release-candidate-godot-3-4-4-rc-2/index.html
index eb32053df8..087d5053d7 100644
--- a/article/release-candidate-godot-3-4-4-rc-2/index.html
+++ b/article/release-candidate-godot-3-4-4-rc-2/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 16 March 2022 Godot 3.4.3 was released less than 3 weeks ago , but a few significant regressions were found in that release, so we’re fast-tracking the release of Godot 3.4.4 to solve those.
This Release Candidate adds a handful of fixes, including several regression fixes. Please make sure to test it on your projects and to report any issue, so that we can release 3.4.4 stable in the coming days.
Jump to the Downloads section.
As usual, you can try it live with the online version of the Godot editor updated for this release.
Changes Here are the main changes since 3.4.3-stable:
Animation: Fix cubic interpolate when looping (GH-58651 ). Audio: Revert “PitchShift effect quality and performance tweaks for different pitch scale values” (GH-58668 ) [regression fix] .This fixed a valid issue while introducing a new one, so it was reverted for the time being until a better fix can be found. Core: Print every file exported with PCKPacker.flush()
’s verbose parameter (GH-58520 ). Core: Fix UndoRedo::create_action()
invalid memory usage (GH-58652 ). Core: Revert “Fix ProjectSettings has_setting()
when used on a overriden setting with feature tags” (GH-58859 ). CSG: Fix visible seam on smoothed sphere, cylinder, and torus shapes (GH-58208 , GH-59002 ). CSG: Fix mixed smoothed and non-smoothed face normals computation for CSG shapes (GH-59039 ). Editor: Fix showing Extend Script option without script attached to the node (GH-58821 ). HTML5: Revert “[HTML5] Fetch API now passes credentials.” (GH-58862 ) [regression fix] .This turned out not to be a good option with the current state of the web standard. iOS: Fix multitouch not working correctly (GH-58586 ) [regression fix] . Physics: Fix premature return in GodotPhysics Area call_queries
(GH-58531 ). Physics: Update joints on NOTIFICATION_POST_ENTER_TREE
(GH-58642 ). Portals: Fix duplication of instanced scenes during conversion (GH-58650 ). Rendering: GLES2: Fix compression on blend shapes (GH-58838 ). Rendering: GLES2: Fix VersionKey
comparison in shader binding (GH-58855 ). Rendering: GLES2: Fix incorrect buffer upload size in draw_gui_primitive
(GH-58150 ). Rendering: GLES3: Fix shader state caching when blend shapes used (GH-58808 ) [regression fix] . Rendering: GLES3: Fix broken normals in meshes with blend shapes (GH-59159 ) [regression fix] . Rendering: Fix alpha scissor support with depth_draw_opaque
(GH-58959 ). RichTextLabel: Fix shadow color when text has transparency (GH-59054 ). API documentation updates. See the full changelog since 3.4.3-stable on GitHub , or in text form (sorted by authors or chronologically ).
This release is built from commit 69e9e8f87
(see README ).
Downloads The downloads for this dev snapshot can be found directly on our repository:
Standard build (GDScript, GDNative, VisualScript).Mono build (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.158 are included in this build.Notes:
The Windows builds are signed, but the certificate expired recently. The 3.4.4 stable builds should be signed with a new certificate. The macOS editor builds are signed but not notarized. The 3.4.4 stable builds should be notarized again. Bug reports As a tester, you are encouraged to open bug reports if you experience issues with 3.4.4 RC 2. 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.
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 earlier 3.4.x releases no longer works in 3.4.4 RC 2).
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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-4-5-rc-1/index.html b/article/release-candidate-godot-3-4-5-rc-1/index.html
index b87b720ee8..053eb895aa 100644
--- a/article/release-candidate-godot-3-4-5-rc-1/index.html
+++ b/article/release-candidate-godot-3-4-5-rc-1/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 19 July 2022 While Godot 3.5 is nearing a stable release, we still want to provide relevant bug fixes to users of the current 3.4 stable branch who might not be ready to upgrade right away. It’s been a long time since the release of Godot 3.4.4 , and there are a few important fixes coming up in Godot 3.4.5.
This Release Candidate is intended to help validate those fixes and make sure that Godot 3.4.5 is ready to publish.
Notable changes that motivate this release include:
Increase Android target API level to 31 to match Google Play requirements for new apps as of August 2022. Update mbedtls and zlib libraries to fix security vulnerabilities. Ignore support of S3TC compression format on mobile devices to ensure the use of ETC2 for GLES3 (fixes issues with Meta Quest 2 after a recent system update). Jump to the Downloads section.
As usual, you can try it live with the online version of the Godot editor updated for this release.
Changes Here are the main changes since 3.4.4-stable:
2D: Expose tile_texture
property in TilesetEditorContext (GH-60770 ). Android: Update target SDK version to API level 31 (Android 12) (GH-62297 ).This fulfills Google Play requirements for August 2022 . When upgrading to 3.4.5 for projects using Android custom builds, you have to manually set the “Target Sdk” option to 31 in your export preset. For new presets, this is the new default value. Android: Fix crash when trying to paste non-text data from clipboard (GH-60563 ). Animation: Fix looping issue in AnimationNodeStateMachinePlayback with “At End” switch mode (GH-60247 ). Audio: Instance audio streams before AudioServer::lock()
call (GH-59413 ). Audio: Fix crash in AudioServer when switching audio devices with different audio channels count (GH-59778 ). C#: Avoid modifying csproj globbing includes on remove (GH-59521 ). Core: Fix left aligned integer sign in string formatting (GH-60679 ). Editor: Fix popup dialog UI in AnimationTreePlayer editor (GH-60200 ). Editor: Fix EditorProperty icon overlapping text with checkbox (GH-58125 ). Editor: Fix custom class icon when it inherits from a script (GH-60536 ). Editor: Fix UndoRedo in Gradient editor (GH-60401 ). Editor: Fix crash when editing pinned StyleBox (GH-61071 ). Editor: Fix GridMap cursor showing the wrong mesh (GH-58624 ). Editor: Fix incorrect encoding used in error handling functions (GH-61277 ). Editor: Fix crash when drag-reordering array elements in the inspector (GH-61282 ). Editor: Fix scene tree dock focus after using “Add Child Node” button (GH-61964 ). GDScript: Fix editor undo history for function name autocompletion (GH-60231 ). GDScript: Fix autocompletetion showing class names with an underscore (GH-62731 ). GUI: FileDialog: Fix support for changing directory in user://
and res://
modes (GH-59838 ). GUI: GraphEdit: Fix toggling minimap using the minimap_enabled
property (GH-57239 ). GUI: GraphEdit: Fix valid connections types being reversed (GH-60124 ). GUI: Label: Fixed leading spaces pushing text outside autowrap boundary (GH-60233 ). GUI: LineEdit: Fix clear button position for asymmetric StyleBox (GH-61496 ). GUI: RichTextLabel: Fix implementation of remove_line()
(GH-60618 ). Import: Fix glTF texture filename decoding (GH-57685 ). Input: Document that accumulated input is disabled by default (GH-62664 ).This is actually due to a regression in 3.4. It’s kept disabled in this release for compatibility, but will be enabled by default in 3.5. iOS: Fix simultaneous touches for different touch types (GH-60224 ). Linux: Fix X11 OS.is_window_maximized()
(GH-59767 ). Linux: Properly check for fullscreen toggle made through the Window Manager (GH-62543 ). Physics: Skip compound shapes without child shapes in SpaceBullet::recover_from_penetration()
(GH-59864 ). Rendering: GLES2: Unpack blend shape arrays when necessary (GH-60829 ). Rendering: GLES3: Unbind vertex buffer before calculating blend shapes (GH-60832 ). Rendering: GLES3: Ignore support for S3TC texture compression on Android and iOS devices (GH-62909 ).Few devices support this compression while they all support ETC2. Godot exports ETC2 by default and doesn’t take into account that mobile devices could need S3TC. Rendering: Portals: Force full check on adding moving object (GH-61523 ). UWP: Fix GDNative DLLs not being included on export (GH-61262 ). VisualScript: Fix copy paste issue in the editor (GH-54629 ). VisualScript: Fix zoom handling in editor when jumping to functions (GH-60016 ). Windows: Fix String.http_escape()
non-standard behavior with MinGW (GH-61655 ). XR: Update Meta hand tracking version (GH-60639 ). Thirdparty libraries: zlib/minizip 1.2.12, mbedTLS 2.28.1, CA certificates from 2022-03-31, SDL GameControllerDB from 2022-07-15. API documentation updates. See the full changelog since 3.4.4-stable on GitHub , or in text form (sorted by authors or chronologically ).
This release is built from commit 375d9905b
(see README ).
Downloads The downloads for this dev snapshot can be found directly on our repository:
Standard build (GDScript, GDNative, VisualScript).Mono build (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.158 are included in this build.Bug reports As a tester, you are encouraged to open bug reports if you experience issues with 3.4.5 RC 1. 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.
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 earlier 3.4.x releases no longer works in 3.4.5 RC 1).
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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-4-rc-1/index.html b/article/release-candidate-godot-3-4-rc-1/index.html
index 021f28432d..b514cde7ab 100644
--- a/article/release-candidate-godot-3-4-rc-1/index.html
+++ b/article/release-candidate-godot-3-4-rc-1/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 19 October 2021 The upcoming Godot 3.4 release will provide a number of new features which have been backported from the 4.0 development branch (see our release policy for details on the various Godot versions). With this first Release Candidate , we completely freezes feature development, and comes after a long series of beta builds to fix a number of bugs reported against previous builds (as well as against previous stable branches).
If you already reviewed the changelog for beta 6, you can skip right to the differences between beta 6 and RC 1 . Notable changes are in-editor class reference translations (so far Chinese (Simplified), Spanish, and some French), some new rendering features (high quality glow mode, 3D point light attenuation option), and a number of C# marshalling fixes.
Jump to the Downloads section.
As usual, you can try it live with the online version of the Godot editor updated for this release.
Highlights The main changes coming in Godot 3.4 and included in this release candidate are:
Android: Add partial support for Android scoped storage (GH-50359 ).This also means we’re now targeting API level 30 as required to publish new apps on Google Play. Android: Add initial support for Play Asset Delivery (GH-52526 ). Android: Improve input responsiveness on underpowered Android devices (GH-42220 ). Animation: Add animation “reset” track feature (GH-44558 ). Audio: Fix cubic resampling algorithm (GH-51082 ). Audio: Add Listener2D node (GH-53429 ). C#: macOS: Mono builds are now universal builds with support for both x86_64
and arm64
architectures (GH-49248 ). C#: Fix reloading tool scripts in the editor (GH-52883 ). C#: iOS: Fix P/Invoke
symbols being stripped by the linker, resulting in EntryPointNotFoundException
crash at runtime (GH-49248 ). Core: Promote object validity checks to release builds (GH-51796 ). Core: Make all file access 64-bit (uint64_t
) (GH-47254 ).This adds support for handling files bigger than 2.1 GiB, including on 32-bit OSes. Core: Fix negative delta arguments (GH-52947 ). Core: Add frame delta smoothing option (GH-48390 ).This option is enabled by default (application/run/delta_smoothing
). Please report any issue. Crypto: Add AESContext, HMACContext, RSA public keys, encryption, decryption, sign, and verify (GH-48144 , GH-48869 ). CSG: CSGPolygon fixes and features: Angle simplification, UV tiling distance, interval type (GH-52509 ). Editor: Overhaul the theme editor and improve user experience (GH-49774 ). GridMap: Implement individual mesh transform for MeshLibrary items (GH-52298 ). HTML5: Export as Progressive Web App (PWA) (GH-48250 ). HTML5: Implement Godot <-> JavaScript interface (GH-48691 ). HTML5: Implement AudioWorklet without threads (GH-52650 ). Import: Implement lossless WebP encoding (GH-47854 ). Import: Backport improved glTF module with scene export support (GH-49120 ). macOS: Add GDNative Framework support, and minimal support for handling Unix symlinks (GH-46860 ). macOS: Add notarization support when exporting for macOS on a macOS host (GH-49276 ). Mesh: Implement octahedral map normal/tangent attribute compression (GH-46800 ). Mesh: Options to clean/simplify convex hull generated from mesh (GH-50328 ). Particles: Add ring emitter for 3D particles (GH-47801 ). Physics: Fix 2D and 3D moving platform logic (GH-50166 , GH-51458 ). Physics: Various fixes to 2D and 3D KinematicBody move_and_slide
and move_and_collide
(GH-50495 ). Physics: Improved logic for KinematicBody collision recovery depth (GH-53451 ). Rendering: Rooms and portals-based occlusion culling (GH-46130 ). Rendering: Add a new high quality tonemapper: ACES Fitted (GH-52477 ). Rendering: Fixes depth sorting of meshes with transparent textures (GH-50721 ). Rendering: Add soft shadows to the CPU lightmapper (GH-50184 ). Rendering: Add high quality glow mode (GH-51491 ). Rendering: Add new 3D point light attenuation as an option (GH-52918 ). Rendering: Import option to split vertex buffer stream in positions and attributes (GH-46574 ). RichTextLabel: Fix auto-wrapping on CJK texts (GH-49280 ). Shaders: Add support for structs and fragment-to-light varyings (GH-48075 ). Translation: Add support for translating the class reference (GH-53511 ). Viewport: Add a 2D scale factor property (GH-52137 ). VisualScript: Improve and streamline VisualScriptFuncNodes Call
Set
Get
(GH-50709 ). Windows: Fix platform file access to allow file sharing with external programs (GH-51430 ). All these need to be thoroughly tested to ensure that they work as intended in the upcoming 3.4-stable.
Changes Here’s a curated changelog with links to the relevant pull requests for details. The list is not exhaustive and will be completed in the future to include more noteworthy changes.
Note that some of the changes in 3.4 have already been backported and published in Godot 3.3.1 and 3.3.2 , and therefore they were not listed here again. You can refer to the changelogs of those maintenance releases for details on what you might have missed since 3.3-stable.
Android: Add partial support for Android scoped storage (GH-50359 ).This also means we’re now targeting API level 30 as required to publish new apps on Google Play. Android: Add initial support for Play Asset Delivery (GH-52526 ). Android: Improve input responsiveness on underpowered Android devices (GH-42220 ). Android: Add GDNative libraries to Android custom Gradle builds (GH-49912 ). Android: Implement per-pixel transparency (GH-51935 ). Android: Resolve issue where the Godot app remains stuck when resuming (GH-51584 ). Android: Add basic user data backup option (GH-49070 ). Android: Add support for prompting the user to retain app data on uninstall (GH-51605 ). Android: Upgrade Android Gradle to version 7.2, now requires Java 11 (GH-53610 ). Android: Remove non-functional native video OS methods (GH-48537 ). Animation: Add animation “reset” track feature (GH-44558 ). Animation: Fix Tween active state and repeat after stop()
and then start()
(GH-47142 ). Animation: Allow renaming bones and blend shapes (GH-42827 ). Animation: Fix issues with BlendSpace2D BLEND_MODE_DISCRETE_CARRY
(GH-48375 ). Animation: Fixed issue where bones become detached if multiple SkeletonIK nodes are used (GH-49031 ). Animation: Fix non functional 3D onion skinning (GH-52664 ). Animation: Fix Animation Playback Track not seeking properly (GH-38107 ). Animation: Fix bugs in AnimationNodeTransition’s behavior (GH-52543 , GH-52555 ). Animation: Fix rendering centered odd-size texture for AnimatedSprite/AnimatedSprite3D (GH-53052 ). AStar: get_available_point_id()
returns 0 instead of 1 when empty (GH-48958 ). Audio: Fix cubic resampling algorithm (GH-51082 ). Audio: Add Listener2D node (GH-53429 ). Buildsystem: Refactor module defines into a generated header (GH-50466 ). ButtonGroup: Add a pressed
signal (GH-48500 ). C#: macOS: Mono builds are now universal builds with support for both x86_64
and arm64
architectures (GH-49248 ). C#: Fix reloading tool scripts in the editor (GH-52883 ). C#: iOS: Fix P/Invoke
symbols being stripped by the linker, resulting in EntryPointNotFoundException
crash at runtime (GH-49248 ). C#: iOS: Cache AOT compiler output (GH-51191 ). C#: Improve C# method listing (GH-52607 ). C#: Add editor keyboard shortcut (Alt+B ) for Mono Build solution button (GH-52595 ). C#: Add support to export enum strings for Array<string>
(GH-52763 ). C#: Support arrays of NodePath
and RID
(GH-53577 ). C#: Support marshaling generic Godot.Object
(GH-53582 ). C#: Fix List<T>
marshalling (GH-53628 ). C#: Fix hint_string
for enum arrays (GH-53638 ). C#: Deprecate Xform
methods removed in 4.0, the *
operator is preferred (GH-52762 ). Camera2D: Make the most recently added current Camera2D take precedence (GH-50112 ). CheckBox: Add disabled theme icons (GH-37755 ). ColorPicker: Display previous color and allow selecting it back (GH-48611 , GH-48623 ). Control: Don’t change hovering during Control focus events (GH-47280 ). Core: Promote object validity checks to release builds (GH-51796 ). Core: Make all file access 64-bit (uint64_t
) (GH-47254 ).This adds support for handling files bigger than 2.1 GiB, including on 32-bit OSes. Core: Add frame delta smoothing option (GH-48390 ).This option is enabled by default (application/run/delta_smoothing
). Please report any issue. Core: Fix negative delta arguments (GH-52947 ). Core: Add option to sync frame delta after draw (GH-48555 ).This option is experimental and disabled by default (application/run/delta_sync_after_draw
). Please try it out and report any issue. Core: Complain if casting a freed object in a debug session (GH-51095 ). Core: Thread callbacks can now take optional parameters (GH-38078 , GH-51093 ). Core: Fix read/write issues with NaN
and INF
in VariantParser (GH-47500 ). Core: Provide a getter for the project data directory (GH-52714 ). Core: Add an option to make the project data directory non-hidden (GH-52556 , GH-53779 ). Core: Optimize hash comparison for integer and string keys in Dictionary (GH-53557 ). Core: Add support for numeric XML entities to XMLParser (GH-47978 ). Core: Add option for BVH thread safety (GH-48892 ). Core: Fix sub-resource storing the wrong index in cache (GH-49625 ). Core: Add detailed error messages to release builds (used to be debug-only) (GH-53405 ). Core: Improve the console error logging appearance: (GH-49577 ). Core: Add Engine.print_error_messages
property to disable printing errors (GH-50640 ). Core: Add Node name to print()
of all nodes, makes Object::to_string()
virtual (GH-38819 ). Core: Fix Transform::xform(Plane)
functions to handle non-uniform scaling (GH-50637 ). Core: Fix renaming directories with Directory.rename()
(GH-51793 ). Core: Harmonize output of OS.get_locale()
between platforms (GH-40708 ). Core: Implement OS.get_locale_language()
helper method (GH-52740 ). Core: Fix path with multiple slashes not being corrected on templates (GH-52513 ). Core: Allow using global classes as project MainLoop
implementation (GH-52438 ). Core: Add an Array.pop_at()
method to pop an element at an arbitrary index (GH-52143 ). Core: Fix String.get_base_dir()
handling of Windows top-level directories (GH-52744 ). Core: Expose enum related methods in ClassDB (GH-52572 ). Core: Add Thread.is_alive()
method to check if the thread is still doing work (GH-53490 ). Core: Allow for platform Thread
implementation override (GH-52734 ). Core: Fix potential crash when creating thread with an invalid target instance (GH-53060 ). Core: Fix behavior of CONNECT_REFERENCE_COUNTED
option for signal connections (GH-47442 ). Core: Implement missing stringification for PoolByteArray
and PoolColorArray
(GH-53655 ). Crypto: Add AESContext, RSA public keys, encryption, decryption, sign, and verify (GH-48144 ). Crypto: Add HMACContext (GH-48869 ). CSG: CSGPolygon fixes and features: Angle simplification, UV tiling distance, interval type (GH-52509 ). Debugger: Automatic remote debugger port assignment (GH-37067 ). Debugger: Fix Marshalls infinite recursion crash (GH-51068 ). Editor: Add zoom support to SpriteFrames editor plugin (GH-48977 ). Editor: Fix logic for showing tilemap debug collision shapes (GH-49075 ). Editor: Add EditorResourcePicker
and EditorScriptPicker
classes for plugins (and internal editor use) (GH-49491 ). Editor: Refactor Theme
item management in the theme editor (GH-49512 ). Editor: Overhaul the theme editor and improve user experience (GH-49774 ). Editor: Allow to create a node at specific position (GH-50242 ). Editor: Implement a %command%
placeholder in the Main Run Args setting (GH-35992 ). Editor: Add keyboard shortcuts to the project manager (GH-47894 ). Editor: Handle portrait mode monitors in the automatic editor scale detection (GH-48597 ). Editor: Add custom debug shape thickness and color options to RayCast (GH-49726 ). Editor: Properly update NodePaths in the editor in more cases when nodes are moved or renamed (GH-49812 ). Editor: Improve 2D editor zoom logic (GH-50490 , GH-50499 ). Editor: Make several actions in the Inspector dock more obvious (GH-50528 ). Editor: Improve the editor feature profiles UX (GH-49643 ). Editor: Improve the UI/UX of the Export Template Manager dialog (GH-50531 ). Editor: Improve FileSystem dock sorting (GH-50565 ). Editor: Add the ability to reorder array elements from the inspector (GH-50651 ). Editor: Assign value to property by dropping to scene tree (GH-50700 ). Editor: Improve the 3D editor manipulation gizmo (GH-50597 ). Editor: Refactor layer property editor grid (GH-51040 ). Editor: Rationalize property reversion (GH-51166 ). Editor: Allow dropping property path into script editor (GH-51629 ). Editor: Auto-reload scripts with external editor (GH-51828 ). Editor: Improve the animation bezier editor (GH-48572 ). Editor: Save branch as scene by dropping to filesystem (GH-52503 ). Editor: Fix scale sensitivity for 3D objects (GH-52665 ). Editor: Use QuickOpen to load resources in the inspector (GH-37228 ). Editor: Fix preview grid in SpriteFrames editor’s “Select Frames” dialog (GH-52461 ). Editor: Add up/down keys to increment/decrement value in editor spin slider (GH-53090 ). Editor: Allow creating nodes in Animation Blend Tree by dragging from in/out ports (GH-52966 ). Editor: Allow dragging multiple resources onto exported array variable at once (GH-50718 ). Editor: Add history navigation in the script editor using extra mouse buttons (GH-53067 ). Editor: Increase object snapping distances in the 3D editor (GH-53727 ). Editor: Implement camera orbiting shortcuts (GH-51984 ). Font: Re-add support for kerning in DynamicFont (GH-49377 ). Font: Allow using WOFF fonts in DynamicFont (GH-52052 ). GDScript: Fix parsing multi-line preload
statement (GH-52521 ). GDScript: Speedup running very big GDScript files (GH-53507 ). GLES2: Add basic support for CPU blendshapes (GH-48480 ). GLES2: Performance improvements for CPU blendshapes (GH-51363 ). GLES2: Allow using clearcoat, anisotropy and refraction in SpatialMaterial (GH-51967 ). GLES2: Implement Viewport.keep_3d_linear
for VR applications to convert output to linear color space (GH-51780 ). GLES2: Fix ambient light flickering with multiple refprobes (GH-53740 ). GLES3: Allow repeat flag in viewport textures (GH-34008 ). GLES3: Fix draw order of transparent materials with multiple directional lights (GH-47129 ). GLES3: Fix multimesh being colored by other nodes GLES3 (GH-47582 ). GLES3: Add support for contrast-adaptive sharpening in 3D (GH-47416 ). GLES3: Only add emission on base pass (GH-53938 ). GraphEdit: Enable zooming with Ctrl + Scroll wheel and related fixes to zoom handling (GH-47173 ). GraphEdit: Make zoom limits and step adjustable (GH-50526 ). GraphNode: Properly handle children with “Expand” flag (GH-39810 ). GridMap: Implement individual mesh transform for MeshLibrary items (GH-52298 ). HTML5: Export as Progressive Web App (PWA) (GH-48250 ). HTML5: Implement Godot <-> JavaScript interface (GH-48691 ). HTML5: Implement AudioWorklet without threads (GH-52650 ). HTML5: Debug HTTP server refactor with SSL support (GH-48250 ). HTML5: Add easy to use download API (GH-48929 ). HTML5: Fix bug in AudioWorklet when reading output buffer (GH-52696 ). HTML5: Use browser mix rate by default on the Web (GH-52723 ). HTML5: Release pressed events when the window is blurred on HTML5 platform (GH-52973 ). HTML5: Refactor event handlers, drop most Emscripten HTML5 dependencies (GH-52812 ). Import: Implement lossless WebP encoding (GH-47854 ). Import: Add anisotropic filter option for TextureArrays (GH-51402 ). Import: Add “Normal Map Invert Y” import option for normal maps (GH-48693 ). Import: Backport improved glTF module with scene export support (GH-49120 ). Import: Optimize image channel detection (GH-47396 ). Import: Fix loading RLE compressed TGA files (GH-49603 ). Import: Add optional region cropping for TextureAtlas importer (GH-52652 ). Import: Fixed issue in TextureAtlas import of images with wrong size (GH-42103 ). Import: Fix potential crash importing invalid BMP files (GH-46555 ). Input: Add support for physical scancodes, fixes non-latin layout scancodes on Linux (GH-46764 ). Input: Fix game controllers ignoring the last listed button (GH-48934 ).Breaks compat slightly by changing the value of some of the JoystickList
enum constants. Input: Allow getting axis/vector values from multiple actions (GH-50788 ). Input: Allow checking for exact matches with Action events (GH-50874 ). Input: Exposed setters for sensor values (GH-53742 ). iOS: Add pen pressure support for Apple Pencil (GH-47469 ). iOS: Add option to automatically generate icons and launch screens (GH-49464 ). iOS: Support multiple plist
types in plugin (GH-49802 ). iOS: Remove duplicate orientation setting in the export preset (GH-48943 ). iOS: Implement missing OS set
/get_clipboard()
methods (GH-52540 ). Label: Fix valign with stylebox borders (GH-50478 ). Lightmapper: Add an editor setting to configure number of threads for lightmap baking (GH-52952 ). LineEdit: Double click selects words, triple click selects all the content (GH-46527 ). Linux: Fix implementation of move_to_trash
(GH-44021 ). Linux: Fix Directory::get_space_left()
result (GH-49222 ). LSP: Implement didSave
notify and rename request (GH-48616 ). LSP: Fix SymbolKind
reporting wrong types and get_node()
parsing (GH-50914 , GH-51283 ). LSP: Add support for custom host setting (GH-52330 ). LSP: Implement applyEdit
for signal connecting (GH-53068 ). LSP: Report new()
as _init
& fix docstrings on multiline functions (GH-53094 ). macOS: Add GDNative Framework support, and minimal support for handling Unix symlinks (GH-46860 ). macOS: Allow “on top” windows to enter fullscreen mode (GH-49017 ). macOS: Add notarization support when exporting for macOS on a macOS host (GH-49276 ). macOS: Fix Directory::get_space_left()
result (GH-49222 ). macOS: Fix Xbox controllers in Bluetooth mode on macOS (GH-51117 ). macOS: Fix incorrect mouse position in fullscreen (GH-52374 ). macOS: Prefer .app bundle icon over the default one (GH-48686 ). Mesh: Implement octahedral map normal/tangent attribute compression (GH-46800 ). Mesh: Add a center_offset
property to both plane primitive and quad primitive (GH-48763 ). Mesh: Fix UV mapping on CSGSphere (GH-49195 ). Mesh: Options to clean/simplify convex hull generated from mesh (GH-50328 ). Mesh: Fix multiple issues with CSGPolygon (GH-49314 ). Mesh: Fix the normals of SphereMesh when the sphere/hemisphere is oblong (GH-51995 ). Mesh: Update mesh AABB when software skinning is used (GH-53144 ). Networking: Add support for multiple address resolution in DNS requests (GH-49020 ). Networking: Implement String::parse_url()
for parsing URLs (GH-48205 ). Networking: Add get_buffered_amount()
to WebRTCDataChannel (GH-50659 ). Networking: WebsocketPeer outbound buffer fixes and buffer size query (GH-51037 ). Networking: Fix IP address resolution incorrectly locking the main thread (GH-51199 ). Networking: Add dtls_hostname
property to ENet (GH-51434 ). Networking: Enable range coder compression by default in NetworkedMultiplayerENet (GH-51525 ). OpenSimplexNoise: Fix swapped axes in get_image()
(GH-30424 ).Breaks compat. If you need to preserve the 3.2 behavior, swap your first and second arguments in get_image()
. OpenSimplexNoise: Add support for generating noise images with an offset (GH-48805 ). OS: Expose OS data directory getter methods (GH-49732 ). Particles: Add ring emitter for 3D particles (GH-47801 ). Particles: Fixed rotate_y
property of particle shaders (GH-46687 ). Particles: Fixed behavior of velocity spread (GH-47310 ). Physics: Fix 2D and 3D moving platform logic (GH-50166 , GH-51458 ). Physics: Various fixes to 2D and 3D KinematicBody move_and_slide
and move_and_collide
(GH-50495 ). Physics: Improved logic for KinematicBody collision recovery depth (GH-53451 ). Physics: Fix Rayshape recovery in test_body_ray_separation
(GH-53453 ). Physics: Enable setting the number of physics solver iterations (GH-38387 , GH-50257 ). Physics: Apply infinite inertia checks to Godot Physics 3D (GH-42637 ). Physics: Return RID instead of Object ID in area-body_shape_entered-exited signals (GH-42743 ). Physics: Heightmap collision shape support in Godot Physics 3D (GH-47349 ). Physics: Add support for Dynamic BVH as 2D physics broadphase (GH-48314 ). Physics: Port Bullet’s convex hull computer to replace QuickHull (GH-48533 ). Physics: Expose body_test_motion
in 3D physics server (GH-50103 ). Physics: Add option to sync motion to physics in 3D KinematicBody (GH-49446 ). Physics: Expose collider RID in 2D/3D kinematic collision (GH-49476 ). Physics: Support for disabling physics on SoftBody (GH-49835 ). Physics: Fix and clean disabled shapes handling in Godot physics servers (GH-49845 ). Physics: Optimize area detection and intersect_shape
queries with concave shapes (GH-48551 ). Physics: Optimize raycast with large Heightmap shape data (GH-48709 ). Physics: Fix KinematicBody axis lock (GH-45176 ). Physics: Backport new methods for KinematicBody and KinematicCollision (GH-52116 ). Physics: Expose SoftBody pin methods for scripting (GH-52369 ). Physics: Don’t override KinematicCollision reference when still in use in script: (GH-52955 ). Physics: Reload kinematic shapes when changing PhysicsBody mode to Kinematic (GH-53118 ). Physics: Wake up 2D and 3D bodies in impulse and force functions (GH-53113 ). Physics: Compile Bullet with threadsafe switch on (GH-53183 ). Rendering: Rooms and portals-based occlusion culling (GH-46130 ). Rendering: Add a new high quality tonemapper: ACES Fitted (GH-52477 ). Rendering: VisualServer now sorts based on AABB position (GH-43506 ). Rendering: Fixes depth sorting of meshes with transparent textures (GH-50721 ). Rendering: Add soft shadows to the CPU lightmapper (GH-50184 ). Rendering: Add high quality glow mode (GH-51491 ). Rendering: Add new 3D point light attenuation as an option (GH-52918 ). Rendering: Import option to split vertex buffer stream in positions and attributes (GH-46574 ). Rendering: Fix flipped binormal in SpatialMaterial triplanar mapping (GH-49950 ). Rendering: Fix CanvasItem bounding rect calculation in some cases (GH-49160 ). Rendering: Make Blinn and Phong specular consider albedo and specular amount (GH-51410 ). Rendering: Add horizon specular occlusion (GH-51416 ). Rendering: Clamp negative colors regardless of the tonemapper to avoid artifacts (GH-51439 ). Rendering: Fix Y billboard shear when rotating camera (GH-52151 ). Rendering: Add half frame to floor()
for animated particles UV to compensate precision errors (GH-53233 ). RichTextLabel: Fix auto-wrapping on CJK texts (GH-49280 ). RichTextLabel: Fix character horizontal offset calculation (GH-52752 ). Scene: Fix loading packed scene with editable children at runtime (GH-49664 ). Scene: Write node groups on a single line when saving a .tscn
file (GH-52284 ). Scene: Compare connections by object ID, making .tscn
order deterministic (GH-52493 ). ScrollBar: Add increment_pressed
and decrement_pressed
icons (GH-51805 ). Shaders: Add support for structs and fragment-to-light varyings (GH-48075 ). Shaders: Add support for global const arrays (GH-50889 ). Shaders: Makes TIME
available in custom functions by default (GH-49509 ). Shaders: Default shader specular render mode to SCHLICK_GGX
(GH-51401 ). Shaders: Prevent shaders from generating code before the constructor finishes (GH-52475 ). Sprite3D: Allow unclamped colors in Sprite3D (GH-51462 ). TabContainer: Fix moving dropped tab to incorrect child index (GH-51177 ). Tabs: Fix invisible tabs not being ignored (GH-53551 ). TextureButton: Add flip_h
and flip_v
properties (GH-30424 ). TextureProgress: Improve behavior with nine patch (GH-45815 ). TextureProgress: Add offset for progress texture (GH-38722 ). Theme: Various improvements to the Theme API (GH-49487 ). Theme: StyleBox fake anti-aliasing improvements (GH-51589 ). Theme: Add support for partial custom editor themes (GH-51648 ). Theme: Add API to retrieve the default font, and optimize property change notification (GH-53397 ). Theme: Fix potential crash with custom themes using BitMap fonts (GH-53410 ). TileSet: Fix selection of spaced atlas tile when using priority (GH-50886 ). Translation: Add support for translating the class reference (GH-53511 ). Translation: Allow override get_message
with virtual method (GH-53207 ). Viewport: Add a 2D scale factor property (GH-52137 ). Viewport: Allow input echo when changing UI focus (GH-44456 ). VisualScript: Allow dropping custom node scripts in VisualScript editor (GH-50696 ). VisualScript: Expose visual script custom node type hints (GH-50705 ). VisualScript: Improve and streamline VisualScriptFuncNodes Call
Set
Get
(GH-50709 ). Windows: Fix platform file access to allow file sharing with external programs (GH-51430 ). Windows: Send error logs to stderr
instead of stdout
, like done on other OSes (GH-39139 ). Windows: Fix OS.shell_open()
not returning errors (GH-52842 ). Windows: Allow renaming to change the case of Windows directories (GH-43068 ). Windows: Disable WebM SIMD optimization with YASM which triggers crashes (GH-53959 ). XR: Add VIEW_INDEX
variable in shader to know which eye/view we’re rendering for (GH-48011 ). Thirdparty library updates: bullet 3.17, embree 3.13.0, mbedtls 2.16.11, nanosvg git, CA root certificates. API documentation updates. Editor and doc translation updates. And many more bug fixes and usability enhancements all around the engine! See the full changelog since 3.3-stable (chronological , or for each contributor ).
You can also browse the changes between 3.4 beta 6 and RC 1 .
This release is built from commit 90f8cd89a738316563dac9b133628df6bafe2cb2 .
Downloads The downloads for this dev snapshot can be found directly on our repository:
Standard build (GDScript, GDNative, VisualScript).Mono build (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.158 are included in this build.Bug reports As a tester, you are encouraged to open bug reports if you experience issues with 3.4 RC 1. 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.
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 3.3.3 or earlier no longer works in this build).
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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-4-rc-2/index.html b/article/release-candidate-godot-3-4-rc-2/index.html
index 2788527985..114f06410d 100644
--- a/article/release-candidate-godot-3-4-rc-2/index.html
+++ b/article/release-candidate-godot-3-4-rc-2/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 27 October 2021 The upcoming Godot 3.4 release will provide a number of new features which have been backported from the 4.0 development branch (see our release policy for details on the various Godot versions). With this second Release Candidate , we have frozen feature development and are nearly ready to release the stable version.
If you already reviewed the changelog for RC 1, you can skip right to the differences between RC 1 and RC 2 .
Jump to the Downloads section.
As usual, you can try it live with the online version of the Godot editor updated for this release. This Web editor now also supports using a WebGL 2 context (i.e. GLES3 renderer).
Highlights The main changes coming in Godot 3.4 and included in this release candidate are:
Android: Add partial support for Android scoped storage (GH-50359 ).This also means we’re now targeting API level 30 as required to publish new apps on Google Play. Android: Add initial support for Play Asset Delivery (GH-52526 ). Android: Improve input responsiveness on underpowered Android devices (GH-42220 ). Animation: Add animation “reset” track feature (GH-44558 ). Audio: Fix cubic resampling algorithm (GH-51082 ). Audio: Add Listener2D node (GH-53429 ). C#: macOS: Mono builds are now universal builds with support for both x86_64
and arm64
architectures (GH-49248 ). C#: Fix reloading tool scripts in the editor (GH-52883 ). C#: iOS: Fix P/Invoke
symbols being stripped by the linker, resulting in EntryPointNotFoundException
crash at runtime (GH-49248 ). Core: Promote object validity checks to release builds (GH-51796 ). Core: Make all file access 64-bit (uint64_t
) (GH-47254 ).This adds support for handling files bigger than 2.1 GiB, including on 32-bit OSes. Core: Fix negative delta arguments (GH-52947 ). Core: Add frame delta smoothing option (GH-48390 ).This option is enabled by default (application/run/delta_smoothing
). Please report any issue. Crypto: Add AESContext, HMACContext, RSA public keys, encryption, decryption, sign, and verify (GH-48144 , GH-48869 ). CSG: CSGPolygon fixes and features: Angle simplification, UV tiling distance, interval type (GH-52509 ). Editor: Overhaul the theme editor and improve user experience (GH-49774 ). GridMap: Implement individual mesh transform for MeshLibrary items (GH-52298 ). HTML5: Export as Progressive Web App (PWA) (GH-48250 ). HTML5: Implement Godot <-> JavaScript interface (GH-48691 ). HTML5: Implement AudioWorklet without threads (GH-52650 ). Import: Implement lossless WebP encoding (GH-47854 ). Import: Backport improved glTF module with scene export support (GH-49120 ). macOS: Add GDNative Framework support, and minimal support for handling Unix symlinks (GH-46860 ). macOS: Add notarization support when exporting for macOS on a macOS host (GH-49276 ). Mesh: Implement octahedral map normal/tangent attribute compression (GH-46800 ). Mesh: Options to clean/simplify convex hull generated from mesh (GH-50328 ). Particles: Add ring emitter for 3D particles (GH-47801 ). Physics: Fix 2D and 3D moving platform logic (GH-50166 , GH-51458 ). Physics: Various fixes to 2D and 3D KinematicBody move_and_slide
and move_and_collide
(GH-50495 ). Physics: Improved logic for KinematicBody collision recovery depth (GH-53451 ). Rendering: Rooms and portals-based occlusion culling (GH-46130 ). Rendering: Add a new high quality tonemapper: ACES Fitted (GH-52477 ). Rendering: Fixes depth sorting of meshes with transparent textures (GH-50721 ). Rendering: Add soft shadows to the CPU lightmapper (GH-50184 ). Rendering: Add high quality glow mode (GH-51491 ). Rendering: Add new 3D point light attenuation as an option (GH-52918 ). Rendering: Import option to split vertex buffer stream in positions and attributes (GH-46574 ). RichTextLabel: Fix auto-wrapping on CJK texts (GH-49280 ). Shaders: Add support for structs and fragment-to-light varyings (GH-48075 ). Translation: Add support for translating the class reference (GH-53511 ). Viewport: Add a 2D scale factor property (GH-52137 ). VisualScript: Improve and streamline VisualScriptFuncNodes Call
Set
Get
(GH-50709 ). Windows: Fix platform file access to allow file sharing with external programs (GH-51430 ). All these need to be thoroughly tested to ensure that they work as intended in the upcoming 3.4-stable.
Changes Here’s a curated changelog with links to the relevant pull requests for details. The list is not exhaustive and will be completed in the future to include more noteworthy changes.
Note that some of the changes in 3.4 have already been backported and published in Godot 3.3.1 and 3.3.2 , and therefore they were not listed here again. You can refer to the changelogs of those maintenance releases for details on what you might have missed since 3.3-stable.
Android: Add partial support for Android scoped storage (GH-50359 ).This also means we’re now targeting API level 30 as required to publish new apps on Google Play. Android: Add initial support for Play Asset Delivery (GH-52526 ). Android: Improve input responsiveness on underpowered Android devices (GH-42220 ). Android: Add GDNative libraries to Android custom Gradle builds (GH-49912 ). Android: Implement per-pixel transparency (GH-51935 ). Android: Resolve issue where the Godot app remains stuck when resuming (GH-51584 ). Android: Add basic user data backup option (GH-49070 ). Android: Add support for prompting the user to retain app data on uninstall (GH-51605 ). Android: Upgrade Android Gradle to version 7.2, now requires Java 11 (GH-53610 ). Android: Properly validate godot_project_name_string
for Android special chars (GH-54255 ). Android: Remove non-functional native video OS methods (GH-48537 ). Animation: Add animation “reset” track feature (GH-44558 ). Animation: Fix Tween active state and repeat after stop()
and then start()
(GH-47142 ). Animation: Allow renaming bones and blend shapes (GH-42827 ). Animation: Fix issues with BlendSpace2D BLEND_MODE_DISCRETE_CARRY
(GH-48375 ). Animation: Fixed issue where bones become detached if multiple SkeletonIK nodes are used (GH-49031 ). Animation: Fix non functional 3D onion skinning (GH-52664 ). Animation: Fix Animation Playback Track not seeking properly (GH-38107 ). Animation: Fix bugs in AnimationNodeTransition’s behavior (GH-52543 , GH-52555 ). Animation: Fix rendering centered odd-size texture for AnimatedSprite/AnimatedSprite3D (GH-53052 ). AStar: get_available_point_id()
returns 0 instead of 1 when empty (GH-48958 ). Audio: Fix cubic resampling algorithm (GH-51082 ). Audio: Add Listener2D node (GH-53429 ). Buildsystem: Refactor module defines into a generated header (GH-50466 ). Button: Don’t change hovering during Control focus events (GH-47280 ). Button: Add focus font color to Button
and derivatives (GH-54264 ). ButtonGroup: Add a pressed
signal (GH-48500 ). C#: macOS: Mono builds are now universal builds with support for both x86_64
and arm64
architectures (GH-49248 ). C#: Fix reloading tool scripts in the editor (GH-52883 ). C#: iOS: Fix P/Invoke
symbols being stripped by the linker, resulting in EntryPointNotFoundException
crash at runtime (GH-49248 ). C#: iOS: Cache AOT compiler output (GH-51191 ). C#: Improve C# method listing (GH-52607 ). C#: Add editor keyboard shortcut (Alt+B ) for Mono Build solution button (GH-52595 ). C#: Add support to export enum strings for Array<string>
(GH-52763 ). C#: Support arrays of NodePath
and RID
(GH-53577 ). C#: Support marshaling generic Godot.Object
(GH-53582 ). C#: Fix List<T>
marshalling (GH-53628 ). C#: Fix hint_string
for enum arrays (GH-53638 ). C#: Keep order for C# exported members (GH-54199 ). C#: Avoid modifying csproj
globbing includes (GH-54262 ). C#: Deprecate Xform
methods removed in 4.0, the *
operator is preferred (GH-52762 ). Camera2D: Make the most recently added current Camera2D take precedence (GH-50112 ). CheckBox: Add disabled theme icons (GH-37755 ). ColorPicker: Display previous color and allow selecting it back (GH-48611 , GH-48623 ). Core: Promote object validity checks to release builds (GH-51796 ). Core: Make all file access 64-bit (uint64_t
) (GH-47254 ).This adds support for handling files bigger than 2.1 GiB, including on 32-bit OSes. Core: Add frame delta smoothing option (GH-48390 ).This option is enabled by default (application/run/delta_smoothing
). Please report any issue. Core: Fix negative delta arguments (GH-52947 ). Core: Add option to sync frame delta after draw (GH-48555 ).This option is experimental and disabled by default (application/run/delta_sync_after_draw
). Please try it out and report any issue. Core: Complain if casting a freed object in a debug session (GH-51095 ). Core: Thread callbacks can now take optional parameters (GH-38078 , GH-51093 ). Core: Fix read/write issues with NaN
and INF
in VariantParser (GH-47500 ). Core: Provide a getter for the project data directory (GH-52714 ). Core: Add an option to make the project data directory non-hidden (GH-52556 , GH-53779 ). Core: Optimize hash comparison for integer and string keys in Dictionary (GH-53557 ). Core: Add support for numeric XML entities to XMLParser (GH-47978 ). Core: Add option for BVH thread safety (GH-48892 ). Core: Fix sub-resource storing the wrong index in cache (GH-49625 ). Core: Add detailed error messages to release builds (used to be debug-only) (GH-53405 ). Core: Improve the console error logging appearance: (GH-49577 ). Core: Add Engine.print_error_messages
property to disable printing errors (GH-50640 ). Core: Add Node name to print()
of all nodes, makes Object::to_string()
virtual (GH-38819 ). Core: Fix Transform::xform(Plane)
functions to handle non-uniform scaling (GH-50637 ). Core: Fix renaming directories with Directory.rename()
(GH-51793 ). Core: Harmonize output of OS.get_locale()
between platforms (GH-40708 ). Core: Implement OS.get_locale_language()
helper method (GH-52740 ). Core: Fix path with multiple slashes not being corrected on templates (GH-52513 ). Core: Allow using global classes as project MainLoop
implementation (GH-52438 ). Core: Add an Array.pop_at()
method to pop an element at an arbitrary index (GH-52143 ). Core: Fix String.get_base_dir()
handling of Windows top-level directories (GH-52744 ). Core: Expose enum related methods in ClassDB (GH-52572 ). Core: Add Thread.is_alive()
method to check if the thread is still doing work (GH-53490 ). Core: Allow for platform Thread
implementation override (GH-52734 ). Core: Fix potential crash when creating thread with an invalid target instance (GH-53060 ). Core: Fix behavior of CONNECT_REFERENCE_COUNTED
option for signal connections (GH-47442 ). Core: Implement missing stringification for PoolByteArray
and PoolColorArray
(GH-53655 ). Crypto: Add AESContext, RSA public keys, encryption, decryption, sign, and verify (GH-48144 ). Crypto: Add HMACContext (GH-48869 ). CSG: CSGPolygon fixes and features: Angle simplification, UV tiling distance, interval type (GH-52509 ). Debugger: Automatic remote debugger port assignment (GH-37067 ). Debugger: Fix Marshalls infinite recursion crash (GH-51068 ). Editor: Add zoom support to SpriteFrames editor plugin (GH-48977 ). Editor: Fix logic for showing tilemap debug collision shapes (GH-49075 ). Editor: Add EditorResourcePicker
and EditorScriptPicker
classes for plugins (and internal editor use) (GH-49491 ). Editor: Refactor Theme
item management in the theme editor (GH-49512 ). Editor: Overhaul the theme editor and improve user experience (GH-49774 ). Editor: Allow to create a node at specific position (GH-50242 ). Editor: Implement a %command%
placeholder in the Main Run Args setting (GH-35992 ). Editor: Add keyboard shortcuts to the project manager (GH-47894 ). Editor: Handle portrait mode monitors in the automatic editor scale detection (GH-48597 ). Editor: Add custom debug shape thickness and color options to RayCast (GH-49726 ). Editor: Properly update NodePaths in the editor in more cases when nodes are moved or renamed (GH-49812 ). Editor: Improve 2D editor zoom logic (GH-50490 , GH-50499 ). Editor: Make several actions in the Inspector dock more obvious (GH-50528 ). Editor: Improve the editor feature profiles UX (GH-49643 ). Editor: Improve the UI/UX of the Export Template Manager dialog (GH-50531 ). Editor: Improve FileSystem dock sorting (GH-50565 ). Editor: Add the ability to reorder array elements from the inspector (GH-50651 ). Editor: Assign value to property by dropping to scene tree (GH-50700 ). Editor: Improve the 3D editor manipulation gizmo (GH-50597 ). Editor: Refactor layer property editor grid (GH-51040 ). Editor: Rationalize property reversion (GH-51166 ). Editor: Allow dropping property path into script editor (GH-51629 ). Editor: Auto-reload scripts with external editor (GH-51828 ). Editor: Improve the animation bezier editor (GH-48572 ). Editor: Save branch as scene by dropping to filesystem (GH-52503 ). Editor: Fix scale sensitivity for 3D objects (GH-52665 ). Editor: Use QuickOpen to load resources in the inspector (GH-37228 ). Editor: Fix preview grid in SpriteFrames editor’s “Select Frames” dialog (GH-52461 ). Editor: Add up/down keys to increment/decrement value in editor spin slider (GH-53090 ). Editor: Allow creating nodes in Animation Blend Tree by dragging from in/out ports (GH-52966 ). Editor: Allow dragging multiple resources onto exported array variable at once (GH-50718 ). Editor: Add history navigation in the script editor using extra mouse buttons (GH-53067 ). Editor: Increase object snapping distances in the 3D editor (GH-53727 ). Editor: Implement camera orbiting shortcuts (GH-51984 ). Editor: Add ability to copy group name (GH-53162 ). Editor: Fix MeshInstance2D edit rect (GH-54070 ). Font: Re-add support for kerning in DynamicFont (GH-49377 ). Font: Allow using WOFF fonts in DynamicFont (GH-52052 ). GDScript: Ignore property groups and categories in GDScript code completion (GH-54272 ). GDScript: Fix parsing multi-line preload
statement (GH-52521 ). GDScript: Speedup running very big GDScript files (GH-53507 ). GLES2: Add basic support for CPU blendshapes (GH-48480 ). GLES2: Performance improvements for CPU blendshapes (GH-51363 ). GLES2: Allow using clearcoat, anisotropy and refraction in SpatialMaterial (GH-51967 ). GLES2: Implement Viewport.keep_3d_linear
for VR applications to convert output to linear color space (GH-51780 ). GLES2: Fix ambient light flickering with multiple refprobes (GH-53740 ). GLES3: Allow repeat flag in viewport textures (GH-34008 ). GLES3: Fix draw order of transparent materials with multiple directional lights (GH-47129 ). GLES3: Fix multimesh being colored by other nodes GLES3 (GH-47582 ). GLES3: Add support for contrast-adaptive sharpening in 3D (GH-47416 ). GLES3: Only add emission on base pass (GH-53938 ). GraphEdit: Enable zooming with Ctrl + Scroll wheel and related fixes to zoom handling (GH-47173 ). GraphEdit: Make zoom limits and step adjustable (GH-50526 ). GraphNode: Properly handle children with “Expand” flag (GH-39810 ). GridMap: Implement individual mesh transform for MeshLibrary items (GH-52298 ). HTML5: Export as Progressive Web App (PWA) (GH-48250 ). HTML5: Implement Godot <-> JavaScript interface (GH-48691 ). HTML5: Implement AudioWorklet without threads (GH-52650 ). HTML5: Implement video driver selection for Web editor (GH-53991 ). HTML5: Debug HTTP server refactor with SSL support (GH-48250 ). HTML5: Add easy to use download API (GH-48929 ). HTML5: Fix bug in AudioWorklet when reading output buffer (GH-52696 ). HTML5: Use browser mix rate by default on the Web (GH-52723 ). HTML5: Release pressed events when the window is blurred on HTML5 platform (GH-52973 ). HTML5: Refactor event handlers, drop most Emscripten HTML5 dependencies (GH-52812 ). Import: Implement lossless WebP encoding (GH-47854 ). Import: Add anisotropic filter option for TextureArrays (GH-51402 ). Import: Add “Normal Map Invert Y” import option for normal maps (GH-48693 ). Import: Backport improved glTF module with scene export support (GH-49120 ). Import: Optimize image channel detection (GH-47396 ). Import: Fix loading RLE compressed TGA files (GH-49603 ). Import: Add optional region cropping for TextureAtlas importer (GH-52652 ). Import: Fixed issue in TextureAtlas import of images with wrong size (GH-42103 ). Import: Fix potential crash importing invalid BMP files (GH-46555 ). Input: Add support for physical scancodes, fixes non-latin layout scancodes on Linux (GH-46764 ). Input: Fix game controllers ignoring the last listed button (GH-48934 ).Breaks compat slightly by changing the value of some of the JoystickList
enum constants. Input: Allow getting axis/vector values from multiple actions (GH-50788 ). Input: Allow checking for exact matches with Action events (GH-50874 ). Input: Exposed setters for sensor values (GH-53742 ). Input: Expose Input::flush_buffered_events()
https://github.com/godotengine/godot/commit/6dc3fae201574cca599b322d24bb091bd1dbdcbd iOS: Disable half float on GLES2 via platform override (GH-54229 ). iOS: Add pen pressure support for Apple Pencil (GH-47469 ). iOS: Add option to automatically generate icons and launch screens (GH-49464 ). iOS: Support multiple plist
types in plugin (GH-49802 ). iOS: Remove duplicate orientation setting in the export preset (GH-48943 ). iOS: Implement missing OS set
/get_clipboard()
methods (GH-52540 ). Label: Fix valign with stylebox borders (GH-50478 ). Lightmapper: Add an editor setting to configure number of threads for lightmap baking (GH-52952 ). LineEdit: Double click selects words, triple click selects all the content (GH-46527 ). Linux: Add initial support for the RISC-V architecture (GH-53509 ). Linux: Fix implementation of move_to_trash
(GH-44021 ). Linux: Fix Directory::get_space_left()
result (GH-49222 ). LSP: Implement didSave
notify and rename request (GH-48616 ). LSP: Fix SymbolKind
reporting wrong types and get_node()
parsing (GH-50914 , GH-51283 ). LSP: Add support for custom host setting (GH-52330 ). LSP: Implement applyEdit
for signal connecting (GH-53068 ). LSP: Report new()
as _init
& fix docstrings on multiline functions (GH-53094 ). macOS: Add GDNative Framework support, and minimal support for handling Unix symlinks (GH-46860 ). macOS: Allow “on top” windows to enter fullscreen mode (GH-49017 ). macOS: Add notarization support when exporting for macOS on a macOS host (GH-49276 ). macOS: Fix Directory::get_space_left()
result (GH-49222 ). macOS: Fix Xbox controllers in Bluetooth mode on macOS (GH-51117 ). macOS: Fix incorrect mouse position in fullscreen (GH-52374 ). macOS: Prefer .app bundle icon over the default one (GH-48686 ). macOS: Add entitlements required by OIDN JIT for the editor build (GH-54067 ). Mesh: Implement octahedral map normal/tangent attribute compression (GH-46800 ). Mesh: Add a center_offset
property to both plane primitive and quad primitive (GH-48763 ). Mesh: Fix UV mapping on CSGSphere (GH-49195 ). Mesh: Options to clean/simplify convex hull generated from mesh (GH-50328 ). Mesh: Fix multiple issues with CSGPolygon (GH-49314 ). Mesh: Fix the normals of SphereMesh when the sphere/hemisphere is oblong (GH-51995 ). Mesh: Update mesh AABB when software skinning is used (GH-53144 ). Networking: Add support for multiple address resolution in DNS requests (GH-49020 ). Networking: Implement String::parse_url()
for parsing URLs (GH-48205 ). Networking: Add get_buffered_amount()
to WebRTCDataChannel (GH-50659 ). Networking: WebsocketPeer outbound buffer fixes and buffer size query (GH-51037 ). Networking: Fix IP address resolution incorrectly locking the main thread (GH-51199 ). Networking: Add dtls_hostname
property to ENet (GH-51434 ). Networking: Enable range coder compression by default in NetworkedMultiplayerENet (GH-51525 ). OpenSimplexNoise: Fix swapped axes in get_image()
(GH-30424 ).Breaks compat. If you need to preserve the 3.2 behavior, swap your first and second arguments in get_image()
. OpenSimplexNoise: Add support for generating noise images with an offset (GH-48805 ). OS: Expose OS data directory getter methods (GH-49732 ). Particles: Add ring emitter for 3D particles (GH-47801 ). Particles: Fixed rotate_y
property of particle shaders (GH-46687 ). Particles: Fixed behavior of velocity spread (GH-47310 ). Physics: Fix 2D and 3D moving platform logic (GH-50166 , GH-51458 ). Physics: Various fixes to 2D and 3D KinematicBody move_and_slide
and move_and_collide
(GH-50495 ). Physics: Improved logic for KinematicBody collision recovery depth (GH-53451 ). Physics: Fix Rayshape recovery in test_body_ray_separation
(GH-53453 ). Physics: Enable setting the number of physics solver iterations (GH-38387 , GH-50257 ). Physics: Apply infinite inertia checks to Godot Physics 3D (GH-42637 ). Physics: Return RID instead of Object ID in area-body_shape_entered-exited signals (GH-42743 ). Physics: Heightmap collision shape support in Godot Physics 3D (GH-47349 ). Physics: Add support for Dynamic BVH as 2D physics broadphase (GH-48314 ). Physics: Port Bullet’s convex hull computer to replace QuickHull (GH-48533 ). Physics: Expose body_test_motion
in 3D physics server (GH-50103 ). Physics: Add option to sync motion to physics in 3D KinematicBody (GH-49446 ). Physics: Expose collider RID in 2D/3D kinematic collision (GH-49476 ). Physics: Support for disabling physics on SoftBody (GH-49835 ). Physics: Fix and clean disabled shapes handling in Godot physics servers (GH-49845 ). Physics: Optimize area detection and intersect_shape
queries with concave shapes (GH-48551 ). Physics: Optimize raycast with large Heightmap shape data (GH-48709 ). Physics: Fix KinematicBody axis lock (GH-45176 ). Physics: Backport new methods for KinematicBody and KinematicCollision (GH-52116 ). Physics: Expose SoftBody pin methods for scripting (GH-52369 ). Physics: Don’t override KinematicCollision reference when still in use in script: (GH-52955 ). Physics: Reload kinematic shapes when changing PhysicsBody mode to Kinematic (GH-53118 ). Physics: Wake up 2D and 3D bodies in impulse and force functions (GH-53113 ). Physics: Compile Bullet with threadsafe switch on (GH-53183 ). Rendering: Rooms and portals-based occlusion culling (GH-46130 ). Rendering: Add a new high quality tonemapper: ACES Fitted (GH-52477 ). Rendering: VisualServer now sorts based on AABB position (GH-43506 ). Rendering: Fixes depth sorting of meshes with transparent textures (GH-50721 ). Rendering: Add soft shadows to the CPU lightmapper (GH-50184 ). Rendering: Add high quality glow mode (GH-51491 ). Rendering: Add new 3D point light attenuation as an option (GH-52918 ). Rendering: Import option to split vertex buffer stream in positions and attributes (GH-46574 ). Rendering: Fix flipped binormal in SpatialMaterial triplanar mapping (GH-49950 ). Rendering: Fix CanvasItem bounding rect calculation in some cases (GH-49160 ). Rendering: Make Blinn and Phong specular consider albedo and specular amount (GH-51410 ). Rendering: Add horizon specular occlusion (GH-51416 ). Rendering: Clamp negative colors regardless of the tonemapper to avoid artifacts (GH-51439 ). Rendering: Fix Y billboard shear when rotating camera (GH-52151 ). Rendering: Add half frame to floor()
for animated particles UV to compensate precision errors (GH-53233 ). RichTextLabel: Fix auto-wrapping on CJK texts (GH-49280 ). RichTextLabel: Fix character horizontal offset calculation (GH-52752 ). RichTextLabel: Honor content marging when drawing font shadow (GH-54054 ). RichTextLabel: Fix meta link detection when used inside a fill tag (GH-54114 ). Scene: Fix loading packed scene with editable children at runtime (GH-49664 ). Scene: Write node groups on a single line when saving a .tscn
file (GH-52284 ). Scene: Compare connections by object ID, making .tscn
order deterministic (GH-52493 ). ScrollBar: Add increment_pressed
and decrement_pressed
icons (GH-51805 ). Shaders: Add support for structs and fragment-to-light varyings (GH-48075 ). Shaders: Add support for global const arrays (GH-50889 ). Shaders: Makes TIME
available in custom functions by default (GH-49509 ). Shaders: Default shader specular render mode to SCHLICK_GGX
(GH-51401 ). Shaders: Prevent shaders from generating code before the constructor finishes (GH-52475 ). Sprite3D: Allow unclamped colors in Sprite3D (GH-51462 ). TabContainer: Fix moving dropped tab to incorrect child index (GH-51177 ). Tabs: Fix invisible tabs not being ignored (GH-53551 ). TextureButton: Add flip_h
and flip_v
properties (GH-30424 ). TextureProgress: Improve behavior with nine patch (GH-45815 ). TextureProgress: Add offset for progress texture (GH-38722 ). Theme: Various improvements to the Theme API (GH-49487 ). Theme: StyleBox fake anti-aliasing improvements (GH-51589 ). Theme: Add support for partial custom editor themes (GH-51648 ). Theme: Add API to retrieve the default font, and optimize property change notification (GH-53397 ). Theme: Fix potential crash with custom themes using BitMap fonts (GH-53410 ). TileSet: Fix selection of spaced atlas tile when using priority (GH-50886 ). Translation: Add support for translating the class reference (GH-53511 ). Translation: Only include editor translations above a threshold to save on binary size (GH-54020 ). Translation: Allow override get_message
with virtual method (GH-53207 ). Viewport: Add a 2D scale factor property (GH-52137 ). Viewport: Allow input echo when changing UI focus (GH-44456 ). VisualScript: Allow dropping custom node scripts in VisualScript editor (GH-50696 ). VisualScript: Expose visual script custom node type hints (GH-50705 ). VisualScript: Improve and streamline VisualScriptFuncNodes Call
Set
Get
(GH-50709 ). Windows: Fix platform file access to allow file sharing with external programs (GH-51430 ). Windows: Send error logs to stderr
instead of stdout
, like done on other OSes (GH-39139 ). Windows: Fix OS.shell_open()
not returning errors (GH-52842 ). Windows: Allow renaming to change the case of Windows directories (GH-43068 ). Windows: Disable WebM SIMD optimization with YASM which triggers crashes (GH-53959 ). XR: Add VIEW_INDEX
variable in shader to know which eye/view we’re rendering for (GH-48011 ). XR: Only update render target directly if ARVR mode is off (GH-54258 ). Thirdparty library updates: bullet 3.17, embree 3.13.0, mbedtls 2.16.11, nanosvg git, CA root certificates. API documentation updates. Editor and doc translation updates. And many more bug fixes and usability enhancements all around the engine! See the full changelog since 3.3-stable (chronological , or for each contributor ).
You can also browse the changes between 3.4 RC 1 and RC 2 .
This release is built from commit 23955fc282b95bcd318034b5de536d42f2a08359 .
Downloads The downloads for this dev snapshot can be found directly on our repository:
Standard build (GDScript, GDNative, VisualScript).Mono build (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.158 are included in this build.Bug reports As a tester, you are encouraged to open bug reports if you experience issues with 3.4 RC 2. 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.
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 3.3.3 or earlier no longer works in this build).
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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-4-rc-3/index.html b/article/release-candidate-godot-3-4-rc-3/index.html
index 8bd9daf62e..880357f542 100644
--- a/article/release-candidate-godot-3-4-rc-3/index.html
+++ b/article/release-candidate-godot-3-4-rc-3/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 2 November 2021 The upcoming Godot 3.4 release will provide a number of new features which have been backported from the 4.0 development branch (see our release policy for details on the various Godot versions). With this third Release Candidate , we have frozen feature development and are nearly ready to release the stable version.
If you already reviewed the changelog for RC 2, you can skip right to the differences between RC 2 and RC 3 . It’s short, as we mainly fixed a few new and old regressions, as well as input issues caused by changes in macOS Monterey.
Jump to the Downloads section.
As usual, you can try it live with the online version of the Godot editor updated for this release. This Web editor now also supports using a WebGL 2 context (i.e. GLES3 renderer).
Highlights The main changes coming in Godot 3.4 and included in this release candidate are:
Android: Add partial support for Android scoped storage (GH-50359 ).This also means we’re now targeting API level 30 as required to publish new apps on Google Play. Android: Add initial support for Play Asset Delivery (GH-52526 ). Android: Improve input responsiveness on underpowered Android devices (GH-42220 ). Animation: Add animation “reset” track feature (GH-44558 ). Audio: Fix cubic resampling algorithm (GH-51082 ). Audio: Add Listener2D node (GH-53429 ). C#: macOS: Mono builds are now universal builds with support for both x86_64
and arm64
architectures (GH-49248 ). C#: Fix reloading tool scripts in the editor (GH-52883 ). C#: iOS: Fix P/Invoke
symbols being stripped by the linker, resulting in EntryPointNotFoundException
crash at runtime (GH-49248 ). Core: Promote object validity checks to release builds (GH-51796 ). Core: Make all file access 64-bit (uint64_t
) (GH-47254 ).This adds support for handling files bigger than 2.1 GiB, including on 32-bit OSes. Core: Fix negative delta arguments (GH-52947 ). Core: Add frame delta smoothing option (GH-48390 ).This option is enabled by default (application/run/delta_smoothing
). Please report any issue. Crypto: Add AESContext, HMACContext, RSA public keys, encryption, decryption, sign, and verify (GH-48144 , GH-48869 ). CSG: CSGPolygon fixes and features: Angle simplification, UV tiling distance, interval type (GH-52509 ). Editor: Overhaul the theme editor and improve user experience (GH-49774 ). GridMap: Implement individual mesh transform for MeshLibrary items (GH-52298 ). HTML5: Export as Progressive Web App (PWA) (GH-48250 ). HTML5: Implement Godot <-> JavaScript interface (GH-48691 ). HTML5: Implement AudioWorklet without threads (GH-52650 ). Import: Implement lossless WebP encoding (GH-47854 ). Import: Backport improved glTF module with scene export support (GH-49120 ). macOS: Add GDNative Framework support, and minimal support for handling Unix symlinks (GH-46860 ). macOS: Add notarization support when exporting for macOS on a macOS host (GH-49276 ). Mesh: Implement octahedral map normal/tangent attribute compression (GH-46800 ). Mesh: Options to clean/simplify convex hull generated from mesh (GH-50328 ). Particles: Add ring emitter for 3D particles (GH-47801 ). Physics: Fix 2D and 3D moving platform logic (GH-50166 , GH-51458 ). Physics: Various fixes to 2D and 3D KinematicBody move_and_slide
and move_and_collide
(GH-50495 ). Physics: Improved logic for KinematicBody collision recovery depth (GH-53451 ). Rendering: Rooms and portals-based occlusion culling (GH-46130 ). Rendering: Add a new high quality tonemapper: ACES Fitted (GH-52477 ). Rendering: Fixes depth sorting of meshes with transparent textures (GH-50721 ). Rendering: Add soft shadows to the CPU lightmapper (GH-50184 ). Rendering: Add high quality glow mode (GH-51491 ). Rendering: Add new 3D point light attenuation as an option (GH-52918 ). Rendering: Import option to split vertex buffer stream in positions and attributes (GH-46574 ). RichTextLabel: Fix auto-wrapping on CJK texts (GH-49280 ). Shaders: Add support for structs and fragment-to-light varyings (GH-48075 ). Translation: Add support for translating the class reference (GH-53511 ). Viewport: Add a 2D scale factor property (GH-52137 ). VisualScript: Improve and streamline VisualScriptFuncNodes Call
Set
Get
(GH-50709 ). Windows: Fix platform file access to allow file sharing with external programs (GH-51430 ). All these need to be thoroughly tested to ensure that they work as intended in the upcoming 3.4-stable.
Changes Here’s a curated changelog with links to the relevant pull requests for details. The list is not exhaustive and will be completed in the future to include more noteworthy changes.
Note that some of the changes in 3.4 have already been backported and published in Godot 3.3.1 and 3.3.2 , and therefore they were not listed here again. You can refer to the changelogs of those maintenance releases for details on what you might have missed since 3.3-stable.
Android: Add partial support for Android scoped storage (GH-50359 ).This also means we’re now targeting API level 30 as required to publish new apps on Google Play. Android: Add initial support for Play Asset Delivery (GH-52526 ). Android: Improve input responsiveness on underpowered Android devices (GH-42220 ). Android: Add GDNative libraries to Android custom Gradle builds (GH-49912 ). Android: Implement per-pixel transparency (GH-51935 ). Android: Resolve issue where the Godot app remains stuck when resuming (GH-51584 ). Android: Add basic user data backup option (GH-49070 ). Android: Add support for prompting the user to retain app data on uninstall (GH-51605 ). Android: Upgrade Android Gradle to version 7.2, now requires Java 11 (GH-53610 ). Android: Properly validate godot_project_name_string
for Android special chars (GH-54255 ). Android: Remove non-functional native video OS methods (GH-48537 ). Animation: Add animation “reset” track feature (GH-44558 ). Animation: Fix Tween active state and repeat after stop()
and then start()
(GH-47142 ). Animation: Allow renaming bones and blend shapes (GH-42827 ). Animation: Fix issues with BlendSpace2D BLEND_MODE_DISCRETE_CARRY
(GH-48375 ). Animation: Fixed issue where bones become detached if multiple SkeletonIK nodes are used (GH-49031 ). Animation: Fix non functional 3D onion skinning (GH-52664 ). Animation: Fix Animation Playback Track not seeking properly (GH-38107 ). Animation: Fix bugs in AnimationNodeTransition’s behavior (GH-52543 , GH-52555 ). Animation: Fix rendering centered odd-size texture for AnimatedSprite/AnimatedSprite3D (GH-53052 ). AStar: get_available_point_id()
returns 0 instead of 1 when empty (GH-48958 ). Audio: Fix cubic resampling algorithm (GH-51082 ). Audio: Add Listener2D node (GH-53429 ). Buildsystem: Refactor module defines into a generated header (GH-50466 ). Button: Don’t change hovering during Control focus events (GH-47280 ). Button: Add focus font color to Button
and derivatives (GH-54264 ). ButtonGroup: Add a pressed
signal (GH-48500 ). C#: macOS: Mono builds are now universal builds with support for both x86_64
and arm64
architectures (GH-49248 ). C#: Fix reloading tool scripts in the editor (GH-52883 ). C#: iOS: Fix P/Invoke
symbols being stripped by the linker, resulting in EntryPointNotFoundException
crash at runtime (GH-49248 ). C#: iOS: Cache AOT compiler output (GH-51191 ). C#: Improve C# method listing (GH-52607 ). C#: Add editor keyboard shortcut (Alt+B ) for Mono Build solution button (GH-52595 ). C#: Add support to export enum strings for Array<string>
(GH-52763 ). C#: Support arrays of NodePath
and RID
(GH-53577 ). C#: Support marshaling generic Godot.Object
(GH-53582 ). C#: Fix List<T>
marshalling (GH-53628 ). C#: Fix hint_string
for enum arrays (GH-53638 ). C#: Keep order for C# exported members (GH-54199 ). C#: Avoid modifying csproj
globbing includes (GH-54262 ). C#: Deprecate Xform
methods removed in 4.0, the *
operator is preferred (GH-52762 ). Camera2D: Make the most recently added current Camera2D take precedence (GH-50112 ). CheckBox: Add disabled theme icons (GH-37755 ). ColorPicker: Display previous color and allow selecting it back (GH-48611 , GH-48623 ). Core: Promote object validity checks to release builds (GH-51796 ). Core: Make all file access 64-bit (uint64_t
) (GH-47254 ).This adds support for handling files bigger than 2.1 GiB, including on 32-bit OSes. Core: Add frame delta smoothing option (GH-48390 ).This option is enabled by default (application/run/delta_smoothing
). Please report any issue. Core: Fix negative delta arguments (GH-52947 ). Core: Add option to sync frame delta after draw (GH-48555 ).This option is experimental and disabled by default (application/run/delta_sync_after_draw
). Please try it out and report any issue. Core: Complain if casting a freed object in a debug session (GH-51095 ). Core: Thread callbacks can now take optional parameters (GH-38078 , GH-51093 ). Core: Fix read/write issues with NaN
and INF
in VariantParser (GH-47500 ). Core: Provide a getter for the project data directory (GH-52714 ). Core: Add an option to make the project data directory non-hidden (GH-52556 , GH-53779 ). Core: Optimize hash comparison for integer and string keys in Dictionary (GH-53557 ). Core: Add support for numeric XML entities to XMLParser (GH-47978 ). Core: Add option for BVH thread safety (GH-48892 ). Core: Fix sub-resource storing the wrong index in cache (GH-49625 ). Core: Add detailed error messages to release builds (used to be debug-only) (GH-53405 ). Core: Improve the console error logging appearance: (GH-49577 ). Core: Add Engine.print_error_messages
property to disable printing errors (GH-50640 ). Core: Add Node name to print()
of all nodes, makes Object::to_string()
virtual (GH-38819 ). Core: Fix Transform::xform(Plane)
functions to handle non-uniform scaling (GH-50637 ). Core: Fix renaming directories with Directory.rename()
(GH-51793 ). Core: Harmonize output of OS.get_locale()
between platforms (GH-40708 ). Core: Implement OS.get_locale_language()
helper method (GH-52740 ). Core: Fix path with multiple slashes not being corrected on templates (GH-52513 ). Core: Allow using global classes as project MainLoop
implementation (GH-52438 ). Core: Add an Array.pop_at()
method to pop an element at an arbitrary index (GH-52143 ). Core: Fix String.get_base_dir()
handling of Windows top-level directories (GH-52744 ). Core: Expose enum related methods in ClassDB (GH-52572 ). Core: Add Thread.is_alive()
method to check if the thread is still doing work (GH-53490 ). Core: Allow for platform Thread
implementation override (GH-52734 ). Core: Fix potential crash when creating thread with an invalid target instance (GH-53060 ). Core: Fix behavior of CONNECT_REFERENCE_COUNTED
option for signal connections (GH-47442 ). Core: Implement missing stringification for PoolByteArray
and PoolColorArray
(GH-53655 ). Crypto: Add AESContext, RSA public keys, encryption, decryption, sign, and verify (GH-48144 ). Crypto: Add HMACContext (GH-48869 ). CSG: CSGPolygon fixes and features: Angle simplification, UV tiling distance, interval type (GH-52509 ). Debugger: Automatic remote debugger port assignment (GH-37067 ). Debugger: Fix Marshalls infinite recursion crash (GH-51068 ). Editor: Add zoom support to SpriteFrames editor plugin (GH-48977 ). Editor: Fix logic for showing tilemap debug collision shapes (GH-49075 ). Editor: Add EditorResourcePicker
and EditorScriptPicker
classes for plugins (and internal editor use) (GH-49491 ). Editor: Refactor Theme
item management in the theme editor (GH-49512 ). Editor: Overhaul the theme editor and improve user experience (GH-49774 ). Editor: Allow to create a node at specific position (GH-50242 ). Editor: Implement a %command%
placeholder in the Main Run Args setting (GH-35992 ). Editor: Add keyboard shortcuts to the project manager (GH-47894 ). Editor: Handle portrait mode monitors in the automatic editor scale detection (GH-48597 ). Editor: Add custom debug shape thickness and color options to RayCast (GH-49726 ). Editor: Properly update NodePaths in the editor in more cases when nodes are moved or renamed (GH-49812 ). Editor: Improve 2D editor zoom logic (GH-50490 , GH-50499 ). Editor: Make several actions in the Inspector dock more obvious (GH-50528 ). Editor: Improve the editor feature profiles UX (GH-49643 ). Editor: Improve the UI/UX of the Export Template Manager dialog (GH-50531 ). Editor: Improve FileSystem dock sorting (GH-50565 ). Editor: Add the ability to reorder array elements from the inspector (GH-50651 ). Editor: Assign value to property by dropping to scene tree (GH-50700 ). Editor: Improve the 3D editor manipulation gizmo (GH-50597 ). Editor: Refactor layer property editor grid (GH-51040 ). Editor: Rationalize property reversion (GH-51166 ). Editor: Allow dropping property path into script editor (GH-51629 ). Editor: Auto-reload scripts with external editor (GH-51828 ). Editor: Improve the animation bezier editor (GH-48572 ). Editor: Save branch as scene by dropping to filesystem (GH-52503 ). Editor: Fix scale sensitivity for 3D objects (GH-52665 ). Editor: Use QuickOpen to load resources in the inspector (GH-37228 ). Editor: Fix preview grid in SpriteFrames editor’s “Select Frames” dialog (GH-52461 ). Editor: Add up/down keys to increment/decrement value in editor spin slider (GH-53090 ). Editor: Allow creating nodes in Animation Blend Tree by dragging from in/out ports (GH-52966 ). Editor: Allow dragging multiple resources onto exported array variable at once (GH-50718 ). Editor: Add history navigation in the script editor using extra mouse buttons (GH-53067 ). Editor: Increase object snapping distances in the 3D editor (GH-53727 ). Editor: Implement camera orbiting shortcuts (GH-51984 ). Editor: Add ability to copy group name (GH-53162 ). Editor: Fix MeshInstance2D edit rect (GH-54070 ). Font: Re-add support for kerning in DynamicFont (GH-49377 ). Font: Allow using WOFF fonts in DynamicFont (GH-52052 ). GDScript: Ignore property groups and categories in GDScript code completion (GH-54272 ). GDScript: Fix parsing multi-line preload
statement (GH-52521 ). GDScript: Speedup running very big GDScript files (GH-53507 ). GLES2: Add basic support for CPU blendshapes (GH-48480 ). GLES2: Performance improvements for CPU blendshapes (GH-51363 ). GLES2: Allow using clearcoat, anisotropy and refraction in SpatialMaterial (GH-51967 ). GLES2: Implement Viewport.keep_3d_linear
for VR applications to convert output to linear color space (GH-51780 ). GLES2: Fix ambient light flickering with multiple refprobes (GH-53740 ). GLES3: Allow repeat flag in viewport textures (GH-34008 ). GLES3: Fix draw order of transparent materials with multiple directional lights (GH-47129 ). GLES3: Fix multimesh being colored by other nodes GLES3 (GH-47582 ). GLES3: Add support for contrast-adaptive sharpening in 3D (GH-47416 ). GLES3: Only add emission on base pass (GH-53938 ). GLES3: Fudge irradiance map lookup to avoid precision issues (GH-54197 ). GraphEdit: Enable zooming with Ctrl + Scroll wheel and related fixes to zoom handling (GH-47173 ). GraphEdit: Make zoom limits and step adjustable (GH-50526 ). GraphNode: Properly handle children with “Expand” flag (GH-39810 ). GridMap: Implement individual mesh transform for MeshLibrary items (GH-52298 ). HTML5: Export as Progressive Web App (PWA) (GH-48250 ). HTML5: Implement Godot <-> JavaScript interface (GH-48691 ). HTML5: Implement AudioWorklet without threads (GH-52650 ). HTML5: Implement video driver selection for Web editor (GH-53991 ). HTML5: Debug HTTP server refactor with SSL support (GH-48250 ). HTML5: Add easy to use download API (GH-48929 ). HTML5: Fix bug in AudioWorklet when reading output buffer (GH-52696 ). HTML5: Use browser mix rate by default on the Web (GH-52723 ). HTML5: Release pressed events when the window is blurred on HTML5 platform (GH-52973 ). HTML5: Refactor event handlers, drop most Emscripten HTML5 dependencies (GH-52812 ). Import: Implement lossless WebP encoding (GH-47854 ). Import: Add anisotropic filter option for TextureArrays (GH-51402 ). Import: Add “Normal Map Invert Y” import option for normal maps (GH-48693 ). Import: Backport improved glTF module with scene export support (GH-49120 ). Import: Optimize image channel detection (GH-47396 ). Import: Fix loading RLE compressed TGA files (GH-49603 ). Import: Add optional region cropping for TextureAtlas importer (GH-52652 ). Import: Fixed issue in TextureAtlas import of images with wrong size (GH-42103 ). Import: Fix potential crash importing invalid BMP files (GH-46555 ). Input: Add support for physical scancodes, fixes non-latin layout scancodes on Linux (GH-46764 ). Input: Fix game controllers ignoring the last listed button (GH-48934 ).Breaks compat slightly by changing the value of some of the JoystickList
enum constants. Input: Allow getting axis/vector values from multiple actions (GH-50788 ). Input: Allow checking for exact matches with Action events (GH-50874 ). Input: Exposed setters for sensor values (GH-53742 ). Input: Expose Input::flush_buffered_events()
https://github.com/godotengine/godot/commit/6dc3fae201574cca599b322d24bb091bd1dbdcbd iOS: Disable half float on GLES2 via platform override (GH-54229 ). iOS: Add pen pressure support for Apple Pencil (GH-47469 ). iOS: Add option to automatically generate icons and launch screens (GH-49464 ). iOS: Support multiple plist
types in plugin (GH-49802 ). iOS: Remove duplicate orientation setting in the export preset (GH-48943 ). iOS: Implement missing OS set
/get_clipboard()
methods (GH-52540 ). Label: Fix valign with stylebox borders (GH-50478 ). Lightmapper: Add an editor setting to configure number of threads for lightmap baking (GH-52952 ). LineEdit: Double click selects words, triple click selects all the content (GH-46527 ). Linux: Fix input events random delay on X11 (GH-54313 ). Linux: Add initial support for the RISC-V architecture (GH-53509 ). Linux: Fix implementation of move_to_trash
(GH-44021 ). Linux: Fix Directory::get_space_left()
result (GH-49222 ). LSP: Implement didSave
notify and rename request (GH-48616 ). LSP: Fix SymbolKind
reporting wrong types and get_node()
parsing (GH-50914 , GH-51283 ). LSP: Add support for custom host setting (GH-52330 ). LSP: Implement applyEdit
for signal connecting (GH-53068 ). LSP: Report new()
as _init
& fix docstrings on multiline functions (GH-53094 ). macOS: Add GDNative Framework support, and minimal support for handling Unix symlinks (GH-46860 ). macOS: Allow “on top” windows to enter fullscreen mode (GH-49017 ). macOS: Add notarization support when exporting for macOS on a macOS host (GH-49276 ). macOS: Fix editor window missing events on macOS Monterey (GH-54474 ). macOS: Fix Directory::get_space_left()
result (GH-49222 ). macOS: Fix Xbox controllers in Bluetooth mode on macOS (GH-51117 ). macOS: Fix incorrect mouse position in fullscreen (GH-52374 ). macOS: Prefer .app bundle icon over the default one (GH-48686 ). macOS: Add entitlements required by OIDN JIT for the editor build (GH-54067 ). Mesh: Implement octahedral map normal/tangent attribute compression (GH-46800 ). Mesh: Add a center_offset
property to both plane primitive and quad primitive (GH-48763 ). Mesh: Fix UV mapping on CSGSphere (GH-49195 ). Mesh: Options to clean/simplify convex hull generated from mesh (GH-50328 ). Mesh: Fix multiple issues with CSGPolygon (GH-49314 ). Mesh: Fix the normals of SphereMesh when the sphere/hemisphere is oblong (GH-51995 ). Mesh: Update mesh AABB when software skinning is used (GH-53144 ). Networking: Add support for multiple address resolution in DNS requests (GH-49020 ). Networking: Implement String::parse_url()
for parsing URLs (GH-48205 ). Networking: Add get_buffered_amount()
to WebRTCDataChannel (GH-50659 ). Networking: WebsocketPeer outbound buffer fixes and buffer size query (GH-51037 ). Networking: Fix IP address resolution incorrectly locking the main thread (GH-51199 ). Networking: Add dtls_hostname
property to ENet (GH-51434 ). Networking: Enable range coder compression by default in NetworkedMultiplayerENet (GH-51525 ). OpenSimplexNoise: Fix swapped axes in get_image()
(GH-30424 ).Breaks compat. If you need to preserve the 3.2 behavior, swap your first and second arguments in get_image()
. OpenSimplexNoise: Add support for generating noise images with an offset (GH-48805 ). OS: Expose OS data directory getter methods (GH-49732 ). Particles: Add ring emitter for 3D particles (GH-47801 ). Particles: Fixed rotate_y
property of particle shaders (GH-46687 ). Particles: Fixed behavior of velocity spread (GH-47310 ). Physics: Fix 2D and 3D moving platform logic (GH-50166 , GH-51458 ). Physics: Various fixes to 2D and 3D KinematicBody move_and_slide
and move_and_collide
(GH-50495 ). Physics: Improved logic for KinematicBody collision recovery depth (GH-53451 ). Physics: Fix Rayshape recovery in test_body_ray_separation
(GH-53453 ). Physics: Enable setting the number of physics solver iterations (GH-38387 , GH-50257 ). Physics: Apply infinite inertia checks to Godot Physics 3D (GH-42637 ). Physics: Return RID instead of Object ID in area-body_shape_entered-exited signals (GH-42743 ). Physics: Heightmap collision shape support in Godot Physics 3D (GH-47349 ). Physics: Add support for Dynamic BVH as 2D physics broadphase (GH-48314 ). Physics: Port Bullet’s convex hull computer to replace QuickHull (GH-48533 ). Physics: Expose body_test_motion
in 3D physics server (GH-50103 ). Physics: Add option to sync motion to physics in 3D KinematicBody (GH-49446 ). Physics: Expose collider RID in 2D/3D kinematic collision (GH-49476 ). Physics: Support for disabling physics on SoftBody (GH-49835 ). Physics: Fix and clean disabled shapes handling in Godot physics servers (GH-49845 ). Physics: Optimize area detection and intersect_shape
queries with concave shapes (GH-48551 ). Physics: Optimize raycast with large Heightmap shape data (GH-48709 ). Physics: Fix KinematicBody axis lock (GH-45176 ). Physics: Backport new methods for KinematicBody and KinematicCollision (GH-52116 ). Physics: Expose SoftBody pin methods for scripting (GH-52369 ). Physics: Don’t override KinematicCollision reference when still in use in script: (GH-52955 ). Physics: Reload kinematic shapes when changing PhysicsBody mode to Kinematic (GH-53118 ). Physics: Wake up 2D and 3D bodies in impulse and force functions (GH-53113 ). Physics: Compile Bullet with threadsafe switch on (GH-53183 ). Rendering: Rooms and portals-based occlusion culling (GH-46130 ). Rendering: Add a new high quality tonemapper: ACES Fitted (GH-52477 ). Rendering: VisualServer now sorts based on AABB position (GH-43506 ). Rendering: Fixes depth sorting of meshes with transparent textures (GH-50721 ). Rendering: Add soft shadows to the CPU lightmapper (GH-50184 ). Rendering: Add high quality glow mode (GH-51491 ). Rendering: Add new 3D point light attenuation as an option (GH-52918 ). Rendering: Import option to split vertex buffer stream in positions and attributes (GH-46574 ). Rendering: Fix flipped binormal in SpatialMaterial triplanar mapping (GH-49950 ). Rendering: Fix CanvasItem bounding rect calculation in some cases (GH-49160 ). Rendering: Make Blinn and Phong specular consider albedo and specular amount (GH-51410 ). Rendering: Add horizon specular occlusion (GH-51416 ). Rendering: Clamp negative colors regardless of the tonemapper to avoid artifacts (GH-51439 ). Rendering: Fix Y billboard shear when rotating camera (GH-52151 ). Rendering: Add half frame to floor()
for animated particles UV to compensate precision errors (GH-53233 ). RichTextLabel: Fix auto-wrapping on CJK texts (GH-49280 ). RichTextLabel: Fix character horizontal offset calculation (GH-52752 ). RichTextLabel: Honor content marging when drawing font shadow (GH-54054 ). RichTextLabel: Fix meta link detection when used inside a fill tag (GH-54114 ). Scene: Fix loading packed scene with editable children at runtime (GH-49664 ). Scene: Write node groups on a single line when saving a .tscn
file (GH-52284 ). Scene: Compare connections by object ID, making .tscn
order deterministic (GH-52493 ). ScrollBar: Add increment_pressed
and decrement_pressed
icons (GH-51805 ). Shaders: Add support for structs and fragment-to-light varyings (GH-48075 ). Shaders: Add support for global const arrays (GH-50889 ). Shaders: Makes TIME
available in custom functions by default (GH-49509 ). Shaders: Default shader specular render mode to SCHLICK_GGX
(GH-51401 ). Shaders: Prevent shaders from generating code before the constructor finishes (GH-52475 ). Sprite3D: Allow unclamped colors in Sprite3D (GH-51462 ). TabContainer: Fix moving dropped tab to incorrect child index (GH-51177 ). Tabs: Fix invisible tabs not being ignored (GH-53551 ). TextureButton: Add flip_h
and flip_v
properties (GH-30424 ). TextureProgress: Improve behavior with nine patch (GH-45815 ). TextureProgress: Add offset for progress texture (GH-38722 ). Theme: Various improvements to the Theme API (GH-49487 ). Theme: StyleBox fake anti-aliasing improvements (GH-51589 ). Theme: Add support for partial custom editor themes (GH-51648 ). Theme: Add API to retrieve the default font, and optimize property change notification (GH-53397 ). Theme: Fix potential crash with custom themes using BitMap fonts (GH-53410 ). TileSet: Fix selection of spaced atlas tile when using priority (GH-50886 ). Translation: Add support for translating the class reference (GH-53511 ). Translation: Only include editor translations above a threshold to save on binary size (GH-54020 ). Translation: Allow override get_message
with virtual method (GH-53207 ). Viewport: Add a 2D scale factor property (GH-52137 ). Viewport: Allow input echo when changing UI focus (GH-44456 ). VisualScript: Allow dropping custom node scripts in VisualScript editor (GH-50696 ). VisualScript: Expose visual script custom node type hints (GH-50705 ). VisualScript: Improve and streamline VisualScriptFuncNodes Call
Set
Get
(GH-50709 ). Windows: Fix platform file access to allow file sharing with external programs (GH-51430 ). Windows: Send error logs to stderr
instead of stdout
, like done on other OSes (GH-39139 ). Windows: Fix OS.shell_open()
not returning errors (GH-52842 ). Windows: Allow renaming to change the case of Windows directories (GH-43068 ). Windows: Disable WebM SIMD optimization with YASM which triggers crashes (GH-53959 ). XR: Add VIEW_INDEX
variable in shader to know which eye/view we’re rendering for (GH-48011 ). XR: Only update render target directly if ARVR mode is off (GH-54258 ). Thirdparty library updates: bullet 3.17, embree 3.13.0, mbedtls 2.16.11, nanosvg git, CA root certificates. API documentation updates. Editor and doc translation updates. And many more bug fixes and usability enhancements all around the engine! See the full changelog since 3.3-stable (chronological , or for each contributor ).
You can also browse the changes between 3.4 RC 2 and RC 3 .
This release is built from commit 1a1a450616d00e301057fec3f7247d57e40a77c3 .
Downloads The downloads for this dev snapshot can be found directly on our repository:
Standard build (GDScript, GDNative, VisualScript).Mono build (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.158 are included in this build.Bug reports As a tester, you are encouraged to open bug reports if you experience issues with 3.4 RC 3. 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.
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 3.3.3 or earlier no longer works in this build).
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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-5-1-rc-1/index.html b/article/release-candidate-godot-3-5-1-rc-1/index.html
index 43b473dc52..b5ef0b31e0 100644
--- a/article/release-candidate-godot-3-5-1-rc-1/index.html
+++ b/article/release-candidate-godot-3-5-1-rc-1/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 2 September 2022 We released Godot 3.5 one month ago, and like any release, there are few rough edges to iron out which warrant making maintenance “patch” releases (3.5.x).
A number of issues have been fixed already, so we’re having a look at preparing the 3.5.1 update, starting with this Release Candidate for users to help us validate those fixes and make sure that Godot 3.5.1 is ready to publish.
Please give it a try if you can. It should be as safe to use as 3.5-stable is, but we still need a significant number of users to try it out and report how it goes to make sure that the few changes in this update are working as intended and not introducing new regressions.
Jump to the Downloads section.
As usual, you can try it live with the online version of the Godot editor updated for this release.
Changes Here are the main changes since 3.5-stable:
Android: Fix issue preventing the Android Editor from displaying the project content (GH-64420 ). Android: Fix issue with get_current_dir()
returning the wrong path on Android (GH-64413 , GH-65093 ). Animation: Fix AnimationNode has_filter
not being called in scripts (GH-64560 ). Audio: Make audio thread control flags safe (GH-64608 ). C#: Avoid paths with invalid characters in Rider detection (GH-64085 ). C#: Use custom project setting for C# project files name (GH-64460 ). C#: Show custom error explaining that UWP is not supported (GH-64778 ). Core: Fix FileAccessCompressed::get_buffer
return value (GH-53434 ). Core: Fix locale resource remapping with binary conversion on export (GH-63629 ). Core: Fix Time.get_unix_time_from_system()
not including msecs (GH-64101 ). Core: Determine ProjectSettings’ resource path early (GH-64926 ). Core: Remove HDR warning for Viewport on GLES2 projects (GH-65063 ). Editor: Fix updating AnimatedSprite inspector when SpriteFrames is modified (GH-49495 ). Editor: Change code folding behavior to include terminal indented comments (GH-63113 ). Editor: Don’t process input in hidden EditorProperty (GH-63197 ). Editor: Use FlowContainer to handle toolbar overflow more gracefully (GH-63250 ). Editor: Fix crash when renaming a file in split mode in the FileSystem dock (GH-64025 ). Editor: Fix crash when axis snapping CollisionPolygon2D’s newly created vertex (GH-64050 ). Editor: Remove FOV adjustment with Alt + mouse wheel in the 3D editor (GH-64071 ). Editor: Fix error when switching to another GridMap with an item with higher index selected (GH-64188 ). Editor: Optimize theme usage in editor log (GH-64283 ). Editor: Fix action name completion for Input.get_{axis,vector}
(GH-64445 ). Editor: Fix toggling unique name in owner for all selected nodes in SceneTree dock (GH-64495 ). Editor: Fix VisualScript editor crash when deleting selected nodes (GH-64772 ). GUI: Don’t draw selection background of individual Tree cells in Row mode (GH-64148 ). GUI: Expose Tabs set
/get_tab_button_icon()
to scripting (GH-64707 ). GUI: Fix ItemList selection visual when the scrollbar visibility changes (GH-64711 ). GUI: Fix color modulation of the grayscale glyphs in font with mixed color / grayscale data (GH-64745 ). GUI: Fix crash when pressing up on an empty PopupMenu (GH-64968 ). Input: Fix axis mapped to DPad buttons not releasing opposite button (GH-64532 ). iOS: Force app store icon to be opaque, use proper errors, fix memory leak (GH-64631 ). iOS: Workaround WebKit/ANGLE shader compilation bug for WebGL 2.0 (GH-64811 ). iOS / macOS: Fix generation of duplicate locale property list files (GH-65067 ). Navigation: Fix TileMap error msg when Navigation2D node is not set (GH-64013 ). Navigation: Fix wrong method called when setting NavigationRegion travel_cost
(GH-64068 ). Navigation: Fix NavigationObstacle nodes not registering to default navigation map (GH-64372 ). Physics: Hack a hot fix for Bullet’s collision margin regression (GH-64875 ). Rendering: Fix skeleton 2D stale bounding rect (GH-63071 ). Rendering: Fix multiple ubershader bugs (GH-64096 ). VisualScript: Fix output port type mismatch for some nodes (GH-51146 ). Windows: Fix list dir handle leak (GH-64461 ). API documentation updates. See the full changelog since 3.5-stable on GitHub , or in text form (sorted by authors or chronologically ).
This release is built from commit 293c3844b
(see README ).
Downloads The downloads for this dev snapshot can be found directly on our repository:
Standard build (GDScript, GDNative, VisualScript).Mono build (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.182 are included in this build.Bug reports As a tester, you are encouraged to open bug reports if you experience issues with 3.5.1 RC 1. 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.
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 3.5 or earlier 3.4.x releases no longer works in 3.5.1 RC 1).
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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-5-1-rc-2/index.html b/article/release-candidate-godot-3-5-1-rc-2/index.html
index 39e55bdf82..29f92aef9b 100644
--- a/article/release-candidate-godot-3-5-1-rc-2/index.html
+++ b/article/release-candidate-godot-3-5-1-rc-2/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 21 September 2022 We released Godot 3.5 in early August, and like any release, there are few rough edges to iron out which warrant making maintenance “patch” releases (3.5.x).
We’ve had successful testing of a first Release Candidate for 3.5.1, and a few more fixes got backported in the meantime so let’s have another round of testing before publishing 3.5.1 stable.
Please give it a try if you can. It should be as safe to use as 3.5-stable is, but we still need a significant number of users to try it out and report how it goes to make sure that the few changes in this update are working as intended and not introducing new regressions.
Jump to the Downloads section.
As usual, you can try it live with the online version of the Godot editor updated for this release.
Changes Here are the main changes since 3.5-stable:
Android: Fix issue preventing the Android Editor from displaying the project content (GH-64420 ). Android: Fix issue with get_current_dir()
returning the wrong path on Android (GH-64413 , GH-65093 ). Animation: Fix AnimationNode has_filter
not being called in scripts (GH-64560 ). Animation: Fix potential bug with node rename in BlendTree editor (GH-65651 ). Animation: Fix crash when playing SceneTreeTween right after finishing (GH-65896 ). Audio: Make audio thread control flags safe (GH-64608 ). Buildsystem: Fix compilation database generation with MSVC (GH-65440 ). C#: Avoid paths with invalid characters in Rider detection (GH-64085 ). C#: Use custom project setting for C# project files name (GH-64460 ). C#: Show custom error explaining that UWP is not supported (GH-64778 ). Core: Fix FileAccessCompressed::get_buffer
return value (GH-53434 ). Core: Fix locale resource remapping with binary conversion on export (GH-63629 ). Core: Fix Time.get_unix_time_from_system()
not including msecs (GH-64101 ). Core: Determine ProjectSettings’ resource path early (GH-64926 ). Core: Remove HDR warning for Viewport on GLES2 projects (GH-65063 ). Core: Fix parsing of XML CDATA (GH-65556 ). Editor: Fix updating AnimatedSprite inspector when SpriteFrames is modified (GH-49495 ). Editor: Change code folding behavior to include terminal indented comments (GH-63113 ). Editor: Don’t process input in hidden EditorProperty (GH-63197 ). Editor: Use FlowContainer to handle toolbar overflow more gracefully (GH-63250 ). Editor: Fix crash when renaming a file in split mode in the FileSystem dock (GH-64025 ). Editor: Fix crash when axis snapping CollisionPolygon2D’s newly created vertex (GH-64050 ). Editor: Remove FOV adjustment with Alt + mouse wheel in the 3D editor (GH-64071 ). Editor: Fix error when switching to another GridMap with an item with higher index selected (GH-64188 ). Editor: Optimize theme usage in editor log (GH-64283 ). Editor: Fix action name completion for Input.get_{axis,vector}
(GH-64445 ). Editor: Fix toggling unique name in owner for all selected nodes in SceneTree dock (GH-64495 ). Editor: Fix VisualScript editor crash when deleting selected nodes (GH-64772 ). Editor: Reallow selecting frame with LMB press in SpriteFrames select dialog (GH-64358 ). Editor: VCS plugin: Fix logic for SSH key dialog defaulting to HOME
(GH-65708 ). GUI: Don’t draw selection background of individual Tree cells in Row mode (GH-64148 ). GUI: Expose Tabs set
/get_tab_button_icon()
to scripting (GH-64707 ). GUI: Fix ItemList selection visual when the scrollbar visibility changes (GH-64711 ). GUI: Fix color modulation of the grayscale glyphs in font with mixed color / grayscale data (GH-64745 ). GUI: Fix crash when pressing up on an empty PopupMenu (GH-64968 ). GUI: Make Menu
/OptionButton
item auto-highlight behave better (GH-64636 , GH-64965 ). Input: Fix axis mapped to DPad buttons not releasing opposite button (GH-64532 ). iOS: Force app store icon to be opaque, use proper errors, fix memory leak (GH-64631 ). iOS: Workaround WebKit/ANGLE shader compilation bug for WebGL 2.0 (GH-64811 ). iOS / macOS: Fix generation of duplicate locale property list files (GH-65067 ). Navigation: Fix TileMap error msg when Navigation2D node is not set (GH-64013 ). Navigation: Fix wrong method called when setting NavigationRegion travel_cost
(GH-64068 ). Navigation: Fix NavigationObstacle nodes not registering to default navigation map (GH-64372 ). Navigation: Exclude disabled StaticBody collisions from NavigationMesh baking (GH-65775 ). Networking: Prevent HTTPRequest from polling invalid client (GH-64472 ). Physics: Hack a hot fix for Bullet’s collision margin regression (GH-64875 ). Rendering: Fix skeleton 2D stale bounding rect (GH-63071 ). Rendering: Fix multiple ubershader bugs (GH-64096 ). Rendering: Portals: Show RayCast debug helper (GH-65686 ). Rendering: Prevent drawing MultiMesh with zero instance count (GH-65826 ). Rendering: Initialize CPUParticles data on set_amount
to prevent corruption of BVH space partitioning (GH-66115 ). VisualScript: Fix output port type mismatch for some nodes (GH-51146 ). Windows: Fix list dir handle leak (GH-64461 ). Thirdparty libraries: libpng 1.6.38, GameControllerDB from 2022-09-04. API documentation updates. See the full changelog since 3.5-stable on GitHub , or in text form (sorted by authors or chronologically ).
This release is built from commit ea5d5704d
(see README ).
Downloads The downloads for this dev snapshot can be found directly on our repository:
Standard build (GDScript, GDNative, VisualScript).Mono build (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.182 are included in this build.Bug reports As a tester, you are encouraged to open bug reports if you experience issues with 3.5.1 RC 2. 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.
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 3.5 or earlier 3.4.x releases no longer works in 3.5.1 RC 2).
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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-5-2-rc-1/index.html b/article/release-candidate-godot-3-5-2-rc-1/index.html
index 834568ddbe..fca28016b4 100644
--- a/article/release-candidate-godot-3-5-2-rc-1/index.html
+++ b/article/release-candidate-godot-3-5-2-rc-1/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 15 December 2022 All contributors are incredibly busy working on Godot 4.0, which is having weekly beta releases (currently beta 8 , beta 9 likely tomorrow). Some of us are also doing significant work to prepare a first beta release of Godot 3.6, which will likely the last feature release in the 3.x series (expected to be finalized after the 4.0 release).
But we’re not forgetting about the current stable branch, Godot 3.5, which had its first stable release in early August , and a first maintenance release in late September .
Since then, quite a few bugfixes have been queued in the 3.5
branch, so it’s time to wrap up a new 3.5.2 maintenance release. But first, let’s validate that those changes do not introduce regressions with a Release Candidate .
Please give it a try if you can. It should be as safe to use as 3.5.1-stable is, but we still need a significant number of users to try it out and report how it goes to make sure that the few changes in this update are working as intended and not introducing new regressions.
Jump to the Downloads section.
As usual, you can try it live with the online version of the Godot editor updated for this release.
Changes Here are the main changes since 3.5.1-stable:
3D: Fix bug in CylinderMesh when computing normals (GH-67336 ). Android: Upgrade gradle plugin to version 7.2.1 (GH-68497 ). Animation: Cast between float and ints in Tween tween_property()
(GH-65072 ). Core: Fix String word_wrap()
for long words (GH-64564 ). Core: Fix Image bump_map_to_normal_map()
incorrectly keeping mipmap flag (GH-68115 ). Core: Revert “RID: Change comparison operators to use RID_Data id instead of address” (GH-69946 ). Editor: Improve dragging scene into 3D viewport (GH-68114 ). GDNative: Fix script_data
error when updating placeholder scripts for GDNative libraries (GH-66255 ). GDScript: Fix Script editor completion doesn’t suggest members of a script for type hints (GH-48037 ). GDScript: LSP: Improve handling of file URI scheme (GH-69960 ). GUI: Fix RichTextLabel wrong visible line count for newline (GH-59765 ). GUI: Fix TextMesh auto-translation and ignore control chars (GH-69585 ). HTML5: Add missing OS::get_cursor_shape()
implementation (GH-66871 ). Import: Fix trying to import unknown dependency from scan (GH-67664 ). Import: Handle closed splines in Collada importer (GH-67834 ). Input: Fix setting Input action raw strength
and exact
in action_press()
/action_release()
(GH-66480 ). Input: Fix routing of InputEventScreenDrag events to Control nodes (GH-68630 ). Linux: Fix burning CPU with udev disabled on Flatpak (GH-69563 ). macOS: Update activation hack to work on Ventura (GH-68777 ). Navigation: Fix NavigationObstacle not registering to default navigation map (GH-66530 ) and not estimating radius (GH-66585 ). Navigation: Fix avoidance calculation on NO_THREADS
build (e.g. HTML5 without threads) (GH-66806 ). Physics: Fix computation of RigidBody2D inverse_mass
when inertia is defined by the user (GH-68659 ). Physics: Store Bullet total gravity, linear damp and angular damp calculations (GH-69823 ). Physics: Fix typo bug in heightmap shape (GH-69852 ). Porting: Only support XDG directory path configuration on Linux (GH-67040 ). Rendering: Add options for sorting transparent objects (GH-63040 ). Rendering: Fix debanding strength being affected by environment adjustments (GH-66327 ). Rendering: Fix GLES 2 SpotLight bug with shadow filter mode (GH-69826 ). Windows: Fix handling of some dead key combinations using Unicode char instead of Virtual key (GH-66314 ). Windows: Fix Directory make_dir()
choking on “..” (GH-66467 ). Thirdparty libraries: libwebp 1.2.4, miniupnpc 2.2.4, nanosvg from 2022-11-21, Recast from 2022-11-26, stb_vorbis 1.22, CA root certificates from 2022-10-21, GameControllerDB from 2022-12-07. API documentation and translation updates. See the full changelog since 3.5.1-stable on GitHub , or in text form (sorted by authors or chronologically ).
This release is built from commit f5f0543ae
(see README ).
Downloads The downloads for this dev snapshot can be found directly on our repository:
Standard build (GDScript, GDNative, VisualScript).Mono build (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.182 are included in this build.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.
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 3.5.1, 3.5, or earlier 3.4.x releases no longer works in 3.5.2 RC 1).
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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-5-2-rc-2/index.html b/article/release-candidate-godot-3-5-2-rc-2/index.html
index b7a05cc818..a2e357f827 100644
--- a/article/release-candidate-godot-3-5-2-rc-2/index.html
+++ b/article/release-candidate-godot-3-5-2-rc-2/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 12 January 2023 While all contributors are on the deck working to finalize the Godot 4.0 release (currently at beta 11 ), some of us are still backporting important bugfixes to the current stable branch, Godot 3.5.
It had its first stable release in early August , and a first maintenance release in late September , and so far so good, most users seem to be pretty happy with 3.5.1.
But since then, quite a few bugfixes have been queued in the 3.5
branch, so it’s time to wrap up a new 3.5.2 maintenance release. We had a first Release Candidate on December 15 , and after fixing one regression and backporting a few other fixes, it’s time for a second RC build to validate the update.
Please give it a try if you can. It should be as safe to use as 3.5.1-stable is, but we still need a significant number of users to try it out and report how it goes to make sure that the few changes in this update are working as intended and not introducing new regressions.
Jump to the Downloads section.
As usual, you can try it live with the online version of the Godot editor updated for this release.
Changes Here are the main changes since 3.5.1-stable:
3D: Fix bug in CylinderMesh when computing normals (GH-67336 ). Android: Upgrade gradle plugin to version 7.2.1 (GH-68497 ). Animation: Cast between float and ints in Tween tween_property()
(GH-65072 ). Core: Fix String word_wrap()
for long words (GH-64564 ). Core: Fix Image bump_map_to_normal_map()
incorrectly keeping mipmap flag (GH-68115 ). Core: Fix hashing bug for PoolArrays comparisons (GH-71103 ). Core: Fix File.get_path()
not working for compressed files (GH-70726 ). Core: Revert “RID: Change comparison operators to use RID_Data id instead of address” (GH-69946 ). Editor: Improve dragging scene into 3D viewport (GH-68114 ). GDNative: Fix script_data
error when updating placeholder scripts for GDNative libraries (GH-66255 ). GDScript: Fix Script editor completion doesn’t suggest members of a script for type hints (GH-48037 ). GDScript: Fix local variables not showing when breaking on final line (GH-71093 ). GDScript: LSP: Improve handling of file URI scheme (GH-69960 ). GUI: Fix RichTextLabel wrong visible line count for newline (GH-59765 ). GUI: Fix TextMesh auto-translation and ignore control chars (GH-69585 ). GUI: Fix RichTextLabel discards appended BBCode text on window resize when using DynamicFont (GH-70593 ). HTML5: Add missing OS::get_cursor_shape()
implementation (GH-66871 ). Import: Fix trying to import unknown dependency from scan (GH-67664 ). Import: Handle closed splines in Collada importer (GH-67834 ). iOS: Add new model identifiers for DPI metrics (GH-70022 ). Input: Fix setting Input action raw strength
and exact
in action_press()
/action_release()
(GH-66480 ). Input: Fix routing of InputEventScreenDrag events to Control nodes (GH-68630 ). Linux: Fix burning CPU with udev disabled on Flatpak (GH-69563 ). macOS: Update activation hack to work on Ventura (GH-68777 ). macoS: Fix stylus tilt Y direction (GH-70498 ). Navigation: Fix NavigationObstacle not registering to default navigation map (GH-66530 ) and not estimating radius (GH-66585 ). Navigation: Fix avoidance calculation on NO_THREADS
build (e.g. HTML5 without threads) (GH-66806 ). Physics: Fix computation of RigidBody2D inverse_mass
when inertia is defined by the user (GH-68659 ). Physics: Store Bullet total gravity, linear damp and angular damp calculations (GH-69823 ). Physics: Fix typo bug in heightmap shape (GH-69852 ). Porting: Only support XDG directory path configuration on Linux (GH-67040 ). Rendering: Add options for sorting transparent objects (GH-63040 ). Rendering: Fix debanding strength being affected by environment adjustments (GH-66327 ). Rendering: Fix GLES 2 SpotLight bug with shadow filter mode (GH-69826 ). Windows: Fix handling of some dead key combinations using Unicode char instead of Virtual key (GH-66314 ). Windows: Fix Directory make_dir()
choking on “..” (GH-66467 ). Thirdparty libraries: libwebp 1.2.4, miniupnpc 2.2.4, nanosvg from 2022-11-21, Recast from 2022-11-26, stb_vorbis 1.22, zlib/minizip 1.2.13, CA root certificates from 2022-10-21, GameControllerDB from 2022-12-07. API documentation and translation updates. See the full changelog since 3.5.1-stable on GitHub , or in text form (sorted by authors or chronologically ).
This release is built from commit 66d2b7ca2
(see README ).
Downloads The downloads for this dev snapshot can be found directly on our repository:
Standard build (GDScript, GDNative, VisualScript).Mono build (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.182 are included in this build.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.
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 3.5.1, 3.5, or earlier 3.4.x releases no longer works in 3.5.2 RC 2).
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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-5-3-rc-1/index.html b/article/release-candidate-godot-3-5-3-rc-1/index.html
index c1a16c0a72..4c695fc588 100644
--- a/article/release-candidate-godot-3-5-3-rc-1/index.html
+++ b/article/release-candidate-godot-3-5-3-rc-1/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 8 September 2023 It’s been a while since our previous maintenance release for Godot 3 ! While the development focus is on the Godot 4 branches, we’re still making steady progress towards the Godot 3.6 feature release, currently in beta phase . But we also need occasional updates to the current 3.5 branch which is used in production by many.
The main purpose of this release is to provide updated Android export templates which target API level 33 (Android 13), which is a requirement for new apps and updates on Google Play since August 2023 . It also includes a number of other platform-specific fixes which may be relevant for published games, notably around gamepad input and audio.
Please give it a try if you can. It should be as safe to use as 3.5.2-stable is, but we still need a significant number of users to try it out and report how it goes to make sure that the few changes in this update are working as intended and not introducing new regressions.
Jump to the Downloads section.
You can also try the Web editor .
Changes See the curated changelog for a selection of some of the main changes since Godot 3.5.2. We now also have a great interactive changelog you can use to review the changes since the previous beta, with convenient links to the relevant PRs on GitHub.
Here are the main changes since 3.5.2-stable:
2D: TileSet: Fix resizing collision shape when vertex is outside the tilesheet (GH-73218 ). 2D: Notify child controls when BackBufferCopy
’s rect changed (GH-74282 ). 2D: Fix AnimatedSprite normal map loading (GH-80406 ). 2D: Fix TouchScreenButton not redrawn when texture changes (GH-81100 ). Audio: Fix AudioEffectRecord circular reference (GH-74986 ). Audio: Add mono audio support to WASAPI (GH-76541 ). Audio: Fix trim when importing WAV (GH-78048 ). Buildsystem: SCons: Make misbehaving MSVC incremental linking opt-in (GH-80482 , GH-81144 ). Buildsystem: Web: Workaround Emscripten 3.1.42+ LTO regression (GH-81340 ). Codestyle: Build JoypadLinux
sandbox detection method only with udev (GH-77458 ). Core: Include the follow-viewport-transform into CanvasLayer transform calculations (GH-70310 ). Core: Fix moving position indicator out of bounds in FileAccessMemory (GH-75641 ). Core: Fix size error in BitMap.opaque_to_polygons
(GH-76544 ). Core: Fix infinite loop on EOF in the command line debugger (GH-80400 ). Core: Add recursion level check for Array
and Dictionary
hashing (GH-80888 ). Core: Add recursion level check for VariantWriter::write()
(GH-81114 ). Core: Add check to ensure registered classes are declared (GH-81117 ). Editor: Fix TextEdit color_region_cache
bug (GH-74777 ). Editor: Fix inconsistent file dialog settings usage (GH-76423 ). GDScript: GDScriptParser: Don’t use index operator on linked list (GH-74782 ). GDScript: Suggest class_name
in autocompletion (GH-76346 ). GUI: Fix scrolling behavior with zero/low page value (GH-67910 ). GUI: Fix GridContainer
max row/column calculations not skipping hidden children (GH-76833 ). Import: Bounds fixes in TextureAtlas
import (GH-77428 ). Multiplayer: Net/ENet: Better handle truncated socket messages (GH-79704 ). Navigation: Fix GridMap free navigation RID error spam (GH-74895 ). Porting: Android: Implement file provider capabilities (GH-72496 ). Porting: Android: Fix directory access when the running app has the All files access
permission (GH-75147 ). Porting: Android: Bump the target SDK version to 33 (Android 13) (GH-75205 ). Porting: Android: Fix null in text entry system (GH-75992 ). Porting: iOS: Fix splash screen rotation (GH-76037 ). Porting: Linux: Don’t use udev for joypad hotloading when running in a sandbox (GH-76962 ). Porting: Linux: Use current keyboard layout in OS_X11::keyboard_get_scancode_from_physical
(GH-78169 ). Porting: Linux: Ensure joy_connection_changed
is emitted on the main thread (GH-80432 ). Porting: Web: Fix JavaScript callback memory leak (GH-81090 ). Porting: Windows: Fix StringFileInfo structure (GH-76001 ). Porting: Windows: Added a few device GUIDs to is_xinput_device
fixing controller problems (GH-78043 ). Rendering: Fix shadows when using 2 directional lights (GH-74539 ). Thirdparty: libwebp 1.3.0, mbedtls 2.28.4, tinyexr 1.0.7, CA certificates from June 2023. API documentation updates. This release is built from commit fc32e066a .
Downloads The downloads for this dev snapshot can be found directly on our repository:
Standard build (GDScript, GDNative, VisualScript).Mono build (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.182 are included in this build.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 known already.
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 3.5.2 or earlier no longer works in 3.5.3 RC 1).
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.
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-5-rc-1/index.html b/article/release-candidate-godot-3-5-rc-1/index.html
index fe7c906b67..1b06d035f7 100644
--- a/article/release-candidate-godot-3-5-rc-1/index.html
+++ b/article/release-candidate-godot-3-5-rc-1/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 18 May 2022 The upcoming Godot 3.5 is now considered feature complete, and has received a lot of bugfixes and improvements over the past weeks thanks to all the testers and developers who reported and fixed issues. It’s now time to move to the Release Candidate stage so that we can release 3.5-stable for all users.
At this stage we need people to test this release (and potential follow-up RCs) on as many codebases as possible, to make sure that we catch non-obvious regressions that might have gone unnoticed until now. If you run into any issue, please make sure to report it on GitHub so that we can know about it and fix it!
Jump to the Downloads section.
As usual, you can try it live with the online version of the Godot editor updated for this release.
Highlights The main changes coming in Godot 3.5 and included in this release candidate are:
Asynchronous shader compilation + caching (ubershader) (GH-53411 ) A long awaited solution to shader compilation stuttering on OpenGL, courtesy Pedro J. Estébanez (RandomShaper )!
This new system uses an “ubershader” (big shader supporting all features, slow but compiled on startup) to fill in for all shaders initially while the more efficient and material-specific shaders get compiled asynchronously, and cached for future runs.
This means that on the first run materials may look a bit different for a second or two, but there should no longer be compilation lags. Please test this thoroughly and let us know how it performs on your projects.
Add NavigationServer with obstacle avoidance using RVO2 (GH-48395 ) Jake Young (Duroxxigar ) backported the refactored and much improved navigation system that Andrea Catania (AndreaCatania ) implemented for Godot 4.0 back in 2020!
This adds support for obstacle avoidance using the RVO2 library, and navigation meshes can now be baked at runtime.
The backport was done while attempting to preserve API compatibility within reason, but the underlying behavior will change, mainly to provide a lot more features and flexibility. We expect that all users will happily move to the new NavigationServer, but please report issues if you see behavior changes for the worse when upgrading from 3.4.
Physics interpolation (3D) (GH-52846 ) In Godot, while physics runs at a fixed tick rate, frames can actually display at a wide variety of frame rates, depending on the player’s hardware. This can lead to a problem, when the movement of objects (which tends to occur on physics ticks) does not line up with the rendered frames, giving unsightly jitter.
Thanks to lawnjelly ’s expertise, you will now find a sweet new option hidden in the project settings. Switch on physics/common/physics_interpolation
, and Godot will now automatically interpolate objects on rendered frames so they look super smooth.
In order to benefit you should be moving your objects and running your game logic in _physics_process()
. This ensures your game will run the same on all machines. Full details are available in the updated docs .
Fixed timestep interpolation is 3D only for now, but watch this space as we plan to add 2D support after initial feedback and bugfixing on the 3D version.
OccluderShapePolygon (3D) (GH-57361 ) Following on from the addition of OccluderShapeSphere in 3.4 , lawnjelly now brings us a more adaptable and easy way to add basic occlusion culling in the form of the OccluderShapePolygon. Add an Occluder node to your scene, and choose to create an OccluderShapePolygon. This should show up initially as a quad.
You can move the polygon with the node transform, drag the corners to reshape it, add delete points. Anything behind the polygon will be culled from view.
It is really as simple as that to get started, place them wherever you like in your game level. Read the updated docs for details .
Android editor port (GH-57747 ) Two years ago (!), thebestnom started working on an Android port of the Godot editor (GH-36776 ). Since the Godot editor is built with Godot itself, it wasn’t too difficult to imagine compiling the editor for Android with some buildsystem changes. But a lot of work was needed to actually make this compiled version work decently on an Android device, with improved mouse and keyboard support, better touch input, as well as being able to run the project on top of the editor like on desktop.
With a lot of testing from interested users, things progressed slowly but steadily, and our Android maintainer Fredia Huya-Kouadio (m4gr3d ) put the finishing touches to get this work merged for Godot 3.5 (GH-57747 ). The current version doesn’t have a lot of mobile specific changes, so it’s only really usable on a tablet with keyboard and mouse - but the foundation is there to improve upon, and we’re interested in your feedback and ideas son how to make the Godot experience more mobile friendly!
From now on you’ll find builds of the Android editor as <godot_version>_android_editor.apk
in the download repository. Note that builds are currently not signed, so you will get a warning on install. Give it a try!
With helpful input from contributors Dan Edwards (Gromph ) and Péter Magyar (Relintai ), Fredia was also able to fix the low processor usage mode on Android (GH-59606 ), which the editor port uses. It should now work fine for users who make non-game applications or non real-time games on Android and want to preserve battery life.
New SceneTreeTween backported from Godot 4.0 (GH-60581 ) Tomasz Chabora (KoBeWi ) completely overhauled the Tween class in Godot 4.0 to make it a lot more powerful and flexible. Early testers so far seemed to like, and Haoyu Qiu (timothyqiu ) decided to backport the feature to Godot 3.5 as SceneTreeTween
(to keep the pre-existing Tween
and thus preserve compatibility). So you now have two separate Tween implementations and can use to keep using the original 3.x one, or adopt the new API from 4.0.
Scene unique nodes (GH-60527 ) To help with the common task of accessing specific nodes from scripts, Juan Linietsky (reduz ) added the concept of “scene unique names” for nodes in the master
branch (GH-60298 ), and Tomasz backported it for 3.5. Nodes with a scene unique name can be referenced easily within their scene using a new %
name prefix, like so: get_node("%MyUniqueNode")
. This is particularly useful for GUI if you need to locate a specific Control node which might move in the scene tree as you refactor things.
Add push, pull, fetch and improved diff view to VCS UI (GH-53900 ) Aged like fine wine, Meru Patel (Janglee123 )’s work from Google Summer of Code 2020 has been continued and updated by GSoC 2019 alumni Twarit Waikar (ChronicallySerious )!
What is it? A lot of new features for Version Control Systems (VCS) integration in the Godot editor, such as push, pull, and fetch operations, as well as a very nice diff view UI. All these features have been implemented in the official Git integration plugin . Check out the Releases page for the latest 2.x plugin release supporting Godot 3.5 beta.
And more! Android: Initial port of the Godot editor (GH-57747 ). Android: Fix flickering issues with low processor mode (GH-59606 ). Android: Update editor default display scale, allow resizing windows (GH-59868 , GH-59861 , GH-59880 ). Animation: Add option to paste animation as duplicate (GH-60226 ). Animation: New SceneTreeTween backported from Godot 4.0 (GH-60581 ). Animation: Fix AnimatedSprite doesn’t emit animation_finished
when changing playback direction (GH-61085 ). Audio: Allow configuring loop mode on WAV import (GH-59170 ). Audio: Instance audio streams before AudioServer::lock
call (GH-59413 ). Audio: Fix crash in AudioServer when switching audio devices with different audio channels count (GH-59778 ). C#: Fix Android AAB export failing to load native libs (GH-57420 ). Core: Add scene unique nodes (GH-60527 ). Core: Add GradientTexture2D (GH-54824 ). Core: Allow pinning property values + Consistent property defaults (GH-52943 ). Core: Support deep comparison of Array and Dictionary (GH-42625 ). Core: Add visibility to CanvasLayer (GH-57900 ). Core: Add a signal to notify when children nodes enter or exit tree (GH-57541 ). Core: Add fill method to Array and Pool*Array (GH-60426 ). Core: Expose OS.move_to_trash()
(GH-60542 ). Core: Crash handler: Use print_error to include backtrace in logs (GH-60782 ). Core: Allow AStar/AStar2D with zero point weight (GH-60812 ). Core: Add search methods for pool arrays (GH-60856 ). Core: Add interpolation modes to Gradient (GH-60982 ). Debugger: Fix inspecting nested dictionaries/arrays (GH-60737 ). Debugger: Add --debug-server
command line option to listen for incoming connections (GH-60819 ). Editor: Add push, pull, fetch and improved diff view to VCS UI (GH-53900 ). Editor: Improve ColorPicker presets (GH-54439 ). Editor: Add option to only redraw vital updates (GH-53463 ). Editor: Improved region-select in the 3D editor viewport (GH-58252 ). Editor: Make property paths and categories translatable (GH-58634 ). Editor: Add property name style toggle to Inspector (GH-59313 ). Editor: Add an inspector preview for BitMap (GH-60700 ). Editor: Create onready
variables when dropping nodes and holding Ctrl (GH-60879 ). Export: Improve embedded PCK loading and exporting (GH-60580 ). GDScript: Fix variable type inference on release (GH-57851 ). GDScript: Don’t coerce default values to the export hint type (GH-58686 ). GDScript: Enable method type information on release builds (GH-59793 ). GUI: Add FlowContainer (GH-57960 ). GUI: Add alignment options to Button icons (GH-57771 ). GUI: Add type variations to Theme (GH-57942 ). GUI: Add WOFF2 font support and brotli decoder (GH-59522 ). GUI: Add a Skew property to StyleBoxFlat (GH-60592 ). GUI: Make various improvements to OptionButton (GH-61102 ). Input: Allow for mapping scancodes to current layout (GH-56015 ). Internationalization: Add binary MO translation file support (GH-59522 ). Linux: Fix window_maximized
not working reliably (GH-59767 ). Linux: Read and store joypad events in a separate thread (GH-56126 ). macOS: Implements ad-hoc signing from Linux/Windows (GH-51550 ). Navigation: Add NavigationServer with obstacle avoidance using RVO2 (GH-48395 ). Navigation: Lots of fixes and improvements to the new NavigationServer (topic:navigation
PRs ). Networking: Add proxy support for HTTPClient and the editor (GH-55988 ). Physics: Add fixed timestep interpolation for 3D (GH-52846 ).The 2D equivalent will be added later on. Rendering: Asynchronous shader compilation + caching (ubershader) (GH-53411 ). Rendering: Add material_overlay
property to MeshInstance (GH-50823 ). Rendering: Faster editor line drawing - Path2D and draw_line
(GH-54377 ). Rendering: Add OccluderShapePolygon (GH-57361 ). Rendering: Add support for saving multiple Images in BakedLightmap (GH-58102 ). Rendering: Bind mesh merging functionality in MeshInstance (GH-57661 ). Rendering: GLES2: Unpack blend shape arrays when necessary (GH-60829 ). Rendering: GLES3: Unbind vertex buffer before calculating blend shapes (GH-60832 ). Rendering: Portals: Show gridmaps using global mode (GH-60851 ). Rendering: Fix viewport with transparent background changed to solid black if enabling FXAA or debanding (GH-54585 ). Shaders: Many improvements backported from master
(GH-56794 ). VisualShader: Add hints and default values to the uniform nodes (GH-56466 ). Windows: Improve console handling and execute
(GH-55987 ).This changes the editor console handling to be like on Unix systems (Linux and macOS). So Godot doesn’t open with a console by default, but you can see console output if you start it from a console yourself. You can create a batch script or shortcut to automatically start Godot from a console as in previous releases. Windows: Implement limited surrogate pairs support (better UTF-8 support, emoji fonts) (GH-54625 ). Windows: Try to convert OS::execute()
output to Unicode (GH-60920 ). Thirdparty library updates: bullet 3.24, freetype 2.12.1, pcre2 10.40, CA certificates (2022-03-31). Class reference and translations updates. All these need to be thoroughly tested to ensure that they work as intended in the upcoming 3.5-stable.
Changelog There’s no curated changelog just yet, I still have to skim through all commits to select the changelog worthy changes.
For now, you can check the full changelog since 3.4-stable (chronological , or for each contributor ).
You can also review the changes between beta 5 and RC 1 .
This release is built from commit f33899d5b .
Downloads The downloads for this dev snapshot can be found directly on our repository:
Standard build (GDScript, GDNative, VisualScript).Mono build (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.178 are included in this build.Bug reports As a tester, you are encouraged to open bug reports if you experience issues with this release candidate. 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.
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 3.4.x no longer works in this 3.5 RC).
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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-5-rc-3/index.html b/article/release-candidate-godot-3-5-rc-3/index.html
index 6453e65f25..ee98c211fd 100644
--- a/article/release-candidate-godot-3-5-rc-3/index.html
+++ b/article/release-candidate-godot-3-5-rc-3/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 1 June 2022 The upcoming Godot 3.5 is now considered feature complete, and has received a lot of bugfixes and improvements over the past weeks thanks to all the testers and developers who reported and fixed issues. We are now at the Release Candidate stage, finalizing everything so that we can release 3.5-stable for all users.
At this stage we need people to test this release (and potential follow-up RCs) on as many codebases as possible, to make sure that we catch non-obvious regressions that might have gone unnoticed until now. If you run into any issue, please make sure to report it on GitHub so that we can know about it and fix it!
This RC 3 fixes a number of recent regressions and older bugs. Notably, it fixes some rendering regressions with transparent materials, and crashing iOS templates and Web editor build in RC 2.
Jump to the Downloads section.
As usual, you can try it live with the online version of the Godot editor updated for this release.
Highlights The main changes coming in Godot 3.5 and included in this release candidate are:
Asynchronous shader compilation + caching (ubershader) (GH-53411 ) A long awaited solution to shader compilation stuttering on OpenGL, courtesy Pedro J. Estébanez (RandomShaper )!
This new system uses an “ubershader” (big shader supporting all features, slow but compiled on startup) to fill in for all shaders initially while the more efficient and material-specific shaders get compiled asynchronously, and cached for future runs.
This means that on the first run materials may look a bit different for a second or two, but there should no longer be compilation lags. Please test this thoroughly and let us know how it performs on your projects.
Add NavigationServer with obstacle avoidance using RVO2 (GH-48395 ) Jake Young (Duroxxigar ) backported the refactored and much improved navigation system that Andrea Catania (AndreaCatania ) implemented for Godot 4.0 back in 2020! And then a lot of old and new navigation issues have been fixed by smix8 and Pawel Lampe (Scony ).
The new NavigationServer adds support for obstacle avoidance using the RVO2 library, and navigation meshes can now be baked at runtime. The whole API is now a lot more flexible than it used to be.
The backport was done while attempting to preserve API compatibility within reason, but the underlying behavior will change, mainly to provide a lot more features and flexibility. We expect that all users will happily move to the new NavigationServer, but please report issues if you see behavior changes for the worse when upgrading from 3.4.
Physics interpolation (3D) (GH-52846 ) In Godot, while physics runs at a fixed tick rate, frames can actually display at a wide variety of frame rates, depending on the player’s hardware. This can lead to a problem, when the movement of objects (which tends to occur on physics ticks) does not line up with the rendered frames, giving unsightly jitter.
Thanks to lawnjelly ’s expertise, you will now find a sweet new option hidden in the project settings. Switch on physics/common/physics_interpolation
, and Godot will now automatically interpolate objects on rendered frames so they look super smooth.
In order to benefit you should be moving your objects and running your game logic in _physics_process()
. This ensures your game will run the same on all machines. Full details are available in the updated docs .
Fixed timestep interpolation is 3D only for now, but watch this space as we plan to add 2D support after initial feedback and bugfixing on the 3D version.
OccluderShapePolygon (3D) (GH-57361 ) Following on from the addition of OccluderShapeSphere in 3.4 , lawnjelly now brings us a more adaptable and easy way to add basic occlusion culling in the form of the OccluderShapePolygon. Add an Occluder node to your scene, and choose to create an OccluderShapePolygon. This should show up initially as a quad.
You can move the polygon with the node transform, drag the corners to reshape it, add delete points. Anything behind the polygon will be culled from view.
It is really as simple as that to get started, place them wherever you like in your game level. Read the updated docs for details .
Android editor port (GH-57747 ) Two years ago (!), thebestnom started working on an Android port of the Godot editor (GH-36776 ). Since the Godot editor is built with Godot itself, it wasn’t too difficult to imagine compiling the editor for Android with some buildsystem changes. But a lot of work was needed to actually make this compiled version work decently on an Android device, with improved mouse and keyboard support, better touch input, as well as being able to run the project on top of the editor like on desktop.
With a lot of testing from interested users, things progressed slowly but steadily, and our Android maintainer Fredia Huya-Kouadio (m4gr3d ) put the finishing touches to get this work merged for Godot 3.5 (GH-57747 ). The current version doesn’t have a lot of mobile specific changes, so it’s only really usable on a tablet with keyboard and mouse - but the foundation is there to improve upon, and we’re interested in your feedback and ideas son how to make the Godot experience more mobile friendly!
From now on you’ll find builds of the Android editor as <godot_version>_android_editor.apk
in the download repository. Note that builds are currently not signed, so you will get a warning on install. Give it a try!
With helpful input from contributors Dan Edwards (Gromph ) and Péter Magyar (Relintai ), Fredia was also able to fix the low processor usage mode on Android (GH-59606 ), which the editor port uses. It should now work fine for users who make non-game applications or non real-time games on Android and want to preserve battery life.
New Label3D and TextMesh backported from Godot 4.0 (GH-61276 , GH-61281 ) Long awaited, Godot now provides a Label3D node out of the box to display text in 3D scenes. And for more advanced use cases, there is now also TextMesh to generate 3D meshes from font glyphs, so you can add Word Art to your scenes ;)
Both features were implemented by our text rendering expert bruvzg in the master
branch for Godot 4.0, and backported to 3.5. They were merged late in the release process (3.5 RC 2) but should be quite self-contained and thus not impact the stability of other features. Be sure to test them and report any bug or inconvenience with the implementation.
New SceneTreeTween backported from Godot 4.0 (GH-60581 ) Tomasz Chabora (KoBeWi ) completely overhauled the Tween class in Godot 4.0 to make it a lot more powerful and flexible. Early testers so far seemed to like, and Haoyu Qiu (timothyqiu ) decided to backport the feature to Godot 3.5 as SceneTreeTween
(to keep the pre-existing Tween
and thus preserve compatibility). So you now have two separate Tween implementations and can use to keep using the original 3.x one, or adopt the new API from 4.0.
Scene unique nodes (GH-60527 ) To help with the common task of accessing specific nodes from scripts, Juan Linietsky (reduz ) added the concept of “scene unique names” for nodes in the master
branch (GH-60298 ), and Tomasz backported it for 3.5. Nodes with a scene unique name can be referenced easily within their scene using a new %
name prefix, like so: get_node("%MyUniqueNode")
. This is particularly useful for GUI if you need to locate a specific Control node which might move in the scene tree as you refactor things.
Add push, pull, fetch and improved diff view to VCS UI (GH-53900 ) Aged like fine wine, Meru Patel (Janglee123 )’s work from Google Summer of Code 2020 has been continued and updated by GSoC 2019 alumni Twarit Waikar (ChronicallySerious )!
What is it? A lot of new features for Version Control Systems (VCS) integration in the Godot editor, such as push, pull, and fetch operations, as well as a very nice diff view UI. All these features have been implemented in the official Git integration plugin . Check out the Releases page for the latest 2.x plugin release supporting Godot 3.5.
And more! 3D: Add Label3D node and Sprite3D material render priority (GH-61276 ). 3D: Add TextMesh and expose dynamic font vector outlines (GH-61281 ). Android: Initial port of the Godot editor (GH-57747 ). Android: Fix flickering issues with low processor mode (GH-59606 ). Android: Update editor default display scale, allow resizing windows (GH-59868 , GH-59861 , GH-59880 ). Android: Fix the logic to restart the Godot application (GH-61332 ). Animation: Add option to paste animation as duplicate (GH-60226 ). Animation: New SceneTreeTween backported from Godot 4.0 (GH-60581 ). Animation: Fix AnimatedSprite doesn’t emit animation_finished
when changing playback direction (GH-61085 ). Audio: Allow configuring loop mode on WAV import (GH-59170 ). Audio: Instance audio streams before AudioServer::lock
call (GH-59413 ). Audio: Fix crash in AudioServer when switching audio devices with different audio channels count (GH-59778 ). C#: Fix Android AAB export failing to load native libs (GH-57420 ). Core: Add scene unique nodes (GH-60527 ). Core: Add GradientTexture2D (GH-54824 ). Core: Allow pinning property values + Consistent property defaults (GH-52943 ). Core: Support deep comparison of Array and Dictionary (GH-42625 ). Core: Add visibility to CanvasLayer (GH-57900 ). Core: Add a signal to notify when children nodes enter or exit tree (GH-57541 ). Core: Add fill method to Array and Pool*Array (GH-60426 ). Core: Expose OS.move_to_trash()
(GH-60542 ). Core: Crash handler: Use print_error to include backtrace in logs (GH-60782 ). Core: Allow AStar/AStar2D with zero point weight (GH-60812 ). Core: Add search methods for pool arrays (GH-60856 ). Core: Add interpolation modes to Gradient (GH-60982 ). Debugger: Fix inspecting nested dictionaries/arrays (GH-60737 ). Debugger: Add --debug-server
command line option to listen for incoming connections (GH-60819 ). Editor: Add push, pull, fetch and improved diff view to VCS UI (GH-53900 ). Editor: Improve ColorPicker presets (GH-54439 ). Editor: Add option to only redraw vital updates (GH-53463 ). Editor: Improved region-select in the 3D editor viewport (GH-58252 ). Editor: Make property paths and categories translatable (GH-58634 ). Editor: Add property name style toggle to Inspector (GH-59313 ). Editor: Add an inspector preview for BitMap (GH-60700 ). Editor: Create onready
variables when dropping nodes and holding Ctrl (GH-60879 ). Editor: Only switch to node when node dragging it (GH-61162 ). Export: Improve embedded PCK loading and exporting (GH-60580 ). GDScript: Fix variable type inference on release (GH-57851 ). GDScript: Don’t coerce default values to the export hint type (GH-58686 ). GDScript: Enable method type information on release builds (GH-59793 ). GUI: Add FlowContainer (GH-57960 ). GUI: Add alignment options to Button icons (GH-57771 ). GUI: Add type variations to Theme (GH-57942 ). GUI: Add WOFF2 font support and brotli decoder (GH-59522 ). GUI: Add a Skew property to StyleBoxFlat (GH-60592 ). GUI: Make various improvements to OptionButton (GH-61102 ). HTML5: Enable mbedTLS module for Crypto object (GH-61402 ). Input: Allow for mapping scancodes to current layout (GH-56015 ). Internationalization: Add binary MO translation file support (GH-59522 ). Linux: Fix window_maximized
not working reliably (GH-59767 ). Linux: Read and store joypad events in a separate thread (GH-56126 ). macOS: Implements ad-hoc signing from Linux/Windows (GH-51550 ). Navigation: Add NavigationServer with obstacle avoidance using RVO2 (GH-48395 ). Navigation: Lots of fixes and improvements to the new NavigationServer (topic:navigation
PRs ). Networking: Add proxy support for HTTPClient and the editor (GH-55988 ). Physics: Add fixed timestep interpolation for 3D (GH-52846 ).The 2D equivalent will be added later on. Physics: Bullet: KinematicBody compound shape collision fix (GH-56801 ).Fixes a lot of issues with KinematicBody collisions at the intersection between meshes when using Bullet. This was merged fairly late (3.5 RC 2), please make sure to test it. Rendering: Asynchronous shader compilation + caching (ubershader) (GH-53411 ). Rendering: Add material_overlay
property to MeshInstance (GH-50823 ). Rendering: Faster editor line drawing - Path2D and draw_line
(GH-54377 ). Rendering: Add OccluderShapePolygon (GH-57361 ). Rendering: Add support for saving multiple Images in BakedLightmap (GH-58102 ). Rendering: Bind mesh merging functionality in MeshInstance (GH-57661 ). Rendering: GLES2: Unpack blend shape arrays when necessary (GH-60829 ). Rendering: GLES3: Unbind vertex buffer before calculating blend shapes (GH-60832 ). Rendering: Portals: Show gridmaps using global mode (GH-60851 ). Rendering: Fix viewport with transparent background changed to solid black if enabling FXAA or debanding (GH-54585 ). Shaders: Many improvements backported from master
(GH-56794 ). UWP: Fix exporting GDNative DLLs (GH-61262 ). VisualShader: Add hints and default values to the uniform nodes (GH-56466 ). Windows: Improve console handling and execute
(GH-55987 ).This changes the editor console handling to be like on Unix systems (Linux and macOS). So Godot doesn’t open with a console by default, but you can see console output if you start it from a console yourself. You can create a batch script or shortcut to automatically start Godot from a console as in previous releases. Windows: Implement limited surrogate pairs support (better UTF-8 support, emoji fonts) (GH-54625 ). Windows: Try to convert OS::execute()
output to Unicode (GH-60920 ). Thirdparty library updates: bullet 3.24, freetype 2.12.1, pcre2 10.40, CA certificates (2022-03-31). Class reference and translations updates. All these need to be thoroughly tested to ensure that they work as intended in the upcoming 3.5-stable.
Changelog There’s no curated changelog just yet, I still have to skim through all commits to select the changelog worthy changes.
For now, you can check the full changelog since 3.4-stable (chronological , or for each contributor ).
You can also review the changes between RC 2 and RC 3 .
This release is built from commit af8a02dda .
Downloads The downloads for this dev snapshot can be found directly on our repository:
Standard build (GDScript, GDNative, VisualScript).Mono build (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.179 are included in this build.Bug reports As a tester, you are encouraged to open bug reports if you experience issues with this release candidate. 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.
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 3.4.x no longer works in this 3.5 RC).
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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-5-rc-4/index.html b/article/release-candidate-godot-3-5-rc-4/index.html
index 441911ecea..f5d97c9bd7 100644
--- a/article/release-candidate-godot-3-5-rc-4/index.html
+++ b/article/release-candidate-godot-3-5-rc-4/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 17 June 2022 The upcoming Godot 3.5 is now considered feature complete, and has received a lot of bugfixes and improvements over the past weeks thanks to all the testers and developers who reported and fixed issues. We are now at the Release Candidate stage, finalizing everything so that we can release 3.5-stable for all users.
At this stage we need people to test this release (and potential follow-up RCs) on as many codebases as possible, to make sure that we catch non-obvious regressions that might have gone unnoticed until now. If you run into any issue, please make sure to report it on GitHub so that we can know about it and fix it!
This RC 4 fixes a number of recent regressions and older bugs. Notably, this fixes a potential crash on Windows 11 on scenes using specific fonts. It also significantly refactors the new navigation system to make it closer to the version in Godot 4.0, and provide the missing features that 3.5 users would require to use it fully.
Jump to the Downloads section.
As usual, you can try it live with the online version of the Godot editor updated for this release.
Highlights The main changes coming in Godot 3.5 and included in this release candidate are:
Asynchronous shader compilation + caching (ubershader) (GH-53411 ) A long awaited solution to shader compilation stuttering on OpenGL, courtesy Pedro J. Estébanez (RandomShaper )!
This new system uses an “ubershader” (big shader supporting all features, slow but compiled on startup) to fill in for all shaders initially while the more efficient and material-specific shaders get compiled asynchronously, and cached for future runs.
This means that on the first run materials may look a bit different for a second or two, but there should no longer be compilation lags. Please test this thoroughly and let us know how it performs on your projects.
Add NavigationServer with obstacle avoidance using RVO2 (GH-48395 ) Jake Young (Duroxxigar ) backported the refactored and much improved navigation system that Andrea Catania (AndreaCatania ) implemented for Godot 4.0 back in 2020! Then smix8 took over the custody of this area, fixing a lot of bugs and improving the feature set greatly, with the help of Pawel Lampe (Scony ).
The new NavigationServer adds support for obstacle avoidance using the RVO2 library, and navigation meshes can now be baked at runtime. The whole API is now a lot more flexible than it used to be.
The backport was done while attempting to preserve API compatibility within reason, but the underlying behavior will change, mainly to provide a lot more features and flexibility. We expect that all users will happily move to the new NavigationServer, but please report issues if you see behavior changes for the worse when upgrading from 3.4.
Physics interpolation (3D) (GH-52846 ) In Godot, while physics runs at a fixed tick rate, frames can actually display at a wide variety of frame rates, depending on the player’s hardware. This can lead to a problem, when the movement of objects (which tends to occur on physics ticks) does not line up with the rendered frames, giving unsightly jitter.
Thanks to lawnjelly ’s expertise, you will now find a sweet new option hidden in the project settings. Switch on physics/common/physics_interpolation
, and Godot will now automatically interpolate objects on rendered frames so they look super smooth.
In order to benefit you should be moving your objects and running your game logic in _physics_process()
. This ensures your game will run the same on all machines. Full details are available in the updated docs .
Fixed timestep interpolation is 3D only for now, but watch this space as we plan to add 2D support after initial feedback and bugfixing on the 3D version.
OccluderShapePolygon (3D) (GH-57361 ) Following on from the addition of OccluderShapeSphere in 3.4 , lawnjelly now brings us a more adaptable and easy way to add basic occlusion culling in the form of the OccluderShapePolygon. Add an Occluder node to your scene, and choose to create an OccluderShapePolygon. This should show up initially as a quad.
You can move the polygon with the node transform, drag the corners to reshape it, add delete points. Anything behind the polygon will be culled from view.
It is really as simple as that to get started, place them wherever you like in your game level. Read the updated docs for details .
Android editor port (GH-57747 ) Two years ago (!), thebestnom started working on an Android port of the Godot editor (GH-36776 ). Since the Godot editor is built with Godot itself, it wasn’t too difficult to imagine compiling the editor for Android with some buildsystem changes. But a lot of work was needed to actually make this compiled version work decently on an Android device, with improved mouse and keyboard support, better touch input, as well as being able to run the project on top of the editor like on desktop.
With a lot of testing from interested users, things progressed slowly but steadily, and our Android maintainer Fredia Huya-Kouadio (m4gr3d ) put the finishing touches to get this work merged for Godot 3.5 (GH-57747 ). The current version doesn’t have a lot of mobile specific changes, so it’s only really usable on a tablet with keyboard and mouse - but the foundation is there to improve upon, and we’re interested in your feedback and ideas son how to make the Godot experience more mobile friendly!
From now on you’ll find builds of the Android editor as <godot_version>_android_editor.apk
in the download repository. Note that builds are currently not signed, so you will get a warning on install. Give it a try!
With helpful input from contributors Dan Edwards (Gromph ) and Péter Magyar (Relintai ), Fredia was also able to fix the low processor usage mode on Android (GH-59606 ), which the editor port uses. It should now work fine for users who make non-game applications or non real-time games on Android and want to preserve battery life.
New Label3D and TextMesh backported from Godot 4.0 (GH-61276 , GH-61281 ) Long awaited, Godot now provides a Label3D node out of the box to display text in 3D scenes. And for more advanced use cases, there is now also TextMesh to generate 3D meshes from font glyphs, so you can add Word Art to your scenes ;)
Both features were implemented by our text rendering expert bruvzg in the master
branch for Godot 4.0, and backported to 3.5. They were merged late in the release process (3.5 RC 2) but should be quite self-contained and thus not impact the stability of other features. Be sure to test them and report any bug or inconvenience with the implementation.
New SceneTreeTween backported from Godot 4.0 (GH-60581 ) Tomasz Chabora (KoBeWi ) completely overhauled the Tween class in Godot 4.0 to make it a lot more powerful and flexible. Early testers so far seemed to like, and Haoyu Qiu (timothyqiu ) decided to backport the feature to Godot 3.5 as SceneTreeTween
(to keep the pre-existing Tween
and thus preserve compatibility). So you now have two separate Tween implementations and can use to keep using the original 3.x one, or adopt the new API from 4.0.
Scene unique nodes (GH-60527 ) To help with the common task of accessing specific nodes from scripts, Juan Linietsky (reduz ) added the concept of “scene unique names” for nodes in the master
branch (GH-60298 ), and Tomasz backported it for 3.5. Nodes with a scene unique name can be referenced easily within their scene using a new %
name prefix, like so: get_node("%MyUniqueNode")
. This is particularly useful for GUI if you need to locate a specific Control node which might move in the scene tree as you refactor things.
Add push, pull, fetch and improved diff view to VCS UI (GH-53900 ) Aged like fine wine, Meru Patel (Janglee123 )’s work from Google Summer of Code 2020 has been continued and updated by GSoC 2019 alumni Twarit Waikar (ChronicallySerious )!
What is it? A lot of new features for Version Control Systems (VCS) integration in the Godot editor, such as push, pull, and fetch operations, as well as a very nice diff view UI. All these features have been implemented in the official Git integration plugin . Check out the Releases page for the latest 2.x plugin release supporting Godot 3.5.
And more! 3D: Add Label3D node and Sprite3D material render priority (GH-61276 ). 3D: Add TextMesh and expose dynamic font vector outlines (GH-61281 ). Android: Initial port of the Godot editor (GH-57747 ). Android: Fix flickering issues with low processor mode (GH-59606 ). Android: Update editor default display scale, allow resizing windows (GH-59868 , GH-59861 , GH-59880 ). Android: Fix the logic to restart the Godot application (GH-61332 ). Animation: Add option to paste animation as duplicate (GH-60226 ). Animation: New SceneTreeTween backported from Godot 4.0 (GH-60581 ). Animation: Fix AnimatedSprite doesn’t emit animation_finished
when changing playback direction (GH-61085 ). Audio: Allow configuring loop mode on WAV import (GH-59170 ). Audio: Instance audio streams before AudioServer::lock
call (GH-59413 ). Audio: Fix crash in AudioServer when switching audio devices with different audio channels count (GH-59778 ). C#: Fix Android AAB export failing to load native libs (GH-57420 ). Core: Add scene unique nodes (GH-60527 ). Core: Add GradientTexture2D (GH-54824 ). Core: Allow pinning property values + Consistent property defaults (GH-52943 ). Core: Support deep comparison of Array and Dictionary (GH-42625 ). Core: Add visibility to CanvasLayer (GH-57900 ). Core: Add a signal to notify when children nodes enter or exit tree (GH-57541 ). Core: Add fill method to Array and Pool*Array (GH-60426 ). Core: Expose OS.move_to_trash()
(GH-60542 ). Core: Crash handler: Use print_error to include backtrace in logs (GH-60782 ). Core: Allow AStar/AStar2D with zero point weight (GH-60812 ). Core: Add search methods for pool arrays (GH-60856 ). Core: Add interpolation modes to Gradient (GH-60982 ). Debugger: Fix inspecting nested dictionaries/arrays (GH-60737 ). Debugger: Add --debug-server
command line option to listen for incoming connections (GH-60819 ). Editor: Add push, pull, fetch and improved diff view to VCS UI (GH-53900 ). Editor: Improve ColorPicker presets (GH-54439 ). Editor: Add option to only redraw vital updates (GH-53463 ). Editor: Improved region-select in the 3D editor viewport (GH-58252 ). Editor: Make property paths and categories translatable (GH-58634 ). Editor: Add property name style toggle to Inspector (GH-59313 ). Editor: Add an inspector preview for BitMap (GH-60700 ). Editor: Create onready
variables when dropping nodes and holding Ctrl (GH-60879 ). Editor: Only switch to node when node dragging it (GH-61162 ). Export: Improve embedded PCK loading and exporting (GH-60580 ). Export: Add readable export errors (GH-61624 ). GDScript: Fix variable type inference on release (GH-57851 ). GDScript: Don’t coerce default values to the export hint type (GH-58686 ). GDScript: Enable method type information on release builds (GH-59793 ). GDScript: LSP: Fix wrong parentheses for function call autocompletion (GH-59482 ). GUI: Add FlowContainer (GH-57960 ). GUI: Add alignment options to Button icons (GH-57771 ). GUI: Add type variations to Theme (GH-57942 ). GUI: Add WOFF2 font support and brotli decoder (GH-59522 ). GUI: Add a Skew property to StyleBoxFlat (GH-60592 ). GUI: Make various improvements to OptionButton (GH-61102 ). GUI: Improve RichTextLabel table filling (GH-61904 ). HTML5: Enable mbedTLS module for Crypto object (GH-61402 ). HTML5: Add preliminary support for GDNative+Threads build (GH-61989 ).Depends on yet unreleased Emscripten 3.1.14, no templates provided for this export type for now. Input: Allow for mapping scancodes to current layout (GH-56015 ). Internationalization: Add binary MO translation file support (GH-59522 ). Linux: Fix window_maximized
not working reliably (GH-59767 ). Linux: Read and store joypad events in a separate thread (GH-56126 ). macOS: Implements ad-hoc signing from Linux/Windows (GH-51550 ). Navigation: Add NavigationServer with obstacle avoidance using RVO2 (GH-48395 ). Navigation: Lots of fixes and improvements to the new NavigationServer (topic:navigation
PRs ). Navigation: Backport more NavigationServer features to make it more flexible (GH-61996 ). Networking: Add proxy support for HTTPClient and the editor (GH-55988 ). Physics: Add fixed timestep interpolation for 3D (GH-52846 ).The 2D equivalent will be added later on. Physics: Bullet: KinematicBody compound shape collision fix (GH-56801 ).Fixes a lot of issues with KinematicBody collisions at the intersection between meshes when using Bullet. This was merged fairly late (3.5 RC 2), please make sure to test it. Rendering: Asynchronous shader compilation + caching (ubershader) (GH-53411 ). Rendering: Add material_overlay
property to MeshInstance (GH-50823 ). Rendering: Faster editor line drawing - Path2D and draw_line
(GH-54377 ). Rendering: Add OccluderShapePolygon (GH-57361 ). Rendering: Add support for saving multiple Images in BakedLightmap (GH-58102 ). Rendering: Bind mesh merging functionality in MeshInstance (GH-57661 ). Rendering: GLES2: Unpack blend shape arrays when necessary (GH-60829 ). Rendering: GLES3: Unbind vertex buffer before calculating blend shapes (GH-60832 ). Rendering: Portals: Show gridmaps using global mode (GH-60851 ). Rendering: Fix viewport with transparent background changed to solid black if enabling FXAA or debanding (GH-54585 ). Rendering: VisibilityNotifier: Add max_distance
feature (GH-61544 ). Shaders: Many improvements backported from master
(GH-56794 ). UWP: Fix exporting GDNative DLLs (GH-61262 ). VisualShader: Add hints and default values to the uniform nodes (GH-56466 ). Windows: Improve console handling and execute
(GH-55987 ).This changes the editor console handling to be like on Unix systems (Linux and macOS). So Godot doesn’t open with a console by default, but you can see console output if you start it from a console yourself. You can create a batch script or shortcut to automatically start Godot from a console as in previous releases. Windows: Implement limited surrogate pairs support (better UTF-8 support, emoji fonts) (GH-54625 ). Windows: Try to convert OS::execute()
output to Unicode (GH-60920 ). Windows: Add support for handling network share paths (GH-61985 ). Thirdparty library updates: bullet 3.24, freetype 2.12.1, pcre2 10.40, CA certificates (2022-03-31). Class reference and translations updates. All these need to be thoroughly tested to ensure that they work as intended in the upcoming 3.5-stable.
Changelog There’s no curated changelog just yet, I still have to skim through all commits to select the changelog worthy changes.
For now, you can check the full changelog since 3.4-stable (chronological , or for each contributor ).
You can also review the changes between RC 3 and RC 4 .
This release is built from commit daf6fdf0b .
Downloads The downloads for this dev snapshot can be found directly on our repository:
Standard build (GDScript, GDNative, VisualScript).Mono build (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.179 are included in this build.Bug reports As a tester, you are encouraged to open bug reports if you experience issues with this release candidate. 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.
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 3.4.x no longer works in this 3.5 RC).
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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-5-rc-5/index.html b/article/release-candidate-godot-3-5-rc-5/index.html
index 23e0d990e5..46f04b2b23 100644
--- a/article/release-candidate-godot-3-5-rc-5/index.html
+++ b/article/release-candidate-godot-3-5-rc-5/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 27 June 2022 The upcoming Godot 3.5 is now considered feature complete, and has received a lot of bugfixes and improvements over the past weeks thanks to all the testers and developers who reported and fixed issues. We are now at the Release Candidate stage, finalizing everything so that we can release 3.5-stable for all users.
At this stage we need people to test this release (and potential follow-up RCs) on as many codebases as possible, to make sure that we catch non-obvious regressions that might have gone unnoticed until now. If you run into any issue, please make sure to report it on GitHub so that we can know about it and fix it!
For this RC 5, we decided to include two fairly important Android PRs which had recently been finalized, as they are important to fulfill Google Play requirements for the near future: full Android scoped storage support , and upgrading the buildsystem from NDK r21 to NDK r23 . They’re fairly big changes to include at RC stage but we think it’s really worth having in 3.5, so we’ll need your help to test Android export templates in this build and confirm that they work as expected.
Jump to the Downloads section.
As usual, you can try it live with the online version of the Godot editor updated for this release.
Highlights The main changes coming in Godot 3.5 and included in this release candidate are:
Asynchronous shader compilation + caching (ubershader) (GH-53411 ) A long awaited solution to shader compilation stuttering on OpenGL, courtesy Pedro J. Estébanez (RandomShaper )!
This new system uses an “ubershader” (big shader supporting all features, slow but compiled on startup) to fill in for all shaders initially while the more efficient and material-specific shaders get compiled asynchronously, and cached for future runs.
This means that the first time a material is used under certain conditions (types of lights, shadowing enabled or not, etc.) rendering may be slower for a second or two, but the slowdown will not be nearly as bad as the typical hiccup caused by classic synchronous compilation. On the most powerful devices it may be even unnoticeable. Please test this thoroughly and let us know how it performs on your projects.
Add NavigationServer with obstacle avoidance using RVO2 (GH-48395 ) Jake Young (Duroxxigar ) backported the refactored and much improved navigation system that Andrea Catania (AndreaCatania ) implemented for Godot 4.0 back in 2020! Then smix8 took over the custody of this area, fixing a lot of bugs and improving the feature set greatly, with the help of Pawel Lampe (Scony ).
The new NavigationServer adds support for obstacle avoidance using the RVO2 library, and navigation meshes can now be baked at runtime. The whole API is now a lot more flexible than it used to be.
The backport was done while attempting to preserve API compatibility within reason, but the underlying behavior will change, mainly to provide a lot more features and flexibility. We expect that all users will happily move to the new NavigationServer, but please report issues if you see behavior changes for the worse when upgrading from 3.4.
Physics interpolation (3D) (GH-52846 ) In Godot, while physics runs at a fixed tick rate, frames can actually display at a wide variety of frame rates, depending on the player’s hardware. This can lead to a problem, when the movement of objects (which tends to occur on physics ticks) does not line up with the rendered frames, giving unsightly jitter.
Thanks to lawnjelly ’s expertise, you will now find a sweet new option hidden in the project settings. Switch on physics/common/physics_interpolation
, and Godot will now automatically interpolate objects on rendered frames so they look super smooth.
In order to benefit you should be moving your objects and running your game logic in _physics_process()
. This ensures your game will run the same on all machines. Full details are available in the updated docs .
Fixed timestep interpolation is 3D only for now, but watch this space as we plan to add 2D support after initial feedback and bugfixing on the 3D version.
OccluderShapePolygon (3D) (GH-57361 ) Following on from the addition of OccluderShapeSphere in 3.4 , lawnjelly now brings us a more adaptable and easy way to add basic occlusion culling in the form of the OccluderShapePolygon. Add an Occluder node to your scene, and choose to create an OccluderShapePolygon. This should show up initially as a quad.
You can move the polygon with the node transform, drag the corners to reshape it, add delete points. Anything behind the polygon will be culled from view.
It is really as simple as that to get started, place them wherever you like in your game level. Read the updated docs for details .
Android editor port (GH-57747 ) Two years ago (!), thebestnom started working on an Android port of the Godot editor (GH-36776 ). Since the Godot editor is built with Godot itself, it wasn’t too difficult to imagine compiling the editor for Android with some buildsystem changes. But a lot of work was needed to actually make this compiled version work decently on an Android device, with improved mouse and keyboard support, better touch input, as well as being able to run the project on top of the editor like on desktop.
With a lot of testing from interested users, things progressed slowly but steadily, and our Android maintainer Fredia Huya-Kouadio (m4gr3d ) put the finishing touches to get this work merged for Godot 3.5 (GH-57747 ). The current version doesn’t have a lot of mobile specific changes, so it’s only really usable on a tablet with keyboard and mouse - but the foundation is there to improve upon, and we’re interested in your feedback and ideas son how to make the Godot experience more mobile friendly!
From now on you’ll find builds of the Android editor as <godot_version>_android_editor.apk
in the download repository. Note that builds are currently not signed, so you will get a warning on install. Give it a try!
With helpful input from contributors Dan Edwards (Gromph ) and Péter Magyar (Relintai ), Fredia was also able to fix the low processor usage mode on Android (GH-59606 ), which the editor port uses. It should now work fine for users who make non-game applications or non real-time games on Android and want to preserve battery life.
New Label3D and TextMesh backported from Godot 4.0 (GH-61276 , GH-61281 ) Long awaited, Godot now provides a Label3D node out of the box to display text in 3D scenes. And for more advanced use cases, there is now also TextMesh to generate 3D meshes from font glyphs, so you can add Word Art to your scenes ;)
Both features were implemented by our text rendering expert bruvzg in the master
branch for Godot 4.0, and backported to 3.5.
New SceneTreeTween backported from Godot 4.0 (GH-60581 ) Tomasz Chabora (KoBeWi ) completely overhauled the Tween class in Godot 4.0 to make it a lot more powerful and flexible. Early testers so far seemed to like, and Haoyu Qiu (timothyqiu ) decided to backport the feature to Godot 3.5 as SceneTreeTween
(to keep the pre-existing Tween
and thus preserve compatibility). So you now have two separate Tween implementations and can use to keep using the original 3.x one, or adopt the new API from 4.0.
Scene unique nodes (GH-60527 ) To help with the common task of accessing specific nodes from scripts, Juan Linietsky (reduz ) added the concept of “scene unique names” for nodes in the master
branch (GH-60298 ), and Tomasz backported it for 3.5. Nodes with a scene unique name can be referenced easily within their scene using a new %
name prefix, like so: get_node("%MyUniqueNode")
. This is particularly useful for GUI if you need to locate a specific Control node which might move in the scene tree as you refactor things.
Add push, pull, fetch and improved diff view to VCS UI (GH-53900 ) Aged like fine wine, Meru Patel (Janglee123 )’s work from Google Summer of Code 2020 has been continued and updated by GSoC 2019 alumni Twarit Waikar (ChronicallySerious )!
What is it? A lot of new features for Version Control Systems (VCS) integration in the Godot editor, such as push, pull, and fetch operations, as well as a very nice diff view UI. All these features have been implemented in the official Git integration plugin . Check out the Releases page for the latest 2.x plugin release supporting Godot 3.5.
And more! 3D: Add Label3D node and Sprite3D material render priority (GH-61276 ). 3D: Add TextMesh and expose dynamic font vector outlines (GH-61281 ). Android: Initial port of the Godot editor (GH-57747 ). Android: Add full support for Android scoped storage (GH-51815 ). Android: Upgrade Android NDK to r23 LTS (GH-61692 ). Android: Fix flickering issues with low processor mode (GH-59606 ). Android: Update editor default display scale, allow resizing windows (GH-59868 , GH-59861 , GH-59880 ). Android: Fix the logic to restart the Godot application (GH-61332 ). Android: Fix broken scroll gesture on UI (GH-62290 ). Animation: Add option to paste animation as duplicate (GH-60226 ). Animation: New SceneTreeTween backported from Godot 4.0 (GH-60581 ). Animation: Fix AnimatedSprite doesn’t emit animation_finished
when changing playback direction (GH-61085 ). Audio: Allow configuring loop mode on WAV import (GH-59170 ). Audio: Instance audio streams before AudioServer::lock
call (GH-59413 ). Audio: Fix crash in AudioServer when switching audio devices with different audio channels count (GH-59778 ). C#: Fix Android AAB export failing to load native libs (GH-57420 ). Core: Add scene unique nodes (GH-60527 ). Core: Add GradientTexture2D (GH-54824 ). Core: Allow pinning property values + Consistent property defaults (GH-52943 ). Core: Support deep comparison of Array and Dictionary (GH-42625 ). Core: Add visibility to CanvasLayer (GH-57900 ). Core: Add a signal to notify when children nodes enter or exit tree (GH-57541 ). Core: Add fill method to Array and Pool*Array (GH-60426 ). Core: Expose OS.move_to_trash()
(GH-60542 ). Core: Crash handler: Use print_error to include backtrace in logs (GH-60782 ). Core: Allow AStar/AStar2D with zero point weight (GH-60812 ). Core: Add search methods for pool arrays (GH-60856 ). Core: Add interpolation modes to Gradient (GH-60982 ). Debugger: Fix inspecting nested dictionaries/arrays (GH-60737 ). Debugger: Add --debug-server
command line option to listen for incoming connections (GH-60819 ). Editor: Add push, pull, fetch and improved diff view to VCS UI (GH-53900 ). Editor: Improve ColorPicker presets (GH-54439 ). Editor: Add option to only redraw vital updates (GH-53463 ). Editor: Improved region-select in the 3D editor viewport (GH-58252 ). Editor: Make property paths and categories translatable (GH-58634 ). Editor: Add property name style toggle to Inspector (GH-59313 ). Editor: Add an inspector preview for BitMap (GH-60700 ). Editor: Create onready
variables when dropping nodes and holding Ctrl (GH-60879 ). Editor: Only switch to node when node dragging it (GH-61162 ). Export: Improve embedded PCK loading and exporting (GH-60580 ). Export: Add readable export errors (GH-61624 ). GDScript: Fix variable type inference on release (GH-57851 ). GDScript: Don’t coerce default values to the export hint type (GH-58686 ). GDScript: Enable method type information on release builds (GH-59793 ). GDScript: LSP: Fix wrong parentheses for function call autocompletion (GH-59482 ). GUI: Add FlowContainer (GH-57960 ). GUI: Add alignment options to Button icons (GH-57771 ). GUI: Add type variations to Theme (GH-57942 ). GUI: Add WOFF2 font support and brotli decoder (GH-59522 ). GUI: Add a Skew property to StyleBoxFlat (GH-60592 ). GUI: Make various improvements to OptionButton (GH-61102 ). GUI: Improve RichTextLabel table filling (GH-61904 ). HTML5: Enable mbedTLS module for Crypto object (GH-61402 ). HTML5: Add preliminary support for GDNative+Threads build (GH-61989 ).Depends on cutting edge Emscripten 3.1.14, no templates provided for this export type for now. Input: Allow for mapping scancodes to current layout (GH-56015 ). Internationalization: Add binary MO translation file support (GH-59522 ). Linux: Fix window_maximized
not working reliably (GH-59767 ). Linux: Read and store joypad events in a separate thread (GH-56126 ). macOS: Implements ad-hoc signing from Linux/Windows (GH-51550 ). Navigation: Add NavigationServer with obstacle avoidance using RVO2 (GH-48395 ). Navigation: Lots of fixes and improvements to the new NavigationServer (topic:navigation
PRs ). Navigation: Backport more NavigationServer features to make it more flexible (GH-61996 ). Networking: Add proxy support for HTTPClient and the editor (GH-55988 ). Physics: Add fixed timestep interpolation for 3D (GH-52846 ).The 2D equivalent will be added later on. Physics: Bullet: KinematicBody compound shape collision fix (GH-56801 ).Fixes a lot of issues with KinematicBody collisions at the intersection between meshes when using Bullet. This was merged fairly late (3.5 RC 2), please make sure to test it. Rendering: Asynchronous shader compilation + caching (ubershader) (GH-53411 ). Rendering: Add material_overlay
property to MeshInstance (GH-50823 ). Rendering: Faster editor line drawing - Path2D and draw_line
(GH-54377 ). Rendering: Add OccluderShapePolygon (GH-57361 ). Rendering: Add support for saving multiple Images in BakedLightmap (GH-58102 ). Rendering: Bind mesh merging functionality in MeshInstance (GH-57661 ). Rendering: GLES2: Unpack blend shape arrays when necessary (GH-60829 ). Rendering: GLES3: Unbind vertex buffer before calculating blend shapes (GH-60832 ). Rendering: Portals: Show gridmaps using global mode (GH-60851 ). Rendering: Fix viewport with transparent background changed to solid black if enabling FXAA or debanding (GH-54585 ). Rendering: VisibilityNotifier: Add max_distance
feature (GH-61544 ). Rendering: CPU lightmapper: Account for ambient light settings when baking lights (GH-62260 ). Shaders: Many improvements backported from master
(GH-56794 ). UWP: Fix exporting GDNative DLLs (GH-61262 ). VisualShader: Add hints and default values to the uniform nodes (GH-56466 ). Windows: Improve console handling and execute
(GH-55987 ).This changes the editor console handling to be like on Unix systems (Linux and macOS). So Godot doesn’t open with a console by default, but you can see console output if you start it from a console yourself. You can create a batch script or shortcut to automatically start Godot from a console as in previous releases. Windows: Implement limited surrogate pairs support (better UTF-8 support, emoji fonts) (GH-54625 ). Windows: Try to convert OS::execute()
output to Unicode (GH-60920 ). Windows: Add support for handling network share paths (GH-61985 ). Thirdparty library updates: bullet 3.24, freetype 2.12.1, pcre2 10.40, CA certificates (2022-03-31). Toolchains update for official builds .Class reference and translations updates. All these need to be thoroughly tested to ensure that they work as intended in the upcoming 3.5-stable.
Changelog You can check the full changelog since 3.4-stable (chronological , or for each contributor ).
You can also review the changes between RC 4 and RC 5 .
This release is built from commit ae6059793 .
Downloads The downloads for this dev snapshot can be found directly on our repository:
Standard build (GDScript, GDNative, VisualScript).Mono build (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.182 are included in this build.Bug reports As a tester, you are encouraged to open bug reports if you experience issues with this release candidate. 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.
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 3.4.x no longer works in this 3.5 RC).
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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-5-rc-6/index.html b/article/release-candidate-godot-3-5-rc-6/index.html
index 3d9752f830..134cfe1c41 100644
--- a/article/release-candidate-godot-3-5-rc-6/index.html
+++ b/article/release-candidate-godot-3-5-rc-6/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 8 July 2022 The upcoming Godot 3.5 is now considered feature complete, and has received a lot of bugfixes and improvements over the past weeks thanks to all the testers and developers who reported and fixed issues. We are now at the Release Candidate stage, finalizing everything so that we can release 3.5-stable for all users.
At this stage we need people to test this release (and potential follow-up RCs) on as many projects as possible, to make sure that we catch non-obvious regressions that might have gone unnoticed until now. If you run into any issue, please make sure to report it on GitHub so that we can know about it and fix it!
This RC 6 has a few notable changes compared to the previous build:
In RC 4, async shader compilation and caching was enabled by default on desktop, but several users reported issues with it on some hardware. We switched it back to disabled by default for all platforms. You can enable it in the Project Settings (rendering/gles3/shaders/shader_compilation_mode
). In 3.4, input accumulation was mistakenly turned off, and we only realized this regression after 3.4 had had multiple maintenance releases. In this build we turned it back on by default, which should be beneficial for most projects, aside from those that need very precise input (multiple mouse motion events per frame). You can toggle it with Input.set_use_accumulated_input()
. Fixes to Android scoped storage support added in RC 5. Jump to the Downloads section.
As usual, you can try it live with the online version of the Godot editor updated for this release.
Highlights The main changes coming in Godot 3.5 and included in this release candidate are:
Asynchronous shader compilation + caching (ubershader) (GH-53411 ) A long awaited solution to shader compilation stuttering on OpenGL, courtesy Pedro J. Estébanez (RandomShaper )!
This new system uses an “ubershader” (big shader supporting all features, slow but compiled on startup) to fill in for all shaders initially while the more efficient and material-specific shaders get compiled asynchronously, and cached for future runs.
This means that the first time a material is used under certain conditions (types of lights, shadowing enabled or not, etc.) rendering may be slower for a second or two, but the slowdown will not be nearly as bad as the typical hiccup caused by classic synchronous compilation. On the most powerful devices it may be even unnoticeable. Please test this thoroughly and let us know how it performs on your projects.
This feature is disabled by default, and can be enabled in the Project Settings.
Add NavigationServer with obstacle avoidance using RVO2 (GH-48395 ) Jake Young (Duroxxigar ) backported the refactored and much improved navigation system that Andrea Catania (AndreaCatania ) implemented for Godot 4.0 back in 2020! Then smix8 took over the custody of this area, fixing a lot of bugs and improving the feature set greatly, with the help of Pawel Lampe (Scony ).
The new NavigationServer adds support for obstacle avoidance using the RVO2 library, and navigation meshes can now be baked at runtime. The whole API is now a lot more flexible than it used to be.
The backport was done while attempting to preserve API compatibility within reason, but the underlying behavior will change, mainly to provide a lot more features and flexibility. We expect that all users will happily move to the new NavigationServer, but please report issues if you see behavior changes for the worse when upgrading from 3.4.
Physics interpolation (3D) (GH-52846 ) In Godot, while physics runs at a fixed tick rate, frames can actually display at a wide variety of frame rates, depending on the player’s hardware. This can lead to a problem, when the movement of objects (which tends to occur on physics ticks) does not line up with the rendered frames, giving unsightly jitter.
Thanks to lawnjelly ’s expertise, you will now find a sweet new option hidden in the project settings. Switch on physics/common/physics_interpolation
, and Godot will now automatically interpolate objects on rendered frames so they look super smooth.
In order to benefit you should be moving your objects and running your game logic in _physics_process()
. This ensures your game will run the same on all machines. Full details are available in the updated docs .
Fixed timestep interpolation is 3D only for now, but watch this space as we plan to add 2D support after initial feedback and bugfixing on the 3D version.
OccluderShapePolygon (3D) (GH-57361 ) Following on from the addition of OccluderShapeSphere in 3.4 , lawnjelly now brings us a more adaptable and easy way to add basic occlusion culling in the form of the OccluderShapePolygon. Add an Occluder node to your scene, and choose to create an OccluderShapePolygon. This should show up initially as a quad.
You can move the polygon with the node transform, drag the corners to reshape it, add delete points. Anything behind the polygon will be culled from view.
It is really as simple as that to get started, place them wherever you like in your game level. Read the updated docs for details .
Android editor port (GH-57747 ) Two years ago (!), thebestnom started working on an Android port of the Godot editor (GH-36776 ). Since the Godot editor is built with Godot itself, it wasn’t too difficult to imagine compiling the editor for Android with some buildsystem changes. But a lot of work was needed to actually make this compiled version work decently on an Android device, with improved mouse and keyboard support, better touch input, as well as being able to run the project on top of the editor like on desktop.
With a lot of testing from interested users, things progressed slowly but steadily, and our Android maintainer Fredia Huya-Kouadio (m4gr3d ) put the finishing touches to get this work merged for Godot 3.5 (GH-57747 ). The current version doesn’t have a lot of mobile specific changes, so it’s only really usable on a tablet with keyboard and mouse - but the foundation is there to improve upon, and we’re interested in your feedback and ideas son how to make the Godot experience more mobile friendly!
From now on you’ll find builds of the Android editor as <godot_version>_android_editor.apk
in the download repository. Note that builds are currently not signed, so you will get a warning on install. Give it a try!
With helpful input from contributors Dan Edwards (Gromph ) and Péter Magyar (Relintai ), Fredia was also able to fix the low processor usage mode on Android (GH-59606 ), which the editor port uses. It should now work fine for users who make non-game applications or non real-time games on Android and want to preserve battery life.
New Label3D and TextMesh backported from Godot 4.0 (GH-61276 , GH-61281 ) Long awaited, Godot now provides a Label3D node out of the box to display text in 3D scenes. And for more advanced use cases, there is now also TextMesh to generate 3D meshes from font glyphs, so you can add Word Art to your scenes ;)
Both features were implemented by our text rendering expert bruvzg in the master
branch for Godot 4.0, and backported to 3.5.
New SceneTreeTween backported from Godot 4.0 (GH-60581 ) Tomasz Chabora (KoBeWi ) completely overhauled the Tween class in Godot 4.0 to make it a lot more powerful and flexible. Early testers so far seemed to like, and Haoyu Qiu (timothyqiu ) decided to backport the feature to Godot 3.5 as SceneTreeTween
(to keep the pre-existing Tween
and thus preserve compatibility). So you now have two separate Tween implementations and can use to keep using the original 3.x one, or adopt the new API from 4.0.
Scene unique nodes (GH-60527 ) To help with the common task of accessing specific nodes from scripts, Juan Linietsky (reduz ) added the concept of “scene unique names” for nodes in the master
branch (GH-60298 ), and Tomasz backported it for 3.5. Nodes with a scene unique name can be referenced easily within their scene using a new %
name prefix, like so: get_node("%MyUniqueNode")
. This is particularly useful for GUI if you need to locate a specific Control node which might move in the scene tree as you refactor things.
Add push, pull, fetch and improved diff view to VCS UI (GH-53900 ) Aged like fine wine, Meru Patel (Janglee123 )’s work from Google Summer of Code 2020 has been continued and updated by GSoC 2019 alumni Twarit Waikar (ChronicallySerious )!
What is it? A lot of new features for Version Control Systems (VCS) integration in the Godot editor, such as push, pull, and fetch operations, as well as a very nice diff view UI. All these features have been implemented in the official Git integration plugin . Check out the Releases page for the latest 2.x plugin release supporting Godot 3.5.
And more! 3D: Add Label3D node and Sprite3D material render priority (GH-61276 ). 3D: Add TextMesh and expose dynamic font vector outlines (GH-61281 ). 3D: Add process_mode
property to InterpolatedCamera (GH-41402 ). Android: Initial port of the Godot editor (GH-57747 ). Android: Add full support for Android scoped storage (GH-51815 ). Android: Upgrade Android NDK to r23 LTS (GH-61692 ). Android: Fix flickering issues with low processor mode (GH-59606 ). Android: Update editor default display scale, allow resizing windows (GH-59868 , GH-59861 , GH-59880 ). Android: Fix the logic to restart the Godot application (GH-61332 ). Android: Fix broken scroll gesture on UI (GH-62290 ). Animation: Add option to paste animation as duplicate (GH-60226 ). Animation: New SceneTreeTween backported from Godot 4.0 (GH-60581 ). Animation: Fix AnimatedSprite doesn’t emit animation_finished
when changing playback direction (GH-61085 ). Audio: Allow configuring loop mode on WAV import (GH-59170 ). Audio: Add support for 64-bit IEEE float WAV encoding (GH-61169 ). Audio: Instance audio streams before AudioServer::lock
call (GH-59413 ). Audio: Fix crash in AudioServer when switching audio devices with different audio channels count (GH-59778 ). C#: Fix Android AAB export failing to load native libs (GH-57420 ). Core: Add scene unique nodes (GH-60527 ). Core: Add GradientTexture2D (GH-54824 ). Core: Allow pinning property values + Consistent property defaults (GH-52943 ). Core: Support deep comparison of Array and Dictionary (GH-42625 ). Core: Add visibility to CanvasLayer (GH-57900 ). Core: Add a signal to notify when children nodes enter or exit tree (GH-57541 ). Core: Add fill method to Array and Pool*Array (GH-60426 ). Core: Expose OS.move_to_trash()
(GH-60542 ). Core: Crash handler: Use print_error to include backtrace in logs (GH-60782 ). Core: Allow AStar/AStar2D with zero point weight (GH-60812 ). Core: Add search methods for pool arrays (GH-60856 ). Core: Add interpolation modes to Gradient (GH-60982 ). Debugger: Fix inspecting nested dictionaries/arrays (GH-60737 ). Debugger: Add --debug-server
command line option to listen for incoming connections (GH-60819 ). Editor: Add push, pull, fetch and improved diff view to VCS UI (GH-53900 ). Editor: Improve ColorPicker presets (GH-54439 ). Editor: Add option to only redraw vital updates (GH-53463 ). Editor: Improved region-select in the 3D editor viewport (GH-58252 ). Editor: Make property paths and categories translatable (GH-58634 ). Editor: Add property name style toggle to Inspector (GH-59313 ). Editor: Add an inspector preview for BitMap (GH-60700 ). Editor: Create onready
variables when dropping nodes and holding Ctrl (GH-60879 ). Editor: Only switch to node when node dragging it (GH-61162 ). Editor: Fix editor-only visibility for lights (GH-62335 ). Export: Improve embedded PCK loading and exporting (GH-60580 ). Export: Add readable export errors (GH-61624 ). GDNative: Add Core API 1.3 with Pool*Array
sort
and has
, and PoolStringArray.join
(GH-55650 , GH-55826 ). GDScript: Fix variable type inference on release (GH-57851 ). GDScript: Don’t coerce default values to the export hint type (GH-58686 ). GDScript: Enable method type information on release builds (GH-59793 ). GDScript: Fix autocompletion showing core class names with an underscore (GH-62731 ). GDScript: LSP: Fix wrong parentheses for function call autocompletion (GH-59482 ). GUI: Add FlowContainer (GH-57960 ). GUI: Add alignment options to Button icons (GH-57771 ). GUI: Add type variations to Theme (GH-57942 ). GUI: Add WOFF2 font support and brotli decoder (GH-59522 ). GUI: Add a Skew property to StyleBoxFlat (GH-60592 ). GUI: Make various improvements to OptionButton (GH-61102 ). GUI: Improve RichTextLabel table filling (GH-61904 ). HTML5: Enable mbedTLS module for Crypto object (GH-61402 ). HTML5: Add preliminary support for GDNative+Threads build (GH-61989 ).Depends on cutting edge Emscripten 3.1.14, no templates provided for this export type for now. Import: glTF: Fix light intensity and attenuation import (GH-62747 ). Input: Re-enable input accumulation disabled by error in 3.4 (GH-62826 ). Input: Allow for mapping scancodes to current layout (GH-56015 ). Internationalization: Add binary MO translation file support (GH-59522 ). Linux: Fix window_maximized
not working reliably (GH-59767 ). Linux: Read and store joypad events in a separate thread (GH-56126 ). macOS: Implements ad-hoc signing from Linux/Windows (GH-51550 ). Navigation: Add NavigationServer with obstacle avoidance using RVO2 (GH-48395 ). Navigation: Lots of fixes and improvements to the new NavigationServer (topic:navigation
PRs ). Navigation: Backport more NavigationServer features to make it more flexible (GH-61996 ). Networking: Add proxy support for HTTPClient and the editor (GH-55988 ). Physics: Add fixed timestep interpolation for 3D (GH-52846 ).The 2D equivalent will be added later on. Physics: Bullet: KinematicBody compound shape collision fix (GH-56801 ).Fixes a lot of issues with KinematicBody collisions at the intersection between meshes when using Bullet. This was merged fairly late (3.5 RC 2), please make sure to test it. Physics: Bullet: Do not set gravity and damping when Custom Integrator is enabled (GH-62708 ). Rendering: Asynchronous shader compilation + caching (ubershader) (GH-53411 ). Rendering: Add material_overlay
property to MeshInstance (GH-50823 ). Rendering: Faster editor line drawing - Path2D and draw_line
(GH-54377 ). Rendering: Add OccluderShapePolygon (GH-57361 ). Rendering: Add support for saving multiple Images in BakedLightmap (GH-58102 ). Rendering: Bind mesh merging functionality in MeshInstance (GH-57661 ). Rendering: GLES2: Unpack blend shape arrays when necessary (GH-60829 ). Rendering: GLES3: Unbind vertex buffer before calculating blend shapes (GH-60832 ). Rendering: Portals: Show gridmaps using global mode (GH-60851 ). Rendering: Fix viewport with transparent background changed to solid black if enabling FXAA or debanding (GH-54585 ). Rendering: VisibilityNotifier: Add max_distance
feature (GH-61544 ). Rendering: CPU lightmapper: Account for ambient light settings when baking lights (GH-62260 ). Shaders: Many improvements backported from master
(GH-56794 ). UWP: Fix exporting GDNative DLLs (GH-61262 ). VisualShader: Add hints and default values to the uniform nodes (GH-56466 ). Windows: Improve console handling and execute
(GH-55987 ).This changes the editor console handling to be like on Unix systems (Linux and macOS). So Godot doesn’t open with a console by default, but you can see console output if you start it from a console yourself. You can create a batch script or shortcut to automatically start Godot from a console as in previous releases. Windows: Implement limited surrogate pairs support (better UTF-8 support, emoji fonts) (GH-54625 ). Windows: Try to convert OS::execute()
output to Unicode (GH-60920 ). Windows: Add support for handling network share paths (GH-61985 ). Thirdparty library updates: bullet 3.24, freetype 2.12.1, pcre2 10.40, CA certificates (2022-03-31). Toolchains update for official builds .Class reference and translations updates. All these need to be thoroughly tested to ensure that they work as intended in the upcoming 3.5-stable.
Changelog You can check the full changelog since 3.4-stable (chronological , or for each contributor ).
You can also review the changes between RC 5 and RC 6 .
This release is built from commit f05cecdc4 .
Downloads The downloads for this dev snapshot can be found directly on our repository:
Standard build (GDScript, GDNative, VisualScript).Mono build (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.182 are included in this build.Bug reports As a tester, you are encouraged to open bug reports if you experience issues with this release candidate. 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.
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 3.4.x no longer works in this 3.5 RC).
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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-5-rc-7/index.html b/article/release-candidate-godot-3-5-rc-7/index.html
index 9f2d92a636..686003e3f6 100644
--- a/article/release-candidate-godot-3-5-rc-7/index.html
+++ b/article/release-candidate-godot-3-5-rc-7/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 22 July 2022 The upcoming Godot 3.5 is now considered feature complete, and has received a lot of bugfixes and improvements over the past weeks thanks to all the testers and developers who reported and fixed issues. We are now at the Release Candidate stage, finalizing everything so that we can release 3.5-stable for all users.
At this stage we need people to test this release (and potential follow-up RCs) on as many projects as possible, to make sure that we catch non-obvious regressions that might have gone unnoticed until now. If you run into any issue, please make sure to report it on GitHub so that we can know about it and fix it!
This RC 7 has a few notable changes compared to the previous build:
Fix accumulated input handling on iOS. Fix a regression with file copy performance on Android. Ignore support for S3TC texture compression on Android and iOS devices in GLES3 (already done since 3.4 for GLES2). Add global_translation
and global_rotation
to Spatial. Jump to the Downloads section.
As usual, you can try it live with the online version of the Godot editor updated for this release.
Highlights The main changes coming in Godot 3.5 and included in this release candidate are:
Asynchronous shader compilation + caching (ubershader) (GH-53411 ) A long awaited solution to shader compilation stuttering on OpenGL, courtesy Pedro J. Estébanez (RandomShaper )!
This new system uses an “ubershader” (big shader supporting all features, slow but compiled on startup) to fill in for all shaders initially while the more efficient and material-specific shaders get compiled asynchronously, and cached for future runs.
This means that the first time a material is used under certain conditions (types of lights, shadowing enabled or not, etc.) rendering may be slower for a second or two, but the slowdown will not be nearly as bad as the typical hiccup caused by classic synchronous compilation. On the most powerful devices it may be even unnoticeable. Please test this thoroughly and let us know how it performs on your projects.
This feature is disabled by default, and can be enabled in the Project Settings.
Add NavigationServer with obstacle avoidance using RVO2 (GH-48395 ) Jake Young (Duroxxigar ) backported the refactored and much improved navigation system that Andrea Catania (AndreaCatania ) implemented for Godot 4.0 back in 2020! Then smix8 took over the custody of this area, fixing a lot of bugs and improving the feature set greatly, with the help of Pawel Lampe (Scony ).
The new NavigationServer adds support for obstacle avoidance using the RVO2 library, and navigation meshes can now be baked at runtime. The whole API is now a lot more flexible than it used to be.
The backport was done while attempting to preserve API compatibility within reason, but the underlying behavior will change, mainly to provide a lot more features and flexibility. We expect that all users will happily move to the new NavigationServer, but please report issues if you see behavior changes for the worse when upgrading from 3.4.
Physics interpolation (3D) (GH-52846 ) In Godot, while physics runs at a fixed tick rate, frames can actually display at a wide variety of frame rates, depending on the player’s hardware. This can lead to a problem, when the movement of objects (which tends to occur on physics ticks) does not line up with the rendered frames, giving unsightly jitter.
Thanks to lawnjelly ’s expertise, you will now find a sweet new option hidden in the project settings. Switch on physics/common/physics_interpolation
, and Godot will now automatically interpolate objects on rendered frames so they look super smooth.
In order to benefit you should be moving your objects and running your game logic in _physics_process()
. This ensures your game will run the same on all machines. Full details are available in the updated docs .
Fixed timestep interpolation is 3D only for now, but watch this space as we plan to add 2D support after initial feedback and bugfixing on the 3D version.
OccluderShapePolygon (3D) (GH-57361 ) Following on from the addition of OccluderShapeSphere in 3.4 , lawnjelly now brings us a more adaptable and easy way to add basic occlusion culling in the form of the OccluderShapePolygon. Add an Occluder node to your scene, and choose to create an OccluderShapePolygon. This should show up initially as a quad.
You can move the polygon with the node transform, drag the corners to reshape it, add delete points. Anything behind the polygon will be culled from view.
It is really as simple as that to get started, place them wherever you like in your game level. Read the updated docs for details .
Android editor port (GH-57747 ) Two years ago (!), thebestnom started working on an Android port of the Godot editor (GH-36776 ). Since the Godot editor is built with Godot itself, it wasn’t too difficult to imagine compiling the editor for Android with some buildsystem changes. But a lot of work was needed to actually make this compiled version work decently on an Android device, with improved mouse and keyboard support, better touch input, as well as being able to run the project on top of the editor like on desktop.
With a lot of testing from interested users, things progressed slowly but steadily, and our Android maintainer Fredia Huya-Kouadio (m4gr3d ) put the finishing touches to get this work merged for Godot 3.5 (GH-57747 ). The current version doesn’t have a lot of mobile specific changes, so it’s only really usable on a tablet with keyboard and mouse - but the foundation is there to improve upon, and we’re interested in your feedback and ideas son how to make the Godot experience more mobile friendly!
From now on you’ll find builds of the Android editor as <godot_version>_android_editor.apk
in the download repository. Note that builds are currently not signed, so you will get a warning on install. Give it a try!
With helpful input from contributors Dan Edwards (Gromph ) and Péter Magyar (Relintai ), Fredia was also able to fix the low processor usage mode on Android (GH-59606 ), which the editor port uses. It should now work fine for users who make non-game applications or non real-time games on Android and want to preserve battery life.
New Label3D and TextMesh backported from Godot 4.0 (GH-61276 , GH-61281 ) Long awaited, Godot now provides a Label3D node out of the box to display text in 3D scenes. And for more advanced use cases, there is now also TextMesh to generate 3D meshes from font glyphs, so you can add Word Art to your scenes ;)
Both features were implemented by our text rendering expert bruvzg in the master
branch for Godot 4.0, and backported to 3.5.
New SceneTreeTween backported from Godot 4.0 (GH-60581 ) Tomasz Chabora (KoBeWi ) completely overhauled the Tween class in Godot 4.0 to make it a lot more powerful and flexible. Early testers so far seemed to like, and Haoyu Qiu (timothyqiu ) decided to backport the feature to Godot 3.5 as SceneTreeTween
(to keep the pre-existing Tween
and thus preserve compatibility). So you now have two separate Tween implementations and can use to keep using the original 3.x one, or adopt the new API from 4.0.
Scene unique nodes (GH-60527 ) To help with the common task of accessing specific nodes from scripts, Juan Linietsky (reduz ) added the concept of “scene unique names” for nodes in the master
branch (GH-60298 ), and Tomasz backported it for 3.5. Nodes with a scene unique name can be referenced easily within their scene using a new %
name prefix, like so: get_node("%MyUniqueNode")
. This is particularly useful for GUI if you need to locate a specific Control node which might move in the scene tree as you refactor things.
Add push, pull, fetch and improved diff view to VCS UI (GH-53900 ) Aged like fine wine, Meru Patel (Janglee123 )’s work from Google Summer of Code 2020 has been continued and updated by GSoC 2019 alumni Twarit Waikar (ChronicallySerious )!
What is it? A lot of new features for Version Control Systems (VCS) integration in the Godot editor, such as push, pull, and fetch operations, as well as a very nice diff view UI. All these features have been implemented in the official Git integration plugin . Check out the Releases page for the latest 2.x plugin release supporting Godot 3.5.
And more! 2D: Fix Camera2D position not updating correctly (GH-63084 ). 2D: Fix CanvasItem not exiting its canvas group on canvas exit (GH-63234 ). 3D: Add Label3D node and Sprite3D material render priority (GH-61276 ). 3D: Add TextMesh and expose dynamic font vector outlines (GH-61281 ). 3D: Add process_mode
property to InterpolatedCamera (GH-41402 ). 3D: Add global_translation
and global_rotation
to Spatial (GH-63058 ). Android: Initial port of the Godot editor (GH-57747 ). Android: Add full support for Android scoped storage (GH-51815 ). Android: Upgrade Android NDK to r23 LTS (GH-61692 ). Android: Fix flickering issues with low processor mode (GH-59606 ). Android: Update editor default display scale, allow resizing windows (GH-59868 , GH-59861 , GH-59880 ). Android: Fix the logic to restart the Godot application (GH-61332 ). Android: Fix broken scroll gesture on UI (GH-62290 ). Animation: Add option to paste animation as duplicate (GH-60226 ). Animation: New SceneTreeTween backported from Godot 4.0 (GH-60581 ). Animation: Fix AnimatedSprite doesn’t emit animation_finished
when changing playback direction (GH-61085 ). Audio: Allow configuring loop mode on WAV import (GH-59170 ). Audio: Add support for 64-bit IEEE float WAV encoding (GH-61169 ). Audio: Instance audio streams before AudioServer::lock
call (GH-59413 ). Audio: Fix crash in AudioServer when switching audio devices with different audio channels count (GH-59778 ). Buildsystem: Default num_jobs
to max CPUs minus 1 if not specified (GH-63087 ). C#: Fix Android AAB export failing to load native libs (GH-57420 ). Core: Add scene unique nodes (GH-60527 ). Core: Add GradientTexture2D (GH-54824 ). Core: Allow pinning property values + Consistent property defaults (GH-52943 ). Core: Support deep comparison of Array and Dictionary (GH-42625 ). Core: Add visibility to CanvasLayer (GH-57900 ). Core: Add a signal to notify when children nodes enter or exit tree (GH-57541 ). Core: Add fill method to Array and Pool*Array (GH-60426 ). Core: Expose OS.move_to_trash()
(GH-60542 ). Core: Crash handler: Use print_error to include backtrace in logs (GH-60782 ). Core: Allow AStar/AStar2D with zero point weight (GH-60812 ). Core: Add search methods for pool arrays (GH-60856 ). Core: Add interpolation modes to Gradient (GH-60982 ). Core: Fix platform-specific issues with OS.set_current_screen()
(GH-63192 ). Debugger: Fix inspecting nested dictionaries/arrays (GH-60737 ). Debugger: Add --debug-server
command line option to listen for incoming connections (GH-60819 ). Editor: Add push, pull, fetch and improved diff view to VCS UI (GH-53900 ). Editor: Improve ColorPicker presets (GH-54439 ). Editor: Add option to only redraw vital updates (GH-53463 ). Editor: Improved region-select in the 3D editor viewport (GH-58252 ). Editor: Make property paths and categories translatable (GH-58634 ). Editor: Add property name style toggle to Inspector (GH-59313 ). Editor: Add an inspector preview for BitMap (GH-60700 ). Editor: Create onready
variables when dropping nodes and holding Ctrl (GH-60879 ). Editor: Only switch to node when node dragging it (GH-61162 ). Editor: Fix editor-only visibility for lights (GH-62335 ). Export: Improve embedded PCK loading and exporting (GH-60580 ). Export: Add readable export errors (GH-61624 ). GDNative: Add Core API 1.3 with methods: Dictionary.merge()
, Pool*Array
has()
and sort()
, PoolStringArray.join()
, String
join()
, num_uint64()
and num_uint64_capitalized()
. GDScript: Fix variable type inference on release (GH-57851 ). GDScript: Don’t coerce default values to the export hint type (GH-58686 ). GDScript: Enable method type information on release builds (GH-59793 ). GDScript: Fix autocompletion showing core class names with an underscore (GH-62731 ). GDScript: LSP: Fix wrong parentheses for function call autocompletion (GH-59482 ). GUI: Add FlowContainer (GH-57960 ). GUI: Add alignment options to Button icons (GH-57771 ). GUI: Add type variations to Theme (GH-57942 ). GUI: Add WOFF2 font support and brotli decoder (GH-59522 ). GUI: Add a Skew property to StyleBoxFlat (GH-60592 ). GUI: Make various improvements to OptionButton (GH-61102 ). GUI: Improve RichTextLabel table filling (GH-61904 ). HTML5: Enable mbedTLS module for Crypto object (GH-61402 ). HTML5: Add preliminary support for GDNative+Threads build (GH-61989 ).Depends on cutting edge Emscripten 3.1.14, no templates provided for this export type for now. Import: glTF: Fix light intensity and attenuation import (GH-62747 ). Input: Re-enable input accumulation disabled by error in 3.4 (GH-62826 ). Input: Allow for mapping scancodes to current layout (GH-56015 ). Internationalization: Add binary MO translation file support (GH-59522 ). iOS: Flush accumulated input events (GH-62842 ). Linux: Fix window_maximized
not working reliably (GH-59767 ). Linux: Read and store joypad events in a separate thread (GH-56126 ). macOS: Implements ad-hoc signing from Linux/Windows (GH-51550 ). Navigation: Add NavigationServer with obstacle avoidance using RVO2 (GH-48395 ). Navigation: Lots of fixes and improvements to the new NavigationServer (topic:navigation
PRs ). Navigation: Backport more NavigationServer features to make it more flexible (GH-61996 ). Networking: Add proxy support for HTTPClient and the editor (GH-55988 ). Networking: Add NetworkedMultiplayerCustom so high-level multiplayer backends can be added from scripts (GH-63163 ). Physics: Add fixed timestep interpolation for 3D (GH-52846 ).The 2D equivalent will be added later on. Physics: Bullet: KinematicBody compound shape collision fix (GH-56801 ).Fixes a lot of issues with KinematicBody collisions at the intersection between meshes when using Bullet. This was merged fairly late (3.5 RC 2), please make sure to test it. Physics: Bullet: Do not set gravity and damping when Custom Integrator is enabled (GH-62708 ). Physics: Fix the calculation of the angular velocity (GH-63190 ). Rendering: Asynchronous shader compilation + caching (ubershader) (GH-53411 ). Rendering: Add material_overlay
property to MeshInstance (GH-50823 ). Rendering: Faster editor line drawing - Path2D and draw_line
(GH-54377 ). Rendering: Add OccluderShapePolygon (GH-57361 ). Rendering: Add support for saving multiple Images in BakedLightmap (GH-58102 ). Rendering: Bind mesh merging functionality in MeshInstance (GH-57661 ). Rendering: GLES2: Unpack blend shape arrays when necessary (GH-60829 ). Rendering: GLES3: Ignore support for S3TC texture compression on Android and iOS devices (GH-62909 ).Few devices support this compression while they all support ETC2. Godot exports ETC2 by default and doesn’t take into account that mobile devices could need S3TC. Rendering: GLES3: Unbind vertex buffer before calculating blend shapes (GH-60832 ). Rendering: Portals: Show gridmaps using global mode (GH-60851 ). Rendering: Fix viewport with transparent background changed to solid black if enabling FXAA or debanding (GH-54585 ). Rendering: VisibilityNotifier: Add max_distance
feature (GH-61544 ). Rendering: CPU lightmapper: Account for ambient light settings when baking lights (GH-62260 ). Shaders: Many improvements backported from master
(GH-56794 ). UWP: Fix exporting GDNative DLLs (GH-61262 ). VisualShader: Add hints and default values to the uniform nodes (GH-56466 ). Windows: Improve console handling and execute
(GH-55987 ).This changes the editor console handling to be like on Unix systems (Linux and macOS). So Godot doesn’t open with a console by default, but you can see console output if you start it from a console yourself. You can create a batch script or shortcut to automatically start Godot from a console as in previous releases. Windows: Implement limited surrogate pairs support (better UTF-8 support, emoji fonts) (GH-54625 ). Windows: Try to convert OS::execute()
output to Unicode (GH-60920 ). Windows: Add support for handling network share paths (GH-61985 ). Thirdparty library updates: bullet 3.24, freetype 2.12.1, mbedtls 2.28.1, pcre2 10.40, CA certificates (2022-03-31), SDL GameControllerDB from 2022-07-15. Toolchains update for official builds .Class reference and translations updates. All these need to be thoroughly tested to ensure that they work as intended in the upcoming 3.5-stable.
Changelog You can check the full changelog since 3.4-stable (chronological , or for each contributor ).
You can also review the changes between RC 6 and RC 7 .
This release is built from commit 38b95cc2f .
Downloads The downloads for this dev snapshot can be found directly on our repository:
Standard build (GDScript, GDNative, VisualScript).Mono build (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.182 are included in this build.Bug reports As a tester, you are encouraged to open bug reports if you experience issues with this release candidate. 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.
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 3.4.x no longer works in this 3.5 RC).
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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-5-rc-8/index.html b/article/release-candidate-godot-3-5-rc-8/index.html
index 68d2d588b3..12aa45b8e4 100644
--- a/article/release-candidate-godot-3-5-rc-8/index.html
+++ b/article/release-candidate-godot-3-5-rc-8/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 28 July 2022 The upcoming Godot 3.5 is now considered feature complete, and has received a lot of bugfixes and improvements over the past weeks thanks to all the testers and developers who reported and fixed issues. We are now at the Release Candidate stage, finalizing everything so that we can release 3.5-stable for all users.
At this stage it’s really close to stable, we just had a few more regression fixes merged since the previous build that warrant another build for testing:
Android: Address remaining scoped storage regressions (GH-63480 ). UWP: Flush buffered input events (GH-63341 ). Jump to the Downloads section.
As usual, you can try it live with the online version of the Godot editor updated for this release.
Highlights The main changes coming in Godot 3.5 and included in this release candidate are:
Asynchronous shader compilation + caching (ubershader) (GH-53411 ) A long awaited solution to shader compilation stuttering on OpenGL, courtesy Pedro J. Estébanez (RandomShaper )!
This new system uses an “ubershader” (big shader supporting all features, slow but compiled on startup) to fill in for all shaders initially while the more efficient and material-specific shaders get compiled asynchronously, and cached for future runs.
This means that the first time a material is used under certain conditions (types of lights, shadowing enabled or not, etc.) rendering may be slower for a second or two, but the slowdown will not be nearly as bad as the typical hiccup caused by classic synchronous compilation. On the most powerful devices it may be even unnoticeable. Please test this thoroughly and let us know how it performs on your projects.
This feature is disabled by default, and can be enabled in the Project Settings.
Add NavigationServer with obstacle avoidance using RVO2 (GH-48395 ) Jake Young (Duroxxigar ) backported the refactored and much improved navigation system that Andrea Catania (AndreaCatania ) implemented for Godot 4.0 back in 2020! Then smix8 took over the custody of this area, fixing a lot of bugs and improving the feature set greatly, with the help of Pawel Lampe (Scony ).
The new NavigationServer adds support for obstacle avoidance using the RVO2 library, and navigation meshes can now be baked at runtime. The whole API is now a lot more flexible than it used to be.
The backport was done while attempting to preserve API compatibility within reason, but the underlying behavior will change, mainly to provide a lot more features and flexibility. We expect that all users will happily move to the new NavigationServer, but please report issues if you see behavior changes for the worse when upgrading from 3.4.
Physics interpolation (3D) (GH-52846 ) In Godot, while physics runs at a fixed tick rate, frames can actually display at a wide variety of frame rates, depending on the player’s hardware. This can lead to a problem, when the movement of objects (which tends to occur on physics ticks) does not line up with the rendered frames, giving unsightly jitter.
Thanks to lawnjelly ’s expertise, you will now find a sweet new option hidden in the project settings. Switch on physics/common/physics_interpolation
, and Godot will now automatically interpolate objects on rendered frames so they look super smooth.
In order to benefit you should be moving your objects and running your game logic in _physics_process()
. This ensures your game will run the same on all machines. Full details are available in the updated docs .
Fixed timestep interpolation is 3D only for now, but watch this space as we plan to add 2D support after initial feedback and bugfixing on the 3D version.
OccluderShapePolygon (3D) (GH-57361 ) Following on from the addition of OccluderShapeSphere in 3.4 , lawnjelly now brings us a more adaptable and easy way to add basic occlusion culling in the form of the OccluderShapePolygon. Add an Occluder node to your scene, and choose to create an OccluderShapePolygon. This should show up initially as a quad.
You can move the polygon with the node transform, drag the corners to reshape it, add delete points. Anything behind the polygon will be culled from view.
It is really as simple as that to get started, place them wherever you like in your game level. Read the updated docs for details .
Android editor port (GH-57747 ) Two years ago (!), thebestnom started working on an Android port of the Godot editor (GH-36776 ). Since the Godot editor is built with Godot itself, it wasn’t too difficult to imagine compiling the editor for Android with some buildsystem changes. But a lot of work was needed to actually make this compiled version work decently on an Android device, with improved mouse and keyboard support, better touch input, as well as being able to run the project on top of the editor like on desktop.
With a lot of testing from interested users, things progressed slowly but steadily, and our Android maintainer Fredia Huya-Kouadio (m4gr3d ) put the finishing touches to get this work merged for Godot 3.5 (GH-57747 ). The current version doesn’t have a lot of mobile specific changes, so it’s only really usable on a tablet with keyboard and mouse - but the foundation is there to improve upon, and we’re interested in your feedback and ideas son how to make the Godot experience more mobile friendly!
From now on you’ll find builds of the Android editor as <godot_version>_android_editor.apk
in the download repository. Note that builds are currently not signed, so you will get a warning on install. Give it a try!
With helpful input from contributors Dan Edwards (Gromph ) and Péter Magyar (Relintai ), Fredia was also able to fix the low processor usage mode on Android (GH-59606 ), which the editor port uses. It should now work fine for users who make non-game applications or non real-time games on Android and want to preserve battery life.
New Label3D and TextMesh backported from Godot 4.0 (GH-61276 , GH-61281 ) Long awaited, Godot now provides a Label3D node out of the box to display text in 3D scenes. And for more advanced use cases, there is now also TextMesh to generate 3D meshes from font glyphs, so you can add Word Art to your scenes ;)
Both features were implemented by our text rendering expert bruvzg in the master
branch for Godot 4.0, and backported to 3.5.
New SceneTreeTween backported from Godot 4.0 (GH-60581 ) Tomasz Chabora (KoBeWi ) completely overhauled the Tween class in Godot 4.0 to make it a lot more powerful and flexible. Early testers so far seemed to like, and Haoyu Qiu (timothyqiu ) decided to backport the feature to Godot 3.5 as SceneTreeTween
(to keep the pre-existing Tween
and thus preserve compatibility). So you now have two separate Tween implementations and can use to keep using the original 3.x one, or adopt the new API from 4.0.
Scene unique nodes (GH-60527 ) To help with the common task of accessing specific nodes from scripts, Juan Linietsky (reduz ) added the concept of “scene unique names” for nodes in the master
branch (GH-60298 ), and Tomasz backported it for 3.5. Nodes with a scene unique name can be referenced easily within their scene using a new %
name prefix, like so: get_node("%MyUniqueNode")
. This is particularly useful for GUI if you need to locate a specific Control node which might move in the scene tree as you refactor things.
Add push, pull, fetch and improved diff view to VCS UI (GH-53900 ) Aged like fine wine, Meru Patel (Janglee123 )’s work from Google Summer of Code 2020 has been continued and updated by GSoC 2019 alumni Twarit Waikar (ChronicallySerious )!
What is it? A lot of new features for Version Control Systems (VCS) integration in the Godot editor, such as push, pull, and fetch operations, as well as a very nice diff view UI. All these features have been implemented in the official Git integration plugin . Check out the Releases page for the latest 2.x plugin release supporting Godot 3.5.
And more! 2D: Fix Camera2D position not updating correctly (GH-63084 ). 2D: Fix CanvasItem not exiting its canvas group on canvas exit (GH-63234 ). 3D: Add Label3D node and Sprite3D material render priority (GH-61276 ). 3D: Add TextMesh and expose dynamic font vector outlines (GH-61281 ). 3D: Add process_mode
property to InterpolatedCamera (GH-41402 ). 3D: Add global_translation
and global_rotation
to Spatial (GH-63058 ). Android: Initial port of the Godot editor (GH-57747 ). Android: Add full support for Android scoped storage (GH-51815 ). Android: Upgrade Android NDK to r23 LTS (GH-61692 ). Android: Fix flickering issues with low processor mode (GH-59606 ). Android: Update editor default display scale, allow resizing windows (GH-59868 , GH-59861 , GH-59880 ). Android: Fix the logic to restart the Godot application (GH-61332 ). Android: Fix broken scroll gesture on UI (GH-62290 ). Animation: Add option to paste animation as duplicate (GH-60226 ). Animation: New SceneTreeTween backported from Godot 4.0 (GH-60581 ). Animation: Fix AnimatedSprite doesn’t emit animation_finished
when changing playback direction (GH-61085 ). Audio: Allow configuring loop mode on WAV import (GH-59170 ). Audio: Add support for 64-bit IEEE float WAV encoding (GH-61169 ). Audio: Instance audio streams before AudioServer::lock
call (GH-59413 ). Audio: Fix crash in AudioServer when switching audio devices with different audio channels count (GH-59778 ). Buildsystem: Default num_jobs
to max CPUs minus 1 if not specified (GH-63087 ). Buildsystem: Refactor Linux linker options with linker=<bfd|gold|lld|mold>
(GH-63283 ). C#: Fix Android AAB export failing to load native libs (GH-57420 ). Core: Add scene unique nodes (GH-60527 ). Core: Add GradientTexture2D (GH-54824 ). Core: Allow pinning property values + Consistent property defaults (GH-52943 ). Core: Support deep comparison of Array and Dictionary (GH-42625 ). Core: Add visibility to CanvasLayer (GH-57900 ). Core: Add a signal to notify when children nodes enter or exit tree (GH-57541 ). Core: Add fill method to Array and Pool*Array (GH-60426 ). Core: Expose OS.move_to_trash()
(GH-60542 ). Core: Crash handler: Use print_error to include backtrace in logs (GH-60782 ). Core: Allow AStar/AStar2D with zero point weight (GH-60812 ). Core: Add search methods for pool arrays (GH-60856 ). Core: Add interpolation modes to Gradient (GH-60982 ). Core: Fix platform-specific issues with OS.set_current_screen()
(GH-63192 ). Debugger: Fix inspecting nested dictionaries/arrays (GH-60737 ). Debugger: Add --debug-server
command line option to listen for incoming connections (GH-60819 ). Editor: Add push, pull, fetch and improved diff view to VCS UI (GH-53900 ). Editor: Improve ColorPicker presets (GH-54439 ). Editor: Add option to only redraw vital updates (GH-53463 ). Editor: Improved region-select in the 3D editor viewport (GH-58252 ). Editor: Make property paths and categories translatable (GH-58634 ). Editor: Add property name style toggle to Inspector (GH-59313 ). Editor: Add an inspector preview for BitMap (GH-60700 ). Editor: Create onready
variables when dropping nodes and holding Ctrl (GH-60879 ). Editor: Only switch to node when node dragging it (GH-61162 ). Editor: Fix editor-only visibility for lights (GH-62335 ). Editor: Don’t switch to 2D/3D viewports when selecting nodes while in Script Editor (GH-63344 ). Export: Improve embedded PCK loading and exporting (GH-60580 ). Export: Add readable export errors (GH-61624 ). Export: Return 0 exit code when command line export succeeds with warnings (GH-62907 ). GDNative: Add Core API 1.3 with methods: Dictionary.merge()
, Pool*Array
has()
and sort()
, PoolStringArray.join()
, String
join()
, num_uint64()
and num_uint64_capitalized()
. GDScript: Fix variable type inference on release (GH-57851 ). GDScript: Don’t coerce default values to the export hint type (GH-58686 ). GDScript: Enable method type information on release builds (GH-59793 ). GDScript: Fix autocompletion showing core class names with an underscore (GH-62731 ). GDScript: LSP: Fix wrong parentheses for function call autocompletion (GH-59482 ). GUI: Add FlowContainer (GH-57960 ). GUI: Add alignment options to Button icons (GH-57771 ). GUI: Add type variations to Theme (GH-57942 ). GUI: Add WOFF2 font support and brotli decoder (GH-59522 ). GUI: Add a Skew property to StyleBoxFlat (GH-60592 ). GUI: Make various improvements to OptionButton (GH-61102 ). GUI: Improve RichTextLabel table filling (GH-61904 ). HTML5: Enable mbedTLS module for Crypto object (GH-61402 ). HTML5: Add preliminary support for GDNative+Threads build (GH-61989 ).Depends on cutting edge Emscripten 3.1.14, no templates provided for this export type for now. Import: glTF: Fix light intensity and attenuation import (GH-62747 ). Input: Re-enable input accumulation disabled by error in 3.4 (GH-62826 ). Input: Allow for mapping scancodes to current layout (GH-56015 ). Internationalization: Add binary MO translation file support (GH-59522 ). iOS: Flush accumulated input events (GH-62842 ). Linux: Fix window_maximized
not working reliably (GH-59767 ). Linux: Read and store joypad events in a separate thread (GH-56126 ). macOS: Implements ad-hoc signing from Linux/Windows (GH-51550 ). Navigation: Add NavigationServer with obstacle avoidance using RVO2 (GH-48395 ). Navigation: Lots of fixes and improvements to the new NavigationServer (topic:navigation
PRs ). Navigation: Backport more NavigationServer features to make it more flexible (GH-61996 ). Networking: Add proxy support for HTTPClient and the editor (GH-55988 ). Networking: Add NetworkedMultiplayerCustom so high-level multiplayer backends can be added from scripts (GH-63163 ). Physics: Add fixed timestep interpolation for 3D (GH-52846 ).The 2D equivalent will be added later on. Physics: Bullet: KinematicBody compound shape collision fix (GH-56801 ).Fixes a lot of issues with KinematicBody collisions at the intersection between meshes when using Bullet. This was merged fairly late (3.5 RC 2), please make sure to test it. Physics: Bullet: Do not set gravity and damping when Custom Integrator is enabled (GH-62708 ). Physics: Fix the calculation of the angular velocity (GH-63190 ). Rendering: Asynchronous shader compilation + caching (ubershader) (GH-53411 ). Rendering: Add material_overlay
property to MeshInstance (GH-50823 ). Rendering: Faster editor line drawing - Path2D and draw_line
(GH-54377 ). Rendering: Add OccluderShapePolygon (GH-57361 ). Rendering: Add support for saving multiple Images in BakedLightmap (GH-58102 ). Rendering: Bind mesh merging functionality in MeshInstance (GH-57661 ). Rendering: GLES2: Unpack blend shape arrays when necessary (GH-60829 ). Rendering: GLES3: Ignore support for S3TC texture compression on Android and iOS devices (GH-62909 ).Few devices support this compression while they all support ETC2. Godot exports ETC2 by default and doesn’t take into account that mobile devices could need S3TC. Rendering: GLES3: Unbind vertex buffer before calculating blend shapes (GH-60832 ). Rendering: Portals: Show gridmaps using global mode (GH-60851 ). Rendering: Fix viewport with transparent background changed to solid black if enabling FXAA or debanding (GH-54585 ). Rendering: VisibilityNotifier: Add max_distance
feature (GH-61544 ). Rendering: CPU lightmapper: Account for ambient light settings when baking lights (GH-62260 ). Shaders: Many improvements backported from master
(GH-56794 ). UWP: Fix exporting GDNative DLLs (GH-61262 ). UWP: Flush buffered input events (GH-63341 ). VisualShader: Add hints and default values to the uniform nodes (GH-56466 ). Windows: Improve console handling and execute
(GH-55987 ).This changes the editor console handling to be like on Unix systems (Linux and macOS). So Godot doesn’t open with a console by default, but you can see console output if you start it from a console yourself. You can create a batch script or shortcut to automatically start Godot from a console as in previous releases. Windows: Implement limited surrogate pairs support (better UTF-8 support, emoji fonts) (GH-54625 ). Windows: Try to convert OS::execute()
output to Unicode (GH-60920 ). Windows: Add support for handling network share paths (GH-61985 ). Thirdparty library updates: bullet 3.24, freetype 2.12.1, mbedtls 2.28.1, pcre2 10.40, CA certificates (2022-03-31), SDL GameControllerDB from 2022-07-15. Toolchains update for official builds .Class reference and translations updates. All these need to be thoroughly tested to ensure that they work as intended in the upcoming 3.5-stable.
Changelog You can check the full changelog since 3.4-stable (chronological , or for each contributor ).
You can also review the changes between RC 7 and RC 8 .
This release is built from commit 516d6b6ba .
Downloads The downloads for this dev snapshot can be found directly on our repository:
Standard build (GDScript, GDNative, VisualScript).Mono build (C# support + all the above). You need to have dotnet CLI or MSBuild installed to use the Mono build. Relevant parts of Mono 6.12.0.182 are included in this build.Bug reports As a tester, you are encouraged to open bug reports if you experience issues with this release candidate. 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.
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 3.4.x no longer works in this 3.5 RC).
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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-3-6-rc-1/index.html b/article/release-candidate-godot-3-6-rc-1/index.html
index fc8d638e6e..7b47df3143 100644
--- a/article/release-candidate-godot-3-6-rc-1/index.html
+++ b/article/release-candidate-godot-3-6-rc-1/index.html
@@ -10,7 +10,7 @@
Make a Donation 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.
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-4-0-1-rc-1/index.html b/article/release-candidate-godot-4-0-1-rc-1/index.html
index b4a599fb81..75934aad1c 100644
--- a/article/release-candidate-godot-4-0-1-rc-1/index.html
+++ b/article/release-candidate-godot-4-0-1-rc-1/index.html
@@ -6,7 +6,7 @@
Yuri Sizov 15 March 2023 Two weeks ago we have published the biggest release in the history of Godot — Godot 4.0 . It marked the beginning of a new journey for the engine and its users, like yourself. And as is the case with every new beginning, some problems have been reported, some points of frictions have been identified, and so fixes and improvements are in order.
For the time being we are primarily focusing on changes that address critical issues (such as crashes and regressions), as well as small self-contained fixes to various parts of the engine and documentation improvements. This allows us to publish this patch release quickly and with a lot of confidence that it doesn’t introduce new problems and regressions in the process. As such, we are starting directly with a Release Candidate .
Please give it a try if you can. It should be safe to migrate your existing projects to 4.0.1, but to make sure of that we need your help testing the changes. If there are no significant regressions reported with release candidates, a stable version is going to be published soon. Don’t forget to always make backups when moving versions, even minor. Better yet, prefer using a version control system, such as Git, and commit a version of your project before the migration.
Highlights This release candidate includes some changes which may interest a lot of users:
Multiple conditions for crashes and freezes have been addressed throughout the editor and the engine.
The project converter has been improved with new renames and corrections to its behavior around various scripting statements.
Numerous improvements to the documentation and translations.
Jump to the Downloads section.
As usual, you can try it live with the online version of the Godot editor updated for this release.
The illustration picture is from Abandoned Spaceship by Jaanus Jaggo (Perfoon) , a beautiful demo scene made with Godot 4. Download and star this project on GitHub or get it from the Asset Library . Also follow Jaanus on Twitter to see more of their work and maybe catch a glimpse of the next update to BLASTRONAUT !
What’s new See the full changelog on GitHub for an overview of all changes since 4.0-stable (103 commits – excluding merge commits ― from 49 contributors).
Some of the most notable feature changes in this update are:
Android: Fix null-pointer dereference when using gl_compatibility
renderer (GH-74781 ). Animation: Check for type mismatch in PropertyTweener.from()
(GH-74112 ). Audio: Improve logic related to editing audio buses and prevent crashes (GH-74560 ). Buildsystem: Safeguard Makefile commands for documentation (GH-74042 ). C#: Always show “Create C# solution” option (GH-73904 ). C#: Fix crash when errors occur before language initialization (GH-74127 ). C#: Get singleton instances using the Core name (GH-74280 ). C#: Ensure that script names (and therefore class names) are valid identifiers (GH-74330 ). C#: Ignore explicit interface implementations (GH-74375 ). Core: Set properties of ImageTexture3D when creating (GH-74521 ). Core: Fix buffer overrun in CPUParticles3D in precision=double
builds (GH-74555 ). Core: Propagate errors when creating an OpenGL context fails in X11 (GH-74563 ).This prevents crashes on Linux machines when obtaining an OpenGL context and OpenGL 3.3 is not supported. Core: Prevent crashing on startup if project has scripted theme types (GH-74565 ). Editor: Disable local space for Blender-style transforms (GH-59443 , GH-74601 ). Editor: Automatically reparent editor message dialogs to avoid error spam (GH-73365 ).This addresses several cases of getting spammed with “Transient parent has another exclusive child.” during the normal use of the editor. Editor: Stop toaster notification circle flickering (GH-74017 ). Editor: Fix dock name lost translation after layout change (GH-74158 ). Editor: Translate strings which were previously missed (GH-74211 , GH-74637 ). Editor: Fix crash when showing file in FileSystem dock (GH-74591 ). Editor: Prevent cache corruption when saving resources in the editor (GH-74615 ). Editor: Ensure that editor color map is initialized in the project manager (GH-74750 ). Export: Fix various issues related to remote deploy and remote execute on Windows (GH-74030 ). GDExtension: Fix crash when dumping extension API in a non-writable directory (GH-74590 ). GDExtension: Fix extension bindings for motion collision/result structs (GH-74671 ). GDScript: Fix error spam when naming a func at the end of the script (GH-73410 ). GDScript: Fix checking if a call is awaited in compiler (GH-74147 ). GDScript: Don’t autocomplete numbers (GH-74466 ). GDScript: Fix autocomplete inside a block with a type test condition (GH-74689 ). GUI: Fix RichTextLabel crash with out of bound exception (GH-68325 ). GUI: Assume outline size is 1 if it’s not set, but channel for outline is defined in a BitMap font (GH-74212 ). GUI: Fix justification on punctuation characters (GH-74477 ). GUI: Do not draw virtual spaces (word break / justification points) (GH-74488 ). GUI: Add missing handler for removing font sizes in the theme editor (GH-74547 ). GUI: Generate empty textures for theme icons if the SVG module is disabled (GH-74551 ). GUI: Add invalid font scaling check, restrict Linux/BSD system fonts lookup to TrueType/CFF only (GH-74702 ).This fixes crashes related to the ItemList
control, including the one in the “About” window in the editor. Import: Fix glTF mesh importer not freeing nodes correctly on import (GH-74018 ). Import: Set the unlit / unshaded extension when importing / exporting glTF (GH-74287 ). Import: Prevent infinite loop by disabling importer when canceling FBX2glTF setup (GH-74293 ). Import: Fix blend-file import when using custom color management in blender (GH-74496 ). Input: Update modifier key status during IME input on Windows (GH-74474 ). Linux/X11: Check if required xkb functions exist before using it (GH-74222 ). Linux/X11: Fix broken shortcut key input (GH-74535 ). Project converter: Do not convert lines that start with a comment (GH-74193 ). Project converter: Don’t strip whitespace when converting (GH-74232 ). Project converter: Add keycode project conversion (GH-74237 ). Project converter: Correct superclass constructors (GH-74354 ). Project converter: Move tool declarations to top (GH-74432 ). Project converter: Add parentheses around arguments when converting xform
(GH-74693 ). Rendering: Use MSAA 2D texture in multipass tonemapper (GH-74150 ). Rendering: Add proper default texture filter and repeat modes for Canvas shaders in the OpenGL3 renderer (GH-74315 ). Rendering: Fix instance uniforms breaking when setting a new mesh (GH-74349 ). Rendering: Fix AABB calculation for meshes using Skeleton2D (GH-74416 ). Rendering: Avoid overflow when calculating ptr address for 3D textures in RenderingDevice texture update (GH-74526 ). Rendering: Fixes a canvas item set to clip children being drawn as black if no children are visible (GH-74533 ). Rendering: Avoid copying CanvasTexture when updating proxy (GH-74566 ). Rendering: Use linear filtering without mipmaps for ProceduralSkyMaterial and PhysicalSkyMaterial (GH-74740 ). Tiles editor: Fix TileSetEditor painting texture_origin
Vector2i (GH-73514 ). Tiles editor: Remember previously selected TileMap tile (GH-74039 ). This release is built from commit d23922ffe
(see README ).
Downloads The downloads for this dev snapshot can be found directly on our repository:
Known issues There are currently no known issues introduced by this release.
With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a complete list of known bugs .
Bug reports As a tester, you are encouraged 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 4.0, but no longer works in 4.0.1 RC 1).
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 thank you 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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-4-0-1-rc-2/index.html b/article/release-candidate-godot-4-0-1-rc-2/index.html
index a9fa33cea1..31eddded2b 100644
--- a/article/release-candidate-godot-4-0-1-rc-2/index.html
+++ b/article/release-candidate-godot-4-0-1-rc-2/index.html
@@ -6,7 +6,7 @@
Yuri Sizov 17 March 2023 The first patch release of Godot 4 is almost ready. Following on the heels of the biggest release in the history of Godot , 4.0.1 is focused on the most critical issues, as well as smaller usability improvements that we can fit with confidence they will not introduce any new problems and regressions. A couple of days ago we released the first Release Candidate, and it’s already the time for another preview, with the stable release being just around the corner.
Please give it a try if you can. It should be safe to migrate your existing projects to 4.0.1, but to make sure of that we need your help testing the changes. If there are no significant regressions reported with release candidates, a stable version is going to be published soon. Don’t forget to always make backups when moving versions, even minor. Better yet, prefer using a version control system, such as Git, and commit a version of your project before the migration.
Highlights This release candidate includes some changes which may interest a lot of users:
You can no longer create new projects in non-empty folders, as well as your OS-specific user/home folder. We also removed the ability to delete local files when removing a project from the project list (GH-74974 ).Both of these functionalities are situationally useful, but also create many opportunities for undesirable side-effects. We had several reports from users accidentally creating projects in their home directory and making the editor import everything stored there, as well as others who accidentally deleted their entire user directory. This makes these functionalities too dangerous to leave as is, and we would prefer to revisit them when we can make a better UI that prevents such accidents. Jump to the Downloads section.
As usual, you can try it live with the online version of the Godot editor updated for this release.
The illustration picture is from Lumberyard Bistro , a demo scene originally created by the Amazon Lumberyard team in 2017 (Creative Commons CC-BY 4.0) and then ported to Godot 4.0 by Logan Preshaw . You can learn more about the process and get the scene on GitHub , and you can follow Logan on Twitter . The picture also features human models from Renderpeople , not included with the demo.
What’s new See the full changelog on GitHub for an overview of all changes since 4.0.1-rc1 (13 commits – excluding merge commits ― from 11 contributors).
Some of the most notable feature changes in this update are:
Editor: Fix MultiNodeEdit not cleared after deleting nodes (GH-74795 ). Editor: Disallow creating a project in the Home or Documents folder (GH-74964 ). Editor: Fix error when opening Inspector’s dots menu (GH-74974 ). Input: Fix InputEventConfigurationDialog modifies original event (GH-74858 ). Navigation: Allow negative NavigationAgent2D path debug line_width for thin lines (GH-74800 ). Navigation: Fix NavigationAgent3D debug path duplicated points (GH-74976 ). Project converter: Add conversion for common Theme Overrides (GH-74624 ). As well as several improvements to the documentation. This release is built from commit 6970257cf
(see README ).
Downloads The downloads for this dev snapshot can be found directly on our repository:
Known issues There are currently no known issues introduced by this release.
With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a complete list of known bugs .
Bug reports As a tester, you are encouraged 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 4.0, but no longer works in 4.0.1 RC 2).
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 thank you 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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-4-0-2-rc-1/index.html b/article/release-candidate-godot-4-0-2-rc-1/index.html
index a6b0186286..da2642608e 100644
--- a/article/release-candidate-godot-4-0-2-rc-1/index.html
+++ b/article/release-candidate-godot-4-0-2-rc-1/index.html
@@ -6,7 +6,7 @@
Yuri Sizov 31 March 2023 This March was all about GDC for the majority of Godot maintainers. We had a blast hosting multiple Godot game developers and talking to people in the community and industry about our little open source engine! We have a lot to tell you about the future of Godot, and we have a lot of plans for the work that needs to be done. Be sure to keep an eye on this blog and our social accounts for more news and stories to come.
While the conference and the events around it were happening, the development of the engine itself didn’t stop for a day! Thanks to tireless contributors we have released Godot 4.0.1 two weeks ago , and now we are getting ready to release a second patch release. With it we keep focusing on the immediate issues, crashes, and smaller usability improvements, that can be safely made available to you right now.
As this is a Release Candidate , we don’t expect any new problems and encourage you to give it a try. It should be safe to migrate your existing projects to 4.0.2, but to make sure of that we need your help testing the changes. If there are no significant regressions reported with release candidates, a stable version is going to be published soon. Don’t forget to always make backups when moving versions, even minor. Better yet, prefer using a version control system, such as Git, and commit a version of your project before the migration.
Highlights This release candidate includes some changes which may interest a lot of users:
macOS users have been experiencing editor crashes when trying to save scenes with a key combination or from the top menu, which has now been fixed (GH-75254 ). There were several reports on Windows of the editor randomly ignoring keys after alt-tabbing or pressing the Win key; this has also been fixed (GH-75172 ). The Android platform has received a number of improvements, including support for SDK 33 (Android 13) (GH-75203 ). The engine will no longer try to load unsupported compressed texture formats in exported projects (GH-74684 ). Jump to the Downloads section.
As usual, you can try it live with the online version of the Godot editor updated for this release.
The illustration picture is from 3D Balls Pool — one of many playable demos made by the team at GDQuest to showcase the new features of Godot 4. You have probably seen many of them in the Godot 4.0 release post . The entire collection is available on GitHub , and you can download it, learn how it all works, and play around yourself! The GDQuest folks also produce quality YouTube tutorials and professional courses for Godot.
What’s new See the full changelog on GitHub for an overview of all changes since 4.0.1-stable (92 commits – excluding merge commits ― from 50 contributors).
Some of the most notable feature changes in this update are:
2D: Use 8×8 default grid size for TextureRegion and 2D polygon editors (GH-73685 ). 2D: Fix preview rendering and transform calculations in the tiles editor (GH-74982 ). 2D: Fix ENTER_CANVAS
/ VISIBILITY_CHANGED
notification order when CanvasItem
enters tree (GH-75238 ). 2D: Fix a crash in the tiles editor when merging atlases (GH-75361 ). 2D: Don’t allow selecting nodes without owner in the editor (GH-75492 ). 3D: Fix GridMap signal cell_size_changed
disconnect error (GH-74890 ). Android: Use the new API for virtual keyboard height detection on Android, bugfix for old API (GH-74398 ). Android: Configure maven central snapshot versions for the Godot Android library (GH-74470 ). Android: Add “filesRoot” path to Android provider paths xml (GH-74673 ). Android: Fix directory access when the running app has the All files access
permission (GH-75146 ). Android: Bump the target SDK version to 33 (Android 13) (GH-75203 ). Animation: Update property keying state without a full Inspector rebuild (GH-74564 ). Animation: Fix AnimatedSprite2D
autoplay warning (GH-75258 ). Buildsystem: Exit with non-zero status if there are issues with FreeType dependencies (GH-74645 ). Buildsystem: SCons: Cleanup pulseaudio
defines for Linux (GH-74666 ). C#: Encode GodotProjectDir
as Base64 to prevent issues with special characters (GH-74312 ). C#: Fix building projects for MSBuild before 17.3 (GH-74479 ). C#: Do not print errors about missing references to intentionally ignored members (GH-75284 ). C#: Fix Array.AddRange
index out of bounds (GH-75357 ). Core: Fix some race conditions that happen during initialization (GH-73793 ). Core: Fix crash in resource load (GH-74166 ). Core: Fix randfn
to prevent it from generating nan values (GH-74248 ). Core: Fix Variant hashing for floats (GH-74600 ). Core: Add a missing ImageTextureLayered::_images
setter for the C# bindings (GH-74668 ). Core: Exposing more project settings for documentation (GH-74727 ). Core: Fix type check for max
/min
(GH-74770 ). Core: Fix Array.slice()
rounding when step is other than 1 (GH-74909 ). Core: Make Gradient
resort points on reverse
(GH-75235 ). Core: Port robust signal (dis)connection to ShapeCast2D
(GH-75266 ). Editor: Fix cancelling selection while gizmo editing making uncommitted changes (GH-71156 ). Editor: Improve POT Generation dialog (GH-74213 ). Editor: Hide internal settings from the class reference (GH-74226 ). Editor: Fix EditorUndoRedoManager
’s handling of MERGE_ENDS
(GH-74460 ). Editor: Fix built-in scripts missing their methods on signal connection (GH-74495 ). Editor: Fix “Download Project Source” for the Web Editor (GH-75194 ). Editor: Remove disabled plugins from active plugins (GH-75331 ). Editor: Fix incorrect sizes of some editor elements (GH-75379 , GH-75381 ). Editor: More i18n improvements (GH-75385 ). Export: Fix GDExtensions library export when multiple architectures are set (GH-74057 ). Export: Delete unused compression formats from .import
files when exporting (GH-74684 ). GDScript: Make GDScript number highlighting stricter (GH-74184 ). GDScript: Fix “Find in Files” search results not opening built-in script (GH-74401 ). GDScript: Fix false positive REDUNDANT_AWAIT
warning (GH-74949 ). GUI: Fix scrolling behavior with zero/low page value (GH-67910 ). GUI: Fix some ways to create inconsistent Viewport size states (GH-73188 ). GUI: Improve layout direction/locale automatic selection (GH-73716 ). GUI: Fix GraphNode
resizing when its bottom border is too thin (GH-73800 ). GUI: Add mutex for FreeType face creation/deletion operations in TextServer (GH-73987 ). GUI: Fix IME position in the single window mode sub-windows (GH-74472 ). GUI: Fixes gutter set width results in receiving only half of the desired size (GH-74537 ). GUI: Fix get_drag_data
not overridable in some Controls (GH-75122 ). Import: Fix ResourceImporterLayeredTexture::import()
high_quality
variable type (GH-75244 ). Input: Remove meta_mem
update on keyup/keydown on Windows (GH-75172 ).This fixes situations where alt-tabbing from the editor would prevent keys and shortcuts from working. Input: Fix layout bug in keyboard_get_keycode_from_physical
on Linux/X11 (GH-75461 ). macOS: Re-add support for the _sc_
inside app bundle. (GH-73429 ). macOS: Fix infinite loop caused by global menu callbacks which trigger EditorProgress dialog (GH-75254 ).This fixes a crash when trying to save scenes in the editor with a shortcut. Multiplayer: Fix list handling in SceneReplicationConfig
(GH-74552 ). Navigation: Fix GridMap free navigation RID error spam (GH-74889 ). Navigation: Fix agents with disabled avoidance getting added to avoidance simulation (GH-74893 ). Particles: Update GPUParticles2D/3D speed scale on ENTER_TREE
(GH-75398 ). Physics: Expose the apply_floor_snap
function to allow manual snap (GH-73749 ). Physics: Revert attempted fix of trimesh CCD (GH-74861 ). Physics: Fix collide_shape
return type (GH-75260 ). Project converter: Add conversion for Vector2
tangent()
-> orthogonal()
(GH-74515 ). Project converter: Remove Tween properties/signals from renames (GH-75443 ). Rendering: Incorporating the availability of screen and depth textures for the GLES3 backend (GH-72361 ). Rendering: Fix spotlight shadows in volumetric fog (GH-73919 ). Rendering: Fix issues with point size not functioning correctly in GLES3 (GH-73966 ). Shaders: Add drag and drop support for shader include files in shader editor (GH-74869 ). Shaders: Fix ndc calculation for LinearSceneDepth VS node in GLES3 (GH-74910 ). XR: Replace OpenXR operating system alert dialog with a warning log message (GH-73144 ). XR: Add XRServer.world_origin
property (GH-74151 ). XR: Enable access to the Valve Index grip force sensors (GH-74787 ). XR: Check hardware sRGB conversion when an sRGB target is used (GH-74892 ). XR: Fix typo in OpenXR pose orientation check (GH-74928 ). Thirdparty: Update mymindstorm/setup-emsdk
to v12 (GH-75339 ). As well as several improvements to the documentation. This release is built from commit 50f26811b
(see README ).
Downloads The downloads for this dev snapshot can be found directly on our repository:
Known issues There are currently no known issues introduced by this release.
With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a complete list of known bugs .
Bug reports As a tester, you are encouraged 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 4.0, but no longer works in 4.0.2 RC 1).
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 thank you 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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-4-0-3-rc-1/index.html b/article/release-candidate-godot-4-0-3-rc-1/index.html
index 3a27436f3a..ee5644bd99 100644
--- a/article/release-candidate-godot-4-0-3-rc-1/index.html
+++ b/article/release-candidate-godot-4-0-3-rc-1/index.html
@@ -6,7 +6,7 @@
Yuri Sizov 27 April 2023 The development of Godot 4.1 is going strong, with many performance improvements, new features, and usability enhancements in the works. An early preview of the upcoming minor release is available now , and we can’t wait to show you more of what’s cooking in the weeks to come .
Godot has strong foundations, and this means that many improvements can be done without breaking compatibility. Thanks to that, we’ve been able to release 2 patch releases for Godot 4.0 so far, with the latest one being published just 3 weeks ago . And now it’s time for the third one, Godot 4.0.3. With patch releases for stable versions of the engine our focus is on the immediate issues, crashes, and smaller usability improvements, that can be safely made available to you right now.
This is a Release Candidate to help us finalize the release before going live. We don’t expect any new problems and encourage you to give it a try. It should be safe to migrate your existing projects to 4.0.3, but to make sure of that we need your help testing the changes. If there are no significant regressions reported with release candidates, a stable version is going to be published soon. Don’t forget to always make backups when moving versions, even minor. Better yet, prefer using a version control system, such as Git, and commit a version of your project before the migration.
Jump to the Downloads section , and give it a spin right now, or continue reading to learn more about included changes.
As usual, you can try it live with the online version of the Godot editor updated for this release.
The illustration picture is from Animation Retargeting — one of many playable demos made by the team at GDQuest to showcase the new features of Godot 4. You have probably seen many of them in the Godot 4.0 release post . The entire collection is available on GitHub , and you can download it, learn how it all works, and play around yourself!
What’s new 67 contributors made 149 pull-requests (or 154 commits) since Godot 4.0.2. We now have a great interactive changelog you can use to review all these changes more extensively, with convenient links to the relevant PRs on GitHub.
Some of the most notable feature changes in this update are:
2D: Fix RemoteTransform2D could fail to update AnimatableBody2D’s position or rotation (GH-75487 ). 2D: Fix rendering odd-sized tiles (GH-74814 ). 2D: Fix TouchScreenButton not redrawn when texture changes (GH-75016 ). Animation: Fix blend_shape (shapekey) empty name import (GH-75990 ). Audio: Fix crash caused by invalid mix_rate assignment due to bogus project settings (GH-69833 ). Audio: Fix AudioStreamPlayer2D crash when PhysicsServer2D runs on thread (GH-75728 ). Buildsystem: Err when trying to build the editor without its required modules (GH-74980 ). Buildsystem: Fix the Python type error when creating the .sln file (GH-75309 ). Buildsystem: Fix forced optimization in dev_build (GH-75909 ). C#: Truncate instead of round in Vector2/3/4 to Vector2I/3I/4I conversion (GH-75477 ). Core: Lift restriction that resource load thread requester has to be the initiator (GH-73862 ). Core: Fix the UID field of the tscn/res file is lost when the external dependency is updated (GH-70234 ). Core: Fix invalid global position when read outside tree (GH-75509 ). Core: Rename internal root canvas group to start with underscore (GH-76149 ). Editor: Prevent off-screen controls in editor (GH-73646 ). Editor: Improve editor state initialization (GH-74682 , GH-75563 ). Editor: Fix descriptions not showing for theme properties (GH-75559 ). Editor: Fix UI responsiveness to touch taps (GH-75703 ). Editor: Fix deserializing resource usage debug data (GH-75782 ). Editor: Fix connect signal dialog not allowing Unicode method name (GH-75814 ). Export: Fix validation of codesigning certificate password on macOS (GH-74326 ). GDScript: Add missing member type check when resolving extends
(GH-75879 ). GDScript: Fix several LSP-related issues (GH-76090 , GH-76095 ). GDScript: Fix mixed tabs and spaces issues (GH-76286 ). GDScript: Don’t fail when freed object is returned (GH-76483 ). GUI: Fix several sizing and positioning issues in RichTextLabel (GH-71742 , GH-75504 ). GUI: Fix commenting collapsed functions (GH-75070 ). GUI: Update TextureProgressBar
upon texture changes (GH-75532 ). GUI: Fix several GraphEdit operations at zoom levels other than 100% (GH-75595 ). GUI: Allow entering named colors in ColorPicker’s hex field (GH-75905 ). GUI: Improve BiDi handling in TextServer (GH-75922 , GH-75975 ). GUI: Fix blurry borders on anti-aliased StyleBoxFlat (GH-76132 ). Import: Fix size and scale based errors when importing SVG (GH-75034 ). Import: Fix OBJ mesh importer smoothing handling (GH-75315 ). Import: Expose more compression formats in Image and fix compress check (GH-76014 ). Input: Fix guide button detection with XInput and Xbox Series controllers (GH-73200 ). Input: Fix the issue preventing dragging in the 2D editor (GH-75113 ). Input: Fix keycode/physical keycode mix up on web (GH-75738 ). Navigation: Expose NavigationAgent path postprocessing and pathfinding algorithm options (GH-75326 ). Navigation: Fix NavigationObstacles not being added to avoidance simulation (GH-75756 ). Navigation: Fix NavigationMesh baking for HeightMapShape (GH-76212 ). Networking: Poll LSP/DAP clients for connection status updates (GH-75850 ). Particles: Properly calculate lifetime_split
for particles (GH-73313 ). Particles: Translate inactive GPUParticles3D particles to -INF (GH-75162 ). Particles: Fix “error X3708: continue cannot be used in a switch” in HTML export (GH-75795 ). Particles: Use angle_rand to calculate base_angle in particles process material (GH-75999 ). Physics: Warn when a concave polygon is assigned to ConvexPolygonShape2D (GH-56671 ). Physics: Fix typo bug in convex-convex separating axis test (GH-75835 ). Porting: Android: Downgrade Android gradle plugin to version 7.2.1 (GH-76325 ). Porting: Android: Fix issue with resizing the display when using the compatibility renderer (GH-76464 ). Porting: iOS: Fix splash screen rotation (GH-76037 ). Porting: Windows: Fix clipboard relying on focused window (GH-73878 ). Porting: Windows: Fix queuing utterances in rapid succession (GH-75880 ). Porting: Windows: Cleanup COM library initialization/uninitialization (GH-75881 ).This change may fix some of the crashes that happen on project startup. If you were affected before, please give it a try. Rendering: Fix interpolation of R0 for metallic and calculation of the Fresnel Shlick term in SSR (GH-75368 ). Rendering: Use MODELVIEW_MATRIX when on double precision (GH-75462 ). Rendering: Check for instancing without relying on instance_count when drawing 2D meshes (GH-75954 ). Rendering: Ensure that depth write state is updated before transparent pass in OpenGL3 renderer (GH-75968 ). Rendering: Fix issues with Vulkan layout transitions (GH-76315 ). Rendering: Fix breakages of volumetric fog on Voxel GI changes (GH-76437 ). Shaders: Fix crashes caused due to missing type specifier in visual shader editor (GH-75809 ). Shaders: Write out render_mode even when mode is set to default in VisualShaders (GH-75957 ). Shaders: Fix Shader Preprocessor line numbering when disabled (GH-76479 ). Thirdparty: Update thorvg to 0.8.4 (GH-75508 ). Thirdparty: Update mbedtls to 2.28.3 (GH-76200 ). As well as many improvements to the documentation. This release is built from commit 2d74ee0e5
(see README ).
Downloads The downloads for this dev snapshot can be found directly on our repository:
Known issues There are currently no known issues introduced by this release.
With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a complete list of known bugs .
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 4.0.x releases, but no longer works in 4.0.3 RC 1).
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 thank you 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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-4-0-3-rc-2/index.html b/article/release-candidate-godot-4-0-3-rc-2/index.html
index a7764216d9..78fef52ee2 100644
--- a/article/release-candidate-godot-4-0-3-rc-2/index.html
+++ b/article/release-candidate-godot-4-0-3-rc-2/index.html
@@ -6,7 +6,7 @@
Rémi Verschelde 12 May 2023 The development of Godot 4.1 is going strong, with many performance improvements, new features, and usability enhancements in the works. An early preview of the upcoming minor release is available now , and we can’t wait to show you more of what’s cooking in the weeks to come .
Godot has strong foundations, and this means that many improvements can be done without breaking compatibility. Thanks to that, we’ve been able to release 2 patch releases for Godot 4.0 so far, with the latest one being published in early April . And now it’s time for the third one, Godot 4.0.3. With patch releases for stable versions of the engine our focus is on the immediate issues, crashes, and smaller usability improvements, that can be safely made available to you right now.
This is a Release Candidate to help us finalize the release before going live. We don’t expect any new problems and encourage you to give it a try. It should be safe to migrate your existing projects to 4.0.3, but to make sure of that we need your help testing the changes. If there are no significant regressions reported with release candidates, a stable version is going to be published soon. Don’t forget to always make backups when moving versions, even minor. Better yet, prefer using a version control system, such as Git, and commit a version of your project before the migration.
Jump to the Downloads section , and give it a spin right now, or continue reading to learn more about included changes.
As usual, you can try it live with the online version of the Godot editor updated for this release.
If you use the Godot editor port on Android, you might be interested in joining our closed testing group , to get access to such 4.0.x release candidates and 4.1 development snapshots through the Play Store. Your tests are very important for us to bring it closer to production ready for all Android users.
The illustration picture is from Out For Delivery , a Ludum Dare 53 jam game by Groundwater Studio, developed with Godot 4.0. You can play the game on the Ludum Dare website and follow the team on itch.io , which plans to develop it further. The game source code is also available on GitHub .
What’s new 43 contributors made 70 commits since Godot 4.0.3 RC 1. We now have a great interactive changelog you can use to review all these changes more extensively, with convenient links to the relevant PRs on GitHub.
Some of the most notable feature changes in this update are:
2D: Add info label to TileMap editor (GH-68800 ). 3D: Fixes to CSG robustness (GH-74771 ). 3D: Fix infinite loop in CSG Build2DFaces::_find_edge_intersections
(GH-76521 ). 3D: Fix SurfaceTool::create_from_blend_shape()
(GH-76669 ). Buildsystem: Enable shadow warnings and fix raised errors (GH-76946 ). Core: Make LocalVector
respect its tight
template parameter (GH-64120 ). Core: Prevent errors when using ViewportTexture (GH-75751 ). Core: Fix size error in BitMap.opaque_to_polygons
(GH-76536 ). Core: Make acos and asin safe (GH-76906 ). Documentation: Improve RenderingServer, RenderingDevice, ShaderGlobalsOverride documentation (GH-76008 ). Editor: Improve the UX of ViewportTexture in the editor (GH-64388 ). Editor: Close built-in shaders when closing scene (GH-75864 ). Editor: Command Palette search now also uses original English command names (GH-76523 ). Editor: Fix Node arrays appear as Object arrays in the inspector (GH-76530 ). Editor: Fix CollisionShape2D editor crashes (GH-76546 , GH-76798 ). Editor: Fix 2D shader preview draws over uniform (GH-76555 ). Editor: Preserve scene unique names when saving branch as scene (GH-76609 ). GDExtension: Add missing bindings and documentation for MultiplayerPeerExtension (GH-75116 ). GDScript: LSP: Don’t send empty completion command (GH-76790 ). GUI: Fix right click in selection of additional caret (GH-76472 ). Import: Fix animation silhouette using incorrect index (GH-76499 ). Import: Use DXT1 when compressing PNGs with RGB format (GH-76516 ). Import: gltf: Permit sparse accessors without a bufferView (GH-76875 ). Porting: Android: Allow concurrent buffering and dispatch of input events (GH-76399 ).This change should fix reports of ANRs (Application Not Responding) that some users have experienced with Godot 4.0. Please test it thoroughly to make sure that it solves your issues without regression. Porting: Android: Fix double tap & drag on Android (GH-76791 ). Porting: iOS: Fix loading of GDExtension dylibs auto converted to framework (GH-76510 ). Porting: Linux: Ensure WindowData minimized/maximized are mutually exclusive (GH-76868 ). Porting: Linux: Don’t use udev for joypad hotloading when running in a sandbox (GH-76961 ). Porting: Windows: Support long path in file access (GH-76739 ). Rendering: Fix GLES3 rendering on Android studio emulator (GH-74945 ). Rendering: Expose viewports render target RID (GH-75517 ). Rendering: Allow creation of rendering buffers at any time (GH-75937 ). Rendering: Fix voxel GI issues (2) (GH-76550 ). Rendering: Use proper UV in cubemap downsampler raster (Fixes reflections in mobile renderer) (GH-76692 ). Shaders: Fix rotation issue with NODE_POSITION_VIEW
shader built-in (GH-76109 ). XR: Fix incorrect HTC action map entries (GH-74930 ). Thirdparty library updates: astcenc 4.4.0, doctest 2.4.11, thorvg 0.9.0, CA certificates from March 2023. Documentation and translation updates. This release is built from commit 2ac4e3bb3
(see README ).
Downloads The downloads for this dev snapshot can be found directly on our repository:
Known issues There are currently no known issues introduced by this release.
With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a complete list of known bugs .
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 4.0.x releases, but no longer works in 4.0.3 RC 2).
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 thank you 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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-4-0-4-rc-1/index.html b/article/release-candidate-godot-4-0-4-rc-1/index.html
index c2c0baa6bc..cd3d0458ec 100644
--- a/article/release-candidate-godot-4-0-4-rc-1/index.html
+++ b/article/release-candidate-godot-4-0-4-rc-1/index.html
@@ -6,7 +6,7 @@
Yuri Sizov 21 July 2023 We are committed to providing support for multiple minor versions of Godot at the same time, as long as we have the capacity to do the work and there are fixes that can be safely backported. So even if your project cannot be migrated to Godot 4.1 right now, we still want to share with you some positive changes.
It has been a few weeks since the release of Godot 4.0.3, which means it’s high time for the next maintenance version! As is always the case with patch releases, 4.0.4 is focused on stability and bug fixes, as well as adding missing documentation. 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 once it is released as stable. Be sure to test the build right now to prepare and have a smooth transition. Thanks to Facundo Fernández for reporting this vulnerability. A patch has been submitted to the upstream ENet repository as well. This is a Release Candidate, which means that we don’t expect regressions or new major issues. Please give it a good test if you are currently using Godot 4.0 in your project. Unless a critical problem is discovered, a stable release will follow RC 1 shortly. Remember to always make backups when changing engine version, or better yet, prefer using a version control system, such as Git, to have a safety net in cases of data corruption or loss.
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 illustration picture for this article is from a game called Sunken Shadows . It’s a 32-bit first person roguelike created by a team of Milan Gruner and friends with Godot 4. Fight aquatic creatures with your trusty knife which doubles as a grappling hook, and learn what lurks down below! You can get the game, currently in development, from itch.io . And make sure to follow Milan for more updates, or just to chat, on Twitter or Mastodon .
What’s new 72 contributors submitted almost 160 improvements for this release. You can review the complete list of changes with our interactive changelog , which contains links to relevant commits and PRs for this and every previous release. Below are the most notable changes:
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: Fix get_bone_global_pose_no_override()
returning incorrect values (GH-77194 ).If you have relied on the previous behavior of this method, this change may lead to unexpected issues. You can fix them by replacing calls to get_bone_global_pose_no_override(bone)
with get_bone_global_pose(get_bone_parent(bone)) * get_bone_pose(bone)
, which should give you the same value as before. This change may be reverted before going stable as behavioral changes, even to fix bugs, are out of scope for maintenance releases for this very reason. 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. Documentation updates. This release is built from commit cfedb0a7a
(see README ).
Downloads The downloads for this pre-release build can be found in our GitHub repository:
Standard build includes support for GDScript and GDExtension.
.NET 6 build (marked as mono
) includes support for C#, as well as GDScript and GDExtension.
Known issues There are currently no known issues introduced by this release.
With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a complete list of known bugs .
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 4.0.x releases, but no longer works in 4.0.4 RC 1).
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.
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-4-0-rc-1/index.html b/article/release-candidate-godot-4-0-rc-1/index.html
index 02f297a2e6..ec8c9a30be 100644
--- a/article/release-candidate-godot-4-0-rc-1/index.html
+++ b/article/release-candidate-godot-4-0-rc-1/index.html
@@ -6,7 +6,7 @@
Yuri Sizov 8 February 2023 This has been a long road, but the exciting times are upon us! Thanks to our excellent contributors and our brave volunteer beta testers we are reaching the biggest milestone in the history of Godot so far. We are about to release Godot 4.0 stable. We are very proud of how it has shaped up, the features and enhancements that have been implemented, and most of all, we are proud to have collected such a brilliant team of talented individuals who have carried this major release on their wide and mighty shoulders.
But before we can cut the ribbon and break out the champagne, there are still a few preview releases we must go through, to establish, with your help, that we are truly ready. What you can expect from the next couple of weeks is the same cadence of official builds, aiming to minimize the iteration time between fixing bugs and checking for regressions. We will no longer make any breaking changes or include further enhancements. New features will have to wait for Godot 4.1 later this year . Instead, we will be coming down on the last critical issues we want to be resolved before we ship the first stable release of Godot 4.
There certainly will be remaining bugs, and your experience won’t be as frictionless as it is in the current stable version of Godot 3. It will take time to get to the same level of polish, but hopefully less time than before, thanks to our extended team of developers, and also new members learning about Godot only now and sharing their valuable feedback.
We are committed to evolving the engine further, and hope to see more of your amazing Godot projects soon!
Highlights As we keep iterating from previous beta releases, these release notes are focused on the most recent changes (since beta 17). If you’re interested in what major features ship with Godot 4.0, check out our blog post for beta 1 . Stay tuned for more articles about new features as we get closer to the stable version.
This release candidate includes some big changes which may interest a lot of users:
A large number of invalid behaviors is now correctly validated and reported in GDScript files (GH-72608 ). This includes some behaviors that previously appeared as working correctly but were never actually supported by the engine (such as override/shadowing of the engine’s native methods). You can turn errors into warnings, or disable them completely if you need to.
CanvasGroup
nodes will no longer appear darker than they should due to an incorrect shading logic (GH-72695 ).
The remaining reported cases of sub-resources IDs being shuffled without user input should now be resolved (GH-72257 ). While the issue should be fixed, this is not the final solution to the problem. We will continue improving the underlying systems in future versions of Godot to avoid this kind of situation.
A list of all global scripted classes can now be accessed with a new method, ProjectSettings.get_global_class_list()
(GH-71665 ). This method provides the information about your custom classes, which you cannot fetch from ClassDB
, and previously had to parse from the project file, or a cache file.
Under certain conditions, namely when particles were involved, stepping through the debugger might have been extremely slow and unresponsive. This should now be fixed (GH-72827 ).
Translation resources have been reorganized to reduce their impact on the size of the main repository (GH-70623 ). We have also finished setting up the Weblate platform for Godot 4, so translation efforts can begin!
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 Sophia’s Rainbow , an upcoming open-source 3D platformer controller demo. It’s being created in Godot 4.0 beta by GDQuest , and you can check out their existing tutorials and projects in the meantime.
What’s new See the changelog on GitHub , or the list of merged PRs , for an overview of all changes since 4.0 beta 17 (136 commits – excluding merge commits ― from 53 contributors).
The first Release Candidate concludes the beta stage, and thus it still includes a few API changes which may impact your Godot 4 projects. See the list of PRs with the breaks compat
label for details.
Some of the most notable feature changes in this update are:
Android: Rename Godot’s ‘custom build’ to ‘gradle build’ to better reflect the underlying build process (GH-72552 ). Android: Improve Vulkan capability detection on Android (GH-72780 , GH-72806 , GH-72816 ). Animation: Improve naming consistency of animation nodes (GH-72509 ). Animation: Fix AnimationNodeTransition initialization and AnimationNode remapping method (GH-72722 ). Animation: Fix animation audio to play considering time when seeking (GH-72727 ). Animation: Fix AnimationTrackEditor doesn’t open when selecting AnimationPlayer
node while another editor is open (GH-72805 ). Animation: Fix AnimationEditor ignoring region of Sprite2D
(GH-72812 ). C#: Sync C# Array with Core (GH-71786 ). C#: MSBuild
logs and panel enhancements (GH-72061 ). C#: Qualify Console
’s namespace to avoid mix-up with plugin’s objects (GH-72434 ). C#: Set AppContext.BaseDirectory
for editor builds and preserve directories in output during export (GH-72553 , GH-72554 ). C#: Implement IEquatable<>
and equality operators for StringName
and NodePath
(GH-72633 , GH-72635 ). C#: Rename export settings mono
-> dotnet
and remove unused AOT settings (GH-72849 ). Core: Expose and document ProjectSettings.get_global_class_list()
(GH-71665 ). Core: Fix sub-resource IDs resetting when preloaded (GH-72257 ). Core: Fix several conditions for crashes in Camera2D (GH-72550 , GH-72665 ). Core: Fix returning dangling data from a char StringName
constructor (GH-72703 ). Editor: Fix right-click on some files changes the ‘New’ menu entry to ‘Show in File Manager’ (GH-72576 ). Editor: Improve Editor Layout dialogs (GH-72559 ). Editor: Fix broken scaled_orthogonal()
& subgizmo global scaling (GH-72669 ). Editor: Improve Connect dialog navigation (GH-72741 ). Editor: Fix ghost SpriteFramesEditor causing crash (GH-72783 ). Editor: Fix jump to definition for methods using Ctrl + LMB
when using self
(GH-72789 ). Editor: Multiple fixes to over plugin handling (GH-72796 ). Editor: Fix some cases of stepping through the debugger being extremely slow (GH-72827 ). Editor: Bind EditorExportPlugin._get_export_features
(GH-72860 ). GDExtension: Expose _err_print_error
with message parameter to GDExtension (GH-71865 ). GDExtension: Remove unnecessary stdio.h
from GDExtension interface (GH-72786 ). GDExtension: Use GDExtensionBool
in GDExtension interface (GH-72878 ). GDScript: Cleanup function state connections when destroying instance (GH-65910 ). GDScript: Fix code-completion suggesting non-static members for custom classes (GH-70002 ). GDScript: Better handling of @rpc
annotation and autocompletion (GH-72276 ). GDScript: Fix unreachable code warning for elif
block (GH-72330 ). GDScript: Improve usability of setter chains (GH-72398 ). GDScript: Improve validation and documentation of @export_flags
(GH-72493 ). GDScript: Fix type certainty for result of ternary operator (GH-72512 ). GDScript: Fix can_reference
check for typed arrays (GH-72546 ). GDScript: Fix several conditions resulting in a crash (GH-72557 , GH-72567 , GH-72592 ). GDScript: Add warnings that are set to error by default (GH-72608 ). GDScript: Fix await
type inference (GH-72677 ). GDScript: Fix @export_multiline
for PackedStringArray
(GH-72708 ). GDScript: Don’t allow @onready
without inheriting Node (GH-72794 , GH-72804 ). GUI: Use min_size
/max_size
to limit window size and position with popup_center*
methods (GH-62179 ). GUI: Fix some cases of wrong position of a popup in OptionButton
(GH-69185 ). GUI: Fix SplitContainer
rendering and theming (GH-71862 ). GUI: Fix get_parent_anchorable_rect()
not returning the correct size in some cases (GH-72204 ). GUI: Always show caret when moving in LineEdit
(GH-72471 ). GUI: Make RichTextLabel
’s context menu customizable (GH-72651 ). GUI: Fix crash related to using undefined system fonts (GH-72743 ). Import: Allow reimport appending of new files during the import process and use it for embedded glTF images (GH-72455 , GH-72628 ). Import: Fixes to the glTF export with baking and null checks (GH-72700 ). Import: Better error handling for Blender RPC import (GH-72802 ). Input: Fix mouse/drag/touch InputEvent
s having no device ID (GH-72740 ). Input: Fix Viewport.get_mouse_position
for SubViewports
(GH-71768 ). Input: Fix several input and focus issues in X11 (GH-72785 , GH-72826 ). Internationalization: Separate property translation from editor translation, move sources to separate godot-editor-l10n
repo (GH-70623 ). macOS: Fix splash screen minimum display time not working correctly (GH-72307 ). Navigation: Fix NavigationMesh
baking AABB Editor handling and visuals (GH-72655 ). Physics: Fix propagation order for 2D physics picking events (GH-68492 ). Rendering: Fix texture rect transpose for OpenGL (GH-72586 ). Rendering: Add layer slice support to render device and render buffers (GH-72589 ). Rendering: Fix SoftBody3D
being incorrectly culled (GH-72631 ). Rendering: Expose RenderingServer.canvas_light_blend_mode
(GH-72643 ). Rendering: Ignore instance color and instance custom_data
when not used in the OpenGL renderer (GH-72681 ). Rendering: Fix MultiMesh
visible_instance_count
being ignored after the first frame (GH-72684 ). Rendering: Avoid shading CanvasGroup
nodes twice (GH-72695 ). Rendering: Implement cull_mask
for decals and lights in mobile and compatibility backends (GH-72810 ). Rendering: Set instancing flags when using GPUParticles
in OpenGL renderer (GH-72853 ). Rendering: Optimize draw_dashed_line()
and draw_rect()
(GH-72880 ). Shaders: Allow .gdshader
files in the 3-to-4 project convertor (GH-72334 ). Shaders: Fix shader failure when using non-const initializer on a constant (GH-72494 ). Shaders: Prevent preview error for the instance parameter in visual shader (GH-72660 ). Windows: Fix window size for fullscreen windows during window creation (GH-72622 ). Windows: Update last_focused_window
when the focused subwindow is deleted (GH-72624 ). XR: Add XR environment blend mode support (GH-72604 ). This release is built from commit c4fb119f0 .
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 or 7.0 installed in a standard location. .NET 7.0 support was recently merged and requires testing, please report any issue you experience with either version. Known issues With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a list of known bugs in the 4.0 milestone .
You will likely see this list reduced drastically over the coming days as we continue to re-triage those issues and postpone the ones that are not critical for the 4.0 release.
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 thank you 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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-4-0-rc-2/index.html b/article/release-candidate-godot-4-0-rc-2/index.html
index 0b977ca054..315c999e10 100644
--- a/article/release-candidate-godot-4-0-rc-2/index.html
+++ b/article/release-candidate-godot-4-0-rc-2/index.html
@@ -6,7 +6,7 @@
Rémi Verschelde 14 February 2023 The Godot 4.0 release is mere days away! We’ve had a first release candidate last week, and since then our contributors have been fully focused on fixing regressions and critical bugs to ensure that the upcoming 4.0 release will be a great foundation to build upon .
The Production team has been hard at work assessing the remaining PRs and issues in the 4.0 milestone, pushing non-critical or risky changes to the 4.1 milestone, or prioritizing what could actually still be done so close to the release. Astute watchers of the 4.0 milestone ’s completion ratio will have noticed a significant increase, but that doesn’t mean that all issues are being solved. Some will be fixed in time for 4.1, and cherry-picked for 4.0.x maintenance releases along the way.
Regardless of which milestone our contributors assign to your issues, be sure to keep reporting any major or minor problem you’re having with 4.0 RC 2! Your test reports at this stage are critical for us to assess whether we can finally stamp the current development branch as “stable” and release it to all platforms.
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 Master of Chess , an upcoming chess player management game by BRANE . It’s being developed with Godot 4.0, and you can follow development on Twitter and wishlist it on Steam .
What’s new As usual, this blog post only details the most recent changes since the last build, 4.0 RC 1. If you’re interested in what major features ship with Godot 4.0, check out our blog post for beta 1 .
See the changelog on GitHub , or the list of merged PRs , for an overview of all changes since 4.0 RC 1 (136 commits – excluding merge commits ― from 72 contributors).
Some of the most notable feature changes in this update are:
2D: Fix random placement behavior in TileMap editor (GH-61411 ). 2D: Fix TileMap patterns creation (GH-73034 ). 2D: Fix camera reparenting (GH-73063 ). 2D: Fix Line2D UVs when using BOX end cap mode (GH-73069 ). Animation: Add root motion accumulator to fix broken RootMotionView (GH-72931 ). Animation: Various fixes to AnimationNodeTransition and OneShot (GH-73024 , GH-73117 , GH-73120 , GH-73187 ). C#: Build C# csproj instead of the solution (GH-73015 ). C#: Implement GodotSynchronizationContext.Send
(GH-73026 ). Editor: Fix code editor’s ColorPicker issue (GH-63907 ). Editor: Fix private properties appearing in custom class doc Property Descriptions (GH-67707 ). Editor: Support editing JSON files in code editor (GH-72259 ). Editor: Rework code editor’s multiline operations (GH-72671 ). Editor: Fix panning via InputEventPanGesture (notably for macOS) (GH-72884 ). Editor: Avoid cleaning up editor plugins when property list changes (GH-73098 ). Editor: Improve EditorHelp theming and make font size settings work (GH-73106 ). Editor: Fix editor progress dialog auto closing on ESC press, and on application focus loss (GH-73269 ). GDExtension: Expose unregister language & improve usability (GH-67155 ). GDScript: Fix internal editor not updating when using external editor via LSP (GH-69550 ). GDScript: Avoid losing references to objects in the native-scripting boundary (GH-72654 ). GDScript: Allow strings as multiline comments (GH-72971 ). GDScript: Be more lenient with identifiers (GH-72975 ). GUI: Mark dirty flags when shaped texts are invalidated (GH-72225 ). GUI: Fix LineEdit not consuming events (GH-72378 ). GUI: Enhance label sizing algorithm (a.k.a. prevent infinite GUI re-layout) (GH-72387 ). GUI: Fix unlimited text rendering in Tree if width <= 0
(GH-72714 ). GUI: Fix popup_centered()
not taking the window’s size into consideration (GH-72991 , GH-73040 ). GUI: Fix GraphEdit port hotzone snapping (GH-73137 ). GUI: Cleanup Window callbacks before destroying in to avoid callback calls with invalid object (GH-73239 ). Import: Fix SceneImportSettings performance issues (GH-71691 ). Import: Set Default compression to VRAM uncompressed for LightmapGI (GH-73136 ).This fixes a perceived regression where lightmaps starting being compressed to BPTC, which is slow. You should remove the .import
files for your baked lightmaps generated with beta 17 or RC 1 if you want to apply this automatically (or change the compression option in the Import tab). Compressing lightmaps is recommended to optimize memory usage once you’re happy with the results, though note that RC 2 still has a known issue exporting BPTC compressed files, which will be fixed in RC 3. Import: Prevent recursive importing (hack) (GH-73214 ). Multiplayer: Fix MultiplayerSpawner not connecting to child_entered_tree
(GH-73161 ). Navigation: Fix missing avoidance updates when using same velocity (GH-72947 ). Navigation: Fix navigation support for multilayered TileMaps (GH-73018 ). Rendering: Add render buffer support to screen space effects (GH-72838 ). Rendering: OpenGL: Handle 0 exponent in float/half conversion (GH-72914 ). Rendering: OpenGL: Properly reset blend mode when resetting canvas in compatibility renderer (GH-73006 ). Rendering: Vulkan: Do clear request before reading from render target when using CANVAS_BG
(GH-73055 ). Rendering: Vulkan: Make draw command labels thread safe (GH-73057 ). Rendering: OpenGL: Store blend mode between CanvasItems to preserve batching (GH-73255 ). Rendering: Notify mesh surface when render_priority
changes (GH-73263 ). Rendering: Bias octahedral tangent y axis to avoid errors around 0 (GH-73265 ). Shaders: Avoid inserting screen_texture
compatibility code when using textureSize
(GH-73060 ). Thirdparty: Update libwebp to upstream 1.3.0 (GH-72045 ). This release is built from commit d2699dc7a .
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 or 7.0 installed in a standard location. .NET 7.0 support was recently merged and requires testing, please report any issue you experience with either version. Known issues With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a list of known bugs in the 4.0 milestone .
Exporting BPTC compressed textures (notably HDR textures with EXR format) is not working in this build (GH-72856 ). The issue has been identified and a fix will be included in 4.0 RC 3 (GH-73286 ). OpenGL windows with a keep
stretch mode can show graphics artefacts in the bars outside the viewport (GH-71799 ). This also has a fix queued for 4.0 RC 3 already (GH-73300 ). You will likely see this list reduced drastically over the coming days as we continue to re-triage those issues and postpone the ones that are not critical for the 4.0 release.
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 thank you 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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-4-0-rc-3/index.html b/article/release-candidate-godot-4-0-rc-3/index.html
index 98bc960dc2..1ce4e6d030 100644
--- a/article/release-candidate-godot-4-0-rc-3/index.html
+++ b/article/release-candidate-godot-4-0-rc-3/index.html
@@ -6,7 +6,7 @@
Rémi Verschelde 21 February 2023 For this release candidate we picked a calm, relaxing illustration picture, because that’s what all contributors need now after months and months of hard work to finalize this release. What’s currently in this third release candidate is pretty much what 4.0 stable will be. With all the amazing new features that we’ve often described on this blog and on social media, and with all the remaining bugs and usability issues that we want to iron out for future 4.x releases.
Open source software works best with a release early, release often strategy, and after more than 3 years of foundational work on Godot 4.0, we’re eager to move back to faster paced release cycles to iterate quickly on the more modern and flexible architecture that we’ve built for this major branch. So don’t expect the imminent 4.0 release to be a silver bullet – it will be a stable base for us to build upon, and a good start for you to start developing new projects which will mature alongside Godot 4.x.
Jump to the Downloads section.
You can also try the Web editor (early testing, it’s still slow and unstable).
The illustration picture is from a video tutorial by StayAtHomeDev for making an endless ocean scene with Godot 4.0. StayAtHomeDev make a lot of great Godot content on their YouTube channel , including This Week in Godot , a weekly highlight of cool Godot projects.
What’s new As usual, this blog post only details the most recent changes since the last build, 4.0 RC 2. If you’re interested in what major features ship with Godot 4.0, check out our blog post for beta 1 .
See the changelog on GitHub , or the list of merged PRs , for an overview of all changes since 4.0 RC 2 (139 commits – excluding merge commits ― from 68 contributors).
Some of the most notable feature changes in this update are:
2D: Add dash and step size checks to draw_dashed_line()
(GH-73444 ). 2D: Fix TileMap dragging selection (GH-73512 ). 2D: Fix tile atlas merging crash (GH-73634 ). Android: Default Min SDK to 24 for Vulkan mobile (GH-73353 ). Animation: Fix AnimatedTexture inconsistency when setting frame (GH-49102 ). Buildsystem: Let VS solution name be overridden with vsproj_name
(GH-73453 ). C#: Fix internal source generator on the 7.0.200 SDK (GH-73382 ). C#: Open the solution directory when using VS Code (GH-73392 ). C#: Fix line position when opening file in VS Code (GH-73584 ). Core: Restore FileAccess.close()
method (GH-73435 ). Core: Fix PagedArray.merge_unordered()
sometimes dropping pages (GH-73460 ). Core: Make ResourceCache.get_cached_resources()
thread-safe (GH-73616 ). Editor: Fix corrupt undo after making sub-resources unique (GH-73237 ). Editor: Fix revert button on exported node properties on inherited nodes (GH-73350 ). Editor: Fix missing increment buttons for integers (GH-73361 ). Editor: Fold resources when non-main inspector exits tree (GH-73381 ). Export: Fix missing directories when exporting from command line (GH-73595 ).This should fix issues exporting Godot projects on CI without the .godot
folder of imported assets. Please test and report any remaining issues. GDScript: Use path instead of file name when updating script classes, fixes issues with custom resources in export variables (GH-71850 ). GDScript: Add limit to call depth (GH-72867 ). GDScript: Fix error about enum typed arrays (GH-72925 ). GDScript: Fix infer on read-only property (GH-73238 ). GDScript: Fix default value of exported enum variable (GH-73292 ). GDScript: Fix crash by freed object assign to typed variable (GH-73364 ). GDScript: Fix unset getter return types resulting in strange behavior (GH-73398 ). GDScript: Avoid bookkeeping from referencing objects longer than necessary (GH-73448 ). GDScript: Rework type check with is
(GH-73489 ).This change involves a slight compatibility breakage for the behavior of the is
operator. It now requires a type known as compile time, so it’s not possible to use it to check if two variables have the same type. For this, use typeof()
or the new is_instance_of()
function. GDScript: Fix error passing null Object argument to functions with typed arguments (GH-73544 ). GDScript: Make global scope enums accessible as types (GH-73590 ). GUI: Fix multiple window/input issues with ColorPicker (GH-72764 ). GUI: Make label sizing algorithm more robust (GH-73343 ). GUI: Fix TabBar not redrawing on locale change (GH-73349 ). GUI: Fix width determination of non-trimmed, non-wrapped labels (GH-73426 ). Import: Ensure that generated import IDs are unique (GH-69810 ). Import: Fix texture_format/bptc
export option (GH-73286 ). Import: Fix base_dir
path for texture dependencies for FBX files (GH-73654 ). Input: Avoid setting both key and modifier to the same value for InputEventKey (GH-73268 ). Input: Remove device id restriction from TouchScreenButton input events (GH-73470 ). Input: Revert Input.get_vector()
back to checking raw strength (GH-73608 ). iOS: Fix memory leak on touch input (GH-69201 ). iOS: Implement missing JoyButton::BACK
(Options), START
(Menu), and GUIDE
(Home) (GH-73462 ). Linux: Fix initial “on top” window state (GH-72877 ). Linux: Some fixes for initial window position and size (GH-73278 ). Linux: Make SO wrapper usage optional (GH-73359 ). Linux: Process TTS callback on the main thread to avoid speech-dispatcher deadlock (GH-73671 ). macOS: Replace all Alt/Option+Letter/Number default shortcuts to avoid conflicts with special character input (GH-73422 ). macOS: Enable display/high_res
by default (GH-73510 ). macOS: Fix Input.warp_mouse()
shifted by one screen pixel (GH-73666 ). Multiplayer: Fix multiplayer replication crash in on_sync_receive
(GH-73216 ). Multiplayer: Add a synchronized
signal to MultiplayerSynchronized (GH-73626 ). Navigation: Add NavigationLink helper functions for global positions (GH-73229 ). Navigation: Tweak NavigationAgent3D defaults (GH-73428 ). Particles: Fix billboarding for non uniform scale (GH-65353 ). Physics: Fix CCD in case of multiple supports in motion direction (GH-72917 ). Physics: Fix BVH lockguards for multithread mode (GH-73628 ). Rendering: OpenGL: Clear Window before blitting Viewport (GH-73300 ). Rendering: OpenGL: Avoid branch in half2float
(GH-73332 ). Rendering: Fix sampling bug when SSAO is using half size (GH-73420 ). Rendering: Only include emission when enabled in material during VoxelGI bake (GH-73464 ). Rendering: OpenGL: Fix culling without depth prepass (GH-73465 ). Rendering: OpenGL: Avoid unnecessary binding of occlusion polygon vertex array (GH-73524 ). Rendering: OpenGL: Fix issue with clearing screen after part has been drawn (GH-73659 ). Rendering: OpenGL: Fix wobbly sky in stereoscopic mode (GH-73662 ). Shaders: Fix shader parameter assign (GH-73552 ). Web: Fix Standard Gamepad Mapping triggers (GH-73254 ). This release is built from commit 7e79aead9 .
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 or 7.0 installed in a standard location. .NET 7.0 support was recently merged and requires testing, please report any issue you experience with either version. Known issues With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a list of known bugs in the 4.0 milestone .
You will likely see this list reduced drastically over the coming days as we continue to re-triage those issues and postpone the ones that are not critical for the 4.0 release.
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 thank you 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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-4-0-rc-4/index.html b/article/release-candidate-godot-4-0-rc-4/index.html
index e5e299a78c..ae25358b91 100644
--- a/article/release-candidate-godot-4-0-rc-4/index.html
+++ b/article/release-candidate-godot-4-0-rc-4/index.html
@@ -6,7 +6,7 @@
Rémi Verschelde 23 February 2023 As the stable release is imminent, release candidates become more frequent to validate the last minutes fixes we had to make. This fourth release candidate includes a number of important fixes which we decided to include, and which require heavy testing to ensure that the bugs and regressions that they aim to fix are solved, without introducing new regressions.
Jump to the Downloads section.
You can also try the Web editor .
The illustration picture is from a demo of the Photo mode add-on developed by Godot contributor Hugo Locurcio for Godot 4.0. It uses CC0 models and textures from PolyHaven .
What’s new As usual, this blog post only details the most recent changes since the last build, 4.0 RC 3. If you’re interested in what major features ship with Godot 4.0, check out our blog post for beta 1 .
See the changelog on GitHub , or the list of merged PRs , for an overview of all changes since 4.0 RC 3 (49 commits – excluding merge commits ― from 26 contributors).
Some of the most notable feature changes in this update are:
2D: Fix reset_state()
in TileSet (GH-73714 ). Android: Enable granular control of touchscreen related settings (GH-73694 ). C#: Fix editor crashing without a message when .NET is not installed (GH-73815 ). Core: Fix threading issues in resource loading (GH-73647 ). Core: Fix FileAccess.get_open_error()
flag update (GH-73684 ). Editor: Disable incompatible rendering methods in the project manager (GH-72460 ). Editor: Fix line folding with multiple carets (GH-73704 ). Editor: Load script for addons without cache (GH-73776 ). GDScript: Fix crash when autoload script can’t be found (GH-73679 ). GDScript: Avoid validated division operation to test for zero (GH-73680 ). GDScript: Fix setting native type with script inheritance (GH-73689 ). GDScript: Fix override signature check of script inheritance (GH-73693 ). GDScript: Add check for null objects in typed assign (GH-73705 ). GDScript: Fix usage of enum value as range argument (GH-73796 ). GDScript: Fix parsing unexpected break/continue in lambda (GH-73798 ). GUI: Ensure minimal thickness for RichTextLabel underlines (GH-73587 ). GUI: Revert Label text reshaping fix GH-71553 and subsequent regression fixes (GH-73809 ). Import: Use multiple threads to import HDR images (GH-73715 ). Import: Fix ownership bug on ancestor nodes when scene is reimported (GH-73775 ). Import: Pass the correct defaults to generated collision shapes (GH-73797 ). Import: Fix UV2 by avoiding premature ImporterMesh.get_mesh()
(GH-73814 ). iOS: Fix Xcode project file list (GH-73753 ). Multiplayer: Fix replication config not updating sync/spawn props from code (GH-73806 ). Multiplayer: Fix WebSocketMultiplayerPeer server crash when a client tries to connect (GH-73811 ). Rendering: Use the original canvas to calculate light positioning (GH-73478 ). Rendering: Increase SSAO and SSIL bias to account for variance in mipmap generation (GH-73698 ). Rendering: Fix issue with default textures requiring arrays when using multiview (GH-73733 ). Shaders: Forbid passing multiview sampler to the custom function in shaders (GH-72300 ). Windows: Take initial flags into account when creating main window (GH-73744 ). XR: Add HTC Vive focus XR manifest metadata (GH-72817 ). This release is built from commit e0de3573f .
Downloads The downloads for this dev snapshot can be found directly on our repository:
Known issues With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a list of known bugs in the 4.0 milestone .
Game using HDR texture crashes when exported (texture_format/bptc defaults to false) (GH-73789 ).This is a configuration issue, you can set texture_format/bptc
to true
in your PC export presets, and disable texture_format/no_bptc_fallbacks
. The defaults settings will be fixed for the next build. You will likely see this list reduced drastically over the coming days as we continue to re-triage those issues and postpone the ones that are not critical for the 4.0 release.
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 thank you 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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-4-0-rc-5/index.html b/article/release-candidate-godot-4-0-rc-5/index.html
index 49316d73dc..93f238a753 100644
--- a/article/release-candidate-godot-4-0-rc-5/index.html
+++ b/article/release-candidate-godot-4-0-rc-5/index.html
@@ -6,7 +6,7 @@
Rémi Verschelde 24 February 2023 It’s been a busy week! We had our third and fourth release candidates on Tuesday and Thursday with a lot of bugfixes, and one regression slipped by! So it’s already time for RC 5 to solve that, as well as a few other major issues which got fixed in the past 24 hours.
Jump to the Downloads section.
You can also try the Web editor .
The illustration picture is from Thunder Blood , an upcoming twin-stick roguelike shooter developed by Oddlife in Godot 4.0. Follow them on Twitter for updates!
What’s new As usual, this blog post only details the most recent changes since the last build, 4.0 RC 4. If you’re interested in what major features ship with Godot 4.0, check out our blog post for beta 1 .
See the changelog on GitHub , or the list of merged PRs , for an overview of all changes since 4.0 RC 4 (15 commits – excluding merge commits ― from 11 contributors).
Some of the most notable feature changes in this update are:
2D: Fix custom viewports in Camera2D (GH-73846 ). Export: Default to exporting S3TC + BPTC for PC platforms (GH-73829 ). Export: Fix editor resource preview deadlocking with –headless mode (GH-73838 ). GDScript: Fix range regression (GH-73841 ). GDScript: Fix groups and categories been seen as members (GH-73870 ).Edit: This introduced a regression for some @tool
scripts, which will be fixed in the next build (GH-73905 ). Rendering: Fixing issues with SSIL artifacts (GH-73859 ). This release is built from commit 6296b4600 .
Downloads The downloads for this dev snapshot can be found directly on our repository:
Known issues With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a list of known bugs in the 4.0 milestone .
One of the changes in this RC was found to introduce a regression for @tool
scripts, which can lead to corrupt .tres files for custom resources (GH-73905 ). This will be fixed for the next RC. 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 thank you 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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-4-0-rc-6/index.html b/article/release-candidate-godot-4-0-rc-6/index.html
index 988a9e6900..4282d88a4e 100644
--- a/article/release-candidate-godot-4-0-rc-6/index.html
+++ b/article/release-candidate-godot-4-0-rc-6/index.html
@@ -7,7 +7,7 @@
You’re also very welcome to report non-showstopper issues, you’ll probably see us put them in the 4.1 or 4.x milestones, but it helps to have them tracked as early as they’re noticed.Jump to the Downloads section.
You can also try the Web editor .
The illustration picture is from a demo scene by Wojtek Pe , showcasing various 3D features of Godot 4.0. Follow them on Twitter and YouTube for more cool Godot 4 devlogs, tutorials, and demos.
What’s new As usual, this blog post only details the most recent changes since the last build, 4.0 RC 5. If you’re interested in what major features ship with Godot 4.0, check out our blog post for beta 1 .
See the changelog on GitHub , or the list of merged PRs , for an overview of all changes since 4.0 RC 5 (22 commits – excluding merge commits ― from 15 contributors).
Some of the most notable feature changes in this update are:
C#: Check if a class is a singleton using the Core name (GH-73882 ). Core: Make max()
and min()
global functions only accept numbers (GH-73881 ). Core: Identity compare objects by id, not by pointers (GH-73892 ). Core: Fix crash when playing audio-less Theora videos in VideoStreamPlayer (GH-73958 ). Core: Fix deadlock in cyclic resource load (GH-73988 ). Editor/GUI: Revert “Reordering emitted signals in PopupMenu” and fix editor selection issue in the safer way (GH-73885 ). GDScript: Initialize all defaults beforehand in implicit constructor (GH-73899 ). GDScript: Fix conversions from native members accessed by identifier (GH-73915 ). GDScript: Revert “GDScript: Fix groups and categories been seen as members” (GH-73933 ).The reverted commit introduced a bug where it creates spurious entries for member information, potentially damaging scene files (GH-73905 ). GDScript: Fix address type for coroutine results (GH-73964 ). Import: Fix basisu texture mipmaps (GH-73948 ). Rendering: Add warnings for unsupported features in mobile and gl_compatibility backends (GH-73959 ). Shaders: Fix shader preprocessor include resource check (GH-73975 ). This release is built from commit 0cd148313 .
Downloads The downloads for this dev snapshot can be found directly on our repository:
Known issues With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. 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 thank you 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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-4-1-1-rc-1/index.html b/article/release-candidate-godot-4-1-1-rc-1/index.html
index ec077135f5..8a50b25877 100644
--- a/article/release-candidate-godot-4-1-1-rc-1/index.html
+++ b/article/release-candidate-godot-4-1-1-rc-1/index.html
@@ -6,7 +6,7 @@
Yuri Sizov 12 July 2023 It was a busy weekend in the Godot-land, as the newly released Godot 4.1 was being viewed, tested, and tried by thousands of developers. The annual GMTK Game Jam by the popular YouTube channel Game Maker’s Toolkit did help quite a lot in that regard! Of course, where there is a lot of users, there is also a lot of highly appreciated reports and suggestions. Plus we had some ready to go from before 4.1 was sealed and shipped.
As always with the first maintenance release (also known as “patch release”) the focus is on quickly addressing urgent concerns and issues, possible regressions and crashes, as well as some aliasing in various workflows. Some of the most important changes include:
Fix for a crash due to an infinite loop in AnimationStateMachine
(GH-79141 ). It was a gnarly issue because it was easy to trigger with a bare minimum configuration. Now circular dependencies are correctly detected preventing infinite looping.
Command-line export of C#/.NET projects should no longer drop random files (GH-79173 ). Your exports may have had arbitrary resources missing (not C# scripts, but images, for instance), if you were exporting your project with CLI. This should no longer happen.
Custom export options which you can define with an EditorExportPlugin
are now correctly restored on the editor restart (GH-79025 ). Previously the usability of this freshly added feature was limited due to data loss between sessions.
For Linux users there is a potential fix for freezes when interacting with menus on Wayland (GH-79143 ). This was a hard to identify and debug issue, but our local Wayland enthusiasts managed to pinpoint the likely cause and validate that the unwanted behavior was addressed.
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 illustration picture for this article showcases six amazing entries from the recent GMTK Game Jam , — all made with Godot! Give them a try, leave a comment to the developer, and, of course, consider giving them your vote ❤️ Many more game developers chose Godot for this game jam, so make sure to check the full list of entries and support your fellow creators. Games illustrated in the cover image are as follows:
Yeti Upsetti — a reimagination of classic SkiFree; made with Godot 4.1. Making the Game lets you make game design decisions and suffer the consequences; powered by Godot 3.5.1. Tama-Get-Out! makes you fill the shoes of a pocket pet; developed in Godot 4.1. Levelrinth — a puzzle platformer where you are the level; created with Godot 4.1. poki — a creative puzzle game that lets you reconstruct levels before solving them; made with Godot 4.1. Video Editor’s Toolkit makes you responsible for creating a video covering GMTK Game Jam 2023; developed in Godot 3.5.2. What’s new 46 contributors submitted over 70 improvements for this release. You can review the complete list of changes with our interactive changelog , which contains links to relevant commits and PRs for this and every previous release. Below are the most notable changes:
2D: Improve string drawing in the tiledata editor (GH-78522 ). 2D: Make sure the shortcut key respects the context in TileSetAtlasSourceEditor
(GH-78920 ). 3D: Fix Camera3D project_*
methods not accounting for frustum offset (GH-75806 ). 3D: Fix 3D viewport grid disappearing on scene tab changes (GH-78694 ). Animation: Fix infinite loop state check in AnimationStateMachine
(GH-79141 ). Animation: Add 3.x compatibility for animation loop mode (GH-79155 ). Buildsystem: Linux: Allow unbundling brotli to use system library (GH-79101 ). C#: Update the RiderPathLocator to support the JetBrains Toolbox 2.0 (GH-78832 ). C#: Compare symbol names without null flow state (GH-79094 ). C#: Fix command line exporting (GH-79173 ). Core: Check parameter validity in Object::set_script
(GH-46125 ). Core: Fix zero-sized WorkerThreadPool not processing group tasks (GH-78845 ). Core: Fix Node::add_sibling
parent check (GH-78847 ). Core: Fix error when non-ASCII characters in resource pack path (GH-78935 ). Core: Fix PackedScene::get_last_modified_time()
always returns 0
(GH-79237 ). Editor: Focus current node after connecting (GH-54071 ). Editor: Project converter: Use same rendering driver as Project Manager (GH-78795 ). Editor: Fix dropping files from res://
to res://
(GH-78914 ). Editor: Do not change a node unique name to the same name (GH-78925 ). Export: Fix export options of scripted EditorExportPlugin
s (GH-79025 ). GDScript: Fix regression with GDScript enum descriptions now showing up in documentation (GH-78953 ). GUI: Fix cursor behavior for multiselect in Tree while holding CTRL (GH-71024 ). GUI: Ensure that _drop_physics_mouseover
only happens when necessary (GH-78078 ). GUI: Fix invalid minimum size for translated messages in option button (GH-78835 ). Import: Fix property hint class name type string restriction and replace mode (GH-79139 ). Navigation: Fix closest possible navigation path position (GH-79004 ). Network: Fix rpc
calls with binds (GH-78551 ). Particles: Initialize particles instance buffer in case it is used before being updated (GH-78852 ). Particles: Unify error condition for particles trail lifetime (GH-79270 ). Porting: Fix formatting of dlopen
error messages (GH-78802 ). Porting: Fix the fallback logic of OS::shell_show_in_file_manager
(GH-79087 ). Porting: Linux/BSD: Avoid freeze when interacting with menus on Wayland (GH-79143 ). Porting: Linux/BSD: Fix move_to_trash
wrongly reporting files as not found (GH-79284 ). Porting: Windows: Flash both the window caption and taskbar button on request_attention
(GH-78263 ). Porting: Windows: Fix setting initial non-exclusive window mode (GH-79016 ). Rendering: Clear specular buffer if sky mode is canvas and screen space effects are used (GH-78624 ). Rendering: Fix threading bug in Vulkan rendering device (GH-78794 ). Rendering: Take eye offset into account for depth in StandardMaterial3D (GH-79049 ). Shaders: Fix invalid shader compilation when using hint_normal_roughness_texture
in mobile backend (GH-78839 ). Shaders: Fix using uint suffix at the hex number declaration in shaders (GH-78906 ). Shaders: Fix shader language float literal precision truncation (GH-78972 ). Shaders: Fix comments and indentation in .gdshaderinc
files (GH-79158 ). One previously accepted change was reverted in this release due to regressions.
GUI: Revert “Fix focus loss of non-exclusive AcceptDialog
with close_on_escape
” (GH-79084 ). This release is built from commit e709ad4d6
(see README ).
Downloads The downloads for this pre-release build can be found in our GitHub repository:
Standard build includes support for GDScript and GDExtension.
.NET 6 build (marked as mono
) includes support for C#, as well as GDScript and GDExtension.
Known issues There are currently no known issues introduced by this release.
With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a complete list of known bugs .
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 the 4.1 release, but no longer works in 4.1.1 RC 1).
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 thank you 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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-4-1-2-rc-1/index.html b/article/release-candidate-godot-4-1-2-rc-1/index.html
index 0a60f4a5b9..38364ce127 100644
--- a/article/release-candidate-godot-4-1-2-rc-1/index.html
+++ b/article/release-candidate-godot-4-1-2-rc-1/index.html
@@ -6,7 +6,7 @@
Yuri Sizov 22 September 2023 We have had quite a pause since Godot 4.1.1 — two months without a new patch release (blame the summer break!). So it’s long overdue we have one, starting of course with a release candidate to validate that everything is in order and no new changes introduce regressions.
Godot 4.1.2 contains a number of stability improvements, addressing crashes related to threading, editor features, networking, GUI, and rendering. A significant bug related to allocations of plain objects has been fixed as well, which should improve performance and memory usage, especially at scale (GH-81037 ). There are also a number of performance fixes in GUI nodes, such as Tree
and RichTextLabel
, which make parts of the editor UI more responsive (GH-79325 , GH-80857 ). Several optimizations have been made to rendering backends as well.
We have received reports of issues with saving projects on the web platform, and this release resolves these issues (GH-79866 ), as well as a few other platform-specific bugs. Another important problem fixed in 4.1.2 is doubled input events coming from gamepads when using Steam Input (GH-76045 ). And as always there is a bunch of smaller, but no less crucial changes and updates!
Maintenance releases are expected to be safe for an upgrade, but we recommend to always make backups, or use a version control system such as Git, to preserve your projects in case of corruption or data loss.
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 illustration picture for this article comes from Fisk — an open world survival horror game with Lovecraftian vibes currently being developed by Kristian Nilsen with Godot 4. (It uses Qodot for creating geometry, by the way, which deserves its own shoutout!) You can follow Kristian on Twitter for more updates and you can download Fisk today from its website .
What’s new 56 contributors submitted around 150 improvements for this release. You can review the complete list of changes with our interactive changelog , which contains links to relevant commits and PRs for this and every previous release. Below are the most notable changes:
2D: Fix Camera2D crash when edited scene root is null (GH-79645 ). 2D: Fix CanvasModulate
logic for modulating the canvas (GH-79747 ). 3D: Fix VoxelGI saving VoxelGIData as a built-in file when prompted to save to an external file (GH-78772 ). 3D: Change property hint range for camera attributes exposure multiplier (GH-79138 ). 3D: Fix Curve3D baking up vectors for nontrivial curves (GH-81885 ). Animation: Fix Animation::subtract_variant
for affine transforms (GH-79279 ). Animation: Fix AnimationNodeTransition
with negative time scale (GH-79403 ). Animation: Remove animation tracks with correct indices (GH-81651 ). Audio: Fix audio stream generators getting freed accidentally (GH-81508 ). Buildsystem: Allow unbundling OpenXR (for Linux distros) (GH-73443 ). Buildsystem: Disable C++ exception handling (off by default in 4.1) (GH-80612 ). Buildsystem: MSVC: Pass build options configuration to Visual Studio projects (GH-79238 ). Buildsystem: MSVC: Make incremental linking optional (GH-80482 , GH-81144 ). Buildsystem: MSVC: Enable /WX
on LINKFLAGS with werror=yes
(GH-80711 ). C#: Fix deserialization of delegates that are 0-parameter overloads (GH-78877 ). C#: Add missing useModelFront
parameter to GodotSharp Basis and Transform (GH-79082 ). C#: Hide hostfxr not found error (GH-81690 ). Core: Fix range error for Array.slice
(GH-79103 ). Core: Fix byte to float color conversion in DisplayServerWindows::screen_get_pixel
(GH-79350 ). Core: Fix recursion level check for array stringification (GH-79370 ). Core: Fix global transform validity for Node2D
and Control
(GH-80105 ). Core: Fix recursion level check for VariantWriter::write()
with objects (GH-81123 ). Core: Fix string conversion for -0.0 float values (GH-81328 ). Editor: Fix history mismatch (GH-78827 ). Editor: Improve resolution of script type icons (GH-79203 , GH-81336 ). Editor: Don’t use splash minimum display time in editor (GH-79388 ). Editor: Automatically add path to built-in scripts (GH-79920 ). Editor: Use ui_text_submit
instead of ui_accept
to confirm and close text prompts (GH-81189 ). Export: Fix Windows console wrapper and icon being swapped (GH-80357 ). GDExtension: Fix version check for GDExtension (GH-80591 ). GDExtension: Fix overriding _export_begin
, _export_file
and _export_end
from GDExtension (GH-80999 ). GDScript: Fix conflict between property and group names (GH-78254 ). GDScript: Properly track extents of constants (GH-79301 ). GDScript: Fix POT generator crash on assignee with index (GH-82004 ). GUI: Fix Tree
performance regression by using cache (GH-79325 ). GUI: Fix root_node_layout_direction
project setting being incorrectly exposed as a range (GH-79611 ). GUI: Fix CodeEdit
completion being very slow in certain cases (GH-80472 ). GUI: RTL: Improve performance by using list iterators for item/paragraph removal (GH-80857 ). GUI: Enable transparent background for GUI tooltips (GH-81669 ). Import: Use image index instead of texture index for source_images
(GH-80314 ). Input: Prevent double input events on gamepad when running through Steam Input (GH-76045 ). Input: Android: Set echo
property for the physical keyboard events (GH-79089 ). Navigation: Fix NavigationObstacle2D debug position (GH-79392 ). Navigation: Fix NavMesh map_update_id
returning 0 results in errors (GH-80189 ). Network: Prevent crash when accessing Node
Multiplayer from thread (GH-79332 ). Network: ENet: Better handle truncated socket messages (GH-79699 ). Network: ENet: Properly set transfer flags when using custom channels (GH-80293 ). Network: Web: Always return -1 as body length in HTTPClientWeb (GH-79846 ). Particles: Add motion vector support for GPU 3D Particles (GH-80688 ). Porting: Fix file permissions for the web platform (affects every Unix-like platform) (GH-79866 ). Porting: macOS: Fix uncapped frame rate for windows in the non-active workspaces (GH-79572 ). Porting: Web: Fix JavaScriptBridge.eval()
never returning PackedByteArray (GH-81015 ). Rendering: Enable depth writes during shadow pass and depth pass, disable during color pass (GH-80070 ). Rendering: Fix motion vectors being corrupted when using precision=double
(GH-80257 ). Rendering: Remove GPU readback from NoiseTexture3D.get_format()
(GH-80407 ). Rendering: Clamp Volumetric Fog Length property to prevent rendering issues (GH-80485 ). Rendering: Propagate error correctly when max texture size for lightmaps is too small (GH-81543 ). Rendering: Add half-pixel offset to lightmapper rasterization (GH-81872 ). Rendering: GLES3: Reset anisotropic filtering when changing texture filtering mode (GH-79568 ). Rendering: GLES3: Fix multimesh rendering when using colors or custom data (GH-79660 ). Rendering: GLES3: Fix memory access error for MultiMesh
(GH-80788 ). Rendering: Vulkan: Fix texture update (GH-80781 ). Rendering: Vulkan: Fix crash with many Omni/SpotLights, Decals or ReflectionProbes (GH-80845 ). Shaders: Allow more hint types for uniform arrays (GH-79100 ). Shaders: Fix shader type detection (GH-79287 ). Shaders: Fix Shader and ShaderInclude resource loading (GH-80705 ). XR: Fix issue with accessing hand tracking without timing info (GH-78817 ). XR: Ensure OpenXR classes are declared properly (GH-81037 ). Thirdparty: FreeType 2.13.2, ICU4C 73.2, libpng 1.6.40, libwebp 1.3.2, mbedtls 2.28.4, miniupnpc 2.2.5, openxr 1.0.28, tinyexr 1.0.7. This release is built from commit 58f0cae4a
(see README ).
Downloads The downloads for this pre-release build can be found in our GitHub repository:
Standard build includes support for GDScript and GDExtension.
.NET 6 build (marked as mono
) includes support for C#, as well as GDScript and GDExtension.
Known issues There are currently no known issues introduced by this release.
With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a complete list of known bugs .
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 4.1.x releases, but no longer works in 4.1.2 RC 1).
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.
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-4-1-3-rc-1/index.html b/article/release-candidate-godot-4-1-3-rc-1/index.html
index 85091da743..3e663b0b4d 100644
--- a/article/release-candidate-godot-4-1-3-rc-1/index.html
+++ b/article/release-candidate-godot-4-1-3-rc-1/index.html
@@ -10,7 +10,7 @@
Make a Donation Standard build includes support for GDScript and GDExtension.
.NET 6 build (marked as mono
) includes support for C#, as well as GDScript and GDExtension.
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.
Known issues There are currently no known issues introduced by this release.
With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a complete list of known bugs .
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 4.1.x releases, but no longer works in 4.1.3 RC 1).
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.
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-4-1-4-and-4-2-2-rc-1/index.html b/article/release-candidate-godot-4-1-4-and-4-2-2-rc-1/index.html
index 7b58ba53e4..c5176bbb52 100644
--- a/article/release-candidate-godot-4-1-4-and-4-2-2-rc-1/index.html
+++ b/article/release-candidate-godot-4-1-4-and-4-2-2-rc-1/index.html
@@ -15,7 +15,7 @@
Make a Donation Standard build includes support for GDScript and GDExtension.
.NET build (marked as mono
) includes support for C#, as well as GDScript and GDExtension.
.NET build requires .NET SDK 6.0 , 7.0 , or 8.0 installed in a standard location. To export to Android, .NET 7.0 or later is required. To export to iOS, .NET 8.0 is required. Make sure to set the target framework in the .csproj
file. 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.
Known issues There are currently no known issues introduced by these releases.
With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a complete list of known bugs .
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 4.x releases no longer works).
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.
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-4-1-4-and-4-2-2-rc-2/index.html b/article/release-candidate-godot-4-1-4-and-4-2-2-rc-2/index.html
index ae441090f6..4f7afaf1a4 100644
--- a/article/release-candidate-godot-4-1-4-and-4-2-2-rc-2/index.html
+++ b/article/release-candidate-godot-4-1-4-and-4-2-2-rc-2/index.html
@@ -15,7 +15,7 @@
Make a Donation Standard build includes support for GDScript and GDExtension.
.NET build (marked as mono
) includes support for C#, as well as GDScript and GDExtension.
.NET build requires .NET SDK 6.0 , 7.0 , or 8.0 installed in a standard location. To export to Android, .NET 7.0 or later is required. To export to iOS, .NET 8.0 is required. Make sure to set the target framework in the .csproj
file. 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.
Known issues There are currently no known issues introduced by these releases.
With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a complete list of known bugs .
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 4.x releases no longer works).
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.
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-4-1-4-and-4-2-2-rc-3/index.html b/article/release-candidate-godot-4-1-4-and-4-2-2-rc-3/index.html
index 4153c37e38..0574ac2ecd 100644
--- a/article/release-candidate-godot-4-1-4-and-4-2-2-rc-3/index.html
+++ b/article/release-candidate-godot-4-1-4-and-4-2-2-rc-3/index.html
@@ -15,7 +15,7 @@
Make a Donation Standard build includes support for GDScript and GDExtension.
.NET build (marked as mono
) includes support for C#, as well as GDScript and GDExtension.
.NET build requires .NET SDK 6.0 , 7.0 , or 8.0 installed in a standard location. To export to Android, .NET 7.0 or later is required. To export to iOS, .NET 8.0 is required. Make sure to set the target framework in the .csproj
file. 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.
Known issues There are currently no known issues introduced by these releases.
With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a complete list of known bugs .
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 4.x releases no longer works).
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.
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-4-1-rc-1/index.html b/article/release-candidate-godot-4-1-rc-1/index.html
index 20c15e1bc1..a1d6601cd9 100644
--- a/article/release-candidate-godot-4-1-rc-1/index.html
+++ b/article/release-candidate-godot-4-1-rc-1/index.html
@@ -6,7 +6,7 @@
Yuri Sizov 27 June 2023 Godot 4.1 is shaping up to be ready right on schedule . Since the release of beta 3 we have identified all remaining regressions, thanks in a large part to your reports and extensive testing, and with the necessary fixes implemented we are publishing the first Release Candidate today.
This is a great opportunity to give the new version of the engine a try. As the name suggests, a release candidate represents a build that we consider stable but want to be absolutely sure before making it official — with your help. If there are no significant regressions reported with release candidates, a stable version of Godot 4.1 is going to be published soon.
This release contains a number of improvements compared to Godot 4.0 published earlier this year. Some systems have also been reworked, which means projects that rely on those need to be updated. However, for most games and apps made with 4.0 it should be safe to migrate to 4.1. Don’t forget to always make backups when moving versions, even minor. Better yet, prefer using a version control system, such as Git, and commit a version of your project before the migration.
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 illustration picture for this article is from Katana Dragon — an action RPG developed by Tsunoa Games with Godot 4. When the game releases you will be able to venture into a charming voxel world to explore dungeons, avoid traps, and solve puzzles! Follow the development of the game on Twitter so you don’t miss the release date.
What’s new 41 contributors submitted around 70 improvements for this release. You can review the complete list of changes with our interactive changelog , which contains links to relevant commits and PRs for this and every previous release.
There is a number of major changes in Godot 4.1, and you can read more about them in our earlier announcement . Below are the most notable changes compared to 4.1 beta 3:
2D: Fix click-selecting Sprites with repeated texture (GH-78566 ). 2D: Tilemaps: Fix tile resizing towards atlas boundary (GH-76152 ). 2D: Tilemaps: Update indices after removing custom data layers (GH-78492 ). C#: Fix editor integration breaking and causing error spam when reloading assemblies fails (GH-75533 ). C#: Fix condition blocking .NET project build (GH-78488 ). Core: Ensure RID
, Callable
, and Signal
are stored as strings (GH-78517 ). Core: Fix scene load crash related to _ready
(GH-78654 ). Core: Ensure default node groups’ call queue are processed (GH-78713 ). Editor: Handle contextual editors gracefully when restoring layout (GH-78611 ). Editor: Display a message about missing C# support on Android/iOS/Web platforms (GH-78629 ). Editor: Improve script icon cache (GH-78670 ). GDExtension: Fix text_server_adv compiling as a GDExtension (GH-77532 ). GDExtension: Add GDExtension @since
attribute (GH-78518 ). GDScript: Fix a race condition in ScriptServer (GH-76586 ). GDScript: Fix errors destroying script with static variables (GH-78521 ). GDScript: Fix regression when checking for virtual function implementation (GH-78533 ). GUI: Use cached saturation for color picker when value is 0 (GH-78486 ). GUI: Fix SVG tag closing for OT font glyphs (GH-78543 ). GUI: GraphEdit: Fix port hotzones at zoom levels other than 100% (GH-78673 ). Import: Fix exporting MeshInstances without a Skeleton in the GLTF module (GH-77545 ). Multiplayer: Do not serialize MultiplayerSpawner.spawn_function
(GH-78409 ). Multiplayer: Fix delta variables index decoding (GH-78709 ). Navigation: Fix NavigationMesh
not clearing old polygons (GH-78596 ). Navigation: Fix NavObjects
map assignments (GH-78665 ). Porting: Windows: Fix mouse capture when button up message is missed (GH-72720 ). Rendering: Add warnings and fallbacks for particle sub-emitters when using GL Compatibility (GH-78490 ). Rendering: Reset filter/repeat state of textures in GL Compatibility when render target is cleared (GH-78620 ). Rendering: Use a filter with mipmaps when initializing textures with mipmaps in GL Compatibility renderer (GH-78720 ). XR: Fix OpenXR Passthrough mode (GH-78135 ). XR: Apply reprojection in multiview for our cluster lookup (GH-78499 ). XR: Fix incorrect depth buffer option in OpenXR (GH-78550 ). Documentation and translation updates. A previously included fix has been reverted due to regressions and will be addressed in a future version of Godot:
Editor: Revert “Fix paste value not updated in dictionaries/arrays” (GH-78643 ). This release is built from commit 1f9e540f1
(see README ).
Downloads The downloads for this dev snapshot can be found directly on our repository:
Known issues With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a list of known bugs in the 4.1 milestone .
Some notable issues are still tracked for a potential fix before 4.1-stable:
The processing order for internal and normal node processing was mistakenly changed, causing issues such as GH-77548 . You can help us test GH-78745 to validate that it solves the issue without further regression. The editor output dock doesn’t update its scrollbar properly in some cases (GH-78434 ). A potential solution is identified but we’re not sure yet that it’s safe to include in 4.1 at this late stage given the risk of regression. 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 4.0.x, but no longer works in 4.1 RC 1).
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 thank you 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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-4-1-rc-2/index.html b/article/release-candidate-godot-4-1-rc-2/index.html
index 399cf5acd3..4142b10132 100644
--- a/article/release-candidate-godot-4-1-rc-2/index.html
+++ b/article/release-candidate-godot-4-1-rc-2/index.html
@@ -6,7 +6,7 @@
Rémi Verschelde 30 June 2023 Godot 4.1 is shaping up to be ready right on schedule . Over the course of the beta testing phase, and with our first Release Candidate a few days ago, we identified and fixed a number of regressions, i.e. recently introduced bugs that would worsen the experience compared to Godot 4.0. Now we’re fairly confident that we’ve handled most of those, and the remaining issues we’re tracking will likely be deferred to a fix in future 4.1.x maintenance releases.
That is to say, this RC 2 should be the one – if no major regression is identified in coming days, we’ll go ahead and release 4.1 stable, and reopen the development cycle for 4.2, which is scheduled for a release in November 2023. Please keep reporting issues that you encounter with the RC, even if you don’t think they’re critical – while triaging them, we might prioritize them for early on in the 4.2 development cycle, and backport the fixes to 4.1.x.
This release contains a number of improvements compared to Godot 4.0 published earlier this year. Some systems have also been reworked, which means projects that rely on those need to be updated. However, for most games and apps made with 4.0 it should be safe to migrate to 4.1. Don’t forget to always make backups when moving versions, even minor. Better yet, prefer using a version control system, such as Git, and commit a version of your project before the migration.
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 illustration picture for this article is from Skies above the Great War , a hybrid of dogfighting action and grand strategy set during the First World War. It is developed by Puntigames with Godot 4. You can check out their ongoing Kickstarter campaign , wishlist the game on Steam , watch the trailer on YouTube , and follow development on their Discord .
What’s new 11 contributors submitted 15 improvements for this release. You can review the complete list of changes with our interactive changelog , which contains links to relevant commits and PRs for this and every previous release.
There is a number of major changes in Godot 4.1, and you can read more about them in our earlier announcement . Below are the most notable changes compared to 4.1 RC 1:
2D: Fix crash with failed compatibility tiles (GH-78796 ). C#: Fix reloading of non-tool scripts (GH-78787 ). Core: Fix that ViewportTexture
cannot be setup again after failed setup (GH-78728 ). Core: Fix node processing order (GH-78745 ). Editor: Add explicit default initialization for flag in undo redo operation structure (GH-78809 ). GDExtension: Fix missing GDExtension in-editor API reference (GH-78830 ). GUI: RTL: Fix multithreaded scrollbar visibility update (GH-78833 ). Network: mbedtls: Improve X509 certificate load error handling (GH-78716 ). Physics: Fix CharacterBody3D get_position_delta()
and get_real_velocity()
(GH-78727 ). Documentation and translation updates. A previously included change has been reverted due to regressions and will be addressed in a future version of Godot:
Thirdparty: Revert “Update RVO2 to git 2022.09” (GH-78831 ). This release is built from commit 46424488e
(see README ).
Downloads The downloads for this dev snapshot can be found directly on our repository:
Known issues With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a list of known bugs in the 4.1 milestone .
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 4.0.x, but no longer works in 4.1 RC 2).
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 thank you 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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-4-1-rc-3/index.html b/article/release-candidate-godot-4-1-rc-3/index.html
index 15361464b4..093dfdd853 100644
--- a/article/release-candidate-godot-4-1-rc-3/index.html
+++ b/article/release-candidate-godot-4-1-rc-3/index.html
@@ -6,7 +6,7 @@
Rémi Verschelde 4 July 2023 Godot 4.1 is shaping up to be ready right on schedule . Over the course of the beta testing phase, and with our first two Release Candidates last week, we identified and fixed a number of regressions, i.e. recently introduced bugs that would worsen the experience compared to Godot 4.0. Now we’re fairly confident that we’ve handled most of those, and the remaining issues we’re tracking will likely be deferred to a fix in future 4.1.x maintenance releases.
Our contributors managed to fix a few more critical regressions during the testing phase of RC 2, which justified making a third release candidate to validate those changes. If all goes well, we should be on track for a 4.1 release in a few days. Please keep reporting issues that you encounter with the RC, even if you don’t think they’re critical – while triaging them, we might prioritize them for early on in the 4.2 development cycle, and backport the fixes to 4.1.x.
This release contains a number of improvements compared to Godot 4.0 published earlier this year. Some systems have also been reworked, which means projects that rely on those need to be updated. However, for most games and apps made with 4.0 it should be safe to migrate to 4.1. Don’t forget to always make backups when moving versions, even minor. Better yet, prefer using a version control system, such as Git, and commit a version of your project before the migration.
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 illustration picture for this article is from Bravest Coconut , a classic action adventure game following Coco the cat, with brain teasing puzzles to solve. The game is developed by Nathan Hoad (Twitter , Mastodon ) and Lilly Piri (Twitter , Mastodon ) using Godot 4. Nathan also makes Godot plugins such as Dialogue Manager , and publishes devlogs and Godot tutorials on YouTube .
What’s new 10 contributors submitted 11 improvements for this release. You can review the complete list of changes with our interactive changelog , which contains links to relevant commits and PRs for this and every previous release.
There is a number of major changes in Godot 4.1, and you can read more about them in our earlier announcement . Below are the most notable changes compared to 4.1 RC 2:
C#: Fix NodePaths completion error for not calling from main thread (GH-78928 ). Core: Fix management of safe-for-nodes flag in ResourceLoader and WorkerThreadPool (GH-78974 ). Core: Workaround resource loading crashes due to buggy TLS (GH-78977 ). Editor: Fix node selection not handled correctly at launch (GH-78980 ). GDExtension: Fix GDVIRTUAL_NATIVE_PTR
by adding missing VariantInternalAccessor
specializations (GH-78971 ). GUI: Fix RichTextLabel
multithreaded scrollbar visibility update 2 (GH-78968 ). GUI: Prevent crash when processing line caches in RichTextLabel
(GH-78975 ). Navigation: Fix NavigationAgent continues avoidance velocity (GH-78850 ). Navigation: Fix NavigationAgent position not always updating (GH-78857 ). Navigation: Fix crash in NavigationAgent3D
(GH-78939 ). This release is built from commit cdd2313ba
(see README ).
Downloads The downloads for this dev snapshot can be found directly on our repository:
Known issues With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a list of known bugs in the 4.1 milestone .
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 4.0.x, but no longer works in 4.1 RC 3).
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 thank you 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 .
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-4-2-1-rc-1/index.html b/article/release-candidate-godot-4-2-1-rc-1/index.html
index 3d8d01cc04..b138e096d6 100644
--- a/article/release-candidate-godot-4-2-1-rc-1/index.html
+++ b/article/release-candidate-godot-4-2-1-rc-1/index.html
@@ -10,7 +10,7 @@
Make a Donation Standard build includes support for GDScript and GDExtension.
.NET build (marked as mono
) includes support for C#, as well as GDScript and GDExtension.
.NET build requires .NET SDK 6.0 , 7.0 , or 8.0 installed in a standard location. To export to Android, .NET 7.0 or later is required. To export to iOS, .NET 8.0 is required. Make sure to set the target framework in the .csproj
file. 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.
Known issues There are currently no known issues introduced by this release.
With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a complete list of known bugs .
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 4.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.
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-4-2-rc-1/index.html b/article/release-candidate-godot-4-2-rc-1/index.html
index 454006fd1f..fab7dd6e47 100644
--- a/article/release-candidate-godot-4-2-rc-1/index.html
+++ b/article/release-candidate-godot-4-2-rc-1/index.html
@@ -10,7 +10,7 @@
Make a Donation Standard build includes support for GDScript and GDExtension.
.NET build (marked as mono
) includes support for C#, as well as GDScript and GDExtension.
.NET build requires .NET SDK 6.0 , 7.0 , or 8.0 installed in a standard location. To export to Android, .NET 7.0 or later is required. To export to iOS, .NET 8.0 is required. Make sure to set the target framework in the .csproj
file. 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.
Known issues There are currently no known issues introduced by this release.
With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a complete list of known bugs .
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 4.x releases, but 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.
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-4-2-rc-2/index.html b/article/release-candidate-godot-4-2-rc-2/index.html
index 229531287e..dd57961a41 100644
--- a/article/release-candidate-godot-4-2-rc-2/index.html
+++ b/article/release-candidate-godot-4-2-rc-2/index.html
@@ -10,7 +10,7 @@
Make a Donation Standard build includes support for GDScript and GDExtension.
.NET build (marked as mono
) includes support for C#, as well as GDScript and GDExtension.
.NET build requires .NET SDK 6.0 , 7.0 , or 8.0 installed in a standard location. To export to Android, .NET 7.0 or later is required. To export to iOS, .NET 8.0 is required. Make sure to set the target framework in the .csproj
file. 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.
Known issues We are aware of some regressions which still affect this release candidate, but which we may not be able to solve in time for the stable release. They’re still tracked as high priority and should be fixed soon in 4.2.x maintenance releases.
TileMap editing performance on macOS got significantly worse when using the ANGLE backend for the Compatibility renderer (GH-84591 ). We have good hunches for what causes the issue but it will take some time to solve properly. In the meantime, you can change the rendering/gl_compatibility/driver.macos
project setting to opengl3
instead of the new default opengl3_angle
to restore the 4.1 behavior if you are affected by this regression. Capture tracks in animations no longer work after the unification of the AnimationPlayer and AnimationTree processing in AnimationMixer (GH-83166 ). This feature was specific to AnimationPlayer and was lost in the refactoring. We’re evaluating what’s needed to restore this feature. Another animation issue with audio clips starting at negative times no longer playing back (GH-85088 ). This should be easy to workaround until we restore that functionality. With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a complete list of known bugs .
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 4.x releases, but 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.
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-4-3-rc-1/index.html b/article/release-candidate-godot-4-3-rc-1/index.html
index c4597daf6d..f834c189f3 100644
--- a/article/release-candidate-godot-4-3-rc-1/index.html
+++ b/article/release-candidate-godot-4-3-rc-1/index.html
@@ -10,7 +10,7 @@
Make a Donation Standard build includes support for GDScript and GDExtension.
.NET build (marked as mono
) includes support for C#, as well as GDScript and GDExtension.
If you want to test the new Windows ARM64 builds, they’re not integrated in our download page yet, so here are direct links:
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.
Known issues During the Release Candidate stage, we focus exclusively on solving showstopping regressions (i.e. something that worked in a previous release is now broken, without workaround). You can have a look at our current list of regressions and significant issues which we aim to address before releasing 4.3. This list is dynamic and will be updated if we discover new blocking issues after more users start testing the RC snapshots.
With every release, we are aware that there are going to be various issues which have already been reported but haven’t been fixed yet, due to limited resources. See the GitHub issue tracker for a complete list of known bugs .
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 4.x releases, but no longer works in this snapshot).
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.
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-4-3-rc-2/index.html b/article/release-candidate-godot-4-3-rc-2/index.html
index e15f0e2925..f709608626 100644
--- a/article/release-candidate-godot-4-3-rc-2/index.html
+++ b/article/release-candidate-godot-4-3-rc-2/index.html
@@ -10,7 +10,7 @@
Make a Donation Standard build includes support for GDScript and GDExtension.
.NET build (marked as mono
) includes support for C#, as well as GDScript and GDExtension.
If you want to test the new Windows ARM64 builds, they’re not integrated in our download page yet, so here are direct links:
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.
Known issues During the Release Candidate stage, we focus exclusively on solving showstopping regressions (i.e. something that worked in a previous release is now broken, without workaround). You can have a look at our current list of regressions and significant issues which we aim to address before releasing 4.3. This list is dynamic and will be updated if we discover new blocking issues after more users start testing the RC snapshots.
With every release, we are aware that there are going to be various issues which have already been reported but haven’t been fixed yet, due to limited resources. See the GitHub issue tracker for a complete list of known bugs .
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 4.x releases, but no longer works in this snapshot).
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.
-
+
\ No newline at end of file
diff --git a/article/release-candidate-godot-4-3-rc-3/index.html b/article/release-candidate-godot-4-3-rc-3/index.html
index 19754175dd..1134fa83f0 100644
--- a/article/release-candidate-godot-4-3-rc-3/index.html
+++ b/article/release-candidate-godot-4-3-rc-3/index.html
@@ -10,7 +10,7 @@
Make a Donation Standard build includes support for GDScript and GDExtension.
.NET build (marked as mono
) includes support for C#, as well as GDScript and GDExtension.
If you want to test the new Windows ARM64 builds, you will now find them listed in the usual download page.
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.
Known issues During the Release Candidate stage, we focus exclusively on solving showstopping regressions (i.e. something that worked in a previous release is now broken, without workaround). You can have a look at our current list of regressions and significant issues which we aim to address before releasing 4.3. This list is dynamic and will be updated if we discover new blocking issues after more users start testing the RC snapshots.
With every release, we are aware that there are going to be various issues which have already been reported but haven’t been fixed yet, due to limited resources. See the GitHub issue tracker for a complete list of known bugs .
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 4.x releases, but no longer works in this snapshot).
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.
-
+
\ No newline at end of file
diff --git a/article/release-management-4-0-and-beyond/index.html b/article/release-management-4-0-and-beyond/index.html
index 6860b340cb..268af7b1cf 100644
--- a/article/release-management-4-0-and-beyond/index.html
+++ b/article/release-management-4-0-and-beyond/index.html
@@ -7,7 +7,7 @@
Rest assured, we plan to publish bugfix releases quickly and regularly (as we have with the Alphas and Betas). So you can expect versions 4.0.1, 4.0.2, etc. to come shortly after the nominal “4.0-stable” release.4.x release cycle To alleviate pressure on contributors and to avoid delays, starting with version 4.1, we aim to have quicker release cycles for feature updates (4.1, 4.2, etc., i.e. “4.x” releases). The plan is to start with a fixed period of merging new features, then transition to a short period where we only merge bug fixes, then release and return to merging features again.
Some features may miss the window for merging, and will be postponed until the next version. But due to quicker iteration times the wait would be much shorter for users, and for contributors — their work won’t go stale. We believe this will help us maintain momentum and ensure that the engine stabilizes quickly (a special thank you to Miguel de Icaza for your insight and encouragement that led us to this decision). At this point we are unsure exactly how long the release cycle will be, you can expect we will experiment a bit to see what works best for contributors.
Early in the 4.0 development cycle, we caught ourselves saying “X feature won’t make it into 4.0, but it will be in 4.1”. Please read such statements as saying “will be in 4.x”. Our decision to focus on quick iteration and stability means we can’t promise new features in any particular release. Features will be included in the next release after they are finished. This also means we will not be delaying releases in order to add “just one more feature”.
The state of 4.0 We are still in the beta phase, and development is more focused than ever on stabilizing Godot 4.0 for release. We are now releasing weekly betas to get faster feedback on our bug fixes.
At the time of the Godot 4.0 release, version 3.5 will remain the much more stable and battle-tested option. We advise users who desire a more stable, bug-free experience to continue using 3.5 until Godot 4 has been more widely tested and the team has had a chance to fix the highest priority bugs that will inevitably arise. Users with ambitious projects that depend on the new features in 4.0 can of course start using it as soon as it releases, while keeping in mind that there might be some roadblocks which will be lifted in the early 4.x releases.
We will release 4.0 when we believe it is ready to be used in production, not when it is perfect. It will not be perfect, and it doesn’t have to be. But it will lay down the foundation for all our future work, and with your help it might get a little bit closer to what we envision as the Godot 4.
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 .
-
+
\ No newline at end of file
diff --git a/article/release-management-4-1/index.html b/article/release-management-4-1/index.html
index 00f1b4e50d..f502b553d9 100644
--- a/article/release-management-4-1/index.html
+++ b/article/release-management-4-1/index.html
@@ -5,7 +5,7 @@
Clay John 20 April 2023 This article is from April 2023 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
Now that Godot 4.0 is out and we have all returned from GDC we can finally take the time to solidify our release management plan for the 4.x releases (starting with 4.1). In our earlier blog post on the matter, we mentioned that we would like to shift to smaller, more regular releases.
During the 3.x development cycle we noticed two concerning trends:
Contributors were crunching shortly before planned releases to add big features to those releases as they expected the next release would be a long ways away. This created a “now or never” mentality that led to us optimistically merging PRs that were not ready. Our “feature freeze” periods ended up being quite long as we often had a lot of big features crammed in quickly towards the end, and we continued to merge risky changes during our feature freeze period. Our hope is to avoid both of these issues with our new approach to release management. We want to decrease the stress felt by both contributors and maintainers as we approach releases. We also want to be more cautious about merging big changes.
To address these concerns our plan is to shorten the release cycle and provide clear dates in advance. At the same time, we want to organize releases into two phases: the feature merging phase and the bug fixing phase. At the conclusion of the bug fixing phase we will release a new minor version and repeat the process.
Feature Merging Phase The current plan is for the feature merging phase to be approximately 3 months long. For 4.1, this would mean it will cover March, April, and May 2023. During the feature merging phase we will gladly merge all pull requests that are ready to be merged and are approved by the relevant teams. This includes new features, regular bug fixes, and riskier bug fixes that we wouldn’t merge during the bug fixing phase.
Our goal is to reduce the pressure to get big changes merged “in time for the next release”. Since the next release will always be only a few months away, we can safely defer merging until the following release to give contributors time to properly implement and test new features. We hope this will enable us to have significantly shorter bug fixing phases.
For reference, Godot 4.0 had a 6 month “feature freeze” where we tried to avoid merging new features or especially risky bugs. This period was difficult for everyone and we would like to avoid such long periods of feature freeze in the future.
During the feature merging phase we will also cherry-pick safe bug fixes back to the current stable release (e.g. 4.0.x, 4.1.x, etc.).
We plan on releasing regular “dev snapshot” builds during the feature merging phase to assist users in testing and contributors in bisecting regressions. We encourage users to test out these dev snapshots on non-production projects to give us early feedback on new features. Similar to the 4.0-alphas, we expect to provide dev snapshots every 2 weeks or so with the frequency increasing as we approach the bug fixing phase.
Bug Fixing Phase The current plan is for the bug fixing phase to be approximately 1 month long. For 4.1, we plan for the bug fixing phase to cover the month of June with our anticipated release of 4.1 being the end of June 2023.
We expect this time period will need tweaking as we see how much dedicated bug fixing time we need to stabilize after 3 months of feature merging.
To contrast this with our 3.x workflow, we tended to release minor versions once per year or so. Each release came with a feature freeze period with an indeterminate length, but usually several months.
During the bug fixing phase we plan on releasing weekly beta builds and eventually RC builds as we did in the latter part of 4.0’s development. Testing of beta builds will be highly encouraged as we want to spot and fix regressions quickly.
Godot 4.2 If the above goes well and we release Godot 4.1 by the end of June we will target the end of October for releasing 4.2. Naturally, if the release of 4.1 is delayed, our estimate for 4.2 will be delayed as well as we will still ensure we maintain our 3 month feature merging and 1 month bug fixing phases.
Since this is a new process, don’t be surprised if we make adjustments to the plan as we go along. We are still trying to figure out what sort of process works best with our contributors and our users. On that note, we appreciate feedback so please make sure to share your pain points so we can make this release process work for everyone.
Long Term Support of Stable Releases If we follow the above schedule, we will be making around 3 minor releases per year. We expect that it will quickly become difficult to cherry-pick safe bug fixes back to all previous minor releases. In the Godot 3.x cycle we restricted cherry-picking to only the latest minor release and we only updated older releases when needed to fix critical issues.
We intend to minimize breaking changes in the 4.x release cycle, ideally there will be little reason to remain on older minor releases. However, we still want to ensure that users on older releases benefit from compatible bug fixes for as long as possible.
Right now we are unsure how many versions we can maintain in tandem. For now, we are committed to providing 4.0.x releases as we work on 4.1. Once 4.1 releases and our development focus shifts to 4.2, we will likely continue providing 4.0.x and 4.1.x releases with safe bug fixes. Once 4.2 releases we will be re-evaluating how many version back we can go with bug fix releases. At that point, development of 4.0.x may stop.
As always, we welcome feedback from the community and will be keeping a close eye on how many projects choose to remain on 4.0.x. If many projects choose to remain on 4.0.x, then that will influence how long we continue to provide 4.0.x releases.
Godot 3.6 We have just released the first beta for Godot 3.6 and we plan on releasing the stable version in the next few months. As the main focus of contributors is on Godot 4 and beyond, the development process for Godot 3 is becoming slower. As such, we don’t have an exact release date in mind, but we will be continuing to merge pull requests into the 3.x branch and will release 3.6 when it is ready.
Once we release 3.6, we don’t intend to make another minor release in the 3.x series. We will continue releasing 3.6.x bug fix updates for as long as we receive contributions to 3.6.
Godot 5.0? We have not started planning for Godot 5.0 yet. Our hope is to continue developing Godot 4.x for many years. Instead of planning for breaking changes we will work diligently to add new features without breaking compatibility. We believe the foundation we laid with 4.0 will make this much more tolerable than it was previously.
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 thank you 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 .
-
+
\ No newline at end of file
diff --git a/article/rendering-acyclic-graph/index.html b/article/rendering-acyclic-graph/index.html
index f73f7df633..43778b2820 100644
--- a/article/rendering-acyclic-graph/index.html
+++ b/article/rendering-acyclic-graph/index.html
@@ -5,7 +5,7 @@
Darío Banini 16 February 2024 Darío, the author of this article, is a new face around this blog who was hired by W4 Games last summer to start contributing to the project. His work was kindly sponsored and donated to the Godot Engine project by W4 Games . You can find more of his contributions to the engine in his GitHub profile .
Since the introduction of Godot 4, RenderingDevice has been the backbone of the Forward+ and Mobile renderers. Making APIs that are both easy to use and flexible enough to cover all the features users want in a game engine is a very difficult task. The high level of detail expected by APIs like Vulkan or Direct3D 12 compared to their predecessors is worthy of a few blog posts of its own. This article will try to keep the topic as brief as possible to focus on the problems solved within Godot instead.
With the goal of reducing the difficulty of the development of the new renderers and allowing the GPU to parallelize work more effectively, the automatic construction of a directed acyclic graph (DAG) during rendering has been introduced at the lowest levels of the engine. This change is already merged in the main
development branch of Godot and should be part of the 4.3 release . The introduction of the graph will bring both performance improvements and various bug fixes for issues that were very difficult to investigate. For example, after the graph was merged it was discovered that MSAA with SSAO will no longer cause artifacts in AMD Polaris (#61415 ), despite no effort being spent towards developing a specific fix for the problem.
No changes are expected from users whatsoever. If you’re one of the few people who have written code that uses RenderingDevice, there’s no need to worry either: while the API has changed slightly, all of the methods just require less information than before. What level of performance improvement you see will very much depend on the contents of your project. For example, GPU particle systems will get massive improvements, while more standard scenes that use post-processing will see some frametime reduction in the ballpark of around 5% to 15%. On top of that, the Godot developers will have a much easier time improving the performance of the renderers in the near future.
If you’re interested in the details of how this was achieved, keep on reading.
Background Understanding the problem space is crucial to do a deep dive into the technical decisions that were made. Dealing with an existing codebase for a general engine that had thousands of lines written on top of an existing API imposes many restrictions on what sort of changes are allowed. Flaws introduced in the early stages of design can have long-term effects on the development of a big project. This was very much the case with some of the key decisions taken for the RenderingDevice abstraction, its coupling to Vulkan and the negative results on the rest of the codebase. The good news is it’s never too late to go back to the drawing board. reduz laid out the plans for this redesign during the end of 2023 and the team got to work on how to make it a reality.
Vulkan There’s a few Vulkan concepts that must be understood before digging into why RenderingDevice was designed the way it was for Godot 4 and the difficulties it encountered along the way.
Command buffers Recording work for the GPU and submitting it for execution is a very explicit operation in Vulkan. Command buffers (or command lists in D3D12) are the objects where all the recorded work is stored that that will executed at a later point on the GPU. These buffers can grow as much as the user desires and they won’t be run until they’re submitted for execution to a command queue. This implies it’s essentially possible to record from multiple sources, even multiple threads, and submit the work to the GPU once it’s ready with proper synchronization.
Render passes Drawing something with Vulkan requires a lot of information upfront in the form of a “render pass”: an object that contains references to the textures that the GPU will use as targets, their initial and final states (texture memory layouts) and much more. This is a stark contrast from older APIs like OpenGL or even D3D12, where the render target can be changed during command recording and does not require the creation of an object ahead of time. While a render pass is active, there are also various restrictions on what operations can be recorded on the command buffer. The render pass must end before being allowed to use all types of operations again.
Barriers The biggest change compared to previous APIs is that synchronization between commands is no longer automatically deduced by the driver and instead must be manually implemented by the programmers using Vulkan. If you want to read more about this topic in detail, I highly recommend Hans-Kristian’s blog post about Vulkan Synchronization and reading the official Vulkan documentation . To keep the article short, a very basic explanation is provided below.
The order of execution of the recorded commands inside a command buffer is NOT guaranteed to complete in the order they were submitted : the GPU can reorder these commands in whatever order it thinks is best to complete the job as quickly as possible. To compensate for this, the programmer must manually insert synchronization barriers in the command buffer that allow specifying in detail which commands should be completed or started by specifying the scope before and after . The scope includes multiple concepts such as the execution stage (e.g. drawing, compute, transfer), the type of access (e.g. read or write) and the affected memory regions (globally, buffers or textures). On top of that, barriers are capable of transitioning textures from one memory layout to another, which is a requirement to be able to use textures in different commands optimally.
A barrier can establish a dependency between commands by specifying a synchronization scope.
Beginners will have a hard time understanding this mechanism, but even experts or hardware vendors are not safe from making mistakes. A run of the Vulkan Validation Layers in synchronization mode will reveal multiple issues on most Godot projects or even commercial games available in the market. These are among the most frustrating issues to understand as they won’t even appear consistently depending on hardware vendor or hardware speed. Since eliminating these problems was one of the main goals behind the introduction of the acyclic graph, extensive use was made of these validation tools to ensure that no synchronization errors remained.
RenderingDevice RenderingDevice is the abstraction on which the Forward+ and Mobile renderers in Godot were built. It exposes an interface that provides a reasonable level of control over the GPU in a way that is not as fine-grained as Vulkan or D3D12 but is also not as “stateful” as OpenGL. More of the rendering state needs to be defined in advance, and the chances of causing an error by leaking state from one previous command to the next are significantly reduced.
The commands exposed by this class are what you usually expect out of a rendering API: creating resources, copying, clearing, drawing, dispatching compute work, etc. However, the point of interest is how both rendering geometry and compute passes are organized. Godot already has the concept of “draw lists” and “compute lists”: essentially batches of commands describing what to do inside a render pass or a compute pass. The one-to-one correlation between lists and passes is very important, as it significantly reduced the number of nodes an automatic graph would have to create.
Draw lists and compute lists are considered a single unit of work in the rendering pipeline.
While Rendering Device attempted to hide many of the difficulties that Vulkan introduced, there are a few that slipped through that made writing rendering code for Godot 4 more difficult than anticipated.
Draw list actions Just as draw lists were naturally mapped to render passes, so too was the fact that the start and end action had to be specified for the textures associated with them. These actions cover operations such as loading the contents of a texture, discarding it or clearing it with a specific color. There’s plenty of performance to be gained by choosing the optimal option in each render pass. However, due to some internal design decisions, the introduction of a CONTINUE
action was made that doesn’t actually exist in Vulkan. This action essentially meant “the previous draw list is compatible and the texture should not be transitioned to a different state”. For an engine like Godot, which must provide a lot of optional post-processing effects and drawing layers, this proved to be a maintenance nightmare , ending in a ton of branching in the code that was not very easy to follow and prone to mistakes.
Draw list storage textures Since the device doesn’t know if the result of a draw list will be used in a compute pass later, it was necessary to specify which textures needed to transition to the “storage” memory layout at the end of the render pass. Storage is the layout required for modifying textures directly from compute passes. From the point of view of an outsider to Godot, there was no clear reason why this had to be part of the API, but when analyzing the implementation it was evident it was introduced to deal with the barrier transitions required by Vulkan. In turn, this delegated the responsibility to the programmer to keep track of whether the textures would be used later in the compute passes in order to handle them efficiently.
Draw and compute list overlap Draw lists and compute lists were allowed to specify whether they can “overlap” during execution. This is a very vague argument that depends on whether the programmer correctly understands whether the render and compute work aren’t dependent on each other and could realistically run in parallel. With no real way to validate this, this flag essentially meant “turn it on and hope for the best” as it simply skipped some synchronization steps that the default behavior enforced. Once again, making use of this feature introduced some issues in the codebase where it would require tracking whether parallel work was being submitted or not: components like GI could make use of this optimization, but whether the feature is used or not depends on what that the user has enabled in the scene.
Barrier mask While RenderingDevice does not provide explicit access to barriers, a lot of methods would allow specifying a bit mask to define which stages of the pipeline the command must synchronize with. However, this was probably one of the most misused masks in the existing rendering code as its implementation wasn’t even consistent in most methods. In one instance, a variable that wasn’t a bitmask at all was accidentally casted as one and passed to a rendering method.
By default, most commands will just specify that all work that comes afterwards must be executed after the current command has finished. As expected, this results in Godot issuing an extreme amount of barriers “just in case” as it has no knowledge of what might be requested afterwards. Godot’s strategy essentially boils down to issuing barriers to make sure no future work executes before the current command finishes, unless the programmer using RenderingDevice specifies the barrier mask. Again, that means the developer must have exact knowledge of everything that comes next, and in turn, caused another round of maintenance issues. Therefore, this feature is rarely used and the default behavior is preferred, resulting in lower performance.
Hindsight is 20/20 The problems raised here may not have sounded so bad in the planning stages of Godot 4, but they clearly became increasingly difficult to solve as more rendering code was written on top of it. Being tasked with writing driver-level work in addition to refactoring the entire engine in many areas is a very difficult task, especially when new APIs have a much steeper learning curve. Many frameworks and engines have iterated on their solutions to deal with the new amount of work expected by Vulkan, and it was time for Godot to try to address this problem again.
Solution Preparation Solving the problems identified above does not actually require the introduction of an acyclic graph: inserting synchronization barriers and performing dependency tracking is entirely possible without applying this technique. This was actually debated internally for a while, but it was determined that if the engine was able to reorder commands, it’d allow for grouping them more effectively between the mandatory synchronization points and would result in better performance.
However, being able to reorder commands meant that an intermediate step had to be introduced where commands were recorded into an auxiliary structure that could be reordered and then converted to the corresponding native API commands. One possibility was encoding the Vulkan command arguments into the auxiliary buffer, but that approach meant the entire graph structure and logic would need to be implemented for every other backend as well. Therefore, it was deemed it’d be necessary for Pedro to work on his pull request that introduces an abstract interface for all the supported graphic APIs, including Vulkan, D3D12 and Metal in the near future. Thanks to this change, it was possible to use a single abstract API to encode commands into the auxiliary buffer.
The initial redesign was laid out in reduz ’s draft , which was largely inspired by Pavlo Muratov’s “Organizing GPU Work with Directed Acyclic Graphs” and showed the possibility of how the concept could be applied to Godot’s existing design. Not everything stated in the document made it into the final version: in fact, the changes to RenderingDevice were much less severe than initially indicated and the interface remained largely compatible. While the article that was used as inspiration includes a very detailed algorithm in how to implement multi-queue submission by using the graph, the team made the decision to cut this idea short and stick to a single command queue to begin with, as the difficulty of the task would come from building the graph automatically and would already take a significant amount of development time.
Acyclic graph The unique aspect of the implemented graph is that its construction is completely invisible to the programmer using RenderingDevice. Commands requested from the class are logged internally and each command maintains an adjacency list that is updated as new dependencies are detected. Since these adjacencies only work one way and older commands cannot depend on future commands, it is virtually impossible for cyclic dependencies to form (hence the “acyclic” part of the graph). While a graph can be constructed in many ways, a list of vertices and an adjacency list are sufficient. Render commands play the role of vertices, and commands store the indices of their adjacent commands.
The rendering operations of a frame and their dependencies represented as a graph.
An important decision that was made to allow this structure to scale more effectively is that each instance of a draw list or a compute list are considered as one node in the graph . There is no benefit to allowing reordering within these structures and Godot already has a clear concept of what these lists are used for. Games often draw a lot of geometry, but they don’t create tons of render passes per frame, as that doesn’t result in efficient use of the GPU. To put it in numbers, one of the benchmark scenes used during testing could easily reach hundreds of thousands of nodes if each individual command was recorded into the graph. Making the distinction to correlate render passes to individual nodes brought this number down to about 300 nodes per frame . Operating with a graph of this scale was a very good sign that the performance overhead would be very small.
Once all commands for the frame have been recorded, a topological sort is performed on the graph to get an ordered list of commands. During this step the “levels” of the commands are detected to determine how they can be grouped and where synchronization points (barriers) should be introduced. All commands belonging to a particular level in the graph can be executed in parallel as no dependencies have been detected between them, meaning that no barriers are required until the next level is reached. This sorting step is where the magic behind the performance gains happens.
After sorting, all commands that belong to the same level can be executed in any order, resulting in multiple possible command sequences.
One important detail that resulted in frametime reductions during this step was to take into account the type of command as a sorting factor: grouping together operations based on whether they were related to copying data, drawing or compute dispatches provided some noticeable increases in performance. While the exact reason behind this has not been determined, it seems likely that GPUs prefer to change the type of pipeline they need to use within a command buffer as little as possible.
While the concept of using a structure like a graph and using sorting algorithms might sound like the most daunting part of the task due to the level of abstraction involved, it is the dependency tracking and adjacency list detection during command recording where most problems arise. The relationships shown in the diagrams above were not specified by the programmer using RenderingDevice: they must be detected automatically based on how the resources were used in the frame, and this turned out to be no small task due to some particular details of how Godot works.
Resource tracking The resources used by RenderingDevice in Godot are buffers or textures. While these are separate objects at the lower level depending on the API being used, the graph considers them both as one to share much of the logic during implementation. However, a distinction will be made later when texture slices are introduced, which is something Godot uses quite a bit in various parts of its rendering code. Textures also have the additional requirement that they need to make layout transitions to be ready for use in different commands, while buffers don’t need to do this at all.
Whenever a resource is created, a new “tracker” structure is introduced to store the information relevant to the graph construction during command recording. The tracker holds references to which commands are writing or reading from the resource and modifies these lists accordingly as more commands are recorded. It also stores a “usage” variable that indicates what the current use of the resource is at the time of recording. Usages are both classified as “read” or “read-write” operations, and which one is used has strong implications for how dependencies between commands will be detected. For example, a command that reads from Resource A can be executed in parallel with another command that reads from Resource A, but that will not be valid if the other command can write to Resource A. In this case, a dependency is inserted between the two commands to ensure that the first command can finish reading the resource correctly before the next command modifies it.
The tracker holds the current usage of a resource and determines whether it is necessary to perform a transition based on the type of command that references it.
Textures also have a particular requirement: changing the usage implies a memory layout transition even if it’s just for read-only operations. For example, there’s different layouts for a texture being used as the source of a copy operation and for a texture being used for sampling in a shader. While this distinction might not necessarily be true at the hardware level, it is actually possible to witness texture corruption if these transitions are not performed correctly depending on the GPU’s architecture (AMD is really good for testing these out!). Therefore, any change in usage when textures are involved is usually considered a write operation as most of them require a particular layout. This introduces some dependencies between commands that might not be very obvious but are completely required for the operations to work correctly: continuing with the previous example, it’s not possible to use the optimal memory layout for copying a texture and sampling it in a shader in parallel, even if both are read-only operations.
Dependency tracking Since the graph construction is automatic and there’s no input from the programmer in how the adjacency lists of the graph must be built, it’s up to RenderingDevice to use the resource trackers to figure out the dependencies between commands. While the final implementation is a bit more complex due to the introduction of texture “slices” (which is covered in another chapter), the main idea behind the algorithm is pretty straightforward.
When a command uses a resource as read-only, a reference to the command is stored in a list in the resource tracker. A reference to the command is placed on the adjacency list of the last operation that wrote to the resource. When a command uses a resource as read-write, a reference to the command is stored the resource tracker, replacing the previous one and clearing the list of commands that were reading from the resource. A reference to the command is placed on the adjacency list of all operations that were either reading or writing to the resource. An exception is made for textures: if an operation must change the type of usage, the operation is considered as if it’s writing to the resource because a memory layout transition is required. It does not matter if both operations are read-only : a write dependency will be established regardless. This is worth keeping in mind as the graph considers the operations to be dependent if the texture’s usage changes often. Animated example of how dependency tracking is used to build the graph. Blue and red represent how the command modifies the lists inside the trackers and green indicates which values it reads from to build the adjacency list.
Older operations are discarded from the tracker’s lists to avoid increasing them endlessly and causing performance bottlenecks in the process. As write operations can’t be done in parallel and no information is known about the range of data that is modified (a potential future improvement), then it’s only necessary to store a reference to one command at all times. This system requires more detailed tracking once texture slices are later introduced, but the strategy remains largely the same.
One interesting thing to note here is that Godot can leverage the information provided by SPIRV-reflect to identify the usage of some resources as read-only even if their layout allows write operations. For example, the storage memory layout is required to be able to write to a texture directly so it is considered as a write usage by default. However, if the GLSL shader uses the readonly
qualifier on the binding, then the graph will consider it as a read operation.
Immutable resources Resource tracking can quickly become a performance bottleneck as the solution does not scale effectively to games with large amounts of resources. If every single buffer or texture used in a frame must be tracked and checked for dependencies during recording, that can quickly balloon out of proportion. But there is a simple first step to reduce this problem: not everything needs to be tracked as most resources in a game are usually static (e.g. terrain or buildings). An internal benchmark scene from W4 Games showed this to be true pretty quickly, as the amount of trackers went down from over 20 thousand to less than a thousand after ignoring all static resources.
But Godot doesn’t currently know what resources are static. Users can modify these resources freely at any time, even from GDScript! Resources are not considered to be immutable or marked as such during the import process. Other engines typically mark nodes as static for additional optimizations, but Godot avoids this concept to keep the engine easy to use and not overwhelm beginners with settings whose purpose they may not yet understand. This turned out to be a big problem that was debated internally for a while, as introducing a new “immutable” attribute was the most attractive option with the downside that it would mean a lot of extra work for end users.
Complex game scenes often contain a lot of static geometry. Tracking these resources generates a lot of overhead without any real benefit.
Fortunately, a quick solution was found that allowed trackers to be greatly reduced without the need for user intervention: during resource creation, a couple of flags are checked to see if a tracker should be created or not. If the resource is created with some initial data and no explicit flags are set for modification, then it is considered to be read-only and no tracker is created for it. If at some point an operation attempts to modify the resource, a full synchronization is introduced in the graph and the tracker is created. Synchronization is required because it’s not possible to know which commands in the frame were reading from the resource beforehand. Full synchronization implies all previous commands must be adjacent to the command that created the resource tracker, so the graph degrades to the behavior of the previous version of Godot on that particular command for one frame. This was considered to be an acceptable and very minor performance degradation that bypassed the need to introduce the “immutable” flag to the engine.
Texture slices No good tale is complete without its villain. This was the most painful omission from the initial design and it proved to be the hardest part of dependency tracking and texture layout transitioning that required to be solved. As a matter of fact, it might not even be solved completely yet as new edge cases that had to be fixed popped up even after the graph was merged!
While textures are most commonly associated with containing two dimensions, it is possible to create two extra dimensions that further complicate their use: mipmap levels and array layers. Mipmaps are commonly used to create a chain of smaller versions of the texture that the filtering process can use to improve the image quality (see Anisotropic filtering ). A general use case for array layers is to simply create a texture with the same dimensions multiple times and then reference a particular layer within a shader. Godot makes plenty of use out of these extra dimensions, even combining the use of both at the same time for some effects.
This usually doesn’t pose any additional trouble if the engine sticks to using a texture during commands in only one particular way, but the problem does not stop there: Godot can and will use different parts of the same texture for completely different purposes, even within the same command. This is possible because RenderingDevice can create “shared” textures from slices . While the original texture may only have one resource tracker, all shared slices are considered different textures with their own resource trackers that can be referenced independently in commands. A common use case is mipmap creation: a lower level mipmap of the texture can be set as the render target, while a higher resolution level is used for sampling, effectively creating the chain of mipmaps from the texture’s highest quality level.
The anatomy of a cubemap texture that uses both mipmaps and array layers. Godot can create slices of a texture that reference only a range of its subresources.
Tracking texture slices effectively required the implementation of a set of strict rules to verify that the programmer using the RenderingDevice does not perform operations with undefined behavior.
The tracker for the “parent” texture holds a “dirty list” of slices that have a different memory layout from the one used by the parent. It is never possible for slices on the dirty list to overlap. In fact, these ranges are represented as 2D rectangles, which is pretty fun way to represent the problem visuallly! The tracker for a texture slice holds a reference to its parent and a flag to identify whether it is present on the dirty list or not. It is not possible for one command to use slices of the same texture that overlap, as this can lead to undefined behavior. This restriction is applied even if their usage is the same. If the parent texture is used in a command directly, all slices in the dirty list will be reverted to the usage of the parent by “normalizing” the texture to one memory layout. It is not possible to use slices with a different usage during this step. Slices present in the dirty list can also be normalized and removed individually if a new command wants to use a slice that would overlap with their dirty region. Since it’s not possible for slices to overlap in the same command, this operation can always be performed safely if the slice being normalized was used in an older command. Dependency tracking is performed strictly with the tracker associated to the parent texture of a slice and not the slice’s tracker, as this usually leads to the safest behavior. While these rules do not guarantee an optimal solution, it is not common for Godot to perform these operations on every frame, and the potential linearization of the commands is an acceptable performance hit to keep tracking as simple as possible. One point in particular that was discussed a lot was whether to resort to tracking usage individually per mipmap level and array layer, but such a decision would result in a system that wouldn’t scale at all in the long run if large texture arrays with multiple mipmaps are used.
Results While this is something that is not usually measured, it’s worth remembering one of the main reasons behind the graph was to simplify the maintenance of the rendering code for the team. The problems identified at the start clearly meant there was a lot of code that would get deleted from the rendering pipeline. While the PR might not have ended up in the net negative due to a lot of code being isolated in the graph’s class along with debugging utilities, around ~2,500 lines of code were removed from the implementation of RenderingDevice, the Forward+ renderer and the Mobile renderer.
The other major benefit is that a lot of hard to identify bugs that were caused due to synchronization bugs are now potentially fixed. As pointed out before, the MSAA with SSAO issue was resolved as a side effect. Problems like this one proved to be extremely hard to fix as Godot developers would require the particular set of hardware and the right scenarios for the defects to trigger. With the graph sufficiently complete and unable to cause these synchronization problems, the possibility of introducing errors of this kind disappears.
The results are generally positive. No performance regressions have been identified in any scene as far as GPU performance is concerned, and in virtually most scenarios an improvement can be expected depending on their contents.
Results gathered from running various projects with an NVIDIA GeForce RTX 3090 Ti at 1920x1080. Higher is better.
The biggest gains by far could be identified in projects with multiple GPU particle systems, where the execution can now take place in parallel wherever it’s possible. A dedicated particles benchmark makes this difference much more obvious.
Results gathered from running the benchmark with NVIDIA GeForce RTX 3090 Ti. Higher is better.
The introduction of the acyclic graph to Godot does not come free. As the need to serialize commands into an intermediate buffer is introduced along with graph construction, dependency tracking, and sorting, the CPU must bear the brunt of the work. However, the results are not what most developers would expect. From profiling where the CPU spent most of its time during a frame in the benchmark scene, the following was discovered:
Graph construction and topological sorting don’t even account for more than 1% of the CPU time of the frame. The node count is usually too low to have a significant effect. Nearly 30% of the CPU time was consumed entirely by Vulkan API calls (~20%) and serialization of the commands into the draw list (~10%). This corresponds to the fact this scene has a massive amount of objects being drawn with a large amount of omni lights that can cast shadows. For now, the conclusion would seem to be that the graph itself cannot impact the scene significantly as far as CPU overhead is concerned, but the requirement to serialize large draw lists seems to simply exacerbate an existing problem: Godot needs better mechanisms to merge draw calls and avoid binding an excessive number of index buffers and unique vertices for everything in the scene. The good news is that this regression can potentially be mitigated or even improved in the short term with secondary command buffers (or a suitable replacement).
Secondary command buffers As mentioned before, the new APIs enable the possibility of recording to command buffers from multiple threads. Secondary command buffers are an interesting subset of command buffers that aren’t capable of recording all types of commands and are intended to be inserted inside a render pass issued in a primary command buffer. This is actually an ideal application for draw lists, since their contents do not need to be reordered, but their location in the primary command buffer is determined during the topological sorting step of the graph. Therefore, they enable the possibility of recording in parallel and ahead of time the largest draw lists of the frame. And they actually get good results! In the benchmark scene, the CPU time spent in the frame is actually reduced compared to 4.2 thanks to overlapping most of the cost from calling the Vulkan API and delegating it to background worker threads. The graph finally gives Godot the keys to using multithreading for rendering!
So why is this not enabled in master
yet? It seems that secondary command buffers can run into some strange issues on different hardware and are not as widely supported as they should be. During testing an issue was found in NVIDIA GPUs where the editor window would just go completely blank if secondary buffers were used under certain conditions. Apparently it wouldn’t be the smartest decision to rely on this feature and expect it to work correctly on most platforms. However, if you want to experiment with it yourself the code is currently present behind a compilation macro . The code will automatically enable multithreaded recording when the draw lists are determined to be large enough to be suitable and will result in a real reduction in CPU times in demanding scenes, provided the user has enough CPU cores to handle it.
An alternative being evaluated is to record multiple primary command buffers instead and chain them together when the frame ends. However, submitting a command buffer for execution has a fixed cost that isn’t insignificant according to hardware vendors, so some consideration must be given to creating different command buffers only when the benefit outweighs the cost.
Future work With the introduction of the directed acyclic graph and with a few more abstraction rewrites coming down the line , the engine will now have access to even more optimizations that can be implemented in the future.
Multiple queues Pavlo Muratov’s article that was used as the main inspiration behind this change contains a very interesting proposal in how to submit and synchronize GPU work across the multiple queues exposed by the hardware. Godot could potentially leverage these extra queues (e.g. dedicated compute queues), to be more explicit about what work should be executed in parallel. Finding paths that could be executed in parallel in the graph would require some elaborate detection of the dependencies between the commands, the possible paths that are independent and where the synchronization points need to be placed.
A heavily simplified example of a potential multiqueue submission scheme that could be detected by the graph. Many portions of the compute work in Godot could be processed while other parts of the rendering pipeline are busy.
As pointed out before when talking about using primary command buffers as an alternative to secondary command buffers, command queue submissions are not free: there must be a good balance between partitioning work to be executed in parallel when compared to just submitting everything into a single command queue.
MSAA resolves Multisample anti-aliasing (MSAA) is a feature that requires explicit commands to “resolve” the result of the anti-aliasing into a texture that can be used by other steps in the rendering pipeline. The anti-aliased result is not actually computed during the time of drawing but either when a resolve command is issued or a render pass defines a resolve operation in a subpass .
It’s not possible for Godot to know if something will draw again to the target, so it must resolve the result manually when it needs to sample the resource.
With how flexible of an engine Godot is, determining where this step should go can be very tricky: the operation should be placed only when it’s absolutely necessary or as part of the last render pass that draws to the MSAA texture. This is an area that the graph could aim to resolve automatically by simplifying the implementation of MSAA in the renderers and lead to further performance improvements. Reducing the amount of resolve operations to the minimum and the bandwidth required for MSAA could be very beneficial for the Mobile renderer in particular.
Since the graph can detect if the render pass is the last one in the frame, it can automatically insert a resolve in the render pass, saving lots of bandwidth in the process.
Graph visualization While this wouldn’t provide a direct benefit to end users, building a visualizer for the graph could help the Godot developers have a clear overview of the rendering pipeline of a given frame and identify bottlenecks more easily. During development, a few compute passes were identified that weren’t being parallelized correctly due to implementation errors. For example, GPU particle systems were binding an unused buffer for write operations even if they never wrote to it, which led to the commands being identified as being dependent of each other due to having to synchronize with the potential “write” performed by the previous system.
Due to an implementation error, even after implementing the graph, the execution of the particle systems was mostly linear, as they all reused the same temporary buffer for reading and writing.
After fixing the error by assigning each system their own buffers, the graph automatically reordered and executed the particle systems in parallel, leading to huge gains in performance.
While a more obvious case like this one was identified since it did not meet expectations at first, there could be more subtle instances of this behavior yet to be found in the codebase that could be easily exposed by building better debugging tools.
Conclusions While the use of a directed acyclic graph for rendering is not a brand new technique, the approach used by Godot is quite novel in many ways. The simplicity of the API exposed by RenderingDevice no longer comes at the cost of rendering performance: the developer is guaranteed they’ll get efficient use of the GPU and it can only get better from here. As the engine aims to be as general purpose as possible and maintain its ease of use, a lot of alternatives had to be discarded until the right approach was found. This is a long-term technical investment that will pay off by reducing the cost of maintenance and unlocking new strategies for optimization in the long run.
An automatic approach ensures that despite the project being open source and modified by many different people, they no longer need complete awareness of how the entire rendering pipeline works to modify it. This will also be very beneficial when PRs like rendering effects are merged, which introduce the ability to add post-processing steps where the Godot renderer will be completely unaware of all dependencies the hook may require. The extra validation introduced by recording commands to the graph has also exposed existing implementation errors, resulting in either bug fixes or even performance improvements.
Debugging is the weak point of this approach: when dealing with native Vulkan or D3D12 code, it can be very tough to produce a usable backtrace as the context that generated the commands is long gone by the time they’re translated from the auxiliary buffer to the native API calls. It is advised to build very good debugging tools that register as much information as possible to aid in the process. This is one area where the existing implementaton must be improved upon.
Considering how little abstraction the graph requires, it is entirely possible to apply this approach to other projects that don’t use Godot at all. The implementation of the technique has been kept as isolated and general purpose as possible, affecting very little of the rest of the Godot codebase except for removing code that is no longer required. Following this approach turned out to be very important, as being able to change the implementation of the graph itself or disable it completely was vital to debugging any problems introduced by implementation errors. While there are no plans to make this a general-purpose library, it could be a very interesting idea to integrate this mechanism into a generic rendering framework.
Look forward to testing this feature out in the 4.3-dev snapshots and future releases! Please let us know if you have any issues so they can be fixed in time for the first stable release.
-
+
\ No newline at end of file
diff --git a/article/rendering-priorities-4-1/index.html b/article/rendering-priorities-4-1/index.html
index 73dc2c8683..a3abf895bf 100644
--- a/article/rendering-priorities-4-1/index.html
+++ b/article/rendering-priorities-4-1/index.html
@@ -5,7 +5,7 @@
Clay John 18 April 2023 This article is from April 2023 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
Now that Godot 4.0 is out, we have had the chance to think about our priorities for 4.1. In particular, we have been discussing how our intention for 4.0 was to create a stable base to build upon. The rendering internals have been totally overhauled and many new features have been added. Leading up to the betas we focused on getting everything implemented. In other words, some features are still lacking polish and optimization. We are confident that the current state of the rendering internals gives us a lot of room to grow, but we are aware that we have a lot of work to do to get stability and performance in line with our goals and with user expectations.
As explained earlier we are aiming to have a quicker release cycle and we expect to release 4.1 later this year. The engine-wide focus for 4.1 will be on stability, usability, and performance.
Priorities Below I list some of our top priorities on the rendering team for Godot 4.1 along with a brief description. These are presented in no particular order and are grouped based on whether they relate to performance improvements, stability, or usability.
Please note these priorities are aspirational: we hope to have all of the following finished in time for 4.1, but we may not. Rest assured work will continue and anything that doesn’t make it into 4.1 will make it into subsequent releases.
Also note that we will still be merging and reviewing feature PRs and bug fixes not listed on this page. This list is intended to communicate what the maintainers will be prioritizing and what we hope volunteers prioritize too. If you are interested in contributing to the rendering side of Godot, but none of these topics are interesting to you or if you feel something else should have higher priority, please contribute anyway.
Identify bottlenecks in 3D rendering (i.e. main scene shader)
Right now, when profiling rendering on both mobile and desktop, we notice that the depth-only passes (depth prepass and shadow pass) are taking much longer than they should. The opaque pass also appears slower than it should, even in less complex scenes. While most users are noticing overall performance improvements with Godot 4.0, we suspect that performance should be even better.
Early profiling indicates that we have a bottleneck in the vertex shader (which may explain why the issue exists in depth-only passes as well) which is likely memory-bound. Typical solutions to a memory-bound vertex shader include reducing VGPR usage to improve occupancy, reducing the amount of data accessed by the vertex shader, and improving vertex shader access patterns to ensure we are not thrashing the cache.
Assigned: Bastiaan and Clay have been looking into this and we welcome anyone else who would also like to help.
Time slicing DirectionalLight3D shadows
DirectionalLight3D shadows are camera-dependent. Unfortunately, this means they have to update every frame. When rendering shadows with 4 splits, this creates an awful lot of draw calls and work for the GPU each frame. Our plan is to add optional “time slicing” to allow updating further splits less frequently. For example, splits 3 and 4 could alternate frames to update. This will reduce the overall work submitted to the GPU each frame. If implemented well, this can be done without a noticeable quality loss.
Assigned: Bastiaan will be looking into this within the coming weeks.
Background pipeline compilation
Some of you may be familiar with the infamous Vulkan pipeline compilation stall. This happens when Godot loads a new shader and needs to compile all the related pipelines. This makes loading times longer than they need to be and can lead to frame time hiccups where shaders are loaded dynamically at runtime. For Godot 4.1, we want to move pipeline compilation to a background thread so that it can be done asynchronously from regular rendering and can avoid hiccups at runtime.
Assigned: Currently no one is tasked with this, but it is something we would like to have finished for 4.1.
Stability BUGS
Users are doing a great job reporting bugs and making reproducible test cases. We will be fixing as many bugs as we can and we ask that all contributors do the same.
Assigned: No one is assigned to this. We should all be doing our part and fixing as many bugs as possible.
Proper multi-threading in the RenderingDevice
Currently the RenderingDevice isn’t properly thread-safe (our usage of it is though). In some places it is overly restrictive, while in others it isn’t restrictive enough. We need to remove the restrictions where they are unnecessary and implement proper locking in places that can’t be made thread-safe.
This work is necessary to ensure that users don’t run into threading bugs as they make more advanced use of the RenderingDevice API. It is also necessary to implement background pipeline compilation as described above.
Assigned: Pedro and Clay are working on this.
Usability GL Compatibility renderer - 3D
Godot 4.0 shipped with a low-end focused renderer which targets OpenGL 3.3 / OpenGL ES 3.0 / WebGL 2 devices. The GL Compatibility renderer (as we call it) is written with low-end and mobile devices in mind and should run much more efficiently on those devices than the GLES3 renderer in Godot 3.x.
As mentioned in an earlier post , we had time to finish the 2D renderer, but did not have time to finish the 3D renderer. For 4.1, we would like to finish the 3D renderer.
Assigned: Clay will be responsible to ensure this work is done before 4.1 releases, but contributions are welcome in the meantime.
FSR 2.2 / TAA improvements
We would like to implement FSR 2.2 to replace our current TAA solution. FSR 2.2 is a more fully-featured Temporal AntiAliasing and upscaling solution than our current TAA and should work better in most situations, while also allowing the option to improve performance with upscaling.
At the same time, we will be integrating many of our effects (SSAO, SSR, shadows, etc.) with TAA so that quality is automatically improved when TAA is enabled. To be clear, this will not impact the quality of these effects when TAA is disabled. We still intend for all effects to be usable without TAA. This will just enhance these effects when TAA is used.
Assigned: Clay will be working on this, but can pass responsibility over to someone who is motivated and has the time to work on it sooner.
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 .
-
+
\ No newline at end of file
diff --git a/article/rendering-priorities-january-2024/index.html b/article/rendering-priorities-january-2024/index.html
index 96f35c3ad6..81b8039745 100644
--- a/article/rendering-priorities-january-2024/index.html
+++ b/article/rendering-priorities-january-2024/index.html
@@ -5,7 +5,7 @@
Clay John 16 January 2024 We released Godot 4.2 on November 30, 2023 with many exciting features and countless fixes and improvements. Godot 4.2 is starting to look like what we had envisioned for Godot 4. Accordingly, we are spending more time thinking and talking about what the future holds for the rendering team .
At GodotCon this year I spoke about new features that the rendering team would like to see implemented in the future. While not all of these features will make it in, it’s a pretty good overview of what we are thinking and talking about.
VIDEO Also, a reminder for those interested in contributing, the rendering team meets weekly and all are welcome to join the meetings (calender link ).
Also come join us in the #rendering
channel on chat.godotengine.org !
Update on previous priorities and 4.2 The below are the priorities we identified in July 2023 with a short description of their current state.
Split Dynamic/Static Light3D shadows (on hold) This work has been put on hold for the time being. We haven’t been able to implement it in a way that sufficiently improves performance enough to justify the additional complexity to users’ workflow and to our codebase. We intend to return to this in the future.
Background pipeline compilation (in progress) This remains a high priority and has only been pushed back due to other foundational work on the RenderingDevice backend.
Shader compilation groups (GH-79606 ) (done) We completed this and it was included in the 4.2 release! As a reminder, this optimization decreases shader compilation time for most 3D materials and should result in faster startup times and less stuttering in many games.
Stability BUGS (in progress, always) We fixed over 200 rendering related bugs in 4.2!
Proper multi-threading in the RenderingDevice (in progress) This was delayed due to foundational work on the RenderingDevice backend. But the work is currently underway and is showing promising results already!
Usability GL Compatibility renderer - 3D (in progress) We added shadows to the compatibility renderer in time for 4.2, as well as many other smaller features and improvements. We have already merged support for MSAA, lightmaps, and 3D scaling for 4.3 and will continue adding the remaining features. We aim to support Glow, ReflectionProbes, and post-process adjustments as soon as possible.
FSR 2.2 / TAA improvements (GH-81197 ) (done) We merged FSR 2.2 during the 4.2 dev cycle as well as a host of other TAA enhancements. We have kept our current TAA as it has less of a performance impact and can be useful when you aren’t using upscaling. Our goal is to continue improving the performance and appearance of our TAA solution to offer a cheaper alternative to FSR 2.2.
Others 4.2 also brought a lot of exciting changes. Among them:
Overhauled ParticlesProcessMaterial (GH-79527 )
TextureRD (GH-79288 ) (official demo )
Significant LightmapGI enhancements to both performance and quality
Vertex compression optimization (GH-81138 )
2D HDR to support using 3D glow in 2D (GH-80215 )
Optional ANGLE backend to support low-end devices (GH-72831 )
For more information, check out the “Rendering, particles, and shaders” section of the 4.2 release blog post .
Current priorities Below I list some of the top priorities identified by the rendering team. These priorities are:
Acyclic render graph optimization (GH-84976 ) (merged for 4.3) This is both an optimization and a feature. The Acyclic Render Graph (ARG) is a tool to automatically record and re-order rendering commands in the RenderingDevice backend. This is extremely beneficial for 2 reasons: 1) it enables optimizations that are otherwise not possible in a general purpose renderer, and 2) it simplifies the RenderingDevice API to make it much easier to use (this benefits us and users who use the RenderingDevice API directly). So far this PR has shown promising performance improvements on a range of devices and especially when many particle systems are in use.
Direct3D 12 rendering driver (GH-70315 ) (merged for 4.3) In December we merged support for a D3D12 rendering driver. This is the GPU backend of choice for Windows devices. Currently users need to compile Godot from source to include support for D3D12, but we are investigating ways that we could provide D3D12 support out of the box.
Metal rendering driver (in progress) Recently Stuart Carnie began work on a Metal backend for Godot. The work is significantly underway and is already showing a lot of promise. A Metal backend will allow us to massively improve the user experience on Apple devices (both iOS and macOS), including fixing outstanding bugs and improving performance.
RenderingDeviceDriver refactor (GH-83452 ) (merged for 4.3) In preparing the D3D12 rendering driver, Pedro noticed that a significant amount of code needed to be shared between the Vulkan implementation of RenderingDevice and the D3D12 implementation of RenderingDevice. He proposed that we divide RenderingDevice into two pieces: 1) an API-agnostic layer that contains all the shared code, and 2) a thin layer that only includes API-specific code (the RenderingDeviceDriver). This has allowed us to save thousands of lines of duplicate code which will make porting to new platforms easier (e.g. Metal, WebGPU) and will make maintaining our current backend easier.
Rendering hooks (GH-80214 ) (in progress) Rendering hooks are our way of allowing users to insert custom RenderingDevice code in-between draw passes in the built-in renderer. This paves the way for many custom effects that rely on accessing internal resources or that take place during rendering. Particularly, this will open up a channel to create custom post-processing effects. The implementation is still quite low-level and requires using the RenderingDevice API directly, but we consider this a first step in allowing users much greater control over rendering.
After initially writing SDFGI, Juan had many ideas to improve it which we discussed at length. He captured his ideas in a handy slideshow which we shared publicly in November 2022. Juan has now begun work on those ideas and they led him to a slightly different approach to GI, using the Hierarchical Digital Differential Analyzer (HDDA) algorithm instead of Signed Distance Fields (SDF). Accordingly, we will be renaming SDFGI to “Dynamic GI” to make the name independent of the algorithm used. The settings will change slightly in this refactor, but both performance and quality will increase. The end goal is to provide settings that will make this run fast enough for use on integrated graphics cards.
Conclusion A lot has happened since our last update. Notably we have made a lot of improvements to our rendering backend that pave the way for further features and enhancements while improving performance and stability. Our development effort is starting to shift towards new features that unblock current users who want to push Godot a little bit further, but we are still focused on improving the current set of features.
Please keep in mind that this is simply a list of things the rendering team deems high priority. Both the rendering team and interested contributors can and will continue to work on other tasks.
Support Godot is a non-profit, open source game engine developed by hundreds of contributors in 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.
-
+
\ No newline at end of file
diff --git a/article/rendering-priorities-july-2023/index.html b/article/rendering-priorities-july-2023/index.html
index 3d5cec0e58..1f0a5702cf 100644
--- a/article/rendering-priorities-july-2023/index.html
+++ b/article/rendering-priorities-july-2023/index.html
@@ -5,7 +5,7 @@
Clay John 9 August 2023 Note: This article was written a few weeks before it was published which is why it references July 2023 while it was published in August 2023. The information within is accurate for both July and August 2023.
Now that 4.1 is out and in the hands of users, it is time for the rendering team to re-evaluate our priorities and set our sights on the future of Godot development. Overall, our priorities are not changing much from what we identified in our April 2023 progress report .
As we anticipated, we were unable to finish all of our priorities in time for 4.1. In part this was due to the short timeframe (we made the post on April 18, and entered feature freeze on June 8), but it was also the result of spending more time fixing bugs than we planned (hooray for fixed bugs!) and a few key changes taking much longer than expected, notably: GLES3 3D shadows, and time slicing DirectionalLight3D shadows.
Support As a quick reminder before jumping into the meat of this article, Godot is a non-profit, open source game engine developed by hundreds of contributors in 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.
Priorities I want to address what I consider to be a failure of communication in the last rendering priorities post. The previous post was not clear about whether it was a roadmap for 4.1, or if it was a list of things that were important to the rendering team. While the content of the post said not to expect everything to be done for 4.1, the title made it sound like everything on the list was planned to be finished for 4.1. My intention in writing the post was not to promise anything for 4.1, but rather to highlight things that the rendering team is currently working on (and it just so happened that 4.1 would be the next release). Going forward, I hope to be more clear that the list of priorities is not tied into any specific release.
Similarly, as a reminder that even when we have a feature ready or nearly ready before a release window, the feature still may be delayed to a subsequent release if more testing is needed, or if contributors identify issues with the feature before it is merged. That is to say, even if we say we will have a feature ready before a particular release, it only means that the Pull Request will be made before the release, we can’t promise that any change will make it into the next release until that change is actually merged into the engine.
Below I list some of the top priorities identified by the rendering team along with a brief description. These are presented in no particular order and are grouped based on whether they relate to performance improvements, stability, usability, or a new topic, customization. Many of these items are carried forward from the last post. We hope some of these will make it into 4.2, but we can’t promise anything.
1. Split Dynamic/Static Light3D shadows
This is, in part, a carry-over from the last post. At first our idea was to add time slicing to DirectionalLight3D shadows only. But once implemented, we noticed significant visual artifacts when objects moved in splits where time slicing was active. Accordingly, we realized that we would need to split static and dynamic shadow maps for this optimization to work well and look acceptable.
Bastiaan worked super hard on this and had both systems nearly ready for 4.1, but unfortunately didn’t complete the work in time to be included with 4.1’s release as more testing is needed. We expect this work will be merged soon and will be available for testing and feedback prior to 4.2’s release. We ended up needing to introduce a few more settings than expected, so we really need community feedback to make sure the system is intuitive and helpful.
September 2023 edit: In testing we have identified performance issues that stop us from merging this work. Accordingly, this will not make it into 4.2. The work is ongoing and hopefully we will have something we are happy with ready for a later release.
2. Background pipeline compilation
This is also a carry-over from the last post. We still would like to implement this ASAP. 4.1 introduced pipeline caching which further helps reduce stalls from pipeline compilation. Background pipeline compilation will help further reduce stalls.
3. Shader compilation groups
This is a new priority which was identified as necessary foundational work before we implement background pipeline compilation.
Essentially, right now when we compile shaders we compile all possible variations of the shader that may be composed at run time. For 4.0 we drastically reduced the number of possible variations. And now the variations that are left come from a few dynamic global settings, in particular TAA, XR, Lightmaps, screen-space reflections (for a total of 16 permutations).
For many games only one of the 16 permutations will be used. With this change, we will compile and cache only the shader versions of the settings in use, then compile the others as needed. This should reduce shader compilation time by a factor of about 1/8. To be clear, this is shader compilation time not pipeline compilation time which means it will help improve load times, not runtime stutters (as shaders are compiled when the material is loaded, not when the material first appears in the scene).
Stability 1. Fixing Bugs
Please continue to help reduce the number of bugs in the engine by contributing bug fixes, and contributing issue reports with clear, reproducible test projects. We made huge strides on fixing bugs in 4.1 and we hope that following releases maintain the same increase in quality.
2. Proper multi-threading in the RenderingDevice
Another carry-over. As a reminder, this comes from the fact that our RenderingDevice API mostly uses mutexes to ensure proper thread safety across the API surface. In practice this limits our ability to take advantage of Vulkan’s ability to be accessed from multiple threads and introduces unnecessary synchronization, resulting in worse than optimal performance. This is a restriction we want to lift as soon as possible to ensure that we can optimize the RenderingDevice-based renderers as much as possible.
Usability 1. GL Compatibility renderer - 3D
This is something I really hoped to have finished in 4.1, but didn’t make it in time. I finished 3D shadows shortly before the feature freeze window, but felt the implementation needed more performance profiling and testing before being merged, so this work has been delayed.
Finishing the GL Compatibility renderer remains a top priority for the rendering team.
2. FSR 2.2 and TAA improvements
This was the closest thing to a new feature in the previous blog post and, of the topics, was the most aspirational. We really want to have FSR 2.2 implemented in the engine soon and we would like to implement the corresponding enhancements that come with using FSR.
Customization We also have plans to expose more RenderingDevice features to the scripting API. This is work that was originally planned for 4.0 that did not make the cut in time. Then we delayed it as we wanted the team to focus on bugs. Now we are finally taking the time to expose the things that need exposing so that advanced users can really take advantage of the customized rendering possibilities offered by the RenderingDevice.
The first addition is the TextureRD resource family, which are versions of Textures that are formed from an internal RD resource. This will allow users to share custom RD-created textures with the main Godot rendering pipeline. In particular, users can implement custom rendering to a surface, then display that surface using a regular GDShader.
We are also investigating exposing mesh surface data in the same way, as well as providing access to internal buffers, like the MultiMesh buffer, the Skeleton buffer, etc.
Conclusion Please remember that this is merely a list of things that the rendering teams feels are priorities. Both the rendering team and interested contributors can and will continue to work on other tasks.
-
+
\ No newline at end of file
diff --git a/article/rendering-priorities-september-2024/index.html b/article/rendering-priorities-september-2024/index.html
index 72a9e2d7da..e0de1645ec 100644
--- a/article/rendering-priorities-september-2024/index.html
+++ b/article/rendering-priorities-september-2024/index.html
@@ -5,7 +5,7 @@
Clay John 23 September 2024 It’s time again to update everyone on the activities of the rendering team. We have been hard at work fixing countless bugs and improving the renderer. Now that 4.3 is out, we have taken the chance to re-assess our priorities.
Get Involved As a reminder, we are always in need of more help. The rendering team is very small and none of us are working on the renderer full-time. If you are interested in helping out, please consider joining the #rendering channel on chat.godotengine.org , joining the weekly meetings that place, or just opening a pull request!
In addition to the priorities listed here, you can get started contributing by fixing bugs. We have been categorizing bugs by complexity and priority in the new Rendering Issue triage project to make it easier for new contributors to discover bugs that need attention.
For a less organized overview on rendering priorities, you can also check out the 4.x Rendering Roadmap Github project . This project lists a lot of the long term tasks we would like to do that don’t fit nicely in bug reports or in the blog post format. If you are performance-minded, there are also plenty of potential performance optimizations described in that project.
Update on Previous Priorities and 4.3 The below are the priorities we identified in the last rendering priorities blog post. Some of these come from earlier blog posts as well. We are happy to report that almost all priorities from the previous posts are either finished, or ready to merge.
Background pipeline compilation + Proper multi-threading in the RenderingDevice (GH-90400 ) (Ready to merge) This work was finished during the 4.3 dev cycle, but we deferred merging it to 4.4 because of its size and complexity. As a reminder, this PR implements the concept of an “ubershader” which is basically a version of the shader that contains all features and is compiled at load time. We pair the ubershader with the ability to compile specialized shader pipelines in the background. This way when we draw a new object, instead of freezing and waiting for the pipeline to compile, we fallback on the ubershader and compile the specialized shader in the background.
The early results are very promising. We are seeing reduced load times for large games as well as a reduction in shader pipeline compilation stutter when objects are seen for the first time. In fact, so far we are seeing no shader pipeline compilation stutters at run-time.
BUGS (in progress, always) We fixed over 300 rendering related bugs in 4.3! We expect to fix a few hundred more in 4.4 :)
GL Compatibility renderer - 3D (Done) We merged support for MSAA, LightmapGI (including baking), resolution scaling, glow, ReflectionProbes, post process adjustments and color correction in time for 4.3. At this point we consider the Compatibility renderer feature complete which means it now has all the features we planned for it when we first designed the renderer. We will continue adding some new features to achieve closer parity with the Mobile renderer, but new features will have less of a priority now.
D3D12 rendering driver (GH-70315 ) (Done) This was merged early in the 4.3 release cycle, but was improved steadily throughout the release cycle. The D3D12 rendering driver is now available for widespread use. This is especially important for ARM64 Windows devices which don’t support OpenGL or Vulkan.
RenderingDeviceDriver refactor (GH-83452 ) (Done) This was very important foundational work that has allowed us to simplify our rendering code and ease the future maintenance burden as we port to more rendering backends.
Acyclic render graph optimization (GH-84976 ) (Done) As expected we merged the new Acyclic Render graph in 4.3. It significantly improved stability of the engine and resolved many hard to fix errors as well as moderately improved performance. To read more see the blog post .
Compositor Effects (Rendering Hooks) (GH-80214 ) (Done) The new CompositorEffects API allows you to register callbacks that will be called in the middle of the rendering process. This lets you insert custom RenderingDevice commands in the middle of the render frame to customize rendering.
Right now the API is functional and exposes almost all internal render state so you can access all the intermediate information.
There is already an official demo so you can see how it works!
Metal rendering driver GH-88199 (Merged for 4.4) This was a work in progress for much of the 4.3 release cycle and was finished slightly too late to include in 4.3. We merged it immediately for 4.4 so we can get widespread testing before release. It’s ready to try in 4.4-dev1 or later releases.
Metal enhances both performance and stability on Apple silicon devices. Please test it out and let us know if you run into any issues!
SDFGI refactor / HDDAGI (GH-86267 ) (In progress) This is still a work in progress, but results are already quite good. Both performance and quality are better than SDFGI. Juan still has many ideas he wants to apply, so this work may continue for some time before it is ready.
New Priorities We have completed almost all of our previous priorities, so now we get to set out new goals for the next few release cycles. Right now rendering contributors are most excited about two things:
Unblocking advanced users (especially for advanced VFX). Improving performance. These are rising to the top of the priority list as Godot becomes increasingly stable and the core user-experience feels quite good.
In particular the following are areas where you can expect to see changes in the next couple of releases. Bear in mind that we don’t have dedicated people working on any of these priorities. If you are interested in contributing, please consider contributing in one of these areas.
Performance is our number one priority. Now that Godot 4 has been out for over a year we are seeing more games releasing with Godot and users are starting to create bigger and higher-fidelity games. A natural consequence is that Godot’s renderer is starting to become a limiting factor for some users. Accordingly, it’s time for us to prioritize speed and to start implementing all the optimizations we have been putting off for later. You can find a list of a number of them listed in our 4.x Rendering Roadmap Github project .
Lightmapping improvements We have had a lot of recurring requests to improve the quality and ease-of-use of LightmapGI. So far in 4.4 we have had a few major improvements (including bicubic sampling and a GPU-based texture compressor ), but there is a lot of work still to do to ensure that baking and using LightmapGI is as seamless as possible.
Godot 4 has brought many quality of life features to particles like animated velocities and turbulence . However, particles still fall short in term of the broader workflow. VFX artists have to come up with their own structure for VFX (often script + animation player), figure out ways to check timings of their effects outside the engine (using screen capture software, for example), modify billboarding logic manually when moving to custom particle shaders, and so on. Despite improvements to the flexibility of the engine, artists still need advanced technical knowledge to do many things (like writing post-processing effects with the new CompositorEffect API).
We still have a lot of work to make Godot more accessible for people that are less interested in learning shaders or programming but still want juicy effects and immersive environments in their games.
If you want to help, there are plenty of things to do. From helping by gathering knowledge and evaluating solutions from multiple perspectives, to implementing agreed new features and bug fixes , finally, by joining us in the VFX Discord server .
As Godot adoption increases, it is being used for more niche and specialized projects. However, we can’t provide everything that every user needs out of the box without becoming bloated, slow, and hard to use. So we need to provide more tools to customize rendering for projects that need more specialized effects. We started that process in 4.3 with the CompositorEffects API . We want to continue that effort by implementing more things in the Compositor API to allow users to control the order of rendering , override shader templates , etc.
Significantly improve screen-space effects (SSAO, SSIL, SSR, SSS) All of the screen-space effects in Godot 4 were designed to run without using temporal reprojection for 2 reasons: 1) we didn’t want to force anyone to enable TAA in order to have a good looking game and 2) we didn’t properly calculate motion vectors for moving objects until Godot 4.2. Temporal reprojection allows us to make our effects much higher quality for a lower base performance cost.
Now that we have proper motion vectors, we want to provide versions of all the screen-space effects that take advantage of motion vectors to increase their quality and reduce performance cost.
We still won’t require TAA for any of the built-in effects as we want users to be able to choose whether to enable TAA or not, but we will likely use temporal reprojection by default for most of these effects.
This is an area that is really easy to contribute to if you are already familiar with rendering but want to get more familiar with Godot!
Support Godot is a non-profit, open source game engine developed by hundreds of contributors in 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.
-
+
\ No newline at end of file
diff --git a/article/results-godot-jam-june-2018/index.html b/article/results-godot-jam-june-2018/index.html
index 91c7e3aa56..d0bcd1a26c 100644
--- a/article/results-godot-jam-june-2018/index.html
+++ b/article/results-godot-jam-june-2018/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 2 July 2018 This article is from July 2018 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
After three days of intensive game development and two weeks of playtesting and rating (over 3,500 ratings!), we now have the results for our June 2018 Godot Community Game Jam !
110 participants developed games with Godot Engine on the theme TEMPERATURE . There were ton of great ideas, and it has been a lot of fun to play them all and give the authors some feedback. All games can be downloaded from the itch.io jam page , and you can also see how they were implemented with the source archives or repositories provided by the developed. 38 of those games were their developers’ first Godot project (filter the entries with the “Yes” filter to see them).
For the first time, we also have some prizes for our jam winners, thanks to the generosity of Packt Publishing ! See below for details , but first let’s check the top 3!
1. Fire and Fondness
Fire and Fondness is a delightful tale of love, tradition and carbonisation (UK spelling intended) by John Gabriel ! This cute and well-designed pixel art puzzle game snatched the 1st position in the Gameplay and Graphics and Sound categories, and 2nd position in the Theme interpretation category (Overall rating: 4.088). And while there was no voting criterion for the writing, the introduction and ending texts of the game are definitely worth reading!
Download the jam version or play it online on itch.io . Browse the source code repository and have fun with the post-jam Enhanced Edition !
2. The Weather Guy The Weather Guy by Emilio and Andre Mari Coppola is a clever quiz game where you have to guess real-time temperatures in big cities all around the world. The beautiful artwork and animation coupled with the witty writing and intelligent use of live real-world data made it a brilliant entry.
Download the jam version , see detailed credits on itch.io or browse the source code repository .
Emilio and Andre Mari’s 2nd place is all the more impressive given that this was their first Godot game!
3. On Blazing Rails to Kansas City On Blazing Rails to Kansas City by Dalton5000 is a cute arcade game where you fire up your locomotive by throwing coal on it, while simultaneously splashing it with water to prevent overheating and throwing bombs at weight-dropping birds! While the game in the jam version is a bit on the easy side, the gameplay is very smooth and well executed, and the great art, animations, music and sound effects make it a gorgeous game.
Download the jam version or play it online on itch.io . The source code is available as an archive on itch.io .
Prizes We decided to celebrate this very successful game jam with some goodies for the winners, as well as for a couple randomly-selected participants (using GDScript’s randi()
for the selection of course!).
We have nice Godot T-shirts from the previous GodotCon with the Godot 3.0 design that we will send to our 3 jam winners, but there’s more!
Chris Bradfield, one of the main contributors to Godot’s official documentation, as well as the guy behind the great KidsCanCode tutorials channel, has just published the Godot Engine Game Development Projects book with Packt Publishing . It was sent for printing today and should be available in paper format and ebook within a week. I had the opportunity to have a look at the book and it should be a pretty good learning resource, teaching how to use Godot hands-on with 5 different projects implemented from scratch, each introducing more advanced features of the engine to master.
Packt Publishing gave us several printed copies of the book as prizes for the jam, which we’ll have signed by Chris and shipped to our winners. We chose to give one copy to the overall jam winner, and one copy each to two first-time Godot users who participated in the jam (chosen randomly). Therefore we’re giving away three signed copies to:
And there’s more! Packt also gave us discount coupons for the book to share with all jam participants, you should receive them by email tomorrow (15% discount on the printed book and 50% discount on the ebook).
Thanks everyone for participating in this great jam, either as game developer or as player. Stay tuned for infos regarding our next jam!
-
+
\ No newline at end of file
diff --git a/article/retrospective-and-future/index.html b/article/retrospective-and-future/index.html
index 67a7895549..bc3e4177f3 100644
--- a/article/retrospective-and-future/index.html
+++ b/article/retrospective-and-future/index.html
@@ -11,7 +11,7 @@
Interest over time in “Godot Engine” on Google Trends GodotCons As the project started growing, Godot Conferences started being organized, this way most of the core contributors could meet face to face. This greatly improved discussions and decision-making in key areas.
Nowadays, we meet several times a year in Europe. In fact you are welcome to join us next month in Brussels!
New goals Afterwards, the plan was to “split” teams, as I would work on the Vulkan branch (which will become the master branch soon, and is expected to release as Godot 4.0 by mid 2020) and Rémi would manage with the rest of the contributors the release of Godot 3.2 (for the first time, entirely on his own, and he is doing an amazing job so far).
And then a decade has gone by. The almost six years since Godot was open-sourced were a roller-coaster. It’s hard to believe so much happened in such a short amount of time.
Future Today, Godot has over a thousand contributors and an amazing user community. The new 3.2 version will hopefully be released this month (January 2020), with even better and improved usability and stability, and putting an end to our best release cycle yet.
Afterwards, the Vulkan branch will become master (it will be pretty unstable for a while, so definitely not advised for production). The plan is to not add a lot of new general features in 4.0 and focus exclusively on bringing rendering quality and performance on par with mainstream game engines.
Of course, as always, keep in mind that all this is done with ease of use as our first priority, as Godot is designed so that small and medium sized teams, as well as individual developers, have the best possible tool for the games they want to make.
The new rendering architecture will also allow companies working on console ports to more efficiently port the engine and offer our users the possibility of running their games on the most popular game consoles (something we will, unfortunately, never be able to offer officially due to legal reasons, thus forcing us to cooperate with companies porting it on their own).
So, to everyone contributing, using, following or donating to Godot development, have a happy new decade! From the bottom of our hearts, lets hope our hard work will help you one day make your dream games come true!
-
+
\ No newline at end of file
diff --git a/article/review-gamescom-2024/index.html b/article/review-gamescom-2024/index.html
index 66eefdb666..d82d6fdfa5 100644
--- a/article/review-gamescom-2024/index.html
+++ b/article/review-gamescom-2024/index.html
@@ -15,7 +15,7 @@
On Thursday evening, we hosted our own off-site Godot mixer, and attendance was great! Sitting on the outside patio of the Haxenhaus, an old GDC Europe staple location as we were told, we got to enjoy plenty of food and drink - courtesy of our longtime sponsor W4 Games .
It is always a pleasure to meet our community face to face, and we are flattered that many of you seem to agree. Thank you to all attendees for sharing your personal Godot Engine stories with us, we learn a lot from these conversations every time. For the next events, we might need more sponsors to be able to accommodate more than “just” 50 of you.
To meet a few more community members, we also assembled Friday afternoon at the aforementioned Indie Arena Booth. Despite having to yell-talk and running out of goodies to distribute, we had a lot of fun helping fellow developers network and mingling ourselves. Considering the amount of people that showed up, we were almost concerned the Germans would come after us for “unlawful assembly” or “blocking the exit paths” - luckily for us, nothing of that sort happened and instead we got to take a big happy group picture:
What event would you like to see us attend next? Tell us on our official forum! Bonus points if you know a local user group or creators who would help us staff a booth, and a sponsor to help with the related expenses.
-
+
\ No newline at end of file
diff --git a/article/review-godotcon24/index.html b/article/review-godotcon24/index.html
index e4bfd487c6..cd07d87092 100644
--- a/article/review-godotcon24/index.html
+++ b/article/review-godotcon24/index.html
@@ -19,7 +19,7 @@
Godot Conference 🌐 https://conference.godotengine.org/
👋 See you next year!
-
+
\ No newline at end of file
diff --git a/article/schedule-godotcon-2018-poznan/index.html b/article/schedule-godotcon-2018-poznan/index.html
index 41d370fb08..59dcf4c8bc 100644
--- a/article/schedule-godotcon-2018-poznan/index.html
+++ b/article/schedule-godotcon-2018-poznan/index.html
@@ -6,7 +6,7 @@
We’ll shape the day based on the interests of the audience to make the most out of it :)Thursday, 11 October 2018 Demo: Showcase and insights into the new TPS demo Juan Linietsky (reduz )
Juan will show us how the exciting new TPS demo is set up, with insights in how to import assets, set up 3D scenes and configure the materials and environment for such a visual output. Talk: My Godot toolbox: patterns, animation and encapsulation Jakub Grzesik (kubecz3k )
A quick set of patterns, tricks and rules that I like to keep in mind when I’m developing a game in Godot Engine. Talk: Nonconventional games: Godot in medical simulation Ilaria Cislaghi (QbieShay )
Godot is a powerful multipurpose engine that can be used for pushing the boundaries of medical simulation. In this presentation we will explore non-conventional use of the engine, software practices that emerged during development and thoughts about Godot itself. Talk: Procrastinators hate him - a simple trick to keep development momentum Mariusz Chwalba (koder )
Overview of simple tools and tricks that will get your project released, handpicked from agile development methodology. Simple and overhead free. Talk: Simulations with Godot at Jagiellonian University Leszek Nowak (John Meadow )
Jagiellonian University is deploying Godot as main teaching software for Geometry and Simulation. Leszek will present their project and how the Godot community can benefit from it. Talk/demo: How I grow with grass shader Krzysztof Jankowski (w84death )
My story of learning shaders the hard way - by doing an awesome grass shader! Workshop: Normals can be fun Mariusz Chwalba (koder )
Basic way to get a normal mapped 2D sprites from Blender to Godot, and a few fun things you can do with them in Godot. Prerequisites: Laptop with Godot 3.x and Blender 2.79c installed. The speakers Here’s some info about our GodotCon speakers. Note that we’re still accepting late proposals of activities, so you could be one of those too :)
Ilaria Cislaghi is a game designer working for
simedis AG , a company specialised in virtual reality medical simulation. In her free time, she enjoys developing games about Antarctica with Godot.
Fabio Alessandrelli is a core Godot developer and maintainer of the networking stack of the engine, among other contributions. As an indie dev, he also published
Aequitas Orbis in early access, a multiplayer 2D space game using Godot 2.1.
Gilles Roudière is one of Godot's core developers and focuses lately on the engine's usability, with many changes to the editor like an
enhanced FileSystem dock , a better workflow in the 2D CanvasItem editor and a
new axis handling system for gamepads.
Juan Linietsky is Godot's co-creator and lead developer, and oversees most of the features added to the engine to keep it efficient and well-designed. He splits his work time between writing code himself, and helping other contributors make good changes.
Leszek Nowak teaches Game Development at the Jagiellonian University in Krakow, where they are now using Godot as default teaching software for Simulation and Geometry courses. He also made over 10 games with Godot during game jams.
Mariusz Chwalba describes himself as a programmer by trade, gamer by hobby, game developer for fun. He loves sci-fi and fantasy - both movies, books and games - and works on
ΔV - Rings of Saturn with Godot 3.1.
Rémi Verschelde is Godot's project manager, working relentlessly to facilitate contributors' work and make sure that it fits Godot's architecture and standards. That also implies organizing community events like this GodotCon :)
Wojciech Chojnacki is a professional backend programmer, also streaming and gamedev enthusiast, enjoying making games as much as playing them. Part of the
P1X team , working on small, open-source projects.
-
+
\ No newline at end of file
diff --git a/article/schedule-godotcon-2019-brussels/index.html b/article/schedule-godotcon-2019-brussels/index.html
index 063f06535c..5b07b284ac 100644
--- a/article/schedule-godotcon-2019-brussels/index.html
+++ b/article/schedule-godotcon-2019-brussels/index.html
@@ -10,7 +10,7 @@
Today, while still not an avid coder, he uses Godot to make videogames to help us further understand the human mind and brain as a neuroscientist.
-
+
\ No newline at end of file
diff --git a/article/schedule-godotcon-2019-poznan/index.html b/article/schedule-godotcon-2019-poznan/index.html
index d5a0e313b5..1a07a2ef03 100644
--- a/article/schedule-godotcon-2019-poznan/index.html
+++ b/article/schedule-godotcon-2019-poznan/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 10 October 2019 This article is from October 2019 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
Update 2019-10-16: Here is the current schedule with time table: Link to PDF .
Livesteam of the event is online on YouTube .
As announced a few months back , we are organizing a Godot Conference (GodotCon ) in Poznań, Poland next week, on 16 & 17 Oct 2019. We expect close to 90 attendees, so this should be a great event!
Thanks again to the organizers of the Game Industry Conference for hosting us as a pre-GIC event, as well as hosting the Godot Sprint on 14 & 15 Oct at the same venue, where engine contributors will meet to work together, discuss the roadmap for 4.0 and future releases and many other technical topics :)
Below you will find the preliminary schedule for GodotCon Poznań, as well as a short description of the talks and the speakers. The order of the talks is still likely to change, and a few more talks may be added as we often get last minute proposals (especially from core contributors who tend to prefer making Pull Requests over preparing talks ;)).
Note for GodotCon attendees: Always refer to the Events page when in doubt about specifics regarding the event (time, location). We’ll update this page in priority whenever there is new details (especially more precise indications about how to find the conference room).
For people who cannot attend GodotCon, do not despair―we plan to have a livestream on Godot’s YouTube channel , which will also be available in replay.
GodotCon schedule Update 2019-10-16: Here is the current schedule with time table: Link to PDF .
Livesteam of the event is online on YouTube .
Note: This is currently an unordered list of talks we will have. This post will be updated with a plan for when each talk should be in coming days.
The speakers Here’s some info about our GodotCon speakers. Note that we’re still accepting late proposals, so you could be one of those too :)
Fabio Alessandrelli (Italy) is a core Godot developer and maintainer of the networking stack of the engine, among other contributions. As an indie dev, he also published
Aequitas Orbis in early access, a multiplayer 2D space game using Godot 2.1.
Matejs Balodis (Latvia) is a game developer, streamer and member of
Rocknight Studios , where the development is done using
FOSS tools. He actively promotes Godot Engine and other FOSS tools during livestreams on
Twitch by showing viewers the creative process. As part of Rocknight, Matejs hosts a 3-hour game jam every weekend since January 2019 called
Trijam , where over 325 games in 40 jams have been created thus far.
Giovanny Beltrán (Colombia) is a software engineer with experience working with JavaScript and Python. After working for startups in California, he is now the lead programmer and producer of
Black Mamba , an independent game studio located in Bogotá, Colombia, which uses Godot for their projects. He is also co-organizer of BogotaJs, a huge JavaScript meetup in Bogota, co-host of JuegosIndies, a YouTube channel about game design, and just founded a Godot Bogotá meetup.
Tomasz Chabora (Poland) is a passionate game developer and gamer. He is a member of Gamedev Students Association at Jagiellonian University, where he actively promotes Godot engine. He also happens to be an active contributor to the engine, fixing and implementing random stuff.
Pedro J. Estébanez (Spain) has been involved in different kinds of software development across the years, his main interest and focus regarding computers being multimedia, computer graphics and video game development. He has been contributing to Godot for some years and providing consultancy about it. Currently he's working on his video game
Hellrule .
Aleksandar Gavrilović (Croatia) is the CEO of
Gamechuck , a Croatian video game company. Aleksandar previously worked on award winning and critically acclaimed point-and-click adventures, and is now a producer for
Trip the Ark Fantastic .
Jeremiah A. Lasquety-Reyes (Germany) is a researcher at the Institute for Advanced Study on Media Cultures of Computer Simulation (
MECS ) at the Leuphana Universität Lüneburg, Germany. Much of his work deals with ethics and medieval philosophy. He plans to use Godot for his upcoming project, the
Austrian Economics Model .
Juan Linietsky (Argentina) is Godot's co-creator and lead developer, and oversees most of the features added to the engine to keep it efficient and well-designed. He splits his work time between writing code himself, and helping other contributors make good changes.
Nathan Lovato (France) is a game creation tutor and free software advocate. With
GDQuest , he makes tutorials for programs like Godot and Krita, and releases all his code as source.
Paweł Mogiła (Poland) teaches game programming and motion capture at Jagiellonian University in Krakow. He also creates his own stuff and recently released his last game
Clinically Dead on Steam. His next game will be in Godot.
Leszek Nowak (Poland) teaches Game Development at the Jagiellonian University in Krakow, where they are now using Godot as default teaching software for Simulation and Geometry courses. He also made over 20 games with Godot during game jams.
Răzvan Cosmin Rădulescu (Romania) is a programming freelancer working at
GDQuest on creating tools & plugins for
FOSS . He's also the lead developer on GDQuest's latest 2D platformer game demo. Holds a masters in physics, but slowly drifted away from academia being drawn more by the idea of game development. He also has a keen interest in digital painting & drawing and generally tech-related craft. His latest big dream is to create a highly dynamic community in his (small) home town in Romania, centered around the FOSS philosophy stretching across domains, not just tech.
-
+
\ No newline at end of file
diff --git a/article/schedule-godotcon-2020-brussels/index.html b/article/schedule-godotcon-2020-brussels/index.html
index 1bb3dcec02..00e5ef833d 100644
--- a/article/schedule-godotcon-2020-brussels/index.html
+++ b/article/schedule-godotcon-2020-brussels/index.html
@@ -6,7 +6,7 @@
He loves being distracted by the inner workings of the Godot engine and fixing some of those long-standing issues.Matejs Balodis (Latvia) is a game developer, streamer and member of
Rocknight Studios , where the development is done using
FOSS tools. He actively promotes Godot Engine and other FOSS tools during livestreams on
Twitch by showing viewers the creative process. As part of Rocknight, Matejs hosts a 3-hour game jam every weekend since January 2019 called
Trijam , where over 450 games in 52 jams have been created thus far.
Yann Burrett (United Kingdom) is a professional educator, teaching everything from Stage Management to Game Design to English to Making Games in Godot. He’s one of the company directors of
Canopy Games Ltd and the author and instructor of the
Discovering Godot and
Godot Getaway courses.
Aurélien (France) is not a professional developer but he has designed several successful serious games in the legal sector. He is currently working on a 3D game project with Godot, displaying the adventures of a blue rabbit.
Pedro J. Estébanez (Spain) has been involved in different kinds of software development across the years, his main interest and focus regarding computers being multimedia, computer graphics and video game development. He has been contributing to Godot for some years and providing consultancy about it. Currently he's working on his video game
Hellrule .
Paweł Fertyk (Poland) is a long-time coder with a passion for open source and game development. His company,
Miskatonic Studio , published the Godot-made
Intrepid on Steam in December 2018 and is currently working on 3D adventure games.
Juan Linietsky (Argentina) is Godot's co-creator and lead developer, and oversees most of the features added to the engine to keep it efficient and well-designed. He splits his work time between writing code himself, and helping other contributors make good changes.
Bojidar Marinov (Bulgaria) is a young software developer and open source contributor to the Godot engine. His main interests are in the design of programming languages, elegant algorithms, and generally in doing more with less. He regularly visits various Godot community channels, helping newcomers to learn the engine's specifics.
George Marques (Brazil) has worked at
Javary Games and
IMVU making games with Godot, being a contributor to the engine since 2015. Currently works directly for Godot, in special maintaining the GDScript codebase. He's also a co-author of the book
Godot Engine in 24 Hours published by Pearson.
Julian Murgia (France) is a contributor and member of the Godot Engine Leadership Committee. He has contributed in both code and documentation, helping here and there when possible. He also maintains the
Escoria framework for point and click adventure games on Godot Engine.
-
+
\ No newline at end of file
diff --git a/article/shedding-light-on-godot-development-process/index.html b/article/shedding-light-on-godot-development-process/index.html
index 6cfea89553..0a4f99388a 100644
--- a/article/shedding-light-on-godot-development-process/index.html
+++ b/article/shedding-light-on-godot-development-process/index.html
@@ -5,7 +5,7 @@
Juan Linietsky 3 December 2017 This article is from December 2017 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
Godot keeps growing steadily in both users and contributors, and 3.0 will be our best release yet. As our community keeps expanding, the development process also reshapes to accommodate new contributions.
While our process is completely transparent, it is not obvious for a large part of the community how new features, fixes and improvements are added. This short article will attempt to shed some light on it.
Who is the boss? We constantly get questions about who is the boss. Several community members also attempt contacting me, Rémi and others asking us for help or features, and giving suggestions. The problem is we are not anyone’s bosses.
As an entepreneur myself, and having owned many small companies in the past, I can assess that the relationship between open source developers is completely different to that in a corporate culture. An employee gets paid to do his or her job, but an open source contributor helps the project because of his or her own impulse to do it.
In open source projects, most developers work on their free time, on whathever they want, and when they want. No one has any authority over them, be it moral or monetary, and this is for the best. The code they give to the project is also still owned by them (under the same permissive license).
This may seem chaotic, but it works very well. Godot does not have to compete with companies for mindshare, we have some of the brightest minds working for the project.
Ok, but who decides? When Godot was open sourced, I was the only lone contributor and of course, whathever was done was my decision. As more contributors joined the project, the priority was to incorporate them in the decision making.
The important word here is consensus. In everything we do, we try to look for agreement between all parties involved and, so far, we never had problems with this. Were there to be disagreements, we could look for voting but everything was discussed and agreed up to now.
How is consensus reached? Here are some typical situations going on during development.
Feature request Often, users request features on GitHub (by opening an issue). At first, other users will discuss whether they think it’s ok or not. Eventually, developers may chime in and give their view on how difficult it could be to implement and whether it’s worth or not.
If this feature is easy enough to do, usually one of the developers who commented may feel tempted to implement it and submit a Pull Request.
Sometimes, en existing or new developer comes up with a new feature and opens a Pull Request directly. This is fine, though we advise about first asking if the feature is wanted if the amount of work it takes is considerable, as it may be denied merge and result in wasted time.
Pull Request Pull requests are commented and reviewed by developers. Only a few core developers can merge PRs, but they will only do if there is a consensus. To reach a consensus, we regularly host meetings to review PRs on IRC. If an agreement is reached, the PR is merged.
Whenever a PR is trivial to assess and (from the point of view of the reviewer) unquestionably good, it can be merged without extensive discussion to speed up the process. If it ends up being challenged later on by other devs, it can get reverted so that a new PR can be worked on addressing the shortcomings of the first one.
Direct commits Some core developers are “owners” of areas. This means they have enough knowledge on this area of the engine (because they learnt it well or because they made it themselves), that allows them to commit directly to keep improving or working on it. Likewise, they can usually decide to merge a PR in an area of their responsibility if they approve it.
There are hundreds of community users building Godot from source. In general, bad commits are easy to find and bisect and they can be quickly reverted. This is why Godot is always very, very stable.
No, Juan and Rémi don’t decide Before approaching me, Rémi or someone else, please understand that our current role is more along the lines of communication. We try to convey information outwards to the community, and inwards to new and existing developers.
As mentioned before, most decisions on features, fixes, etc. are made in consensus and generally over GitHub or IRC.
What about Software Freedom Conservancy and the Godot PLC? The original owners of the “Godot” trademark are me and Ariel Manzur, who worked on it since around 2007. Like many other high profile open source projects, we signed an agreement with Software Freedom Conservancy so they can use the trademark, collect money for the project and defend the project legally.
Conservancy requires that a PLC (Project Leadership Committee) is created. They also require that Ariel and I are in a minority in this committee, so there are three more members from the core team, selected by their longstanding contributions to the project over the years. The current PLC members are:
Juan Linietsky (me, who act as development lead) Ariel Manzur (co-author of Godot, though not currently active in development) Rémi Verschelde (who acts as project manager) George Marques Andreas Haas Previous members:
Alket Rexhepi (stepped down due to lack of time). In any case, Software Freedom Conservancy acts as our fiscal sponsor. They receive donations for the project and the PLC decides what to do with them. Of course, as a charity, Conservancy has very strict rules to ensure that money is only used for the benefit of the project. They control every penny that goes through and make sure it’s invested as intended, so this should act as a warranty to the whole community and sponsors.
But the responsibility of the PLC is only about managing money, it has zero inference on the development process itself. If developers are to be hired with this money, it will still be done in agreement and consensus with everyone else, and only for contributors with an extensive and proven track record. Hired developers have a strict contract to comply with, drafted by Conservancy’s laywers.
How about Patreon? Our current Patreon is owned by the Software Freedom Conservancy. All donations go to our project finances within their organization.
Conservancy asks that Patreon rewards can at much affect the priority of tutorials, demos or features that the project is already intending to do. We can’t offer rewards unrelated to Godot’s goals. This is why we ask the whole community for proposals, then we later approve them, and only Patrons have voting power in the end.
As soon as 3.0 stable is out, we will work on the proposals first. In general, existing contributors want to work on them, though I make sure to work on them myself if no one is up for the task.
What if I want to pay for specific work to be done? There are two choices for this. If the work to be done is something of interest of the project and we want to merge it, Conservancy can accept a directed donation. Meaning they will be in charge of hiring (with our recommendation) someone to work on that. This is how the Mozilla and Microsoft grants happened.
If the work is no interest for the project (like, supporting a proprietary API or technology), many of our core developers accept paid work. Just drop a line to contact at godotengine · org, which will reach the PLC. We will ask the developers to see if there is any interest.
Help us be transparent Our goal with Godot is to be as transparent as possible. This article was created to shed light on how everything works, but if you still have any doubts or would like to have more information, please let us know!
-
+
\ No newline at end of file
diff --git a/article/showcase-your-godot-game-our-website/index.html b/article/showcase-your-godot-game-our-website/index.html
index 9355adbf43..5ce391270a 100644
--- a/article/showcase-your-godot-game-our-website/index.html
+++ b/article/showcase-your-godot-game-our-website/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 27 June 2016 This article is from June 2016 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
As a relatively young game engine on the market (at least with regards to our open sourcing two years ago ), we are often asked to showcase what are the features of the engine. But an engine such as Godot has hundreds of features catering to different use cases, and it’s obviously difficult to do them all justice; especially when cool new features keep incoming in the development branch !
Showcasing Godot-made games So the best solution for this is to let you , the game developers, showcase what you can do using Godot! Games of all genres, 2D and 3D, with simple or very complex gameplays, story-rich or casual… Godot can be used for all those games, and you can help show this to the world!
To this extent, we created a Showcase portal (check the navigation bar!) that displays a curated list of published and in-progress games developed by members of the Godot community. The page itself is a first draft and is bound to be improved little by little based on your feedback and ideas . In a first time, please add your comments to this broad GitHub issue , to gather everything in one place.
Currently the page can list every entry with a name, screenshot, short description, tags and category, as well as a link to the reference homepage for the said game.
Proposing content We pre-filled the page with some known indie and libre games developed by active community members; we know however that there are many other Godot games out there that would be worth showing on this page.
There is currently no automatized system for you to propose new entries, so we will do it the good old way: by sending emails to the webmasters (webmaster @ godotengine · org ).
Please include the following information:
Name of the game Short description **URL: ** Project website, Steam store page, git repo, etc. - the most relevant one. Category: Finished, WIP or Demo.Tags: Check other entries to see what tags could be relevant.Screenshot(s): Currently we only display one but this might change soon. Make sure that they have an aspect ratio similar to existing entries (4:3).Screenshot of the project opened in the Godot editor: This is just to check visually that it is indeed a Godot game, so that we don’t start showcasing projects from other engines ;) (not necessary if the source code is available, as we can easily check then).We might then cherry-pick some of our favorite entries (with your permission) for our next video showcase. In the meantime, here’s the first one again:
VIDEO That’s it! Looking forward to getting submissions and discovering some great new games developed with our beloved engine!
-
+
\ No newline at end of file
diff --git a/article/simplex-noise-lands-godot-31/index.html b/article/simplex-noise-lands-godot-31/index.html
index 645bc0a539..9ae50574a0 100644
--- a/article/simplex-noise-lands-godot-31/index.html
+++ b/article/simplex-noise-lands-godot-31/index.html
@@ -25,7 +25,7 @@
For more information about OpenSimplexNoise
and what is the meaning of each parameter, don’t forget to check out the documentation .
Noise texture
If you only need access to a noise texture for visual effects, the new NoiseTexture
resource type is your best bet. It allows you to specify a noise generator and a texture. The texture data will be automatically filled with noise, using the parameters of the generator. You can also enable the use of seamless noise (only works with square textures) and enable outputting the noise data as a normal map.
-
+
\ No newline at end of file
diff --git a/article/skeleton-inverse-kinematic/index.html b/article/skeleton-inverse-kinematic/index.html
index 387ac1f4e1..a568e9f32c 100644
--- a/article/skeleton-inverse-kinematic/index.html
+++ b/article/skeleton-inverse-kinematic/index.html
@@ -5,7 +5,7 @@
Andrea Catania 5 August 2018 This article is from August 2018 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
This blog post is an announcement that 3D IK support was merged to the upcoming 3.1 branch.
Thanks to a new node, SkeletonIK, it is possible to procedurally change a skeleton pose! Check this explanatory video where you can learn how to use it:
VIDEO The project shown in the video can be downloaded from the following link .
Thanks to these two guys who made the rifles.
Rifle1 model by skartemka Rifle2 model by AlanBah
-
+
\ No newline at end of file
diff --git a/article/sketchfab-integrates-with-godot/index.html b/article/sketchfab-integrates-with-godot/index.html
index 309e34a0a5..6a1f1cfa84 100644
--- a/article/sketchfab-integrates-with-godot/index.html
+++ b/article/sketchfab-integrates-with-godot/index.html
@@ -11,7 +11,7 @@
Pedro J. Estébanez 20 March 2018 This article is from March 2018 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
Sketchfab is a well-known site where you can browse a big library of 3D models and download them for use in your own projects. Many of them are free, covered by open licenses.
They have just announced their download API (announcement ), which allows third-parties to integrate with it, giving any application access to hundreds of thousands of models in glTF, a standard format that many tools, Godot included, understand.
They have integrations for other famous game engines, like Unity and Unreal and have decided to provide an official plugin for Godot ! It’s also available on the Godot Asset Library . You can watch the video to get a better idea:
VIDEO So it seems that more and more companies are taking Godot very seriously and it’s becoming a big player in the game engine landscape.
In order to run the Sketchfab plugin, you’ll need to wait until the upcoming Godot 3.0.3 is released since it contains some needed bugfixes, that were done after the last official version. If you are a Windows (x64) user and can’t wait, you can get a build snapshot from the plugin repository, under which it will work.
-
+
\ No newline at end of file
diff --git a/article/small-defense-gltf/index.html b/article/small-defense-gltf/index.html
index ae011c84f2..facdb6024f 100644
--- a/article/small-defense-gltf/index.html
+++ b/article/small-defense-gltf/index.html
@@ -5,7 +5,7 @@
Juan Linietsky 24 August 2017 This article is from August 2017 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
What is this and why? A few weeks ago, I wrote an article about why I believe glTF 2.0 to be a great format and that we should encourage its widespread adoption. I also compared it to other formats, including Eric Lengyel’s OpenGEX.
As I mentioned on the original article, I think OpenGEX is a very good format. My main criticism to the format was that development is not lead in what today would be considered an open fashion. Eric alone maintains control of it. In contrast, glTF is a true standard developed by a non profit and an open development process .
Today , Eric has published what I assume is a defense of OpenGEX vs glTF (and the ancient Collada). Eric has claimed that glTF is a format with design flaws (and that it is not fit to be a pipeline format).
While I agree on many points, and I won’t argue that OpenGEX is a great format, I just wanted to clarify a few things from my point of view for those interested in the technical aspects, explaining why many of glTF “shortcomings” are, in my opinion, actually brilliant design decisions. All this, of course, always for the sake of helping glTF 2.0 gain more adoption.
Feature by feature Hierarchial node relationships This is IMO the worst part of glTF. A single parent node index would have sufficed on each node. Instead, each node has an array of children nodes. This makes validation considerably harder. I understand this is the price to pay for backwards compatibility with glTF 1.0. That said, it’s not too bad in any case and I agree with Eric that this is a minor problem.
Some 3D DCCs support an extra object Pivot (e.g. 3DS MAX). Collada exports this as an extra node and most likely if a glTF 2.0 exporter existed, the same would be done. In my opinion, this feature is rather useless and I don’t think any mainstream 3D engine supports extra object pivots either. Having this extra feature supported also makes an OpenGEX importer more complex, so this IMO is a bad design decision in OpenGEX, not an advantage.
Per-instance material binding In a scene description format, materials can be contained in instances (as in, the instance is the mesh used, the transform in the world, and the material) or inside meshes (mesh comes with a material). OpenGEX and Collada apply materials to instances (the former), while glTF 2.0 does to meshes (the later).
In 3D DCCs, the most common case is that materials are applied to objects. It’s a very, very rare use case for artists to re-use the same model and apply different textures to it. As such, the method used by glTF 2.0 is in my opinion more suited to real-life even if less flexible.
Skinning When skinning in 3D DCCs, bones have a list of vertices they affect and how much. In game engines, for performance, vertices have, instead, a list of bones they are affected by and how much. This is done usually by two attributes in the vertex array “bone indices” and “bone weights”. Attributes are limited to vectors of four (vec4) maximum and no game engine that I know crosses this limit.
While OpenGEX and Collada support more than 4, I side with glTF 2.0 on this one because there really is no reason to support more and it makes the parser simpler. Again though, I agree with Eric that this is a minor problem.
Morphing In this area, glTF 2.0 is lacking, as absolute morph targets can be useful and are supported by 3D DCCs, although not as common. I think this is more a problem of a missing feature than a design flaw.
Level of Detail (LOD) While most game engines support this, it really is not much of a problem to generate it on import on each of them. Having this supported in the format is nice, but not really important.
Multiple vertex attribute sets This is a feature that, for some reason, is not supported in glTF 2.0 that it would have cost them nothing to add. In fact most of the attributes that can be added end in _0, which makes it seem like it will be added in the future.
That said, I think the fact glTF uses very concise format information for each attribute (ie, vertices are always VEC3, UVs are always VEC2) make it an easier format to support in my opinion.
Index array properties Triangles in arrays can be specified in clockwise or counter clockwise order. Depending on this one can tell which is the front and which is the back face. This allows the renderer to not render triangles that are not facing the camera.
That said, the ability to specify this in a pipeline format, in my opinion is a bad decision. OpenGEX clearly commited a mistake here. There is zero benefit to this and it makes parsing the format more complex.
Likewise, the ability to add restart indices is nice, but nowadays GPUs have wide vertex caches, which make stripping not very useful. Again I think this was another bad decision from OpenGEX.
Lights OpenGEX and Collada do support lights. glTF 2.0 does not. While this may seem counterproductive, the reality is that (unlike cameras and meshes) most game engines have different way of rendering light attenuation equations and parameters. In Godot, for example, lights exported from Collada are rarely useful anyway.
OpenGEX supports multiple attenuation models but then again, there is no practical benefit to this if your game engine does not support it.
For the sake of completeness, it could be better if they were supported in glTF 2.x, but they are not very useful.
Animation support Here, Eric makes the point that glTF 2.0 has serious design flaws by poorly (or not) supporting:
Keyframe animation with cubic interpolation Animation of rotation angles Tension-continuity-bias (TCB) animation curves When exporting animations from DCCs to glTF 2.0.
I think however, that here the point is missed and that OpenGEX has put a lot of effort into features that are impractical.
The reasoning behind this is that animation is imported in game engines mostly from characters. Nowadays, characters are rigged and animated using IK, not FK. Reproducing the full IK chain and settings in a game engine is not only inefficient but against the most common use case of using state and blend trees, and game-related IK.
Because of this, character animation is mostly sampled (when exported) to either transforms or TRS units at fixed intervals, then compressed.
In fact, my main criticism to glTF 2.0 is not supporting transforms tracks.
Support for world specification OpenGEX and Collada (and FBX) support specifying how the world must be intepreted by defining:
Distance, angle, and time units Configurable world-space up direction Forward direction specification I think this is a terrible design idea and the reason so much suffering happens when implementing these formats. There is ZERO benefit in having this feature. Importers have to implement all these conversions manually, which results in a lot of effort and code. This feature only makes it bit easier to write an exporter, while writing importers becomes a nightmare. This is bad, not something to be proud of.
glTF 2.0 only has a single coordinate system, scale and time unit and this is one of the things that makes the format stand out as very clever.
I understand that many of these problems can be solved by using an importer library, but that just adds more complexity to the whole system. My glTF 2.0 importer is only 2000 lines of code and does not need any extra library for parsing it, which shows how good of a format it actually is.
Exporter support for 3DSMax, Maya and Blender OpenGEX and Collada have solid exporters for all DCCs. This is the area where currently glTF is lacking the most, but by pushing for its adoption, we’ll eventually see DCCs get support for exporting to glTF.
-
+
\ No newline at end of file
diff --git a/article/soft-body/index.html b/article/soft-body/index.html
index 843b9f00ef..38c3839b4d 100644
--- a/article/soft-body/index.html
+++ b/article/soft-body/index.html
@@ -5,7 +5,7 @@
Andrea Catania 7 August 2018 This article is from August 2018 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
Soft body support has finally arrived!
It is now possible to create cloth simulation and soft bodies by just adding a node. In the following tutorial, you will learn how to create a Soft Ball and a Cloak .
At the end you will find a video with a more advanced cloak implementation and the relevant project.
Soft Ball To create a Soft Ball is to add a SoftBody node and add a mesh to it, in this case I used a sphere maded in Blender (I used a custom mesh because the sphere created dynamically by Godot is not completely closed, but just for a test you can use it) .
As you can see above, many parameters are supported in order to obtain the simulation results wanted.
Note 1 Be careful with some parameters, as this can lead to strange simulation results. As an example, if the shape is not completely closed and you set pressure to more than 0.
Note 2 The Simulation Precision will improve the final result, often with significant improvement (and performance cost).
Now, just click Play and enjoy your soft ball :)
Cloak I’ve used the Platformer Demo to create this demo, that you can downoload by clicking here , or from the Godot Asset Library.
First, open the “Player” scene, add a SoftBody node and assign to it a PlaneMesh .
Now open the PlaneMesh properties and set the size(x: 0.5 y: 1) then set Subdivide Width and Subdivide Dept to 5, get back to SoftBody and adjust its position. You should end with something like this:
Subdivide will generate a more tessellated mesh and it will make simulation better.
The next step to do is attach the cloak directly to the character skeleton, to do it first add a BoneAttachment under the skeleton node and select the Neck bone.
Select the SoftBody node in the tree and click the upper vertices:
This action will create 7 pinned points, now go in the SoftBody properties under Attachments you find pinned points and for each of them put the NeckBoneAttachment in the SpatialAttachment, as belowe.
Almost done, just add the Player Kinematic Body to parent collision ignore of SoftBody to avoid clipping:
Hit Play and (if it all went right) you will obtain the following result:
I’ve prepared another cloak example in order to show the results that can be achieved with a bit more work! You can see it in action or download the project !
That’s it enjoy your first SoftBody Cloak :) and don’t forget to become a Patron if you like Godot and you want us to keep improving it! Godooooooooooooot!!
-
+
\ No newline at end of file
diff --git a/article/state-godot-gdc-2019-github-hq/index.html b/article/state-godot-gdc-2019-github-hq/index.html
index 4ade0278bf..86cc7f9091 100644
--- a/article/state-godot-gdc-2019-github-hq/index.html
+++ b/article/state-godot-gdc-2019-github-hq/index.html
@@ -5,7 +5,7 @@
Juan Linietsky 15 April 2019 This article is from April 2019 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
This year, during GDC, GitHub again hosted a Godot Meetup at their offices and the amount of attendants was considerably bigger than last year. Thanks hugely to them for all their support!
We took the chance to do our GDC “keynote” presentation there, which we called “The State of Godot 2019”. It was recorded and is now made available for everyone to see on GodotEngine’s official youtube channel.
VIDEO
-
+
\ No newline at end of file
diff --git a/article/statement-on-godloader-malware-loader/index.html b/article/statement-on-godloader-malware-loader/index.html
index f1548d83de..ac15227801 100644
--- a/article/statement-on-godloader-malware-loader/index.html
+++ b/article/statement-on-godloader-malware-loader/index.html
@@ -6,7 +6,7 @@
We encourage people to only execute software from trusted sources – whether it’s written using Godot or any other programming system.For some more technical details:
Godot does not register a file handler for .pck
files. This means that a malicious actor always has to ship the Godot runtime (.exe
file) together with a .pck
file. The user will always have to unpack the runtime together with the .pck
to the same location and then execute the runtime. There is no way for a malicious actor to create a “one click exploit”, barring other OS-level vulnerabilities. If such an OS-level vulnerability were used then Godot would not be a particularly attractive option due to the size of the runtime.
This is similar to writing malicious software in Python or Ruby, the malicious actor will have to ship a python.exe
or ruby.exe
together with their malicious program.
Good security practices We would like to take this opportunity to remind users about some good security practices when it comes to downloading and executing software.
Only download and execute software (including game mods) from trusted sources:Official project website. Confirm it by checking the URL, and verify with a search engine that this seems to be the most frequently referenced website for this software. Trusted distribution platform: Steam, Epic Games Store, Windows Store, Google Play, Apple Store, etc. People you know, after confirming that they are who they claim to be if the communication is text-based (see below). On Windows and macOS, verify that the executable is signed (and notarized, on macOS) by a trusted party. Be wary of executing cracked software, which is a prime attack vector for malicious actors. Be wary of executing software even from people you know, if you can’t confirm that their account hasn’t been compromised. A very common attack vector targeting specifically game developers is for Discord accounts to get hacked, and then malicious actors use them to send malicious downloads to their friends in private messages (“hey will you try my game?”). Make sure to confirm the identity of your contacts before executing such software. Reporting security issues We thank Check Point Research for following the security guidelines of responsible disclosure, which let us confirm that this attack vector, while unfortunate, is not specific to Godot and does not expose a vulnerability in the engine or for its users.
If you would like to report a security vulnerability or concern, please send an email to security@godotengine.org .
-
+
\ No newline at end of file
diff --git a/article/status-godot-gdc-2019/index.html b/article/status-godot-gdc-2019/index.html
index 30c491da6e..41f56400f1 100644
--- a/article/status-godot-gdc-2019/index.html
+++ b/article/status-godot-gdc-2019/index.html
@@ -5,7 +5,7 @@
Juan Linietsky 26 March 2019 This article is from March 2019 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
Rémi Verschelde, Hein Pieter van Braam and I went to GDC 2019 in representation of Godot. Until last year, I would go mostly alone. So, how did it go compared to last year?
Game Developers Conference Before anything, I’m sure that many reading this article don’t really know what GDC is.
GDC stands for “Game Developers Conference”, and it’s the biggest industry wide event for game developers. Almost 100k developers (companies and indies) meet in San Francisco every year in March to showcase their work, make business meetings, socialize, have fun, etc. This event is not mainly about showcasing games, like E3 or Gamescom, but entirely for developers themselves.
There are also talks about technology, production or any other aspect one can think about related to game development.
It’s a very big event and you get overwhelmed easily by so much going on at the same time.
Godot at GDC 2019 This is the second year I go to GDC exclusively as Godot representative (before I went as business consultant and, before then, I went representing my own company which no longer exists). This time, Rémi Verschelde (Akien) and Hein Pieter van Braam (tmm) also came, with Ernest Lee (iFire) and Ariel Manzur (punto) occasionally tagging along.
Unlike last year, we decided to focus on meetings more relevant to the project goals and reduced the meetings with companies using or interested in Godot to a minimum. Most of our meetings were with hardware manufacturers, service providers, potential sponsors and education institutions. We also got the chance to meet with key industry people like Nicolas Cannasse , Terry Cavanagh , Ryan Gordon , Lars Doucet , Alon Zakai , and many others.
So far, we can feel there is a growing excitement about Godot in the industry as more and more developers and companies learn about it and try it, with many games in development and about to be published on desktop, mobile and consoles. Godot is growing at a lightening rate, more than duplicating it’s user base every year.
Many companies we met also expressed high interest in dumping their current engine and going for Godot, due to the freedom that open source conveys and the high quality and usability of the engine (their words, not mine :P).
Recognition But what I’m sure most reading are willing to know is how much recognition did Godot get at the event.
Let me recapitulate my comments from previous years:
2016 The sad truth is that, even after two years of being open source… NO ONE KNOWS ABOUT GODOT! 2017 Compared to last year, some more people had heard of Godot, but it’s still very largely unknown. We seriously need to consider ways to improve on this. 2018 I would probably say most of the industry still has not heard about it, but there is a very significant chunk that did, though. 2019 (this GDC) From everyone we talked to, it seems at this point a majority of the industry has heard of Godot. Most of those we casually talked to definitely had heard of it and many expressed interest in developing games with it in the future.
From the indie side, most Indies did hear about it, but for company executives Godot remains largely unknown. This, however, seems to be changing because the amount of Godot users within big companies is growing significantly and pushing for it from the inside.
Thanks to this, we surprisingly got a lot of endorsement from developers in large companies, which also is helping us become a more visible and believable option.
As an interesting anecdote, we printed around 800 beautiful metallic pins and distributed them at booths of companies or developers who use or sponsor Godot. At the second day, they had all ran out. They told us people passing by loved them and asked if they had anything to do with it.
Future I’m excited about how next year will be for Godot. Growth seems fast and steady, so this makes up happy to know we can continue focusing on doing what we do best, improving Godot.
That said, please understand that Godot core development happens thanks to the generosity of our patrons. If you are not yet, please consider becoming one and supporting the project. It takes minutes to set up a recurring donation and any amount is vitally welcome, as it allows more of our most dedicated core contributors to focus solely on Godot. The more donations, the safer the project is and the faster it can mature and grow.
-
+
\ No newline at end of file
diff --git a/article/status-of-opengl-renderer/index.html b/article/status-of-opengl-renderer/index.html
index 0564f18915..d499517da7 100644
--- a/article/status-of-opengl-renderer/index.html
+++ b/article/status-of-opengl-renderer/index.html
@@ -5,7 +5,7 @@
Clay John 20 December 2022 This article is from December 2022 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
Last year we announced that we were planning on creating an OpenGL-based renderer to complement the current Vulkan-based renderers. At that time, we thought that we wouldn’t have it ready until 4.1. However, we are now confident that we will be shipping 4.0 with an OpenGL-based renderer; it just won’t be feature complete.
As a reminder, an OpenGL-based renderer is still crucial so we can support older platforms, and Web export. There is a Vulkan-like web API called WebGPU in development, but it currently isn’t widely supported yet, so WebGL remains the best option for targetting web games.
At the time of writing this article, all planned 2D features and most basic 3D functionalities are now supported by the OpenGL 3 renderer. As it is much newer, the OpenGL 3 renderer hasn’t been tested as widely as the Vulkan-based renderer. We expect it will have more bugs for the time being.
Our goal is for the OpenGL 3 renderer to have broad compatibility and good performance on a wide range of hardware. Accordingly, it won’t receive all the fancy new features that the Vulkan-based renderers bring.
In many ways, the current OpenGL 3 renderer resembles the GLES2 renderer from Godot 3.x. It makes similar compromises to ensure compatibility with as many devices as possible. For example, like the GLES2 renderer, the OpenGL 3 renderer renders in sRGB-space (this is a simplification, but is roughly true). This means you will see a difference in lighting when using the OpenGL 3 backend, compared to the others which use proper linear-space lighting.
In 3D, only basic rendering is supported right now. Thus far, we’ve prioritized the 2D rendering engine to ensure that it is ready for the release of 4.0. We anticipate most users of the OpenGL backend will be using it for 2D development. For 3D, we have quickly added the basic features (drawing objects, lights, sky etc.) so that users can get something drawing on the screen, but we haven’t added any advanced features or optimization. Accordingly, the current OpenGL 3 3D renderer is still a shell of what it will be.
The big missing features that are planned are:
3D shadows ReflectionProbes LightmapGI VoxelGI Post-processing effects (likely only SSAO and glow) Reading from SCREEN_TEXTURE
and DEPTH_TEXTURE
in spatial shaders Vertex shading mode Various optimizations Individually, each of these features won’t take long to implement. However, if we tried to get them all finished before 4.0, we would have to delay the release of 4.0. Accordingly, these likely won’t make it in time for 4.0, but will be included in future releases .
For now, the focus remains on bug fixing and ensuring that we can release 4.0 soon.
If you want to follow the progress of the OpenGL 3 renderer, you can view the GLES3 GitHub Project .
Using the OpenGL renderer
From 4.0.beta 9 onward, the OpenGL renderer can be enabled either by selecting the Compatibility renderer when creating a new project or by changing the rendering-method project setting to gl_compatibility
. Prior to 4.0.beta 9, the only way to enable it was through the project settings or the --rendering-driver opengl3
command line argument.
Additionally, the project manager now defaults to using the OpenGL renderer to ensure that users’ first experience with the engine isn’t a warning message saying “sorry, your computer doesn’t support Vulkan”.
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 .
-
+
\ No newline at end of file
diff --git a/article/student-applications-gsoc-2020-open-today/index.html b/article/student-applications-gsoc-2020-open-today/index.html
index f8ac69d6fb..0ca9e684f4 100644
--- a/article/student-applications-gsoc-2020-open-today/index.html
+++ b/article/student-applications-gsoc-2020-open-today/index.html
@@ -5,7 +5,7 @@
George Marques 16 March 2020 This article is from March 2020 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
Godot Engine is for the third time participating in the GSoC (Google Summer of Code) program. For the unaware, it is a worldwide internship program realized by Google every year, in which university students spend the summer contributing a project to an open source software.
If you are an eligible student, we’re glad to have you submitting your application to the Godot Engine organization. We know we can be daunting to deal with this so here are some tips to create a proposal.
Writing a great proposal for GSoC Before diving into your application document, take a look a these steps:
Take a look in our ideas list . This is where most of our wanted projects are listed. If you are feeling adventurous, take a look at our community proposals to find a new idea. Join our development IRC channel (#godotengine-devel on Freenode). This is where the Godot core developers hang out, so it’s a great place to ask questions about the engine internals.Note that IRC is a slow platform. Usually no answer means “no one who’s online knows the answer”. You need to hang around to see an answer and sometimes ask again at a different time to catch the right person to answer. Discuss your idea with the core developers. You need to make sure your project is wanted, otherwise you might waste an application. Once that’s done, start a new document to write your proposal. Many times using Google Docs is the easiest way to share it.
We value some topics covered in the proposal. It makes our selection process easier and increases your chance of being aceppted. Here’s what we want to see:
Introduce yourself. Show your past experiences. Linking to your GitHub account is important too.Note that we don’t mind that much your academic background. We’re more interested in practical past projects. In particular, previous contributions to open source software are great to mention. Tell us your experience with the Godot Engine. Are you familiar with it? If you have made some games, we definitely want to see it, so links are appreciated.If you have contributed to Godot itself, we definitely want to know. Do mention pull requests that you’ve sent. Present the problem you’re trying to solve. Even if you get something from the ideas list, we want to see your take on what’s missing in Godot that you want to solve. Show a plan of action to solve this problem. How would your approach be, in broad strokes, to develop the solution. If you have done research on the topic, now is the time to show it. Write a more detailed implementation proposal showing what you’ll change and add to Godot during the summer.Code is not important in your proposal. We expect that you’ll write the code during the program. Here we want a textual description. Write a timeline. We definitely value it because we can see how you plan to attack the issue in small chunks. It also helps the mentor plan the summer as well.The timeline in general is a weekly-based progress. Write how much you want to have achieved by the end of each week. We know that predicting time in the software world is super hard. Just do your best guess, it’s okay if this timeline is adjusted during the program. Tell how much time you will work per week. If you have some planned away time, be sure to mention it in the proposal.Remember that GSoC is a full-time internship. We can be a bit lenient and let you have some time away, but in general you are expected to work everyday during the program (except the usual non-working days, such as weekends). Remember that GSoC is not only about coding, but also being a part of the community. Be sure to interact with other Godot users and contributors. While the core devs are usually on IRC, you can also enter other community channels .
The community is also a great place to have your questions answered. If you have any doubt about something in the engine internals, there’s no need to ask directly to your mentor, you can ask it publicly and likely someone will be able to answer you more promptly.
Showing your progress constantly is also a great way to interact with the community. Users love to see work being done in the engine. This can also improve your motivation to keep pushing it.
Note that the people in an open source community can sometimes be or sound a bit too harsh in their critique. Fortunately those are a minority, most people will appreciate your work kindly. Don’t let critics demotivate you and talk to your mentor or to the Code of Conduct team if you have any problem.
We’re waiting for you We are looking forward to see the proposals from the students this year. We hope to get some great projects from GSoC 2020. See you around!
-
+
\ No newline at end of file
diff --git a/article/submissions-open-godot-2019-showreel/index.html b/article/submissions-open-godot-2019-showreel/index.html
index 81af68f88d..8949770097 100644
--- a/article/submissions-open-godot-2019-showreel/index.html
+++ b/article/submissions-open-godot-2019-showreel/index.html
@@ -5,7 +5,7 @@
Juan Linietsky 22 February 2019 Are you proud of your Godot-made game or tool (published or work in progress) and would you like us to showcase it in Godot’s 2019 showreel? Please send us a short video (10-15 secs) for us to include it!
Requirements:
If your game can scale resolutions, please submit a 1920x1080 video (or 1280x720 if not possible) If your game is pixel perfect, then send the video at native resolution Attach the video in a mail to contact at godotengine · org . Don’t forget to include the title of your game, and the name to credit for it.
Submissions close on March 8!
Thanks in advance!
-
+
\ No newline at end of file
diff --git a/article/submissions-open-godot-2020-showreel/index.html b/article/submissions-open-godot-2020-showreel/index.html
index 40352b6a6a..88a470e1d8 100644
--- a/article/submissions-open-godot-2020-showreel/index.html
+++ b/article/submissions-open-godot-2020-showreel/index.html
@@ -6,7 +6,7 @@
-
+
\ No newline at end of file
diff --git a/article/submissions-open-godot-2021-showreel/index.html b/article/submissions-open-godot-2021-showreel/index.html
index 41066266ca..f6f6a84aa7 100644
--- a/article/submissions-open-godot-2021-showreel/index.html
+++ b/article/submissions-open-godot-2021-showreel/index.html
@@ -7,7 +7,7 @@
-
+
\ No newline at end of file
diff --git a/article/submissions-open-godot-2022-showreel/index.html b/article/submissions-open-godot-2022-showreel/index.html
index 932e8c8272..972c639b70 100644
--- a/article/submissions-open-godot-2022-showreel/index.html
+++ b/article/submissions-open-godot-2022-showreel/index.html
@@ -8,7 +8,7 @@
-
+
\ No newline at end of file
diff --git a/article/submissions-open-godot-2023-showreel/index.html b/article/submissions-open-godot-2023-showreel/index.html
index 7784c8e3c1..663b3865df 100644
--- a/article/submissions-open-godot-2023-showreel/index.html
+++ b/article/submissions-open-godot-2023-showreel/index.html
@@ -5,7 +5,7 @@
Emi 20 November 2023 Showcase your Godot Engine 2023 creations! We invite you to submit videos featuring your published or in-progress games or tools so we can make the Godot 2023 Showreel.
The showreels are an informative and celebratory showcase, to highlight the wide array of projects developed using the Godot Engine. If you want to participate and share your Godot-made game, app or tool submit your entry starting today.
How to submit You can submit your entry in our Godot Showreel website . You can use your Godot account or any other account (GitHub, Discord, etc.) to log in. Before submitting, please read the submission guidelines .
Need inspiration? Check out our showreel playlist for some creative sparks and see what makes a great submission!
Good luck! We can’t wait to see your creations!
-
+
\ No newline at end of file
diff --git a/article/submissions-open-godot-2024-showreel/index.html b/article/submissions-open-godot-2024-showreel/index.html
index 78280ab3e6..7a9d1d0d3a 100644
--- a/article/submissions-open-godot-2024-showreel/index.html
+++ b/article/submissions-open-godot-2024-showreel/index.html
@@ -6,7 +6,7 @@
Emi 5 September 2024 Showcase your Godot Engine 2024 creations! We invite you to submit videos featuring your published or in-progress games or tools so we can make the Godot 2024 Showreel.
The showreels are an informative and celebratory showcase, to highlight the wide array of projects developed using the Godot Engine. If you want to participate and share your Godot-made game, app or tool submit your entry starting today.
How to submit You can submit your entry in our Godot Showreel website . You can use your Godot account or any other account (GitHub, Discord, etc.) to log in. Before submitting, please read the submission guidelines .
Changes from previous years This year, the Godot Foundation will be selecting some games to be featured as well as the ones submitted by the community. This will be done due to the confusion caused by big titles not being present in past showreels because the developers forgot to submit or were not aware of our efforts. It shouldn’t change anything for the submission process, but we wanted to make sure we are transparent about the changes.
Need inspiration? Check out our showreel playlist for some creative sparks and see what makes a great submission!
Good luck! We can’t wait to see your creations!
-
+
\ No newline at end of file
diff --git a/article/support-godot-patreon-lets-make-best-game-engine-ever-together/index.html b/article/support-godot-patreon-lets-make-best-game-engine-ever-together/index.html
index f5c2d83f7d..054c9a649a 100644
--- a/article/support-godot-patreon-lets-make-best-game-engine-ever-together/index.html
+++ b/article/support-godot-patreon-lets-make-best-game-engine-ever-together/index.html
@@ -5,7 +5,7 @@
Juan Linietsky 9 August 2017 This article is from August 2017 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
Godot is now on Patreon! We are launching a Patreon site to help fund Godot development. Help us develop Godot better and faster by becoming our Patron!
-
+
\ No newline at end of file
diff --git a/article/support-us-kickstarter/index.html b/article/support-us-kickstarter/index.html
index bd6ad00606..f294fa9c2e 100644
--- a/article/support-us-kickstarter/index.html
+++ b/article/support-us-kickstarter/index.html
@@ -5,7 +5,7 @@
Ariel Manzur 20 October 2014 This article is from October 2014 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
As you know, Okam Studio, the company that develops Godot Engine, also makes games. One of our oldest projects is The Interactive Adventures of Dog Mendonça & Pizza Boy , a 2D point & click graphic adventure that we’ve been developing in-house as a side-project, and we’ve launched a Kickstarter to raise the funds to finish it.
You can find it here: http://kck.st/1CVtDF3
In addition to getting a cool game, you’d be helping us continue developing the engine, and if we reach the first stretch goal, we plan on releasing the templates plus documentation on how to make your own point & click graphic adventure (sidenote: Tim Schafer visited our studio last year, when we showed him the script tool we used to write the dialogues/cutscenes he said “It looks just like SCUMM!”, we were speechless :P).
We appreciate any support, thanks!
-
+
\ No newline at end of file
diff --git a/article/tests-needed-godot-2-1-4-beta/index.html b/article/tests-needed-godot-2-1-4-beta/index.html
index c6ad538331..7e5814877d 100644
--- a/article/tests-needed-godot-2-1-4-beta/index.html
+++ b/article/tests-needed-godot-2-1-4-beta/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 25 June 2017 Edit 2017-08-25: Here’s finally the release candidate build. WinRT templates are still missing, but they’re not blocking for the release given that they are experimental.
Edit 2017-08-17: And another beta build, probably the last one before the release candidate. Note that WinRT templates are missing in this build, will be fixed for the RC.
Edit 2017-07-31: Time for another beta build, with one month’s worth of further improvements and especially fixes for various regressions found in the 2017-06-25 build:
Original 2017-06-25 post:
Already more than 2 months since the last maintenance release in the 2.1 branch, and many bug fixes as well as new developments have made it to that branch.
Some of those new developments being slightly more experimental than we use to merge in the stable branch, the upcoming 2.1.4 release will need some heavy testing from the community to make sure it does not bring regressions.
So now’s your time to shine:
What are regressions ? They are bugs that did not occur in the previous stable release (2.1.3) but which can now be experienced in the beta build. You can also report bugs in the new features of 2.1.4, which, even if not strictly speaking regressions, should be worth looking into before the release.
Note: In this build the 32-bit Linux binaries are missing (both for the editor and the export templates) due to a buildsystem issue; this will be fixed before the stable release.
Happy testing, and thanks for your help!
-
+
\ No newline at end of file
diff --git a/article/tiles-editor-progress-3/index.html b/article/tiles-editor-progress-3/index.html
index 01af785ca8..326acda82b 100644
--- a/article/tiles-editor-progress-3/index.html
+++ b/article/tiles-editor-progress-3/index.html
@@ -8,7 +8,7 @@
We will try to merge the pull request after that, so that other contributors and early adopters can have a look into it and test it in real world conditions.
-
+
\ No newline at end of file
diff --git a/article/tiles-editor-progress-4/index.html b/article/tiles-editor-progress-4/index.html
index e94543304a..7c3d111f74 100644
--- a/article/tiles-editor-progress-4/index.html
+++ b/article/tiles-editor-progress-4/index.html
@@ -5,7 +5,7 @@
Gilles Roudiere 17 June 2021 This article is from June 2021 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
This is the part 4 of the progress reports about the TileMap and TileSet editors rework. You can find the previous report here .
We are close to the end of this huge work. Hopefully in the coming few weeks, the Tiles editors should be ready to be included in the first 4.0 alpha. Some improvements still have to be done, but we are getting close to feature completeness. Until then, here is the summary of the work done during the last two months.
See other articles in this Godot 4.0 tiles editor series:
Tiles editor progress report #1 Tiles editor progress report #2 Tiles editor progress report #3 (you are here) Tiles editor progress report #4 Tiles editor progress report #5 Terrain painting Terrain painting has been implemented. When you are in the TileMap painting mode, you can access the Terrain tab which allows you to paint terrains. Similar to what autotile featured, painting a tile in the terrain mode will also update the surrounding tiles to make the terrains match:
Note that the terrain painting tool makes use of the probability
property. It makes it so you can choose if a tile has more chances to be used instead of another when both use the same terrain pattern.
Scene tiles support One of the very requested features was the possibility to paint scenes on TileMaps. This is now possible thanks to a new TileSetScenesCollectionSource
allowing you to configure scene-based tiles. Those scenes are instanciated as internal child nodes of the TileMap node’s. They are not visible in the editor’s scene tree but can be accessed at runtime with $tile_map_node.get_child(...)
. In case your scene is not visible, you can configure the editor to display a placeholder.
Improved Tiles properties setup Until recently, editing tile properties needed to be done by selecting each tile and setting their properties one by one. While editing one tile’s properties is useful, being able to set properties on several tiles at once makes setting up a TileSet a lot faster. To do so, I first implemented the possibility to select multiple tiles and edit their properties all at once (please don’t mind the bug switching to the TileMap mode, I’ll fix it):
While this helps, selecting tiles might still not be optimal enough when you have thousands of tiles to set up. That’s why I also implemented a “painting mode”. In this mode, you simply select a property to edit, a value for this property, then you can paint this value directly onto your atlas:
As you can see, the property values can be previewed directly onto the atlas. It also works when editing a property in the tile selection mode.
Out of the property painting tools, the terrain one is a little bit special as it allows you to paint terrain bits individually, instead of all terrains at once.
Aside from that, a few other improvements were implemented. For example the TileMap editor’s grid color is now configurable and the UI to create tiles on atlases was simplified.
What’s next Once I am done with the tile property painting tools, I plan to work on two things. First, while I wanted to implement full support for single tiles, this is likely too much work for 4.0. So instead, we decided that each 3.x single tile will be imported as a single atlas, then you will be able to merge several atlases together into a bigger atlas.
Then, even if I was not sure about its usefulness, I decided to implement TileMap layers. While I think they do not bring a lot of value at runtime or make the API simpler, the fact is that implementing TileMap layers allows simplifying a lot the workflow when editing several layers. It will, for example, allow copy-pasting from one layer to another, or dim unselected layers in the editor. So we decided it was worth the work.
See you in the next progress report!
-
+
\ No newline at end of file
diff --git a/article/tiles-editor-progress-report-2/index.html b/article/tiles-editor-progress-report-2/index.html
index 5ecbe4cd30..c44e75db5b 100644
--- a/article/tiles-editor-progress-report-2/index.html
+++ b/article/tiles-editor-progress-report-2/index.html
@@ -5,7 +5,7 @@
Gilles Roudiere 5 February 2021 This article is from February 2021 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
Two months have passed since my last progress report on the tiles editor rework. A lot of things have been implemented since then. Here are the news.
See other articles in this Godot 4.0 tiles editor series:
Tiles editor progress report #1 (you are here) Tiles editor progress report #2 Tiles editor progress report #3 Tiles editor progress report #4 Tiles editor progress report #5 I am really close to be done regarding the implementation of the TileMap editor. I have reimplemented most of the tools needed to modify TileMaps, along with new features.
I will start with the selection tool. This tool allows selecting tiles, moving them, deleting them, or copy-pasting them around:
The paint, line and rect tools are making a comeback in 4.0, with a clean support for half-offset shapes:
I also implemented a bucket fill tool, which can either replace contiguous tiles or all tiles with the same IDs:
All those paint tools support erasing tiles instead of painting them, but they also allow painting with patterns. The pattern used can be set either by selecting multiple tiles in the TileSet, by selecting tiles in the TileMap using the selection tool, or by using the TileMap picker. Of course the picker allows picking a single tile too, so that you do not have to search for the tiles to re-use in the TileSet panel:
I also added an option making so that, instead of painting the pattern, the painting tools randomly pick a tile out of the ones in the pattern. With the scattering settings, which adds a probability for no tiles to be painted, it allows painting nice organic patterns:
Tiles with invalid IDs are drawn using a dedicated texture, modulated with a random color generated from the ID. This makes invalid tiles with the same ID being painted with the same color. Those tiles can then be easily replaced with the bucket tool by valid tiles.
Atlases setup The TileSet editor, only supporting atlases right now, has received a few updates.
First of all, atlases now allow creating “alternative tiles”. Those alternative tiles share the same texture region as their base tile but can have different properties. This will mainly allow for rotated/flipped versions of the base tile, but any other property could be different too:
As you can see, the atlas editor now features a nice zoom widget, it displays inactive tiles as dimmed, and has a checkboard as a background.
The TileSet editor features several simple ways to create, delete or move tiles around, with a selection mode and two drawing modes. It also features a right-click context menu:
Finally, the TileSet editor features an automatic tiles creation system, which detect which tiles are occupied in a texture to create corresponding tiles automatically. Another tool also allows to automatically cleanup tiles outside of the atlas texture. Those are quite slow for now, but I hope I will be able to optimize that. (edit: this is now fixed)
Early builds That’s it for now. However, if you want to try all of this by yourself, early builds are available, just right here. However, please read the following warning first.
IMPORTANT WARNING: Opening an existing project with these builds will make this project incompatible with any other Godot version. Try these build with a new project or create a backup of existing ones.
Early builds:
The master
branch is really unstable right now, so some issues might not come from this tiles editors rework.
Also, for now, those builds can only import atlases from previous version, and only the graphical part is supported. You may give feedback on the already implemented features on this PR . As a reminder, you can see what is planned for the future in this proposal .
See you in the next progress report!
-
+
\ No newline at end of file
diff --git a/article/tiles-editor-progress-report-5/index.html b/article/tiles-editor-progress-report-5/index.html
index c076777dbe..c6f4512582 100644
--- a/article/tiles-editor-progress-report-5/index.html
+++ b/article/tiles-editor-progress-report-5/index.html
@@ -5,7 +5,7 @@
Gilles Roudiere 23 September 2021 This article is from September 2021 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
Here comes a new progress report about the Tiles editor rework. This is most likely the last progress report before the 4.0 alpha. The previous blog post can be found here .
See other articles in this Godot 4.0 tiles editor series:
Tiles editor progress report #1 Tiles editor progress report #2 Tiles editor progress report #3 Tiles editor progress report #4 (you are here) Tiles editor progress report #5 Tile atlas editing Some improvements were made to the tile atlas editor.
I first reorganized the tiles creation menus, which are now split into 3 modes. The first mode allows editing the atlas properties and creating/removing base tiles, the second one allows selecting and editing tiles properties, and the last one is to paint properties over the tiles.
In this third mode, I implemented a dedicated editor for tile shapes (collision shapes, occluders, naviagation shapes). Set by default to the tile’s base shapes, it then can be painted over tiles. This allows setting up tile collisions in a very fast way:
Since my previous implementation of panning was not working great in the atlas editor, I reworked it a little bit. The view is not constrained anymore and panning can be done with the right click.
Backward compatibility improvements To improve backward compatibility, tiles from 3.x in the SINGLE_TILE
mode will be imported as an atlas with a single tile each. As it might create a lot of atlases, an atlas merging tool is now available in the editor. Merging atlases will automatically gather tiles from all atlases and create a new one with its associated new texture. Here is an example workflow where I port the 3.x isometric tiles demo to 4.0:
As the atlas merging tool is only modifying the TileSet resource, using it might have made all TileMaps using the modified TileSet point to missing atlases. Hopefully, I implemented a way to solve this problem.
TileSet now features a system of tile proxies . Thoses proxies are basically a mapping table, that allows notifying the TileMap using a given TileSet that a given set of tile identifiers should be replaced by another one. Tile proxies are automatically set up when merging different atlases, but they can also be set manually thanks to a dedicated interface. This may become useful when you changed an atlas ID or want to replace all tiles from an atlas by the ones from another atlas. Note that, when editing a TileMap, you can replace all cells by their corresponding mapped value.
TileMap layers As a widely requested feature, TileMap layers were implemented. TileMap layers allow stacking tiles on top of each other in the same layout. Layers have several features:
Layers can be enabled/disabled. A layer might be set up to Y-sort its tiles. In such case, you may also provide a Y-sort offset that will be added to each tile’s Y-sort offset. This allows using layers as if they were on different height for top-down games. Layers can have different Z-index values. Implementing layers allowed to highlight the edited layer and dimming the unselected layers of the TileMap. This makes it more obvious which layer is currently edited:
Property arrays in the inspector With both the TileMap layers and TileSet layers implemented, the limitations of the inspector regarding the editing of properties arrays became quite obvious. It was not possible to easily add, remove or reorder layers. This is now fixed thanks to a new improvement to the inspector:
This will allow exposing or moving out from dedicated editors a lot of properties. For example, items from an ItemList node could be moved back to the inspector.
Other Aside from a lot of bug fixes and small UX improvements, all tiles-related classes are now documented.
What’s next This work is not merged yet, but 4.0 should feature animated tiles, alongside a set of improvements to collisions. In the future, there will also be a possibility to make some tiles work as conveyor belts (moving the characters colliding with them) or to use TileMaps as moving platforms.
I might also have the time to implement a pattern palette, that would allow you to store chunks of tiles as reusable patterns. But that being said, most of my time will soon be used to fix all bugs the alpha release will allow us to spot.
-
+
\ No newline at end of file
diff --git a/article/tiles-editor-rework/index.html b/article/tiles-editor-rework/index.html
index 05cb9578ec..4876e3e2e9 100644
--- a/article/tiles-editor-rework/index.html
+++ b/article/tiles-editor-rework/index.html
@@ -7,7 +7,7 @@
Future My next goals are to make the tile atlas management and most of the TileMap edition feature complete. I want to make the workflow for setting up tiles (only considering their rendering) as simple and intuitive as possible. This is the base work needed before implementing again all other features, like collisions, occlusion, etc…
-
+
\ No newline at end of file
diff --git a/article/turn-android-app-quest-vr-app-3-steps/index.html b/article/turn-android-app-quest-vr-app-3-steps/index.html
index da8755050e..a6e24dcc95 100644
--- a/article/turn-android-app-quest-vr-app-3-steps/index.html
+++ b/article/turn-android-app-quest-vr-app-3-steps/index.html
@@ -36,7 +36,7 @@
Build and run! That’s all! Your app should now build and run on the Quest as a Godot VR app!
For more information, please take a look at the Godot XRApp framework guide .
Additional features Automatic support for hand tracking The framework has built-in support for hand tracking, enabling interaction with the VR app without the need for controllers.
Passthrough environment The framework provides the ability to toggle passthrough on the Quest, enabling the user access to your app while interacting with their real-time surroundings.
See the documentation for instructions on how to enable it.
Oculus Keyboard support The framework leverages the Oculus Keyboard for input.
And More! We have more features in the pipeline for upcoming releases! Please take a look at the Godot XRApp framework roadmap to learn more.
Contributing and Reporting Issues The Godot XRApp framework is an open source, MIT-licensed project. As such, contributions are encouraged and welcome!
Please feel free to report any issues, or provide feedback on the project’s github issues page .
-
+
\ No newline at end of file
diff --git a/article/upcoming-godot-jam-15-18-june-theme-proposals/index.html b/article/upcoming-godot-jam-15-18-june-theme-proposals/index.html
index 7ba6e0dd68..9e5d3ee7cf 100644
--- a/article/upcoming-godot-jam-15-18-june-theme-proposals/index.html
+++ b/article/upcoming-godot-jam-15-18-june-theme-proposals/index.html
@@ -6,7 +6,7 @@
Then 3.0 was released, a lot of backlog had to be worked on post-release, and the jam was delayed again…But better late than never, now that Godot 3.0 is well established (with the maintenance version 3.0.3 likely coming in time for the jam) it’s time for a new Godot-focused game jam to see what the community is up to!
Shorter jams, more often If you’re not familiar with our previous Godot jams , they used to run for a whole month (or even more for the last one).
This was nice to give everyone a chance to participate, be it with an entry worked on during the whole month or only during one free week-end. But at the same time many jammers prefer the shorter variant, focusing on a game for one week-end and moving on to something else, so we’ll give this formula a try this time. We’ll gather your feedback and see if you liked it this way or if we should adapt the format again for the next one.
As the community has grown a lot since 2016, we’d also like to propose jams more regularly - how often is yet to be determined based on your feedback, but every 3 months sounds like a good pace a priori.
Rules The rules will be quite simple and similar to that of our previous jams, especially the requirement for all submissions to be free and open source. More details on this in the coming days as we flesh out the itch.io jam page and write the theme voting announcement.
We might even have some small prizes for the winners, stay tuned! :)
Livestreams with Juan Linietsky and more It’s not related to the upcoming jam, but while you wait for the theme to be revealed, don’t miss the livestreams organized by Ben Tristem of GameDev.TV with our very own Juan Linietsky (today at 20:00 UTC on YouTube ) and many others (see the full line up, dates and stream links ).
-
+
\ No newline at end of file
diff --git a/article/update-godot-ar-and-vr/index.html b/article/update-godot-ar-and-vr/index.html
index a443706325..acff4213ba 100644
--- a/article/update-godot-ar-and-vr/index.html
+++ b/article/update-godot-ar-and-vr/index.html
@@ -8,7 +8,7 @@
There is a PR in the official godot_openvr repository that contains a fix, but for the official release of the plugin, HDR still needs to be turned off or the GLES2 renderer needs to be used.You can download the official plugin from the asset library here: Godot OpenVR plugin
OpenXR We’ve already talked about OpenXR , this is a specification that has been worked on for a couple of years now, but this year’s GDC finally reached a milestone where example source code has become available. The specification was also released in version 0.9.
The interface that was used during the Monado demonstration is based on the OpenHMD drivers. You can follow its development here: https://gitlab.freedesktop.org/monado/godot_openxr
GLES2 The addition of the OpenGL ES 2.0 render pipeline is one that is very interesting to VR. Stereoscopic rendering at high resolutions and frame rates puts a large tax on your GPU. For the new HP Reverb headset the output may be 2160x2160 pixels per eye, this means that we’re rendering at a resolution of 4320x4320 twice per frame at 90fps. That requires some serious grunt if you’ve turned up all the new features of the GLES3 renderer. The move to Vulkan will mitigate some of that but still, being able to fall back on a render pipeline that is simpler and therefore faster means that you can use a high resolution headset even if you’re running on the mid-end hardware that many gamers will actually own.
-
+
\ No newline at end of file
diff --git a/article/update-on-google-forge-2024/index.html b/article/update-on-google-forge-2024/index.html
index 187fe7fbb7..bc2cfb3e7d 100644
--- a/article/update-on-google-forge-2024/index.html
+++ b/article/update-on-google-forge-2024/index.html
@@ -5,7 +5,7 @@
Clay John 19 April 2024 Our collaboration with Google and The Forge has achieved its original goal of improving performance in the Vulkan backend and enhancing our Vulkan API usage. The work started in mid-November and I have to say, the last few months went by very fast. Overall, I am happy to report that we finished everything that had been planned for this collaboration.
Most of the work is targeted at improving the Vulkan backend and will benefit all platforms that use Vulkan. The list of improvements is too long to list here, but some highlights are:
Usage of Unified Memory Architecture (UMA) buffers when available Add Android Thermal API support Replace large push constants with dynamic uniform buffers Optimize descriptor sets and descriptor set batching Optimize swapchain operations Integrate Swappy frame pacing from the Google AGDK During the project, we tested two different 3D scenes using a Google Pixel 7 and a Samsung S23. Depending on the project and device, we see a consistent 10% - 20% reduction in GPU frame times. Since mobile devices are currently heavily GPU bottlenecked in 3D scenes this translates directly into a 10%-20% frame time improvement!
This collaboration covered more than just performance, it also covered integrating tools like Android Thermal API which can be used to monitor and respond to changes in the thermal state of the device. Importantly, this allows you to automatically scale down quality to maintain a high framerate and cool temperature. Stay tuned for more documentation.
The work was developed in a private fork of Godot that was kept up to date with our main branch as the work progressed. The final work product can be accessed in this PR . We won’t merge this PR as-is, instead we will break it into smaller pieces that can more easily be tested and used to identify potential regressions. Expect this process to take a few months and be split between the 4.3 and 4.4 releases.
If you have a mobile game in development, we would like to hear your feedback and see what kind of impact this makes on your game.
We very much appreciate the support of Google and The Forge for this effort and we look forward to seeing our developers take advantage of Vulkan with Godot!
-
+
\ No newline at end of file
diff --git a/article/update-on-recent-vr-developments/index.html b/article/update-on-recent-vr-developments/index.html
index a6f6fef130..ee7d6c5d9e 100644
--- a/article/update-on-recent-vr-developments/index.html
+++ b/article/update-on-recent-vr-developments/index.html
@@ -5,7 +5,7 @@
Bastiaan Olij 21 February 2018 This article is from February 2018 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
It has been a very busy month on the VR front in Godot.
OpenVR The focus for development has remained on OpenVR support for the most part and it is slowly finding use within the community.
With the release of Godot 3.0 the OpenVR module can now be downloaded directly from the asset library .
It comes with support for OpenVR on 64-bit Windows and on Linux. We’ll add more platforms as testing is rounded off. On Linux it is important that Godot is started from the Steam runtime or it will not find Steam VR.
There are also several premade scenes in the module to help you get set up faster.
For more information on the asset or to let us know of any problems you encounter please visit our issue repository on GitHub .
Oculus There is now also a native driver for the Oculus SDK. As the Oculus SDK is only available on Windows this driver is only available for that platform.
The Oculus driver is now also available in the asset library .
It comes with the same premade scenes as the OpenVR module. There are only small differences in the controller scenes but most of the others are interchangeable. If you use your own controller meshes (e.g. use hands) it is fully possible to create a Godot game where you can interchange the two drivers depending on which platform you want to deploy to.
For more information on the asset or to let us know of any problems you encounter please visit our issue repository on GitHub .
Future Work will continue on improving these two drivers, especially the Oculus one which is still very new. A temporary fix is being tested to solve the HDR issue on the OpenVR driver so work continues on that as well.
Work on Gear VR is progressing slowly, we need more people who are more familiar with the Android system but we do hope to have something here in the not too distant future. Come find us on IRC on #godotengine-vr (#vr:godotengine.org on Matrix) if you’re able and willing to offer help.
Finally the last bit of news is that we’re going to support Leap Motion, initially on desktop but likely also on mobile some time in the future. More on this once we actually get started.
-
+
\ No newline at end of file
diff --git a/article/updates-on-the-release-cycle-and-godot-2-0-1/index.html b/article/updates-on-the-release-cycle-and-godot-2-0-1/index.html
index e5f4a4da4b..dbd0a15f4e 100644
--- a/article/updates-on-the-release-cycle-and-godot-2-0-1/index.html
+++ b/article/updates-on-the-release-cycle-and-godot-2-0-1/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 7 March 2016 The stable release of Godot 2.0 was nine months in the making and brought a great deal of new features and bug fixes alike. Some of our users had been testing the alpha and beta versions, but others had decided to stay on the stable 1.1 version and thus had to wait quite a long time for bug fixes.
We therefore decided two important things for our release cycle:
Shorter release cycle Stable releases will happen more often. Release early, release often is a proven philosophy that we all affectionate and we think that it will be beneficial to Godot.
The long wait for Godot 2.0 was actually mostly due to breaking the compatibility with 1.1 (especially for the new TSCN/TRES format). We wanted to make it a big release so that the inconvenience of losing compatibility with 1.1 would be compensated by great new features.
On the other hand, we do not give an ETA for the future releases. In a community-driven project such as ours, it very much depends on the availability of the contributors, and we will then release when it’s ready . There has however been some good progress on the main features that we would like to release in 2.1 (not all those of the “2.1” roadmap though, we will split it in several sub-releases in the 2.x branch), mainly the new plugins API and addons sharing platform.
Maintenance releases for the current stable version In the meantime, we plan to release bugfix versions of our latest stable release, to bring our users interesting bug fixes without having to “risk” using the master branch in production. It will also be particularly relevant for the version we distribute on Steam , where users would likely want to benefit from upstream bug fixes without being forced into beta-testing.
Godot 2.0.1 And to get started with these maintenance releases, we announce the availability of Godot 2.0.1 ! It contains some non-critical bug fixes and a few usability improvements, that should improve the overall experience of Godot 2.0 users.
The main fixes in this release are:
Enhancements:
Usability improvements in the help section (full object inheritance, searchable class list) Better and configurable placement of the script editor call hint Support configuration presets for self-contained builds (especially for Steam) Added more gamepads bindings Improved classes documentation Reduced size of demos package Bug fixes:
Fixed addition/delete of global variables in the project settings Fixed blending functions in AnimationTreePlayer Fixed transform localization event in mouse motion Fixed closing a scene tab when it was not the current tab See the full changelog for more details, and head towards the Download page to get it!
For this release, we also used a new buildsystem to create and deploy the binaries, so please contact us if you experience any regression relatively to 2.0 stable.
-
+
\ No newline at end of file
diff --git a/article/versioning-change-godot-3x/index.html b/article/versioning-change-godot-3x/index.html
index 0a26c2e2ef..0118323dc1 100644
--- a/article/versioning-change-godot-3x/index.html
+++ b/article/versioning-change-godot-3x/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 17 March 2021 This article is from March 2021 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
As you may know, the current development focus for Godot contributors (in our master
Git branch ) is on Godot 4.0, our upcoming, major release which reworks a lot of the engine’s internals, modernizes the rendering backend, and more!
There’s still some way to go before Godot 4.0 is ready to release, and in the meantime we’re doing our best to support the Godot 3.x users who are developing and releasing games with the stable version.
When we released Godot 3.2 in January 2020 and shifted our focus to Godot 4.0, we expected that the 3.2 stable branch would be the last milestone before 4.0. The 3.2 branch would receive maintenance updates (bugfixes, usability enhancements) but major features would have to wait for the next major milestone.
Yet there’s a number of new features which could be safely backported, and we accepted to merge a significant number of those in the 3.2
branch. We’ve actually released a quite feature-packed Godot 3.2.2 update , blurring the line somewhat regarding what to expect of such 3.2.x releases. And now after 6 months of development, the upcoming Godot 3.2.4 is looking to be a huge feature release - still preserving backwards compatibility with 3.2.3, but the amount of new functionality is huge and not well-served by a “patch” version bump.
As such we decided to change our release policy for Godot 3.x, and to go back closer to a semantic versioning as we used to follow prior to 3.2.
Godot 3.2.4 is therefore renamed Godot 3.3.
Once it’s released, we’ll have two separate actively maintained branches for Godot 3.x users:
The 3.3
branch will release actual maintenance updates to fix bugs, enhance usability, update documentation and translations, etc., but no major new feature. This should enable us to release 3.3.x updates in a timely manner as soon as we have a significant amount of fixes that we want to push to production. The 3.x
branch will be developed further with new features towards Godot 3.4, and so on and so forth, for as long as we think that new minor releases are pertinent for Godot 3 users (i.e. at least until Godot 4.0 is released and most users have ported their projects). We’ll aim for shorter release cycles for new 3.x minor releases compared to what has been the experience so far with 3.0, 3.1 and 3.2. So do not despair if your favorite new feature or important bugfix didn’t make it into 3.3, it shouldn’t be long before Godot 3.4 is released with another batch of features. All current users of Godot 3.2.x are strongly encouraged to upgrade to Godot 3.3 once it’s released, as it’s designed to be a fully compatible upgrade (since it was initially intended to be 3.2.4).
Also note that this doesn’t mean that we’re reopening the feature development for Godot 3.3 - we were already at our 5th Release Candidate for 3.2.4, and the next build will be 3.3 RC 6. So aside from a few needed documentation updates, there shouldn’t be significant delay to this upcoming release, nor changes compared to the latest RC.
See our updated release policy for details.
-
+
\ No newline at end of file
diff --git a/article/visual-shader-editor-back/index.html b/article/visual-shader-editor-back/index.html
index 7eb84c5176..bcccba157a 100644
--- a/article/visual-shader-editor-back/index.html
+++ b/article/visual-shader-editor-back/index.html
@@ -5,7 +5,7 @@
Juan Linietsky 14 July 2018 This article is from July 2018 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
After some weeks of work, the new visual shader editor is ready for testing!
What is a visual shader editor? This editor allows creating shaders using nodes and connections, instead of typing code. It provides a simple and fool-proof way for those not confident in writing shader code to create complex shaders.
Why was it gone in the first place? This editor compiles to shader code. As the shader code format changed significantly between Godot 2.1 and 3.0, this editor no longer worked. The way it was programmed was also too hardcoded and it missed several key functions.
What’s different in the new one? The new editor is not too different from the original one, but it’s considerably more organized. The most significant changes are:
New full PBR output nodes No more Vec3 <-> Scalar adapter nodes, conversion is automatic Easier input nodes for more organized graph. Extending it via scripting (creating custom nodes) is possible. Port previews (see blow)
How do I create a visual shader material? Here is a quick tutorial:
1. Create a ShaderMaterial
2. Create a Shader
3. Edit the Shader
4. Add new nodes to the canvas! Try to create something from the Add Node Menu:
.. and connect it to any of the outputs:
Future Eventually as we get feedback, the shader editor will keep improving.
Remember that all this is possible thanks to the infinite generosity of our patrons. If you haven’t already, please don’t hesitate to become one !
-
+
\ No newline at end of file
diff --git a/article/vote-godot-jams-theme/index.html b/article/vote-godot-jams-theme/index.html
index a110f1dd9e..a307e0a9b7 100644
--- a/article/vote-godot-jams-theme/index.html
+++ b/article/vote-godot-jams-theme/index.html
@@ -5,7 +5,7 @@
Rémi Verschelde 13 June 2018 This article is from June 2018 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
As announced a few days ago , we will have a Godot Community Game Jam the coming week-end, from Friday 15 June at 18:00 UTC to Monday 18 June at 23:59 UTC. Check the itch.io page for the latest details and to register!
We had dozens of great proposals for the jam’s theme, and made a selection from those for you to vote on. The aim is now to select one theme, and everyone can vote for only one entry. Head over to the Framaforms poll and pick your favourite theme :)
We’re quite hyped to see what the community will cook up during this jam! And stay tuned, we should even have some neat prizes this time :)
-
+
\ No newline at end of file
diff --git a/article/vulkan-progress-report-1/index.html b/article/vulkan-progress-report-1/index.html
index 6272a7d8fb..04fc7d6ca8 100644
--- a/article/vulkan-progress-report-1/index.html
+++ b/article/vulkan-progress-report-1/index.html
@@ -5,7 +5,7 @@
Juan Linietsky 1 July 2019 This article is from July 2019 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
While the rest of the Godot contributors are focused on finalizing 3.2 for release, I’m almost exclusively dedicating myself to porting the engine to Vulkan, as part of the 4.0 release effort. This is so far an exciting adventure and I’m learning a lot about it.
I plan on creating more in-depth technical devblogs on how this work is being done, but will do so at a later time when more of the work is done (and I feel more confident that the approach used in most areas is the right one).
See other articles in this Godot 4.0 Vulkan series:
(you are here) Vulkan progress report #1 Vulkan progress report #2 Vulkan progress report #3 Vulkan progress report #4 Vulkan progress report #5 Vulkan progress report #6 Vulkan progress report #7 Initialization Getting Vulkan initialized took a considerable effort. What used to be a few lines of OpenGL/GLX code is a large amount of Vulkan extension code to handle initialization and creation of rendering surfaces. This got even more complex because of the fact that one of the goals for Godot 4.0 is to support multiple windows and the way Vulkan is initialized to do this is not exactly straightforward.
It seems to be running nicely now, though (multiple window support has not been added at engine level yet, but the initialization is prepared for it).
RenderingDevice One of the main features that will be present in Godot 4.0 is the new RenderingDevice
abstraction. Up to now, it was impossible to do any internal modifications to how Godot does rendering. This means that if you wanted to run custom low-level rendering code to a texture or buffer, custom post-processing, custom drawing code (other than what Godot shaders allow), custom compute, etc., this was not possible without modifying Godot’s rendering backend.
The new RenderingDevice
API allows to do all of this, or even completely override Godot’s rendering code in order to create your own.
The biggest challenge in the creation of this new API is that, nowadays, low-level rendering APIs such as Vulkan, DirectX 12 or Metal are quite complex and simple mistakes can have fatal consequences. Exposing them directly to the user would result in extremely difficult-to-use rendering APIs that very few would be able to take advantage of.
Instead, the chosen approach was to create a much simpler abstraction that handles all the complex tasks internally (such as swapchain management, frames, staging buffers, buffer updates, vertex formats, render commands, shader reflection, description sets, etc.) and only exposes a simplified API to the user.
Managing to make this API performant, yet hand-holding, was a challenge but the end result should be a very good tradeoff. RenderingDevice
is very simple to use and takes care of validating everything you pass to it internally. If something invalid is detected, it will fail and print the appropriate error instead of just crashing. At the same time, it’s very efficient and thread-safe.
Additionally, having an abstract lower-level API will aid in other areas:
It will be easier for users and contributors to learn about rendering, as they won’t need to deal with the complexities of modern APIs, yet they will be able to do everything they need. We will try to make tutorials to learn rendering by using RenderingDevice
. Eventually, it will make porting Godot to other platforms if needed (such as Metal native, DirectX 12 or even PS4 –not officially though, sorry–) much easier, since what needs to be re-implemented is significantly reduced and well constrained. Architecture changes In modern rendering APIs, there are architecture changes that force us to break compatibility and do some things differently. The immediate one is that it is no longer possible to set repeat, filter, etc. flags on imported textures. In 2D, this will be set per canvas item (Control
or Node2D
) using a new set of options. It will be also be possible to specify this in the shader or the material options (or just globally, if you are making a pixel art game).
This allows more efficient rendering and the lifting of the limit on the amount of textures that can be used per material (you can use as many as you want now).
Status Currently, RenderingDevice
is more or less complete (compute support is missing) and the 2D engine is halfway being ported. Work on 3D rendering will begin near the end of the month.
The editor is also more or less working again (don’t believe the version number or renderer name :P):
Future The goal is to have a more or less complete rewrite of the existing Godot 3.x feature set by October (cross your fingers), hard work and long hours are being put towards this.
As always, if you enjoy Godot and our work, it would be immensely useful for us if you become our patron (if you are not yet). This will help us split the work among more developers and speed up the development of the engine.
-
+
\ No newline at end of file
diff --git a/article/vulkan-progress-report-2/index.html b/article/vulkan-progress-report-2/index.html
index 69a5d6eafa..c885825e0e 100644
--- a/article/vulkan-progress-report-2/index.html
+++ b/article/vulkan-progress-report-2/index.html
@@ -5,7 +5,7 @@
Juan Linietsky 3 August 2019 This article is from August 2019 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
See other articles in this Godot 4.0 Vulkan series:
Vulkan progress report #1 (you are here) Vulkan progress report #2 Vulkan progress report #3 Vulkan progress report #4 Vulkan progress report #5 Vulkan progress report #6 Vulkan progress report #7 Progress with Vulkan In our latest episode , I was just barely getting Vulkan to work. A month later, many things happened.
Lighting and shadows 2D Lighting was introduced in Godot 2.0, with support for 2D shadow mapping and basic normalmapping. While it looks pretty nice , users quickly found its limitations.
The main problem with this system is that performance was never very good. The reason is that lighting was done in an additive way, requiring an extra pass (drawing all 2D content again) for every light in the scene. This ensured maximum compatibility with all hardware, but quickly restricted the amount of lights.
For Godot 4.0, the algorithm changed. All 2D lighting is now done in a single pass, ensuring much better performance. The only downside is that there is now a limit of 256 lights visible on-screen (your level can have as many as you want), and 16 lights per 2D node (as in, a single 2D node can be affected by a maximum of 16 lights). Considering today’s standards for 2D games, this is a very high limit anyway, and the performance improvement makes it worth it.
Added to this, many users requested specularity in 2D lights, so the effect of lights moving around stage is more visible and more types of materials can be created. Because of this, it will be possible in Godot 4.0 to use specular and shininess both as parameter and as textures supplied to Sprite, AnimatedSprite, Polygon2D and other nodes.
VIDEO Finally, the way light shaders now works is more user friendly to creating custom lighting shaders.
2D materials The 2D material system is back, so writing custom shaders works with the new Vulkan renderer. The shader language is mostly untouched since Godot 3.x, so existing shaders should just work.
Both regular shaders and screen space shaders work, including blur access to SCREEN_TEXTURE
.
One interesting effect of the new material system is that there is now no restriction on the amount of textures your shaders can use. On desktop hardware, you can use thousands of them, while on mobile (except on very low end hardware) you can have hundreds of textures in a material.
Another fantastic effect of the new shader system is that, unlike Godot 3.x, shaders are compiled (and cached) on load. Situations where the game stalls because it needs to compile a shader (which are common in previous versions of the engine) will no longer happen in 4.0.
Multi-threading Thanks to the fact that all new work on Godot 4.0 is done using C++11, many interesting advances were done with regard to multi-threading. Shader compilation is now done fully threaded (versions are compiled in threads), greatly improving performance.
Loading resources in threads is now much more efficient, because both textures and meshes can be created in sub-threads at no cost at all for the main thread. This paves the way to multithreaded resource loading, which will be implemented later. Access to RIDs (internal resource IDs) was made thread safe for some key types thanks to spinlocks. Spinlock usage will also be extended to other engine areas to vastly improve performance when using multiple threads.
For 3D rendering, a persistent thread worker pool was created for the rendering thread. Right now it’s only being used to compile shaders (in case they are not cached), but it paves the way for implementing multi-threaded spatial indexing and rendering optimizations (using secondary command buffers).
3D With the 2D engine mostly completed, I am now starting work on the 3D side of things. The idea of the 3D engine in Godot 4.0, besides being faster and more capable, is that it will be smarter regarding resource allocation. As an example, if your game does not use 3D, then no memory for 3D rendering will be allocated. From there on, it will only allocate memory for the features and effects you use. In Godot 3.x, this could only be controlled manually and most users did not bother to, resulting in wasted memory.
Future August will be fully dedicated to the 3D rendering side of things, so stay tuned!
As always, all my work in Godot is only possible thanks to the infinite generosity of our patrons. If you are not yet, please consider helping the project by becoming one .
-
+
\ No newline at end of file
diff --git a/article/vulkan-progress-report-3/index.html b/article/vulkan-progress-report-3/index.html
index 1f49beb347..9b11cd7a66 100644
--- a/article/vulkan-progress-report-3/index.html
+++ b/article/vulkan-progress-report-3/index.html
@@ -5,7 +5,7 @@
Juan Linietsky 2 September 2019 This article is from September 2019 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
Work on porting the rendering engine to Vulkan continues at a steady pace.
See other articles in this Godot 4.0 Vulkan series:
Vulkan progress report #1 Vulkan progress report #2 (you are here) Vulkan progress report #3 Vulkan progress report #4 Vulkan progress report #5 Vulkan progress report #6 Vulkan progress report #7 3D Rendering Work on 3D rendering has begun. This month was mostly spent on refactoring and modifying the core rendering architecture.
One of the main goals for Godot 4.0 is to make it possible to replace the core rendering class with as less rewriting as possible. The default 3D renderer will be as good as possible, but if some game requires a completely different one (because of very specific requirements), the idea is that just re-implementing some functions should be enough to achieve this.
Added to this, a lot of hacks were removed from the 3D engine viewports (no more need to flip, set a viewport to keep linear color to embed on 3D, etc), and the strategy of allocating buffers on demand continues (so by default users don’t need to configure the game features to tweak memory usage manually, engine will automatically allocate whatever is needed on the fly).
Status Environment Basic PBR rendering using a panorama background that supplies ambient and reflected light now works (together with tonemapping). The “Environment” resource will see some changes, allowing to specify custom sources for both light types (ambient and reflection), giving more flexibility in an area where users wanted to have more control. This will be split in two classes, Environment and CameraSettings, with some settings (like DOF blur) being moved to the camera, where it makes more sense.
A significant change from Godot 3.0 to 4.0 is the internal use of actual cubemaps for reflection probes and environment (3.0 used 2D atlases based on dual parabolloid projection). This is possible because the hardware supported by Vulkan all supports cubemap arrays.
Lights & Shadows Currently, work is in progress on porting shadow/lights code from Godot 3.0, which will work about the same way (I think the shadow atlasing system in 3.x has proven to be very good, so this is being kept).
The main change for 4.x will likely be significant improvements in handling multiple directional lights (currently, each directional light is handled in a separate render pass in 3.x), as many users requested the ability to use more than one directional light in their games without having to take such a big performance hit.
I am also interested in adding a new light type, ShaftLight, which would be like a mix between a spot light, but shoot parallel light rays, more akin to a directional light. This can be used for both small light shafts in interiors as well as combined with masking to create standalone shadows for characters (useful on 3D platformers, as an example).
Future For now, the goal remains on having most of the 3D renderer ported by October, then the work of adding new features will begin afterwards. As always, remember that all this work is done thanks to the enormous generosity of our patrons. If you are not yet, please consider becoming one , as we are close to reaching our third hire!
-
+
\ No newline at end of file
diff --git a/article/vulkan-progress-report-4/index.html b/article/vulkan-progress-report-4/index.html
index 693d1001fb..efafc4e171 100644
--- a/article/vulkan-progress-report-4/index.html
+++ b/article/vulkan-progress-report-4/index.html
@@ -5,7 +5,7 @@
Juan Linietsky 12 October 2019 This article is from October 2019 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
Over the course of September 2019, I continued working on Vulkan all day long, and several improvements have been made.
See other articles in this Godot 4.0 Vulkan series:
Vulkan progress report #1 Vulkan progress report #2 Vulkan progress report #3 (you are here) Vulkan progress report #4 Vulkan progress report #5 Vulkan progress report #6 Vulkan progress report #7 Materials 3D materials are now working again. Post processes are still mostly missing, but the material testers demo is fully functioning.
The SpatialMaterial class has been renamed to StandardMaterial, as this name will be more user friendly and less ambiguous. All the settings and categories in this material have been reorganized:
This should make editing 3D materials hopefully easier than it was before, as all the material options were crammed up in singled categories.
Added to this is a simple ORM material variant, which should make importing textures from GLTF2, or from applications such as Substance Painter, or similar much easier. It takes a single texture with Occlusion, Roughness and Metallic parameters and does not expose a lot more.
Finally, due to popular demand, the depth texture has been changed to height texture. It retains a flag to flip the color for compatibility.
Note that old SpatialMaterials will still work in Godot 4.0 and their data will be automatically remapped to StandardMaterials. Likewise, Meshes created in Godot 3.x will work using the mesh format in 4.x. The .import folder will need to be erased when switching between versions, though.
Visual Frame Profiler Another very requested feature for 2D and 3D is performance analysis tools. Users often run on CPU or GPU side performance bottlenecks and it is not always obvious what the source of the problem is.
To better find what is going on, a new visual frame profiler was added. This profiler shows all the steps that take place during rendering a frame and their cost in both CPU and GPU. Inspecting the frame history is also possible, so going back in time to find what caused a peak is done the same way as with the script profiler.
Shadows, Reflections, Skeletons, Multimesh, etc. Most real-time lighting code has already been implemented, so the 3D platformer demo (and even the TPS demo) seems to work
Basis Universal While not strictly Vulkan based, Basis Universal was added to Godot as an optional import format.
Basis Universal is mostly useful for 3D games and results in 75% smaller textures, at the cost of much slower import time (so, won’t want to use it until deploy) and slightly worse visual quality and loading times.
Stay tuned for next month! October will be a fun month, with all the focus on the new real time global-illumination features that will be coming for Godot 4.0!
-
+
\ No newline at end of file
diff --git a/article/vulkan-progress-report-5/index.html b/article/vulkan-progress-report-5/index.html
index caa1fc2d8d..c09b43cec7 100644
--- a/article/vulkan-progress-report-5/index.html
+++ b/article/vulkan-progress-report-5/index.html
@@ -5,7 +5,7 @@
Juan Linietsky 2 November 2019 This article is from November 2019 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
Another month, another Vulkan progress report! October was a busy month, as most of it was split between working on the new Global Illumination system and Godotcon/GIC in Poland.
Despite this, strong progress was made and the new GI system seems pretty much complete.
See other articles in this Godot 4.0 Vulkan series:
Vulkan progress report #1 Vulkan progress report #2 Vulkan progress report #3 Vulkan progress report #4 (you are here) Vulkan progress report #5 Vulkan progress report #6 Vulkan progress report #7 GIProbes 2.0 Godot 3.0 introduced GIProbes. They provide Global Illumination to scenes. They were, however, pretty limited. Only static geometry could provide GI and dynamic objects were ignored. Added to this, changes in light settings had significant frames of delay. Added to a not so great performance and quality, the feature was barely usable as is.
For Godot 4.0, GIProbes will see several significant changes, which will be outlined as follows:
Performance will see some improvements, thanks to work from Matias Goldberg from Ogre 3D, who implemented the same technique and figured out many optimizations. The default quality in 4.0 will also be the low quality mode in Godot 3.0, which was faster and the performance loss was only very small.
Real-Time lighting Changes to lighting now happen 100% in real-time. Changing light directions, positions, settings, etc. have immediate effect. Light bounces are updated smoothly and with no delay, thanks to a very clever voxel lighting implementation using signed distance fields.
Multiple Bounces GIProbe also now supports multiple bounce lighting (3 bounces). This considerably improves the image quality, but it also makes voxel reflections more useful (before, they would only reflect direct light, severely limiting them).
Ambient Occlusion GIProbes by default generate voxel ambient occlusion, but options to tweak it manually now exist. This allows having more control on this feature.
Dynamic Objects It is now possible to add dynamic objects to the scene. Just toggle the “Dynamic” flag in any object and it will both contribute to the scene and receive lighting from it.
This feature is extremely powerful, as objects can even emit light from their own material or shader. Complex shaders using the emission channel can actually light their environment accordingly, including the whole scene.
VIDEO Likewise, dynamic objects will also make use of real-time voxel AO, so it is possible to have screen space independent and wide AO, with a much higher degree of realism than traditional SSAO.
The voxelization technique used for real-time objects is very fast (you can have dozens of dynamic objects at little to no cost in a medium or low end dedicated GPU) and also very innovative, as it voxelizes supersampled objects. This allows moving dynamic objects around the scene without creating sudden changes in lighting (which was always a problem with most other implementations of voxel cone tracing, and made dynamic objects barely usable).
Future Godot 4.0 will come with a fast and complete solution for real-time global illumination, in an easy to use package.
There are still many pending features that will be worked on in the coming months, so stay tuned to all the new and shiny things! As always, remember that Godot is done entirely out of love for you and the game development community so, if you are not yet, please don’t hesitate to become our patron , and help bring the world top quality, free and open source tools for making games.
-
+
\ No newline at end of file
diff --git a/article/vulkan-progress-report-6/index.html b/article/vulkan-progress-report-6/index.html
index a2ae959a03..c603dfb104 100644
--- a/article/vulkan-progress-report-6/index.html
+++ b/article/vulkan-progress-report-6/index.html
@@ -6,7 +6,7 @@
Future The plan is to finish, in February, the features that are missing to be ported from Godot 3.x. This includes subsurface scattering (will include a more correct human skin mode), and screen space reflections. Afterwards, all the new planned features and optimizations will finally be implemented!
As always, please keep in mind Godot is developed with love for all of you, so you have a completely free and open tool to make your games, and make them entirely yours. This could never happen without generous donations from our patrons, so if you are not yet, please consider becoming one .
-
+
\ No newline at end of file
diff --git a/article/vulkan-progress-report-7/index.html b/article/vulkan-progress-report-7/index.html
index 99f5a7e467..71aeeb6a6c 100644
--- a/article/vulkan-progress-report-7/index.html
+++ b/article/vulkan-progress-report-7/index.html
@@ -5,7 +5,7 @@
Juan Linietsky 1 May 2020 This article is from May 2020 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
It’s been three months since a Vulkan progress report! I know you guys missed them, so I made sure to work extra hard to have something nice to make up. It feels great to be back to doing graphics programming after two months refactoring the core engine.
So, here are the things that were worked on during April 2020!
See other articles in this Godot 4.0 Vulkan series:
Vulkan progress report #1 Vulkan progress report #2 Vulkan progress report #3 Vulkan progress report #4 Vulkan progress report #5 Vulkan progress report #6 (you are here) Vulkan progress report #7 Node renames While not entirely rendering specific, a lot of nodes are being renamed. Users often complain that it’s confusing that 2D nodes have the “2D” suffix, while 3D ones do not. This will change in Godot 4.0. A lot of nodes will also be renamed to have clearer naming. A compatibility option will be added on load so older scenes still open properly.
New screen-space reflection Screen space reflection in Godot 3.x was rather limited. It supported roughness, but it did so in a way where the texture reads appeared rough, but not the reflected image (the edges of the reflected objects remained intact). This is changing in 4.0, using a special screen-space filter to correctly simulate roughness.
New Subsurface Scattering This effect worked to some extent in Godot 3.x, but the quality was limited by several factors. In Godot 4.0, Subsurface Scattering has been redone with a completely new state-of-the-art scattering model. In the example below, you can see that transitions from light to shadow now use the right skin sub-surface colors (red in this case), and that the ear is semi-translucent thanks to scattering.
Additionally to being able to simulate skin more correctly, it also supports transmittance, so light that comes from behind will spread towards the front by scattering below the surface.
Besides using the pre-existing tuned skin model, you can customize scattering so it works in a wider amount of material types.
Reworked shadow bias settings A very common complaint when using shadowmaps in Godot is that tweaking shadow bias is extremely difficult compared to other game engines. Godot uses many different shadow techniques, which require different bias settings. Additionally, some situations like screen aspect ratio, draw distance or objects behind the camera frustum may also affect the biasing effect in ways it escapes user control.
In Godot 4.0, biasing has been entirely redone. Instead of reflecting the actual offset in shadow coordinates, bias is now a a reference value that adjusts itself to different shadow settings and types. It all happens automagically so, once set, the setting is adjusted to all possible internal conditions and light types.
This way, when you add a new light, a default value that works out of the box (or almost does) is always present and, even if you need to adjust the bias for some reason, the effort is minimal.
Additionally, slope-scale was replaced by normal-bias, allowing a very significant increase in shadowmap quality. Shadows look so good now that the old “contact” approximator no longer makes sense and it was removed. For directional shadows, pancaking was added (and is enabled by default). This makes shadows extremely stable, but has the downside that triangles too large may break the shadow a bit. If this happens, you need to adjust the pancake size, or subdivide the geometry.
As you can see in the image below, shadows “just work”, with no visible gaps or peter panning.
Soft Shadows Godot 4.0 will support soft shadows in all its light types. For Omni and Spot shadows, a “size” parameter was added to the settings.
Soft shadows can become expensive quickly, so make sure to use them with relatively small softness values, or in controlled environments. For Directional lights, an “angular distance” parameter was added instead (0.5 is the Sun’s size). Setting this value results in more realistic shadows from the Sun.
Accurate frame render time In Godot 3.2, you can only see the frames per second that takes rendering the whole editor. This is very misleading and not representative of rendering performance.
For 4.0, you can see the exact time it takes to render each 3D viewport, for both the CPU and GPU, and a correct estimation of what the “frames per second” will be when running your actual game.
MSAA and Screen-Space antialiasing MSAA is back in master branch. Additionally, you can choose screen space antialiasing method such as FXAA.
Together with specular aliasing improvements for Godot 4.0, image quality is starting to be extremely high for this upcoming version, without having to resort to techniques such as TAA.
Decals A very long-since requested feature has finally made it to Godot. Decals are now supported in the engine. They are very easy to use, just select the right texture channels and blending options and they work without much hassle.
Godot uses clustered decals, so the cost is very low (the pixel is shaded only once and there are no extra draw calls for each decal). Still, it is possible to set a maximum (including fadeout) distance for the decals. Make sure to abuse them as much as you want!
Light projectors Both the Omni and Spot lights are now able to project textures. For Omni lights, in order to throw light in all directions, a panorama is required so make sure to look for a proper tool to generate them.
Low level access to RenderingDevice Godot 4.0 will allow you to have low level access to the rendering APIs, allowing you to do all the same things Godot does during rendering, or calling your custom code in the middle of render passes.
Additionally, GLSL shaders (not Godot shaders, real GLSL 4.50+Vulkan extensions) can now be imported. It can’t be edited in-engine, but it supports shader variants using a custom syntax. They will be automatically imported and converted to SPIR-V when found, giving you proper reports on import errors.
It is also possible to create local rendering devices, which run in the game thread (or any other thread). This is very useful for games that may want their logic accelerated by the GPU (such as sandbox or simulation games).
Future As you can see, a lot of cool new features were added this month! A 4.0 Alpha is still some months away, but it’s getting closer every day! So, stay tuned for next month’s progress report, which will include a lot of great new features including the new GPU accelerated lightmapper.
As always, please remember that Godot is made out of love for you and everybody else making games. We want to create the ultimate game engine and give it to you and the rest of the world for free, so you can own your games down to the last line of code. If you are not yet, please consider becoming our patron , and help us make this dream become reality.
-
+
\ No newline at end of file
diff --git a/article/warning-head-going-unstable/index.html b/article/warning-head-going-unstable/index.html
index 9f3422a56f..6d8738b24f 100644
--- a/article/warning-head-going-unstable/index.html
+++ b/article/warning-head-going-unstable/index.html
@@ -5,7 +5,7 @@
Juan Linietsky 2 January 2017 This article is from January 2017 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
We know Godot has been known for many years to have a relatively stable master/HEAD at Github, so users can try the new features in their projects with very little risk of breaking them.
Starting now, and only for the upcoming 3.0 release, HEAD will break compatibility completely. Projects from Godot 1.x and 2.x will not work and this is expected.
Godot 3.0 is expected to be a compatibility breaking release. We will take the chance to do deep changes in Godot internals, which (while for the better) will render it incompatible with previous versions.
Moreover, starting new projects in the HEAD branch, using the new features and expecting them to work with the upcoming 3.0 release is discouraged - unless you want to help find and fix bugs in the development code of course.
Please wait at least until we can release an Alpha!
Some time before the 3.0 release, we will create a tool for project migration, which should make it easy to move to Godot 3.0 with as little work as possible. In the meantime, keep using Godot 2.1.x :)
Thanks for your patience and understanding!
-
+
\ No newline at end of file
diff --git a/article/we-hired-gdquest-work-manual/index.html b/article/we-hired-gdquest-work-manual/index.html
index fb42077dff..4ec9f0731e 100644
--- a/article/we-hired-gdquest-work-manual/index.html
+++ b/article/we-hired-gdquest-work-manual/index.html
@@ -5,7 +5,7 @@
Nathan GDQuest 10 September 2020 This article is from September 2020 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
Hi! Nathan here.
I got hired by the Godot team to work part-time mission to help improve the official documentation. The job involves the following tasks:
Auditing the documentation to find missing, low-quality, and outdated content.Improving the content’s organization . Triaging issues. Solidifying the workflow for core contributors and writing content guidelines.Removing outdated content. Improving the getting started guide. Note that I will be working on the godot-docs repository and specifically on the reference manual; not on the class reference (although I took some extra time to review pending pull requests for the code reference).
All my work is public and open to feedback , entirely done on GitHub. This contract already stems from a public proposal to improve the manual by the time Godot 4.0 comes out. We had a long discussion with users and core contributors there, leading to this project.
Any changes to the content will only affect the latest
version of the online manual, that is to say, the future Godot 4.0 docs. So you won’t see the changes in the stable
version of the documentation until the Godot 4.0 release.
You can learn more in a video presentation of this project.
I’ve already gotten to work, starting with the audit and reviewing pull requests. To get progress report on this project periodically, you can follow me on Twitter . Alternatively, you can watch the godot-docs repository to get notified of all new issues and pull requests.
This project was funded by a generous donor who asked for work to be done specifically on the documentation.
-
+
\ No newline at end of file
diff --git a/article/we-need-your-help-improve-our-documentation-system/index.html b/article/we-need-your-help-improve-our-documentation-system/index.html
index 346ca32e1f..9ff4457e5a 100644
--- a/article/we-need-your-help-improve-our-documentation-system/index.html
+++ b/article/we-need-your-help-improve-our-documentation-system/index.html
@@ -8,7 +8,7 @@
How to contribute The best way to contact us for this work is joining the #godotengine-atelier IRC channel on Freenode, which is dedicated mostly to website development.
Thanks!
-
+
\ No newline at end of file
diff --git a/article/we-should-all-use-gltf-20-export-3d-assets-game-engines/index.html b/article/we-should-all-use-gltf-20-export-3d-assets-game-engines/index.html
index 426794c87a..d7ca62e9b0 100644
--- a/article/we-should-all-use-gltf-20-export-3d-assets-game-engines/index.html
+++ b/article/we-should-all-use-gltf-20-export-3d-assets-game-engines/index.html
@@ -5,7 +5,7 @@
Juan Linietsky 3 August 2017 This article is from August 2017 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
Introducing glTF 2.0 glTF 2.0 was introduced two months ago by Khronos , the body behind Vulkan and OpenGL.
Today, this format was added to Godot, which now supports the full specification. The reasoning behind this late feature addition is that, now that we released 3.0 alpha1, users need more content to test with the new 3D engine.
Sites like Sketchfab provide plenty of PBR-ready assets for downloading, and plugins that export scenes from other popular game engines to this format.
The surprise, though, is how good this format is for video game asset exchange. Nothing as good existed before, and it solves a problem that we, as an industry, have been struggling with for a long time.
Khronos, with glTF 2.0, has given us a fantastic chance to standardize a smooth workflow between 3D modelling software and game engines. To better understand why, a list of previous attempts will be explained and why they failed.
OBJ / 3DS The first formats used for asset exchange were Wavefrom .OBJ and Autodesk .3DS. Both are formats from the early days of 3D computer graphics (late 80s, early 90s). Despite their popularity, they only support basic geometry, and .OBJ does not even support object transforms.
Collada Collada (also from Khronos) was the first serious attempt to create an open exchange format, but it was not really intended to be used by the game industry (until later, at least). It was more of a tool to exchange assets between 3D modelling applications.
Despite supporting almost everything a modern game engine needs, the format fell into disuse. There are many reasons for this:
The specification was not that complex, but parsing an XML based format can be a hassle as all datatypes need to be converted from text. Implementers preferred libraries to do this work, but no good libraries existed. FCollada was discontinued, and OpenCollada turned out to be bigger than most game engines. The specification was very ambiguous in many aspects, such as how data, skeletons, blend shapes, etc. had to be exported. It also gave exporters a lot of freedom in units used, as well as world transform specifications (e.g., which axis was up). All this resulted in a tremendous work for anyone wanting to parse the format. Most exporters are, to this day, broken. IDs are not unique in some, the order of sections dictated by the spec is not respected, and information is often missing. Collada is a text format, so loading large files is slow. Autodesk (willingly or unwillingly) worked against the format adoption by including an incomplete and buggy exporter in their products. To this day, a large amount of developers believe Collada is not capable of a lot of functions that it actually is. Blender (willingly or unwillingly) worked against the format by adopting an incomplete exporter. While many factors worked against it, the truth is that Collada was never good enough.
FBX One would assume (given its popularity) that FBX is pretty much the industry standard… except there isn’t any standard published by Autodesk about it.
FBX is used via the FBX SDK, which has a very restrictive license. This license makes it very hard to use in open source projects (an EULA must be accepted by the user unless a special license is purchased from Autodesk).
Besides the legal issues, implementing the library is rather difficult and suffers many of the same format ambiguity issues Collada does. One could argue, though, that the main technical advantage about it (besides working with the most popular 3D modelling applications) is that the file format is binary, so parsing it is fast.
That said, as an industry, we should look for true standards to work with. As useful as FBX may be, Autodesk alone controls its future.
OpenGEX OpenGEX was born from one of the most brilliant minds the game industry has ever produced: Eric Lengyel, who single-handedly created the C4 engine. It has a well defined specification and comes with exporter plugins for the most common 3D modelling software, as well as documentation and support libraries. It also has the very innovative approach of encoding floating point data as hexadecimal for quick and efficient parsing (despite being text based).
Unfortunately, OpenGEX did not catch up. The main reasons I can think of are:
There are no open tools where you can test and visualize your exported files, save for Eric’s own commercial engine. It’s not really standard, as it’s not registered in any relevant body. Development is not peer-based, only Eric decides the future of the format. In short, for a format not so open, it does not offer many advantages over FBX.
glTF 1.0 The first version of glTF had many good ideas, but it was clearly intended as a storage format for WebGL. In fact, materials could only be created by writing GLSL shader code. This made format unusable for anything else, as modern game engines only allow the user to create materials by customizing a small part of the rendering pipeline.
glTF 2.0: What makes it great? By just reading the spec, the advantages should become clear. Still, I will detail the key points below:
JSON based GLTF is a JSON based format. It’s very easy to parse and the data already comes typed. This significantly reduces the need to rely on complex third party libraries to read it. Many languages (e.g., Javascript, Python) even support this format natively.
Comparing the size (in lines of code) of both Godot’s glTF 2.0 and Collada importers, the result is as follows:
Collada: ~5000 loc glTF 2.0: ~2000 loc Godot does not even use third party libraries to parse these files. This makes it more evident how simple the format is in comparison.
Theoretically, glTF2 should be less efficient to parse than Collada, as it requires parsing the whole JSON into memory. Collada can be streamed in by using a SAX XML parser but, in practice, glTF beats Collada hands down. This is because (besides many Collada exporters not obeying the specification, so they can’t be parsed as SAX anyway) glTF has yet another killer feature:
Separate binary blob for arrays glTF allows specifying an external file for the big data, in binary format. It even supports many common GPU data types, so in practice this file can be moved in chunks directly to the GPU memory. Yes, glTF is the first of these formats that can even be used efficiently as in-engine data .
Even if engines would prefer to import to their own format, like Godot does, glTF is extremely fast to export and import. This makes it ideal for making changes to a complex file in the 3D software and updating them to the 3D engine almost instantly.
No ambiguity glTF’s file structure is crystal clear. No extra or redundant data exists. There is only one way the scene definition can be understood, which gives no room for exporters to take shortcuts. It also makes life for importers simpler, warranting that all existing scenes will work on the first implementation attempt.
Collections of objects of the same type are stored in JSON arrays and referenced by indices. No more confusing IDs.
There is also no support for different coordinate systems or units, and this is great. Quoting one of the first paragraphs of the specification:
glTF uses a right-handed coordinate system, that is, the cross product of X and Y yields Z. glTF defines the y axis as up. The units for all linear distances are meters. All angles are in radians. Positive rotation is counterclockwise. Just one simple use case to care about. No extra conversions. All work is left to the exporter. As there are usually way more importers than exporters, this is an excellent design decision.
Modern features glTF 2.0 fully supports skeletons and morph targets, which can be parsed easily and unambiguously.
It also supports PBR based materials using the Disney/Unreal format, which is what most engines and 3D modelling applications use nowadays, with albedo, metallic, roughness, normal, emission and ambient occlusion. It also handles two-sidedness and transparent materials, including alpha to coverage.
Extensions for handling shader material graphs are in the work.
Great animation support Animation support is also well done. glTF 2.0 supports multiple animations per file, which is ideal for exporting character actions (though be careful with some official examples, they are old and incomplete). It also supports many key interpolation types, such as Catmull Rom and Cubic Spline.
Animations are also stored in the binary file, so they can be loaded quickly.
Clean documentation The specification is very complete, I personally found it well worded and not lacking in any area. There are many sample files to test all functions.
Flexible extension support glTF uses the same extension system as other Khronos specifications, which is proven to be centralized and well organized.
Strong backing glTF is developed by individuals from many companies, such as Microsoft, Unity, Google, Adobe, NVidia, Oculus, etc. in collaboration with Khronos.
Best of all, it’s completely open and everyone can contribute! glTF is an open standard and the development process is also transparent .
Support glTF! For glTF to succeed, it needs strong developer adoption. Ask your favorite 3D modelling software or engine developer to support it!
Currently, the Blender exporter is in the works and not complete, and there is no support at all for Autodesk products (export plug-ins need to be written).
This is the best chance we’ll ever have in a long time for a proper, open standard. Let’s work together to make it happen!
-
+
\ No newline at end of file
diff --git a/article/webassembly-godot-web/index.html b/article/webassembly-godot-web/index.html
index 5be50013c7..eb9bd77350 100644
--- a/article/webassembly-godot-web/index.html
+++ b/article/webassembly-godot-web/index.html
@@ -5,7 +5,7 @@
Juan Linietsky 25 June 2015 This article is from June 2015 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
Running native on the web Godot has a long story on attempts trying to make it run on the web. We always wanted this to happen, we tried many approaches, it may finally happen. This article will be a small recap of our experiences with this matter.
Atmosphir A long time ago Ariel and I wrote a game named Atmosphir as contractors. It was one of the first voxel games and a Minecraft precursor. Although far from what Godot is now (almost the entire codebase is different at this point), the game+engine combo were written almost from scratch in seven months and Atmosphir got a warm welcome by the community.
As it did well , investors wanted to expand the game and one of their first ideas was to make it a web based game to run it in Kongregate (which was trendy). They were set on this idea and completely convinced that downloadable games were a thing of the past (a common idea at the time, Steam did not exist yet and Minecraft was a year or two away from proving them wrong).
First attempt, native plugin We did research on how to make the game run on a browser and researched NPAPI and similar technologies and even made prototypes, but reality was that we believed it was a huge security risk to do this, as plugins don’t have any sort of protection against attacks (reason why now they are being removed from Chrome and Edge).
Finally It was decided that the game was to be ported to Unity so it could run on the web. Unity at the time was a very immature engine and Atmosphir was probably one of the biggest projects made with it, if not the largest. Still, it had a great web plugin with a decent userbase. At the time we had other priorities so we ceased involvement with the project.
Second attempt, native client Shortly afterwards, Google announced Native Client. Native Client works by allowing developers to compile “safe” binaries that run on the Browser. You had to compile a binary for each processor by yourself, but that wasn’ t too bad. We believed it was a great idea, as it was a safe way to run native code on the web. Ariel did a very early port of Godot to it and it worked fantastic.
At the time, Google started experimenting with Pepper API (PPAPI), proposing it as an open safe (sandboxed) plugin interface. Mozilla was interested too so so we believed this was the future (Hey, if both Firefox and Chrome had it working, Microsoft would have been forced to implement it, right?). Unfortunately, Mozilla changed course and decided not to go that route (no PPAPI) and, as a Chrome-only plugin would not be very useful, we abandoned it to.
Failure. A shame because PNaCL was not going to get support either, as a great of an idea as it was. Thanks Mozilla.
Third attempt, Flash Fast forward to Farmville. Making games in Flash became all the rage and the most popular way to make games on Facebook. On the peak of it’ s glory, Adobe announced a cool internal project called “FlasCC “, later renamed to “Project Alchemy” and finally settled as “Adobe CrossBridge”. This technology allowed to compile C++ to run on the FlashVM.
At the time, It was still immature and it needed some work, but it showed promise. “This is it!” we thought again, this is how to run Godot on the web. We met with Adobe privately at GDC and worked with them in the closed beta with the hopes to have a nice flash exporter.
Unfortunately, one day Steve Jobs decided that “Flash is dead ” and killed it. It was a simple as that. Can’t complain about it as it was probably a good thing, but efforts to bring Godot to the web failed again as Adobe abandoned both Flash and Cross Bridge. Thanks Apple.
Fourth attempt, ASM.JS When I first heard that someone made a compiler that converted C++ to JavaScript , I laughed a lot and ignored it for about a year. Finally, one day, decided to gave it a try and I was surprised that it worked. It had a lot of limitations but it could run Godot. Firefox ran it flawlessly and perfectly, but not Chrome and much less Internet Explorer. The situation improved the following years, with support somehow improving in all major browsers and Microsoft deciding to adopt it for Edge.
Unfortunately, the process of detecting asm.js and pre-parsing it efficiently seems it’s too much of a hack to implement by browser vendors other than Mozilla. Despite it being adopted by Unity and Unreal too, ASM.JS is still hit or miss. It requires a huge amount of resources to compile the Javascript blob, a large pre-allocated chunk of memory (to serve as process memory), and a relatively fast computer to run it. Forget about mobile web. This back-end is still in the works in Godot, but we were mainly waiting for browser vendors to make it not suck. This may never happen.
Fifth attempt, WebAssembly Some days ago, WebAssembly was announced . It’s a bytecode specification to run code that converts to native on the browser. On paper it’s great and provides every single thing that Godot needs. It’s still in diapers and we might not see support for it until next year, but it’ cool because this time Unity and Unreal are in our same boat and they have more lobby power than us.
In fact, all this is probably because they freaked after Google decided to deprecate NPAPI from Chrome and Microsoft decided to stop supporting plugins on Edge. Will we succeed this time? I hope so, but i we do it will definitely be thanks to Google and Microsoft this time! Thanks for having the balls to deprecate native plugins!
As soon as there is an initial implementation of this technology in all major browsers, we will definitely be giving it a try! Stay tuned!
-
+
\ No newline at end of file
diff --git a/article/website-back/index.html b/article/website-back/index.html
index 5760b515bb..fded1eaea5 100644
--- a/article/website-back/index.html
+++ b/article/website-back/index.html
@@ -6,7 +6,7 @@
We are engine developers, not web developers, so securing hosted sites is definitely not our strong point.After being open sourced back in February, Godot development went under. We got a lot of enthusiasm and positive feedback back them, but also a lot of bug and usability reports. The engine was stable for us and the handful other people that was using it at the time but, when exposed to so many new developers, all the flaws, bugs and general usability issues and lack of polish that remained shined in the sunlight. For months, we put priority to this and worked hard to solve most of them without trying to draw much attention. Finally, this work has paid off and we are close to finally announce our first stable release, Godot 1.0!
The source code has been stable for the few weeks, so at this point we are working on the tiny details and issues that remain. Welcome back to the website and let’s hope we can celebrate soon!
-
+
\ No newline at end of file
diff --git a/article/websocket-ssl-testing-html5-export/index.html b/article/websocket-ssl-testing-html5-export/index.html
index e02fb31a4f..964b5a1e5e 100644
--- a/article/websocket-ssl-testing-html5-export/index.html
+++ b/article/websocket-ssl-testing-html5-export/index.html
@@ -35,7 +35,7 @@
Check out the Crypto
class documentation for more details on RSA key and certificate generation.
Running HTML5 export Godot has a cool feature that allows users to export for some plaftorms in debug mode and run the exported game directly on a connected device with the press of a button, as long as at least one runnable export preset for that plafrom has been created.
HTML5 exports, used to have this feature too, opening the exported HTML in the default browser directly from the file system. Since most browsers now no longer allow making async requests from a page loaded from file://
, we added a minimal HTTP server to the editor to serve the exported HTML5 game.
This is also a very important step towards allowing users to profile HTML5 exported games via websocket connection. Stay tuned for more.
Reference work
-
+
\ No newline at end of file
diff --git a/article/websocket-updates-udp-multicast/index.html b/article/websocket-updates-udp-multicast/index.html
index e51505efe5..1f1971286f 100644
--- a/article/websocket-updates-udp-multicast/index.html
+++ b/article/websocket-updates-udp-multicast/index.html
@@ -5,7 +5,7 @@
Fabio Alessandrelli 22 August 2019 This article is from August 2019 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
In effort to better Godot’s networking, two main changes were worked on in June and are now merged in the current master branch:
The third party library used to implement WebSocket in non web export has been changed. PacketPeerUDP
multicast support has been added.WebSocket update Third-party library change In an effort to make Godot’s WebSocket implementation more portable, maintainable and lightweight we recently swtiched from libwebsocket to wslay .
This new library allows us to use our own networking classes, making it more portable across different platforms, and solving some long lasting problems we had with the previous library, while also decreasing the overall code size.
More details are provided in the merged pull request .
If you are using WebSocket in your project please try out these changes and report any issue you might encounter.
WebSocket tutorial and demos A new WebSocket tutorial and three new WebSocket demos (minimal, chat, multiplayer) have been added to Godot’s documentation and demo projects .
UDP multicast Multicast support is finally coming for PacketPeerUDP
, this is useful for network discovery (e.g. finding LAN peers, servers, etc.). See the documentation for join_multicast_group
and leave_multicast_group
.
Along with this change, it is now also possible to get more information about the network interfaces of the machine on which Godot is running via the new IP.get_local_interfaces()
function.
-
+
\ No newline at end of file
diff --git a/article/welcoming-our-new-gold-sponsor-imagecampus/index.html b/article/welcoming-our-new-gold-sponsor-imagecampus/index.html
index a4e96686eb..d884111d1e 100644
--- a/article/welcoming-our-new-gold-sponsor-imagecampus/index.html
+++ b/article/welcoming-our-new-gold-sponsor-imagecampus/index.html
@@ -5,7 +5,7 @@
Juan Linietsky 21 September 2018 This article is from September 2018 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
Godot gets a new Gold sponsor! In this case, we are welcoming Image Campus , an education institution located in Buenos Aires, Argentina, which specializes in animation, digital art and videogames.
They are one of the pioneers in the region regarding videogame related careers and constantly supply a large portion of the Argentine industry (one of the largest in South America) with professionals, allowing it to keep growing at a rapid pace.
It personaly makes me happy to announce them as sponsors, and they always supported the project, helping organize workshops and talks in the city, and having incorporated Godot to their regular classes.
Remember that, you too can also contribute to aid Godot development by becoming our patron !
-
+
\ No newline at end of file
diff --git a/article/whats-missing-in-godot-for-aaa/index.html b/article/whats-missing-in-godot-for-aaa/index.html
index 8a9c00ace6..17c50b5b46 100644
--- a/article/whats-missing-in-godot-for-aaa/index.html
+++ b/article/whats-missing-in-godot-for-aaa/index.html
@@ -5,7 +5,7 @@
Juan Linietsky 16 January 2023 This article is from January 2023 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
Godot 4.0 is coming out soon. It includes major improvements all across the board in features, performance, and usability. Still, one of the biggest questions the community has is: How does it compare with mainstream commercial offerings?
Godot 4.0 improvements Rendering Godot 4.0 has an entirely new rendering architecture, which is divided into modern and compatibility backends.
The modern one does rendering via RenderingDevice (which is implemented in drivers such as Vulkan, Direct3D 12, and more in the future). Additionally, the modern backend can implement rendering methods , such as forward clustered, mobile, and more in the future (such as deferred clustered, cinematic, etc.).
The compatibility backend is based on OpenGL ES 3.0 / OpenGL 3.3 / WebGL 2.0 and is intended to run on very old PC hardware as well as most older (still working) mobile phones.
Rendering is significantly more efficient in Godot 4.0, using data oriented algorithms to process the culling of objects and both secondary command buffers and automatic batching to efficiently submit the draw primitives.
The features offered are also a lot more reminiscent of AAA games, such as far more material options and advanced visual effects (including circle DOF , volumetric fog, AMD FSR, etc.). Additionally, Godot 4.0 supports advanced global illumination techniques such as lightmapping (including SH lightmapping), Voxel GI (which is fully real-time) and SDFGI (which is a one-click, open world GI solution). SSIL can be used to enhance realism even more.
Physics After an unsatisfactory attempt at using Bullet, Godot 4.0 returns to its own physics engine which, despite not being a high end physics engine like PhysX, aims to offer a lot more flexibility and “just works” capabilities to users.
Several features were added to Godot Physics since 3.x, such as soft bodies and cylinder shape support, as well as several optimizations to make use of multiple threads.
The custom physics engine still has a considerable amount of issues remaining but we are working hard to ensure it is in a decent state for shipping when 4.0 reaches stability. It will continue seeing improvements afterwards, during the following 4.x release cycles.
That said, Godot 4.0 introduces the ability to bind custom physics engines at runtime (without recompiling Godot) via GDExtension, so it’s perfectly possible for the community to integrate other engines such as PhysX, Jolt, or Box2D if needed.
Scripting Godot 4.0 has a new version of GDScript, which is far more powerful and overcomes most shortcomings found in 3.x. Majorly, the addition of lambdas, first class functions/signals and a much reduced reliance on string identifiers (which are prone to errors). It also has more useful built-in data types such as integer vectors.
Core engine The core engine has been significantly optimized, especially in the memory and data-oriented areas. Core and Variant have been massively cleaned up and made more extensible. Besides being faster and more modern, the core codebase is now significantly easier to maintain and extend.
GDExtension It is now possible to extend Godot and add features to it practically in any language and without recompiling the engine, thanks to the new GDExtension system. Aside from Godot C++ (which makes it easy to extend Godot as easy as with modules but allowing pluggable, dynamic add-ons), there are other bindings in the work such as Python, Rust, Go, etc.
A lot more Several other areas got improvements, like the editor (which has been vastly reworked), UI system, multiplayer, navigation, audio, animation, etc. This is a major release with major improvements all across the board.
So, what’s missing? Do not be mistaken: A lot is still missing from Godot in order to be used comfortably for large projects and teams. That said, what remains is now much less work than it was for Godot 3.x.
First of all, most of the new features still have significant bugs and performance problems that will not be solved in time for the upcoming 4.0 release (there is just too much new code that needs to be tested thoroughly).
These problems will be fixed across the 4.x point releases (which we are now intending to do more often, allowing several releases per year). It may be an extra year or even two until everything feels as solid and fast as everyone expects. See this article about our plans for 4.0 and beyond.
But other than that, there are still some fundamental aspects missing in Godot. The following is an incomplete list of the most important ones:
Streaming The traditional way to make games longer since the beginning of times is to divide them in stages. As soon as one stage is completed, it is unloaded while the new one is loaded.
Many games still use this approach nowadays (after all, if it’s not broken, don’t fix it) but, increasingly, game design has been moving from “individual stages” to “open” or “continuous” worlds where the boundaries between levels disappear. Creating games this way is, as a result, more challenging.
This is handled nowadays by a type of technology called “streaming”. It means that assets are pulled from disk on demand (loaded only at the time they are needed), rather than as a part of a larger stage. The most common types of streaming are:
Texture streaming : All textures are loaded in a tiny size by default. As textures get closer to the camera, higher resolution versions (or mip-maps) are streamed from disk. Textures which haven’t been used for some frames are freed instead. At any given time, the textures loaded (and their detail) closely reflect the place the player is in.Mesh streaming : Models are loaded as low detail (few vertices). As they gradually approach the camera, higher resolution versions are streamed from disk. Models that were not used (displayed) for a while are often just freed and will be loaded again when needed.Animation streaming : Modern games have long cinematics, which require a lot of animation data. Loading those animations requires a lot of memory and loading them takes a lot of time. To avoid this, animations are streamed by generally keeping the first second or two in memory and then new sections are loaded on demand as the animation plays. Godot 4.0 supports strong animation compression and animation pages, so most of the work is already done.Audio streaming : Similar to animation streaming, it requires storing the first second or two of audio and then streaming the rest directly from disk.Of the above, most are relatively straightforward to implement. The most complex is mesh streaming , which generally needs to be implemented together with a GPU culling strategy to ensure that very large amounts of models can be drawn at no CPU cost. This is more or less what techniques like Nanite do in Unreal, although Godot does not need to implement something that complex to be of use in most cases.
Streaming is the most important feature missing for managing large scenes or open worlds. Without it, Godot users are subject to long loading times (as every texture, model and animation has to load before anything is shown). There is also a risk of running out of memory if too many assets are loaded in parallel instead of streaming them.
Low level rendering access Despite the new renderer in Godot 4.0, there is no architecture that can be considered a one size fits all solution. Often developers need to implement rendering techniques, post processing effects, etc. that don’t come bundled with the engine.
The Godot philosophy has always been to cater to solving the most common use cases, and leave the door open for users to solve the less common on their own .
As such, this means that low level access to all the rendering server structures needs to be exposed via GDExtension. This will allow creating custom renderers or plugging custom code during the rendering steps, which is very useful for custom rendering techniques or post processes.
Scene job system Most of the work done for Godot 4.0 involved large feature and performance improvements to all the servers (rendering, physics, navigation, etc.). Servers are also now multithreaded and optimized. Even asset loading can now be done multithreaded (using multiple threads to load multiple assets).
Still, the scene system (which uses those servers), despite several usability improvements, has not seen significant optimization.
Scene nodes in Godot are mostly intended to carry complex high level behaviors (such as animation trees, kinematic characters, IK, skeletons, etc.) for limited amounts of objects (in the hundreds at most). Currently, no threading happens at all and only a single CPU core is used. This makes it very inefficient.
This makes it an ideal target for optimizing with multithreading. There is an initial proposal on threaded processing for scene nodes, which should give complex scenes a very significant performance boost.
Swarms Scenes, as mentioned before, are designed for complex high level behaviors in the hundreds of instances. Still, sometimes, some games require larger amounts of instances but less complex behaviors instead.
This is needed for some types of game mechanics such as:
Projectiles (bullet hell for example). Units in some types of strategy games with thousands of entitites roaming across a map. Cars/people in city simulators, where thousands appear all across the city. Sandbox style simulations. Complex custom particles that run on CPU. Flocks, swarms, mobs, debris, etc. More experienced programmers can use the servers directly or even plug C++ code to do the heavy lifting. ECS is often also proposed as a solution for this. Even GPU Compute (which is fully supported in Godot) can be easily used to solve this pattern.
But for the sake of keeping Godot accessible and easy to use, the idea is to create a swarm system that takes care of the rendering and physics in large amounts of those objects and the user only has to fill in the code logic.
Large team VCS support Godot’s text file formats are very friendly to version control. They only write what is needed (no redundant information), keep the ordering of sections and are simple enough to understand changes by just looking at the diff. Few other technologies work as well in this area.
Despite that, this is far from enough to enable large team collaboration. To enable this, Godot VCS support has to improve in several areas:
Better integration with the filesystem dock. Better real-time refresh of assets if they were modified externally (and checked out). Support for permissions and file locking: Git does not support this out of the box, but Git LFS and Perforce do. This feature is essential for large teams to avoid conflicts and keep files protected from unintended modifications (e.g. a team member modifying code or a scene they don’t own by mistake). Unless the support for this is solid, using Godot in large teams will remain difficult.
Commercial asset store While for very large studios this is not an area of interest, medium-sized studios still rely on significant amounts of assets and pre-made functionality. The Asset Library currently existing in Godot only links to open source resources (e.g. hosted on GitHub or GitLab) and is unable to be used for commercial assets.
For the Godot project, a commercial asset store would be a great way to add an extra source of income, but it was not possible given our legal status until recently. With the move to the Godot Foundation , this is a new possibility that opens up.
Is solving these problems enough for Godot to become a top AA / AAA game engine? The answer is “it depends”. Godot, at its core, is and will always be (by design) a very general purpose game engine. This mean that the tools provided, while certainly capable, are still game neutral. The goal for Godot is to provide a great set of building blocks that can be used and combined to create more specialized game functions and tools.
In contrast, other types of game engines already come with a lot of high level and ready to use components and behaviors.
I don’t mean to say that Godot should not support any of that in the future. If it does, though, it will most certainly be as official extensions.
So, what kind of features are we talking about? Well..
Game specific templates and behaviors As an example, Unreal comes with a player controller, environment controller, and a lot of tools to manage the game pacing and flow. These are most likely aimed at TPS/FPS games, which are the most popular game types made with the engine.
Some of these can be found as templates in Godot’s Asset Library but are nowhere close to that functionality. Eventually, official ones should be created that are more powerful and complete.
Visual scripting While Godot had visual scripting in the past, we found that the form we had implemented didn’t really prove adequate for the needs of the community, so it was discontinued .
What we realized is that visual scripting really shines when combined together with the premade behaviors mentioned in the previous section. Without a significant amount of high level behaviors available, visual scripting is cumbersome to use as it requires a lot of work to achieve simple things by itself.
All this means that, if we produce a visual scripting solution again, it needs to go hand in hand with high level behaviors and, as such, it should be part of a set of extensions to the engine.
Specialized artist UIs When doing tasks such as shader editing, VFX (particles) or animation, there is a large difference between Godot and engines such as Unreal.
The difference is not so much in features supported. In fact, the feature set is fairly similar! The main actual difference is in how they are presented to the user.
Godot is a very modular game engine: this means that you achieve results by combining what is there. As an example, editing a particle system in Godot means a lot of subsystems must be understood and used in combination:
GPUParticles node. GPUParticlesMaterial resource (or even an optional dedicated shader). Mesh resource for each pass of the particle. Mesh material resource for each surface of the mesh (or even an optional dedicated shader). As another example, the AnimationTree in Godot requires that AnimationNodes are laid out in a tree fashion. They can export parameters, sections can be reused (because they are resources), etc.
Or even more. Godot’s animation system is often praised because anything can be animated. Any property, other nodes, etc.
This makes Godot an extremely powerful engine that gives developers a lot of flexibility, but…
It also assumes that the user is knowledgable enough about Godot and all its inner workings in order to take advantage of it. To clarify, none of these systems are too technically complex and this is part of what makes Godot appealing and accessible, but it still requires a certain level of technical and engine knowledge.
In contrast, engines like Unreal have entirely dedicated and isolated interfaces for each of these tasks (materials, cinematic timeline, VFX, animation, etc.).
Sure, they are monolithic and hence less flexible, but for a large team with high amounts of specialization, an artist does not need to understand as much in-depth how the engine works in order to produce content with it.
This shows the fundamental difference of target user between engines. If Godot wants to appeal to larger studios, it needs to provide simpler and more monolithic interfaces for artists to be able to do their job without requiring significant time investment in learning the technology.
This could, again, be supplied via official add-ons and, like the sections above, would require a significant amount of research to understand how to build it, since without actual feedback from artists we would only be guessing what is needed. But the question here is, is it worth it?
So, are we not even close? While the goal of this article is to make clear how significant the work remaining is to make Godot an offering closer to the ones in the commercial segment, it is important to not forget one key detail:
Godot is Free and Open Source Software. And as such, it can be modified by anyone to fit any purpose.
Currently, many large studios have the ability to create their own in-house technology. Still, as hardware becomes more and more complex to develop for, they are giving up in favor of spending money on pre-existing commercial technology offerings.
Godot, on the other hand, serves as an excellent platform to build upon, as it solves the vast majority of problems already. As a result, more and more studios are using Godot as a base to derive their own technology from.
This is a win/win situation, as it allows them to keep their freedom to innovate and, at the same time, avoid paying expensive technology licensing costs.
Time will tell how Godot transitions from its current state to something more widely used by larger studios, but it will definitely need significantly more work from our side.
Future I hope that this write up made more evident why Godot is such a key technology for the future of the game industry. We will continue working hard to ensure that more and more individuals and companies find Godot useful! But we need your help to happen, so please consider donating to the project .
-
+
\ No newline at end of file
diff --git a/article/whats-new-in-csharp-for-godot-4-0/index.html b/article/whats-new-in-csharp-for-godot-4-0/index.html
index e86a0d0a9f..62d951be3e 100644
--- a/article/whats-new-in-csharp-for-godot-4-0/index.html
+++ b/article/whats-new-in-csharp-for-godot-4-0/index.html
@@ -14,7 +14,7 @@
Even though the parameter is optional, the method now has a different signature. Therefore libraries built against the previous version that invoke MyMethod
won’t be able to find it.
Godot implements various systems to preserve compatibility and allow for smooth transition, even when we have to change some fundamental things. You should expect future releases of Godot 4 to work with your Godot 4.0 project, but we still leave the room for the inevitable. In case of completely incompatible changes introduced in minor releases, we promise to provide clear migration instructions and possibly tools for automated conversion. In order to further minimize issues make sure your game project as well as the libraries it uses are all referencing the same GodotSharp version.
IDE support With the move to the .NET Core CLR runtime, Godot gained support to use the official C# debugger. This means IDEs that support C# and official C# extensions support debugging Godot projects out of the box. Although configuring your IDE may require a few more steps at the moment.
Other features of Godot’s IDE extensions for C#, such as our Roslyn completion providers, are planned to be moved out of the extensions and into NuGet packages so that all IDEs can benefit without requiring a dedicated extension.
The Configuring an external editor section of the C# basics documentation page has yet to be updated to explain how to set up your editor for Godot 4.0. Stay tuned for an updated version.
Relevant links Make GodotCompletionProviders work via NuGet (GH-18 ). Future Some features didn’t make it in time for Godot 4.0, but are already on our roadmap for a future release (and some are already in the works).
Global classes Global classes, also known as named scripts, are classes registered in the editor so they can be used more conveniently. These classes appear in the Add Node and Create Resource dialogs. GDScript supports this feature with the class_name
syntax.
We tried, but ultimately failed, to bring this feature to C# in time for 4.0. Luckily, there’s already a PR open, so it’s very likely it is going to be ready for the next minor release, Godot 4.1.
Relevant links Add first-class custom resource support (GH-18 ). Allow exporting custom resources from/to GDScript, VisualScript, C#, and PluginScript (GH-48201 ). Script-class-aware Inspector & related controls (GH-62413 ). Enable QuickOpen to see scripted resources (GH-62417 ). Add C# resource export (GH-72619 ). Mobile and web support We aim to support C# on all the platforms that Godot is available on. Unfortunately, we were unable to implement support for mobile and web platforms for 4.0. These platforms gained support upstream somewhat recently so we didn’t have much time to work on it. The new workloads in .NET 6 should allow us to support the mobile and web platforms really soon, so keep an eye out for that.
Relevant links Full AOT and trimming support Support for these features can greatly reduce binary size and enable further performance optimizations. In order to support them, we need to ensure that our libraries are prepared. Dynamically accessed types can’t be trimmed, so we need to avoid reflection as much as possible.
Some target platforms don’t support JIT, so we are definitely looking into supporting AOT. We’ll be working on this as we add support for more platforms in future 4.x releases.
Relevant links GDExtension support The ability to create GDExtensions using C# will enable new and powerful workflows. This would allow us to avoid the limitations of a scripting language implementation, such as relying on file paths to reference C# classes. Users are going to be able to implement C# types that can be registered in Godot’s internal type database, ClassDB, and that would behave as built-in Nodes and Resources.
GDExtension is still very new to the engine, and is subject to change. It also has some limitations that would result in UX regressions, if C# moved away from the scripting language implementation. But it also has the potential to reduce some pain points that users have had in the past. In Godot 4.0, C# is still implemented as a scripting language, but we are planning to add support for GDExtension creation using C#. We will be keeping the scripting language implementation for your regular game scripting needs.
Consuming APIs provided by a GDExtension is also currently unsupported. We’ll keep working on bridging the gap between GDExtension and C# in future 4.x releases.
Relevant links Improve source generators extensibility As mentioned throughout this article, several areas can benefit from allowing users to create their own third-party source generators that can extend what’s currently available. For example, allowing our source generators to be affected by custom user-defined attributes.
This is tricky to get right, but we’ll be exploring some ideas in future 4.x releases to see how we can provide some extensibility without requiring users to disable and re-implement all of our source generators.
Editor unification Just like Godot 3 before it, Godot 4.0 is going to come with two versions of the editor, one “standard” and one with extra support for C# and .NET. However, the plan for 4.x is to provide one unified editor, that support everything the .NET build currently supports. If you’re a GDScript user, this doesn’t come at any cost for you. But for maintainers and C# developers it greatly simplifies things and allows for more efficient editor development and testing. To keep things slim and flexible, components required to support .NET projects would be downloaded on-demand when the user needs them.
Relevant links From embedding Mono to Godot as a library and the future (GH-2333 ). Godot as a library The concept of Godot as a library and C# being the entry point is something that a lot of users seem to be interested in. We think this could bring many benefits to C# users, it would make it easier to support all the platforms where .NET is available, and stay up-to-date with newer .NET versions.
We started exploring this area in 4.0, but it still requires more investigation and work. It’s unlikely to be finished any time soon but we’ll keep working on it in the future.
Relevant links From embedding Mono to Godot as a library and the future (GH-2333 ). As you can see, a lot of work has been done, and more work is in the pipeline. We are constantly looking into more ways to improve performance and usability of the API, and we keep fixing all the bugs that you can find. We are looking forward to see what you think of the .NET module in Godot 4.0. Don’t hesitate to reach out with your feedback! 🙂
-
+
\ No newline at end of file
diff --git a/article/why-does-godot-use-servers-and-rids/index.html b/article/why-does-godot-use-servers-and-rids/index.html
index 5a0b0ae251..e23f56a4da 100644
--- a/article/why-does-godot-use-servers-and-rids/index.html
+++ b/article/why-does-godot-use-servers-and-rids/index.html
@@ -6,7 +6,7 @@
How is this achieved? Rendering, while mostly a sequential process (GPUs are sequential), can be parallelized in a few places, like frustum culling and (in modern APIs such as Vulkan, Metal or DirectX12) creation of command lists.For Physics, it’s a bit more difficult. Physics engines divide their work per frame in the following stages:
Force Integration: Compute gravity and external forces and apply them to velocity Broad Phase: Finding pairs of close objects Near Phase: Generating collision information of overlapping objects Solver: Iterative or LCP approximation to collision resolution Velocity Integration: Move the objects Of those, mainly the near phase and the solver steps can be highly parallelized. Physics engines do this via the creation of islands , which are standalone group of objects that don’t interact with other groups. This allows to process them in parallel.
If we put all together, rendering a frame with multiple threads, splitting in jobs, becomes something like this:
A different parallelism Implementing a job system in Godot was too challenging, unfortunately. While for high-end game engines this makes sense, usability would end up severely affected. As Godot aims to be an easy to use engine, users would have too many challenges with a system like this:
It would be too easy for users to step on a piece of code that is currently being modified in a separate thread, resulting in crashes or undefined behaviors. To avoid this, locking would have to be put all over the place. This would make code more complex, and likely still impact performance due to waiting for mutexes or semaphores. Sync points would help, but it offloads more complexity to the user. For custom engines in large games this can be a benefit, but for us it impacts usability. All this led to a question: How can we make Godot multi-threaded but keep it easy to use?
The answer to this puzzle lies in understanding the following facts:
Logic sets information into Physics, but it does not need to retrieve data from it. Both Logic and Physics set information into Rendering. Neither need to retrieve data. Rendering alone has all the information it needs to display a frame and no one needs to wait for it. Physics needs to set back information (bodies that moved and collisions) into the logic layer, but this can be done anytime before the next frame. If we put everything together, it becomes obvious that all 3 tasks can run in parallel:
Physics syncs information from the previous fixed frame to Logic Logic runs the fixed step, syncs back with Physics and then goes on to do the regular step while Physics starts working. Physics pushes data to Rendering. Rendering completes whathever it was doing from the previous frame, syncs (swaps buffers), then takes the info from Logic and starts working on the new frame. This results in multi-threading, in a way that is transparent to the programmer:
Basically, the concept of “frame time” (doing everything in less that 1/60 seconds), no longer exists with this approach. Logic, Physics and Rendering have the whole frame time for themselves, and they don’t run in sync (i.e. Rendering will process the frame “later”, and both Logic and Physics will process their frame at the same time and only spend a bit syncing).
This sounds great in theory, but in implementation it’s chaos. It means both Physics and Rendering must receive commands, and that commands need to be buffered somehow. With traditional OOP and C++ this is a recipe for spaghetti code. Passing around objects that may not execute functions when you call them is weird.
Servers To make this easier, we came up with the concept of Servers . They are called like this because of their requirements:
An entity that contains all the information and state, does the processing and returns the results. It runs in parallel, it could be in the same device or even in a remote device. The user has no direct access to it. All communication is done via commands sent on a single channel. It’s clearly a server pattern!
As this is a command-oriented API, it is exposed via a single class representing the Server. Remote objects are represented with RIDs.
Servers work very well in Godot, and even allow for some extra goodies:
Background loading and information processing on threads works great (e.g. generating terrain), because each thread can create content, then register it via a single channel. It’s easy to tell when something has changed by just checking the command data. This allows Godot behaviours such as not redrawing the editor screen if nothing changed. Switching between single and multi-threaded server is easy, as it just requires an adapter server that provides the command buffering. Future For Godot 3.0 we are working on improving some aspect of servers. The main one is optimizing RIDs, which will now also cache an opaque pointer to the objects used. Before this, objects had to be looked up internally in a hash table.
The advantage of this is higher performance, while the obvious drawback is that the game can crash on release and less information will be provided. To avoid this, always check the errors reported in debug builds!
-
+
\ No newline at end of file
diff --git a/article/why-isnt-godot-ecs-based-game-engine/index.html b/article/why-isnt-godot-ecs-based-game-engine/index.html
index 6ed2e83569..b5e6358336 100644
--- a/article/why-isnt-godot-ecs-based-game-engine/index.html
+++ b/article/why-isnt-godot-ecs-based-game-engine/index.html
@@ -5,7 +5,7 @@
Juan Linietsky 26 February 2021 This article is from February 2021 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
About The topic of why Godot does not utilize ECS comes up often, so this article will explain the design decisions behind that, as well as shed some light on how Godot works.
Note : In hopes to avoid misunderstandings, I did changes to the article to better stress that this is not an inheritance vs composition or anti-ECS article to spark a flame-war. It only explains the reasoning for which Godot went with its current architecture. I don’t believe there is an universally better way to do things, so if you prefer to use other approaches or architectures that work better for you, then that’s great. Read this if you are interested to understand the reasoning behind Godot’s architecture, not to understand if one approach is better over the other.
What is ECS? ECS is a design pattern commonly used in video games (although not very often used in the rest of the software industry) which consists of having a base Entity (a container object) and Components that can be added upon it. Components provide data and the means to interact with the whole world. Finally, Systems work independently and do actions on every similar component.
This design became common in game engines and libraries in the early 2010s. The main appeal (besides architecture) is the fact that component data can be placed in contiguous memory, improving cache access. This is a common form of data-oriented optimization.
Architecturally wise, ECS aims to replace inheritance , by favouring composition, similar to how interfaces or multiple inheritance works in OOP . The key advantage in ECS is that components are dynamic (can be added or removed in run-time).
Why does Godot not use ECS? Godot uses more traditional OOP by providing Nodes , that contain both data and logic . It also makes heavy use of inheritance . It still does composition, but at a higher level (the nodes you compose are generally higher level than components in traditional ECS).
As an example of the difference, in typical ECS, a Button entity can have components like:
Transform Renderer EventHandler Button Behavior To make it simpler and avoid problems, some implementations force some components to exist when others are added.
In Godot, a Button has the full inheritance chain implicit:
Node -> CanvasItem -> Control -> Button -> Behavior Script
A more complex example can be a rigid body with a sprite attached, in typical ECS, this is found as an entity containing:
Transform RigidBody Collider Sprite In Godot, however, this is more complex. You need 3 nodes and hierarchy:
RigidBody (Node -> Node2D -> PhysicsBody2D -> RigidBody2D)
Sprite (Node -> Node2D -> Sprite)
CollisionShape (Node -> Node2D -> CollisionShape)
So, at first it seems that the approach in Godot is more wasteful, but is it really?
Node is lightweight, similar to a component. Node2D contains the 2D transform, similar to Transform component in ECS. Three nodes are required whereas one component suffices in ECS. This seems wasteful, but is it really? In the entity, the collider and the sprite will most likely not be used centred and will still require offset and rotation properties, so in the end not much changes. In Godot adding more of these (multiple sprites and colliders) is kind of free, the transform offset happens automatically. In ECS, special logic needs to exist to take care of this. As can be seen, inheritance and composition can live together and make sense in the context of Godot.
The main difference can be summed up as:
Godot does composition at a higher level than in a traditional ECS.
This has two fundamental differences in both architecture and performance.
Architecture Architecture wise, this leads to significant changes over how ECS works:
Inheritance is more explicit As inheritance is preferred (for what would be implicit relationships between components in ECS), these relationships are now explicit in the inheritance chain.
This makes it very easy to understand (to Godot users) how the scene nodes are organized and what they can do, by just looking at the inheritance tree.
Scenes are more explicit As composition happens at a higher level (nodes), it’s also very easy for Godot users to understand what a scene actually does by just looking at the scene tree:
Re-usability improves Thanks to everything being nodes (and not entities with components) it becomes easier to reuse and combine everything as much as possible. This is why Godot does not have the concept or distinction between prefabs and scenes.
Additionally, by having higher level nodes, Godot does not have the concept of “scene settings”, as these is done with nodes too.
The result is a much greater ability to do composition than in a traditional ECS approach. What typically is:
Components -> Entity -> Prefab -> Scene -> World
Godot just has nodes, and a scene is simply a bunch of nodes forming a tree, which are saved in a file. Scenes can be instantiated and inherited with a higher flexibility than in most other tools.
Optimization Leaving components aside, Godot has no differentiation between Data and System, choosing to bundle everything together in a more traditional OOP fashion. Nodes contain their own logic.
Architectural preference aside, this may seem like a problem on the optimization side. One of the biggest advantages of ECS is the Systems (data-oriented) part, which allows running through a lot of similar component’s data organized in linear memory. This brings huge performance improvements over the way Godot works with nodes.
The key point here is, again, to understand that scenes and nodes in Godot operate at a higher level than in a traditional ECS implementation.
This can be understood by examining the Engine and Game Logic parts separately:
Engine Godot uses plenty of data-oriented optimizations for physics, rendering, audio, etc. They are, however, separate systems and completely isolated.
Most (if not all) technologies that utilize ECS do it at the core engine level, by serving as the base architecture and building everything else (physics, rendering, audio, etc.) over it.
Godot instead, those subsystems are all separate and isolated (and fit inside of Servers ). I find this makes code simpler and easier to maintain and optimize (a testament to this is how tiny Godot’s codebase is compared to other game engines, while providing similar levels of functionality).
The scene system in Godot (nodes) is generally very high level when compared to a traditional ECS system. Most of what goes on happens via signal callbacks (as in, objects collided, something needs to be repainted, button was pressed, etc.). The situations where something needs to be processed every frame in Godot from the user side are very rare, as the engine will manage this internally, taking the complexity away from the user.
To put it simply, nodes are just interfaces to the actual data being processed inside servers, while in ECS the actual entities are what gets processed by the systems.
In other words, Godot as an engine tries to take the burden of processing away from the user, and instead places the focus on deciding what to do in case of an event. This ensures users have to optimize less in order to write a lot of the game code, and is part of the vision that Godot tries to convey on what should constitute an easy to use game engine .
Game logic Still (while, by far, not the majority) some types of games will see a performance benefit when using ECS in the game logic side.
These are generally games that need to process game logic on dozens of thousands of objects, where data-oriented optimizations become a must, as the amount of pages moved into CPU cache increases by several orders of magnitude, severely affecting performance (and battery usage on mobile devices).
Again, I will stress the point that, while this use case is rare (in contrast, most games are generally just in the hundreds of objects at most, for which the memory access frequency is far more than good enough without cache optimizations), games that require cache optimizations are real and do exist.
Examples of these types of games are:
City builders (lots of things going on). Sandboxes (lots of tiny things need processing every frame). Some strategy games (while not the majority, some can use thousands or dozen of thousands of game units at the same time). Other AAA games with lots of content going on. So, does this mean these types of games can’t be made with Godot?
The answer is that, you can still do anything you want, but you need to do it in a different way.
Do clever optimizations Before going head-on into brute performance, many times you can still rely on clever optimizations. Ever wondered how SimCity could run on a Commodore 64? It did so by alternating which tiles were processed every frame, so it never needed to process thousands of them at the same time (which would be impossible on a 6502 CPU).
Optimizations can vary from not processing everything in all frames, to giving more priority to processing whatever is visible (or close to the camera). Often, these optimizations will reduce the amount of objects that need to be processed by orders of magnitude, and still perform better than going full data-oriented.
Godot provides nodes such as VisibilityEnabler
to aid you on this, and upcoming Godot 4.0 has more fine grained control on disabling sections of a scene tree.
Still, this may not be enough for your game, or too much of a hassle. In this case, you may need to simply skip the scene:
Using Servers directly As mentioned before, Godot puts most of the high performance/low level parts of the engine in Servers . The APIs to servers are fully exposed in and allow you to control the whole engine at the very low level.
Most of the time, even using the servers from GDScript, C# or C++ via GDNative (or modules) is more than enough for the type of games mentioned above. While they might require high performance code for the core game loop, the logic is rarely so complex that a full-blown framework is required for it.
This is similar to just writing the game yourself in SDL/OpenGL, except the rest of the engine is still available for everything else that is not specialized game code (like UI, IO, saving, networking, etc. In other words, the remaining 90% of the game).
Using Compute Compute (GPGPU) is nearly universal nowadays (supported on desktop and mobile) and allows for huge flexibility and performance optimizations. Godot 4.0 will include easy to use Compute support for highly parallel tasks.
Using ECS Nothing prevents you to use an ECS solution in Godot. In fact, I strongly suggest to check Andrea Catania’s fantastic work on Godex , which aims to bring a high performance ECS pluggable implementation.
Future For future versions of Godot we are evaluating (optionally for when you actually need it) cache friendly ways to process similar nodes, separating data and logic in a way similar to how ECS does Systems, but adapted to how Godot works. After all, these type of optimizations are not exclusive to ECS.
Summing up While architectures and design patterns that aim to solve several problems at once are very tempting to programmers, Godot is developed with a very pragmatic approach.
While it is true that ECS brings advantages to the table, the cases where it can objectively prove to be a benefit towards Godot’s goals are very limited, so it is very hard (for us at least) to justify an architecture change, given they are the exception and not the common rule (and often optimization can be achieved by other, simpler means).
Godot has chosen the path of being user friendly and scalable above all, and we understand that for most cases, due to how the engine is designed, the cases where extreme game logic performance is needed are much lower (as the engine takes takes care of most of the heavy lifting). Still if this need arises, Godot is designed to give you answers on that front, and more options will keep coming over time.
-
+
\ No newline at end of file
diff --git a/article/why-we-broke-your-pr/index.html b/article/why-we-broke-your-pr/index.html
index b1ac9abbee..b7f90abbaf 100644
--- a/article/why-we-broke-your-pr/index.html
+++ b/article/why-we-broke-your-pr/index.html
@@ -17,7 +17,7 @@
The .write proxy will work for read-only access as well, however a copy may be made. From now on it would be better to have a quick think about whether or not the use of the variable you’re reading is constant or not. Particularly in loops. Look at line 220 of visual_server_canvas.cpp for instance . Using .write in this case would’ve worked but wouldn’t have actually saved a CoW operation.
I’d also like to ask all PR reviewers to please be mindful of the correct use of .write from now on.
-
+
\ No newline at end of file
diff --git a/article/will-your-contribution-be-merged-heres-how-tell/index.html b/article/will-your-contribution-be-merged-heres-how-tell/index.html
index 9eaff1d436..306de4fa3b 100644
--- a/article/will-your-contribution-be-merged-heres-how-tell/index.html
+++ b/article/will-your-contribution-be-merged-heres-how-tell/index.html
@@ -5,7 +5,7 @@
Juan Linietsky 19 November 2018 This article is from November 2018 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
The pull request workflow is great, because it allows proposing changes to the codebase in a way where they can be evaluated, reviewed (with feedback) and eventually merged or rejected. Despite this, a large amount of pull requests (PRs) get rejected for reasons that are often unclear to new contributors.
To avoid unnecesary work, this short article has some suggestions on what is desired and what is not, and the general rules for accepting or rejecting pull requests.
Ask first Ask about what you want to do, by either opening an issue , or asking in the Godot contributors chat platform . This will defintely save you time and effort, as other contributors will better guide you on whether your proposal is desired or not (or what needs to be changed so it would be).
We refuse by default Contributions are considered rejected until proven useful. There are no hypotheticals here and we never accept something because it might be useful . Functionality is merged only when there is a valid and proven real-life use case for it. This means that someone (and especially more than one user) needs this new functionality for their actual projects, in order to save considerable amounts of time or just because it’s otherwise impossible to advance development without it.
Again, hypothetical use cases are ignored most of the time, whereas real projects being worked on (and their needs) take the priority.
This also means that it’s your resonsibility (or that of fellow interested users) to demonstrate the use cases and need for a specific feature. Discuss it beforehand as mentioned, and add some details in your pull request (or the affiliated issue) about what this proposal aims to solve. A never-discussed, no-comment PR with a terse “Add feature X” 500 LOC commit will likely produce a deep sigh among PR reviewers, more than anticipation for a potential great feature.
Bloat accumulates quickly Please understand that we need to keep the engine size as small as possible. This ensures download on Steam, Mobile stores or HTML5 are as smooth as possible. Adding features that will not be used (or seldom used when then can be easily worked around) just adds more weight to the engine.
Even if a feature is small (say, a few kilobytes), we get several requests of them per week. If we were to accept/merge all of them as a general rule, Godot would grow several megabytes bigger over time.
And even if size was not a problem, more code means more difficulty for potential contributors and users to understand how the engine works, as well as more surface area for potential bugs.
We really do our best effort to keep it simple and small, help us with this!
General logic The following diagram shows the logic steps used to evaluate pull requests. If you can ask yourself the same questions, everyone’s time will be saved.
This can seem a bit confusing at first, so let’s go over it question by question:
Do you need it? Just adding a feature because it seems like it would be a cool addition does not cut it (feel free to ask first, of course). As mentioned before, we are only interested in real-life use cases . This needs to be for a project being worked on (or for types of projects that are not possible without this feature).
Does this feature cover a common use case? Is this something you need to use often for your project? Will other users also find it often useful? If a feature covers a common use case and it’s needed very often, then it may be worth considering for addition.
Even if it’s not needed often but implementing it from the user’s side is difficult, then it may also be worth considering for addition.
This is why the following question is also important..
Can it be worked around with a few lines of code? If you don’t need a feature that often (say, just a couple of times) and working it around can be easily done by writing a small amount of scripting code, then there is no merit in integrating this as a new feature. It’s better that this complexity goes on your side rather than ours.
Can you program C++? It should be obvious from this article, but remember that, in a community-driven FOSS project like Godot, no one is obliged to do anything for anyone. If you can work on something yourself, feel free to do it and propose it. We will lend you a hand if you need!
-
+
\ No newline at end of file
diff --git a/article/winter-holiday-godot-game-jam/index.html b/article/winter-holiday-godot-game-jam/index.html
index 2aeb11c172..7b63966dc6 100644
--- a/article/winter-holiday-godot-game-jam/index.html
+++ b/article/winter-holiday-godot-game-jam/index.html
@@ -5,7 +5,7 @@
Juan Linietsky 9 December 2014 This article is from December 2014 , some of its contents might be outdated and no longer accurate. You can find up-to-date information about the engine in the official documentation .
GamingPenguin from the forum is organizing a Winter Holidays Godot Game Jam! (Summer Holidays Game Jam for us in the southern hemisphere).
The rules seem to be (copied from the forum):
The game must be made with Godot The game should have a Winter Holiday theme You must enter using the entry thread here: (Coming Soon) You must open source the full project, code and assets, Binaries for Windows, Mac and Linux are not required but would be very welcome No Pornographic or offensive games Games can be worked on by multiple people One person can submit more than one game This can be a nice chance to use or learn Godot for a little project and get to know the community better, as well as learning from the other projects.
The forum url is: http://www.godotengine.org/forum/viewtopic.php?f=7&t=1172
Please spread!
-
+
\ No newline at end of file
diff --git a/article/x11-display-server-progress-report/index.html b/article/x11-display-server-progress-report/index.html
index 2c0a2ee6fd..9c6ef0c99a 100644
--- a/article/x11-display-server-progress-report/index.html
+++ b/article/x11-display-server-progress-report/index.html
@@ -68,7 +68,7 @@
Because this protocol requires asynchronous communication to receive each chunk of data and send notifications for the next one, I’ve implemented it in a similar way as for SAVE_TARGETS
, with a blocking call that handles all events or aborts in the case of timeout.
More details about INCR
protocol in the X11 documentation here .
Pull Request: GH-42676
What next? After completing this work package, most regressions related to X11 should be fixed now for Godot 4, even if there will still be some maintenance to do on all platforms before the release.
Xlib or XCB: While working on the X11 Display Server, I’ve chosen to focus on fixing specific issues in the current system with minimal refactoring, but using XCB to modernize the implementation is currently in discussion among contributors.
Wayland: Support for Wayland will be added to Godot in the future. It will be done as a separate Display Server implementation.
I hope this post put some light on the way Godot works under the hood in this specific area, for current and future contributors. See you around!
Credits illustration: Tux logo by rafael3334 (modified from source )
-
+
\ No newline at end of file
diff --git a/atom.xml b/atom.xml
index 78b4b365a2..d8e769390c 100644
--- a/atom.xml
+++ b/atom.xml
@@ -1 +1 @@
-Godot Engine Official 2024-12-11T18:06:01+00:00 https://godotengine.org/ Meet the creator behind the Godot Game Awards 2024-12-09T18:00:00+00:00 https://godotengine.org/article/godot-game-awards-stayathomedev/ StayAtHomeDev has been sharing his passion on YouTube for over two years and now he's running the awards. Emi Dev snapshot: Godot 4.4 dev 6 2024-12-05T17:00:00+00:00 https://godotengine.org/article/dev-snapshot-godot-4-4-dev-6/ New snapshot on the road to beta, with a lot of 3D workflow goodies! Thaddeus Crews Beyond #100000: You're breathtaking! 2024-12-04T19:00:00+00:00 https://godotengine.org/article/beyond-100000-you-re-breathtaking/ As we reach issue #100,000 on GitHub, we celebrate with a little retrospective on our issue and pull request growth. Rémi Verschelde Godot Foundation Update December 2024 2024-12-02T17:00:00+00:00 https://godotengine.org/article/godot-foundation-update-dec-2024/ We’ve made progress on several key initiatives for the organization and the Godot ecosystem. Here’s what we’ve been up to. Godot Foundation Statement on GodLoader malware loader 2024-11-28T11:00:00+00:00 https://godotengine.org/article/statement-on-godloader-malware-loader/ Godot security team clarifies the risk exposed by Check Point Research's report. Godot Security Team Dev snapshot: Godot 4.4 dev 5 2024-11-21T18:00:00+00:00 https://godotengine.org/article/dev-snapshot-godot-4-4-dev-5/ With GodotCon behind us and our developers recuperated, we're thrilled to return to a more frequent release-cycle. Thaddeus Crews GodotCon 24: Berlin Edition 2024-11-13T18:30:00+00:00 https://godotengine.org/article/review-godotcon24/ Our biggest conference yet! Nat Dev snapshot: Godot 4.4 dev 4 2024-11-08T12:00:00+00:00 https://godotengine.org/article/dev-snapshot-godot-4-4-dev-4/ After a short delay due to GodotCon, we are back with another exciting update. Clay John Dev snapshot: Godot 4.4 dev 3 2024-10-03T12:00:00+00:00 https://godotengine.org/article/dev-snapshot-godot-4-4-dev-3/ We haven't slowed down and are bringing you another feature-packed update! Clay John Godot XR update - October 2024 2024-10-02T12:00:00+00:00 https://godotengine.org/article/godot-xr-update-oct-2024/ Looking back at a year of XR development. Bastiaan Olij Godot SDK Integrations 2024-09-24T14:30:00+00:00 https://godotengine.org/article/godot-sdk-integrations/ A new GitHub organization to centralize the community efforts to provide support for third-party SDKs for Godot. Godot Foundation Godot Rendering Priorities: September 2024 2024-09-23T15:45:00+00:00 https://godotengine.org/article/rendering-priorities-september-2024/ 4.3 is out. It's time for an update! Clay John Godot Editor on the Meta Horizon Store 2024-09-20T16:00:00+00:00 https://godotengine.org/article/godot-editor-horizon-store-early-access-release/ Introducing the Godot Editor for Meta Quest (Horizon OS) devices Fredia Huya-Kouadio Dev snapshot: Godot 4.4 dev 2 2024-09-10T16:00:00+00:00 https://godotengine.org/article/dev-snapshot-godot-4-4-dev-2/ The PR harvest keeps going strongly for Godot 4.4, with massive new features such as typed dictionaries and error-less project import! Rémi Verschelde Godot 3.6 finally released! 2024-09-09T11:00:00+00:00 https://godotengine.org/article/godot-3-6-finally-released/ After 2 years of development, Godot 3.6 is finally out and it comes fully packed with features and quality of life improvements! This includes 2D physics interpolation and hierarchical culling, and 3D mesh merging, level of detail, tighter shadow culling, ORM materials, and more. lawnjelly Submissions open for Godot 2024 showreel! 2024-09-05T15:00:00+00:00 https://godotengine.org/article/submissions-open-godot-2024-showreel/ Showcase your Godot creations in 2024! We're inviting submissions of short videos featuring your published or in-progress Godot games or tools. Don't miss this chance to be a part of it! Emi About Official Console Ports 2024-09-03T18:30:00+00:00 https://godotengine.org/article/about-official-console-ports/ With this post we aim to address the community’s questions about the lack of official console ports through the Godot Foundation. Emi Meeting the community at gamescom 2024 2024-09-02T18:30:00+00:00 https://godotengine.org/article/review-gamescom-2024/ Back from gamescom, ready to report. Nat Dev snapshot: Godot 4.4 dev 1 2024-08-26T13:00:00+00:00 https://godotengine.org/article/dev-snapshot-godot-4-4-dev-1/ The first snapshot after releasing 4.3, already packed with new features! Clay John Godot 4.3, a shared effort 2024-08-15T11:00:00+00:00 https://godotengine.org/article/godot-4-3-a-shared-effort/ With over 3,500 commits authored by over 500 contributors, the latest Godot Engine release comes packed full of new features and improvements. Godot contributors Design of the Skeleton Modifier 3D 2024-08-12T10:00:00+00:00 https://godotengine.org/article/design-of-the-skeleton-modifier-3d/ We have reworked the skeleton bone update process to add SkeletonModifier3D for modifying the Skeleton. Silc Renew Release candidate: Godot 4.3 RC 3 2024-08-08T14:00:00+00:00 https://godotengine.org/article/release-candidate-godot-4-3-rc-3/ With all known major regressions fixed, we are now publishing a third release candidate to confirm that 4.3 is ready to go stable. Rémi Verschelde Gamescom here we come! 2024-08-06T17:00:00+00:00 https://godotengine.org/article/gamescom-2024/ We are once again attending gamescom, and organizing two meet-up opportunities this time. Nat Introducing the improved ufbx importer in Godot 4.3 2024-08-02T20:36:00+00:00 https://godotengine.org/article/introducing-the-improved-ufbx-importer-in-godot-4-3/ Godot 4.3 now includes native .fbx support Lyuma
\ No newline at end of file
+Godot Engine Official 2024-12-17T15:53:44+00:00 https://godotengine.org/ Meet the creator behind the Godot Game Awards 2024-12-09T18:00:00+00:00 https://godotengine.org/article/godot-game-awards-stayathomedev/ StayAtHomeDev has been sharing his passion on YouTube for over two years and now he's running the awards. Emi Dev snapshot: Godot 4.4 dev 6 2024-12-05T17:00:00+00:00 https://godotengine.org/article/dev-snapshot-godot-4-4-dev-6/ New snapshot on the road to beta, with a lot of 3D workflow goodies! Thaddeus Crews Beyond #100000: You're breathtaking! 2024-12-04T19:00:00+00:00 https://godotengine.org/article/beyond-100000-you-re-breathtaking/ As we reach issue #100,000 on GitHub, we celebrate with a little retrospective on our issue and pull request growth. Rémi Verschelde Godot Foundation Update December 2024 2024-12-02T17:00:00+00:00 https://godotengine.org/article/godot-foundation-update-dec-2024/ We’ve made progress on several key initiatives for the organization and the Godot ecosystem. Here’s what we’ve been up to. Godot Foundation Statement on GodLoader malware loader 2024-11-28T11:00:00+00:00 https://godotengine.org/article/statement-on-godloader-malware-loader/ Godot security team clarifies the risk exposed by Check Point Research's report. Godot Security Team Dev snapshot: Godot 4.4 dev 5 2024-11-21T18:00:00+00:00 https://godotengine.org/article/dev-snapshot-godot-4-4-dev-5/ With GodotCon behind us and our developers recuperated, we're thrilled to return to a more frequent release-cycle. Thaddeus Crews GodotCon 24: Berlin Edition 2024-11-13T18:30:00+00:00 https://godotengine.org/article/review-godotcon24/ Our biggest conference yet! Nat Dev snapshot: Godot 4.4 dev 4 2024-11-08T12:00:00+00:00 https://godotengine.org/article/dev-snapshot-godot-4-4-dev-4/ After a short delay due to GodotCon, we are back with another exciting update. Clay John Dev snapshot: Godot 4.4 dev 3 2024-10-03T12:00:00+00:00 https://godotengine.org/article/dev-snapshot-godot-4-4-dev-3/ We haven't slowed down and are bringing you another feature-packed update! Clay John Godot XR update - October 2024 2024-10-02T12:00:00+00:00 https://godotengine.org/article/godot-xr-update-oct-2024/ Looking back at a year of XR development. Bastiaan Olij Godot SDK Integrations 2024-09-24T14:30:00+00:00 https://godotengine.org/article/godot-sdk-integrations/ A new GitHub organization to centralize the community efforts to provide support for third-party SDKs for Godot. Godot Foundation Godot Rendering Priorities: September 2024 2024-09-23T15:45:00+00:00 https://godotengine.org/article/rendering-priorities-september-2024/ 4.3 is out. It's time for an update! Clay John Godot Editor on the Meta Horizon Store 2024-09-20T16:00:00+00:00 https://godotengine.org/article/godot-editor-horizon-store-early-access-release/ Introducing the Godot Editor for Meta Quest (Horizon OS) devices Fredia Huya-Kouadio Dev snapshot: Godot 4.4 dev 2 2024-09-10T16:00:00+00:00 https://godotengine.org/article/dev-snapshot-godot-4-4-dev-2/ The PR harvest keeps going strongly for Godot 4.4, with massive new features such as typed dictionaries and error-less project import! Rémi Verschelde Godot 3.6 finally released! 2024-09-09T11:00:00+00:00 https://godotengine.org/article/godot-3-6-finally-released/ After 2 years of development, Godot 3.6 is finally out and it comes fully packed with features and quality of life improvements! This includes 2D physics interpolation and hierarchical culling, and 3D mesh merging, level of detail, tighter shadow culling, ORM materials, and more. lawnjelly Submissions open for Godot 2024 showreel! 2024-09-05T15:00:00+00:00 https://godotengine.org/article/submissions-open-godot-2024-showreel/ Showcase your Godot creations in 2024! We're inviting submissions of short videos featuring your published or in-progress Godot games or tools. Don't miss this chance to be a part of it! Emi About Official Console Ports 2024-09-03T18:30:00+00:00 https://godotengine.org/article/about-official-console-ports/ With this post we aim to address the community’s questions about the lack of official console ports through the Godot Foundation. Emi Meeting the community at gamescom 2024 2024-09-02T18:30:00+00:00 https://godotengine.org/article/review-gamescom-2024/ Back from gamescom, ready to report. Nat Dev snapshot: Godot 4.4 dev 1 2024-08-26T13:00:00+00:00 https://godotengine.org/article/dev-snapshot-godot-4-4-dev-1/ The first snapshot after releasing 4.3, already packed with new features! Clay John Godot 4.3, a shared effort 2024-08-15T11:00:00+00:00 https://godotengine.org/article/godot-4-3-a-shared-effort/ With over 3,500 commits authored by over 500 contributors, the latest Godot Engine release comes packed full of new features and improvements. Godot contributors Design of the Skeleton Modifier 3D 2024-08-12T10:00:00+00:00 https://godotengine.org/article/design-of-the-skeleton-modifier-3d/ We have reworked the skeleton bone update process to add SkeletonModifier3D for modifying the Skeleton. Silc Renew Release candidate: Godot 4.3 RC 3 2024-08-08T14:00:00+00:00 https://godotengine.org/article/release-candidate-godot-4-3-rc-3/ With all known major regressions fixed, we are now publishing a third release candidate to confirm that 4.3 is ready to go stable. Rémi Verschelde Gamescom here we come! 2024-08-06T17:00:00+00:00 https://godotengine.org/article/gamescom-2024/ We are once again attending gamescom, and organizing two meet-up opportunities this time. Nat Introducing the improved ufbx importer in Godot 4.3 2024-08-02T20:36:00+00:00 https://godotengine.org/article/introducing-the-improved-ufbx-importer-in-godot-4-3/ Godot 4.3 now includes native .fbx support Lyuma
\ No newline at end of file
diff --git a/blog/10/index.html b/blog/10/index.html
index e2025c3833..67c331687f 100644
--- a/blog/10/index.html
+++ b/blog/10/index.html
@@ -63,7 +63,7 @@
10
11
12
-
+
\ No newline at end of file
diff --git a/blog/11/index.html b/blog/11/index.html
index 4ee103e817..4ad10ebc60 100644
--- a/blog/11/index.html
+++ b/blog/11/index.html
@@ -63,7 +63,7 @@
11
12
13
-
+
\ No newline at end of file
diff --git a/blog/12/index.html b/blog/12/index.html
index c34cd2705d..2b294ffcde 100644
--- a/blog/12/index.html
+++ b/blog/12/index.html
@@ -63,7 +63,7 @@
12
13
14
-
+
\ No newline at end of file
diff --git a/blog/13/index.html b/blog/13/index.html
index c89871c85a..b85250c880 100644
--- a/blog/13/index.html
+++ b/blog/13/index.html
@@ -63,7 +63,7 @@
13
14
15
-
+
\ No newline at end of file
diff --git a/blog/14/index.html b/blog/14/index.html
index b3bd3ba3fd..66bf860c99 100644
--- a/blog/14/index.html
+++ b/blog/14/index.html
@@ -63,7 +63,7 @@
14
15
16
-
+
\ No newline at end of file
diff --git a/blog/15/index.html b/blog/15/index.html
index df6576e55e..6b7a79fad0 100644
--- a/blog/15/index.html
+++ b/blog/15/index.html
@@ -63,7 +63,7 @@
15
16
17
-
+
\ No newline at end of file
diff --git a/blog/16/index.html b/blog/16/index.html
index ff95f1a40b..5d5ff22ff1 100644
--- a/blog/16/index.html
+++ b/blog/16/index.html
@@ -64,7 +64,7 @@
16
17
18
-
+
\ No newline at end of file
diff --git a/blog/17/index.html b/blog/17/index.html
index ad41b361ae..cb3662412a 100644
--- a/blog/17/index.html
+++ b/blog/17/index.html
@@ -63,7 +63,7 @@
17
18
19
-
+
\ No newline at end of file
diff --git a/blog/18/index.html b/blog/18/index.html
index 800c7e9658..91c49890f1 100644
--- a/blog/18/index.html
+++ b/blog/18/index.html
@@ -63,7 +63,7 @@
18
19
20
-
+
\ No newline at end of file
diff --git a/blog/19/index.html b/blog/19/index.html
index 2ddc6e5bde..f3261a7f26 100644
--- a/blog/19/index.html
+++ b/blog/19/index.html
@@ -63,7 +63,7 @@
19
20
21
-
+
\ No newline at end of file
diff --git a/blog/2/index.html b/blog/2/index.html
index 305643e03b..dd6f845785 100644
--- a/blog/2/index.html
+++ b/blog/2/index.html
@@ -63,7 +63,7 @@
3
4
5
-
+
\ No newline at end of file
diff --git a/blog/20/index.html b/blog/20/index.html
index 32c2b7ee08..ad2f8fc0ce 100644
--- a/blog/20/index.html
+++ b/blog/20/index.html
@@ -63,7 +63,7 @@
20
21
22
-
+
\ No newline at end of file
diff --git a/blog/21/index.html b/blog/21/index.html
index 6f659c7228..75859cc8a6 100644
--- a/blog/21/index.html
+++ b/blog/21/index.html
@@ -63,7 +63,7 @@
21
22
23
-
+
\ No newline at end of file
diff --git a/blog/22/index.html b/blog/22/index.html
index 6f5f2d85b2..573effc0f0 100644
--- a/blog/22/index.html
+++ b/blog/22/index.html
@@ -64,7 +64,7 @@
22
23
24
-
+
\ No newline at end of file
diff --git a/blog/23/index.html b/blog/23/index.html
index bb3ac21c2d..b5f437ddad 100644
--- a/blog/23/index.html
+++ b/blog/23/index.html
@@ -66,7 +66,7 @@
23
24
25
-
+
\ No newline at end of file
diff --git a/blog/24/index.html b/blog/24/index.html
index a6f002d94a..b655e74f62 100644
--- a/blog/24/index.html
+++ b/blog/24/index.html
@@ -68,7 +68,7 @@
24
25
26
-
+
\ No newline at end of file
diff --git a/blog/25/index.html b/blog/25/index.html
index e1c9731b2b..765406418b 100644
--- a/blog/25/index.html
+++ b/blog/25/index.html
@@ -63,7 +63,7 @@
25
26
27
-
+
\ No newline at end of file
diff --git a/blog/26/index.html b/blog/26/index.html
index 6b5f1d5ad6..e4cce6af31 100644
--- a/blog/26/index.html
+++ b/blog/26/index.html
@@ -64,7 +64,7 @@
26
27
28
-
+
\ No newline at end of file
diff --git a/blog/27/index.html b/blog/27/index.html
index dd57a24cc7..00f2afa164 100644
--- a/blog/27/index.html
+++ b/blog/27/index.html
@@ -63,7 +63,7 @@
27
28
29
-
+
\ No newline at end of file
diff --git a/blog/28/index.html b/blog/28/index.html
index a8cecf1da0..f765cdf1ee 100644
--- a/blog/28/index.html
+++ b/blog/28/index.html
@@ -63,7 +63,7 @@
27
28
29
-
+
\ No newline at end of file
diff --git a/blog/29/index.html b/blog/29/index.html
index 2a776f04e8..794e84ebbb 100644
--- a/blog/29/index.html
+++ b/blog/29/index.html
@@ -18,7 +18,7 @@
26
27
28
-29
+29
\ No newline at end of file
diff --git a/blog/3/index.html b/blog/3/index.html
index 7ec63241da..2356db02b4 100644
--- a/blog/3/index.html
+++ b/blog/3/index.html
@@ -63,7 +63,7 @@
3
4
5
-
+
\ No newline at end of file
diff --git a/blog/4/index.html b/blog/4/index.html
index 633e013af5..ad5704e1e3 100644
--- a/blog/4/index.html
+++ b/blog/4/index.html
@@ -63,7 +63,7 @@
4
5
6
-
+
\ No newline at end of file
diff --git a/blog/5/index.html b/blog/5/index.html
index cce1b5d71a..41b06e6e91 100644
--- a/blog/5/index.html
+++ b/blog/5/index.html
@@ -63,7 +63,7 @@
5
6
7
-
+
\ No newline at end of file
diff --git a/blog/6/index.html b/blog/6/index.html
index 068f744b03..6f481c86bd 100644
--- a/blog/6/index.html
+++ b/blog/6/index.html
@@ -63,7 +63,7 @@
6
7
8
-
+
\ No newline at end of file
diff --git a/blog/7/index.html b/blog/7/index.html
index fbd8cdf811..3aefc54a31 100644
--- a/blog/7/index.html
+++ b/blog/7/index.html
@@ -63,7 +63,7 @@
7
8
9
-
+
\ No newline at end of file
diff --git a/blog/8/index.html b/blog/8/index.html
index 303d85a049..8fad0dbf8d 100644
--- a/blog/8/index.html
+++ b/blog/8/index.html
@@ -63,7 +63,7 @@
8
9
10
-
+
\ No newline at end of file
diff --git a/blog/9/index.html b/blog/9/index.html
index 2c769dd23f..ee19beebe2 100644
--- a/blog/9/index.html
+++ b/blog/9/index.html
@@ -63,7 +63,7 @@
9
10
11
-
+
\ No newline at end of file
diff --git a/blog/events/2/index.html b/blog/events/2/index.html
index 1ae613ad44..14b0b0858a 100644
--- a/blog/events/2/index.html
+++ b/blog/events/2/index.html
@@ -60,7 +60,7 @@
1
2
3
-
+
\ No newline at end of file
diff --git a/blog/events/3/index.html b/blog/events/3/index.html
index a282e334cb..523c4033e2 100644
--- a/blog/events/3/index.html
+++ b/blog/events/3/index.html
@@ -52,7 +52,7 @@
- 9 December 2014 Winter holiday Godot game jam! GamingPenguin from the forum is organizing a Winter Holidays Godot Game Jam! (Summer Holidays Game Jam for us in the southern hemisphere).
+3
\ No newline at end of file
diff --git a/blog/events/index.html b/blog/events/index.html
index bba6c112d7..70a24f3263 100644
--- a/blog/events/index.html
+++ b/blog/events/index.html
@@ -57,7 +57,7 @@
- 21 January 2021 Online GodotCon 2021: Schedule Online GodotCon 2021 is right around the corner, streaming on Saturday, January 23rd from 8:45 am UTC! Join us on the YouTube Premiere to watch the conference at the same time as all other Godot users in the world, and use our new open source chat platform to discuss about talks or Godot in general with attendees and speakers.
+
\ No newline at end of file
diff --git a/blog/index.html b/blog/index.html
index 5483cadcc4..bb68eab835 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -61,7 +61,7 @@
3
4
5
-
+
\ No newline at end of file
diff --git a/blog/news/2/index.html b/blog/news/2/index.html
index f908b47fb5..8b4fbe2bb3 100644
--- a/blog/news/2/index.html
+++ b/blog/news/2/index.html
@@ -63,7 +63,7 @@
3
4
5
-
+
\ No newline at end of file
diff --git a/blog/news/3/index.html b/blog/news/3/index.html
index 365734accd..b57b86b203 100644
--- a/blog/news/3/index.html
+++ b/blog/news/3/index.html
@@ -63,7 +63,7 @@
3
4
5
-
+
\ No newline at end of file
diff --git a/blog/news/4/index.html b/blog/news/4/index.html
index 4139b960ad..289c9e64df 100644
--- a/blog/news/4/index.html
+++ b/blog/news/4/index.html
@@ -67,7 +67,7 @@
4
5
6
-
+
\ No newline at end of file
diff --git a/blog/news/5/index.html b/blog/news/5/index.html
index 8e041692e0..f02dcfb191 100644
--- a/blog/news/5/index.html
+++ b/blog/news/5/index.html
@@ -63,7 +63,7 @@
4
5
6
-
+
\ No newline at end of file
diff --git a/blog/news/6/index.html b/blog/news/6/index.html
index 645ebcd6fb..82c79a6885 100644
--- a/blog/news/6/index.html
+++ b/blog/news/6/index.html
@@ -31,7 +31,7 @@
3
4
5
-6
+6
\ No newline at end of file
diff --git a/blog/news/index.html b/blog/news/index.html
index 4cdde2eb1f..84e4e55dd5 100644
--- a/blog/news/index.html
+++ b/blog/news/index.html
@@ -61,7 +61,7 @@
3
4
5
-
+
\ No newline at end of file
diff --git a/blog/pre-release/10/index.html b/blog/pre-release/10/index.html
index 57e069df2b..24b524462a 100644
--- a/blog/pre-release/10/index.html
+++ b/blog/pre-release/10/index.html
@@ -51,7 +51,7 @@
7
8
9
-10
+10
\ No newline at end of file
diff --git a/blog/pre-release/2/index.html b/blog/pre-release/2/index.html
index 25cfa40c41..ea8a29a40a 100644
--- a/blog/pre-release/2/index.html
+++ b/blog/pre-release/2/index.html
@@ -63,7 +63,7 @@
3
4
5
-
+
\ No newline at end of file
diff --git a/blog/pre-release/3/index.html b/blog/pre-release/3/index.html
index ba509c9aec..6d4e9d398f 100644
--- a/blog/pre-release/3/index.html
+++ b/blog/pre-release/3/index.html
@@ -63,7 +63,7 @@
3
4
5
-
+
\ No newline at end of file
diff --git a/blog/pre-release/4/index.html b/blog/pre-release/4/index.html
index babb3ed51c..309874a4de 100644
--- a/blog/pre-release/4/index.html
+++ b/blog/pre-release/4/index.html
@@ -63,7 +63,7 @@
4
5
6
-
+
\ No newline at end of file
diff --git a/blog/pre-release/5/index.html b/blog/pre-release/5/index.html
index 53e4f42ca9..59c99b72b3 100644
--- a/blog/pre-release/5/index.html
+++ b/blog/pre-release/5/index.html
@@ -63,7 +63,7 @@
5
6
7
-
+
\ No newline at end of file
diff --git a/blog/pre-release/6/index.html b/blog/pre-release/6/index.html
index 573fe46fc8..94ad2432f4 100644
--- a/blog/pre-release/6/index.html
+++ b/blog/pre-release/6/index.html
@@ -63,7 +63,7 @@
6
7
8
-
+
\ No newline at end of file
diff --git a/blog/pre-release/7/index.html b/blog/pre-release/7/index.html
index eb6d99d6c2..4f1364ac50 100644
--- a/blog/pre-release/7/index.html
+++ b/blog/pre-release/7/index.html
@@ -64,7 +64,7 @@
7
8
9
-
+
\ No newline at end of file
diff --git a/blog/pre-release/8/index.html b/blog/pre-release/8/index.html
index 3a9ef18905..8d1de63ce5 100644
--- a/blog/pre-release/8/index.html
+++ b/blog/pre-release/8/index.html
@@ -63,7 +63,7 @@
8
9
10
-
+
\ No newline at end of file
diff --git a/blog/pre-release/9/index.html b/blog/pre-release/9/index.html
index 258db7d57b..187831d145 100644
--- a/blog/pre-release/9/index.html
+++ b/blog/pre-release/9/index.html
@@ -63,7 +63,7 @@
8
9
10
-
+
\ No newline at end of file
diff --git a/blog/pre-release/index.html b/blog/pre-release/index.html
index ec7b690c50..e139a2641f 100644
--- a/blog/pre-release/index.html
+++ b/blog/pre-release/index.html
@@ -61,7 +61,7 @@
3
4
5
-
+
\ No newline at end of file
diff --git a/blog/progress-report/2/index.html b/blog/progress-report/2/index.html
index 0bb0c08d0e..9fe6c1d43b 100644
--- a/blog/progress-report/2/index.html
+++ b/blog/progress-report/2/index.html
@@ -63,7 +63,7 @@
3
4
5
-
+
\ No newline at end of file
diff --git a/blog/progress-report/3/index.html b/blog/progress-report/3/index.html
index 4af64fb127..f3b69e6a82 100644
--- a/blog/progress-report/3/index.html
+++ b/blog/progress-report/3/index.html
@@ -63,7 +63,7 @@
3
4
5
-
+
\ No newline at end of file
diff --git a/blog/progress-report/4/index.html b/blog/progress-report/4/index.html
index 4728779e61..f11c4571ff 100644
--- a/blog/progress-report/4/index.html
+++ b/blog/progress-report/4/index.html
@@ -63,7 +63,7 @@
4
5
6
-
+
\ No newline at end of file
diff --git a/blog/progress-report/5/index.html b/blog/progress-report/5/index.html
index 873e4f6986..8fee663b66 100644
--- a/blog/progress-report/5/index.html
+++ b/blog/progress-report/5/index.html
@@ -63,7 +63,7 @@
5
6
7
-
+
\ No newline at end of file
diff --git a/blog/progress-report/6/index.html b/blog/progress-report/6/index.html
index 36367a32e7..45856d77bb 100644
--- a/blog/progress-report/6/index.html
+++ b/blog/progress-report/6/index.html
@@ -65,7 +65,7 @@
5
6
7
-
+
\ No newline at end of file
diff --git a/blog/progress-report/7/index.html b/blog/progress-report/7/index.html
index df39cd5b72..f42e54536e 100644
--- a/blog/progress-report/7/index.html
+++ b/blog/progress-report/7/index.html
@@ -58,7 +58,7 @@
4
5
6
-7
+7
\ No newline at end of file
diff --git a/blog/progress-report/index.html b/blog/progress-report/index.html
index 6734b31f46..f20980427d 100644
--- a/blog/progress-report/index.html
+++ b/blog/progress-report/index.html
@@ -61,7 +61,7 @@
3
4
5
-
+
\ No newline at end of file
diff --git a/blog/release/2/index.html b/blog/release/2/index.html
index b6e838661e..7ec1f5524c 100644
--- a/blog/release/2/index.html
+++ b/blog/release/2/index.html
@@ -60,7 +60,7 @@
1
2
3
-
+
\ No newline at end of file
diff --git a/blog/release/3/index.html b/blog/release/3/index.html
index e9fa92d1c0..749d2446ba 100644
--- a/blog/release/3/index.html
+++ b/blog/release/3/index.html
@@ -32,7 +32,7 @@
Because of this we are opening the engine to the community so anyone can develop games using Godot and benefit from it’s amazing workflow design. We are also opening the source code with the most generous license, MIT with the hope that other developers will contribute to it and publish their games without any restriction.
+3
\ No newline at end of file
diff --git a/blog/release/index.html b/blog/release/index.html
index 4f97695194..2252244d19 100644
--- a/blog/release/index.html
+++ b/blog/release/index.html
@@ -57,7 +57,7 @@
- 17 December 2021 Maintenance release: Godot 3.4.1 Godot 3.4.1 is the first maintenance release in the 3.4 stable branch, fixing a number of issues (including some 3.4 regressions) while preserving compatibility with 3.4-stable. Alongside general bugfixing, it improves Godot's compatibility with Windows 11's new Windows Terminal, which prevented starting the Godot editor from the project manager.
+
\ No newline at end of file
diff --git a/blog/showcase/index.html b/blog/showcase/index.html
index 7b820fa9d7..2395bde5d5 100644
--- a/blog/showcase/index.html
+++ b/blog/showcase/index.html
@@ -39,7 +39,7 @@
Juan Linietsky
- 16 April 2019 Announcing the Godot 2019 showreel Another year, another showreel. As every year, the amount of quality games being created by Godot has increased significantly (as did the amount of submissions).
Juan Linietsky
-
- 22 February 2019 Submissions open for Godot 2019 showreel Are you proud of your game and would you like us to showcase it in Godot's 2019 showreel? Please send us a short video (10-15 secs) for us to include it!
+ - 22 February 2019 Submissions open for Godot 2019 showreel Are you proud of your game and would you like us to showcase it in Godot's 2019 showreel? Please send us a short video (10-15 secs) for us to include it!
\ No newline at end of file
diff --git a/code-of-conduct/index.html b/code-of-conduct/index.html
index ca750d9fc3..99e36fb98e 100644
--- a/code-of-conduct/index.html
+++ b/code-of-conduct/index.html
@@ -35,7 +35,7 @@
acceptable.Reporting a breach If you witness or are involved in an interaction with another community member that you think may violate this Code
of Conduct, please contact Godot's Code of Conduct team .
The Godot team recognizes that it can be difficult to come forward in cases of a violation of the Code of Conduct.
To make it easier to report violations, we provide a single point of contact via email at: conduct@godotengine.org . If you are more comfortable reaching out to a
-single person, you are also welcome to contact one or more members of the team using their personal emails listed below , or via direct messaging on community platforms where they are present.
Code of Conduct team HP van Braam, hp@godotengine.org (they/them)GitHub: hpvb – Contributors Chat: hp Languages: English, Dutch Julian Murgia, julian@godotengine.org (he/him)GitHub / Contributors Chat: StraToN Languages: English, French Nat, nat@godotengine.org (she/they)GitHub / Contributors Chat: MurderVeggie Languages: English, German Rémi Verschelde, remi@godotengine.org (he/him)GitHub: akien-mga – Contributors Chat: Akien Languages: English, French, German
+single person, you are also welcome to contact one or more members of the team using their personal emails listed below , or via direct messaging on community platforms where they are present.Code of Conduct team HP van Braam, hp@godotengine.org (they/them)GitHub: hpvb – Contributors Chat: hp Languages: English, Dutch Julian Murgia, julian@godotengine.org (he/him)GitHub / Contributors Chat: StraToN Languages: English, French Nat, nat@godotengine.org (she/they)GitHub / Contributors Chat: MurderVeggie Languages: English, German Rémi Verschelde, remi@godotengine.org (he/him)GitHub: akien-mga – Contributors Chat: Akien Languages: English, French, German
\ No newline at end of file
diff --git a/community/index.html b/community/index.html
index 0980b25211..73c86d878b 100644
--- a/community/index.html
+++ b/community/index.html
@@ -1,6 +1,6 @@
Community – Godot Engine Community Godot has a very active community across multiple channels. By joining Godot communities, you agree to follow Godot's Code of Conduct .
+Community Godot has a very active community across multiple channels. By joining Godot communities, you agree to follow Godot's Code of Conduct .
\ No newline at end of file
diff --git a/community/user-groups/index.html b/community/user-groups/index.html
index 53f407a692..3eb8a0e40c 100644
--- a/community/user-groups/index.html
+++ b/community/user-groups/index.html
@@ -72,7 +72,7 @@
(Discord )Godot Wisconsin
(Meetup ) Chickensoft
(Discord )If you run a local community and would like to have it listed here,
-please send an email to webmaster at godotengine · org .
+please send an email to webmaster at godotengine · org .
\ No newline at end of file
diff --git a/contact/index.html b/contact/index.html
index ca6a0a18ba..514e605f15 100644
--- a/contact/index.html
+++ b/contact/index.html
@@ -23,7 +23,7 @@
must be directed to its administrators, not to us:
Godot Community Forum Contact
General inquiries For other inquiries such as business, education, non-profit, promotion, etc.
Contact contact@godotengine.org .
Godot Engine team The Godot Engine team is made of hundreds of developers around the world,
-with both regular and occasional contributors.
Project Founders: Juan Linietsky (reduz) Ariel Manzur (punto-) Lead Developer: Project Manager: Rémi Verschelde (akien-mga) Developers: Aaron Franke (aaronfranke) Aaron Record (LightningAA) Adam Scott (adamscott) Alexander Holland (AlexHolly) Alex Drozd (brno32) Alexey Khoroshavin (allkhor) Alfred Reinold Baudisch (alfredbaudisch) Alistair Leslie-Hughes (alesliehughes) Alket Rexhepi (alketii) Andrea Catania (AndreaCatania) Andreia Gaita (shana) Andrii Doroshenko (Xrayez) Andy Maloney (asmaloney) Andy Moss (MillionOstrich) Angad Kambli (angad-k) Anilforextra (AnilBK) Anish Bhobe (KidRigger) Anton Yabchinskiy (a12n) Anutrix Aren Villanueva (kurikaesu) Ariel Manzur (punto-) Arman Elgudzhyan (puchik) AThousandShips aXu-AP Bartłomiej T. Listwon (Listwon) Bastiaan Olij (BastiaanOlij) Ben Brookshire (sheepandshepherd) Benjamin Larsson (Nallebeorn) Bernhard Liebl (poke1024) Bhuvan Vemula (Bhu1-V) bitsawer BlueCube3310 Błażej Szczygieł (zaps166) Bojidar Marinov (bojidar-bg) Brian Semrau (briansemrau) Bruno Lourenço (MadEqua) Cameron Reikes (creikey) Camille Mohr-Daurat (pouleyKetchoupp) Caner Demirer (cdemirer) Carl Olsson (not-surt) Carter Anderson (cart) ChibiDenDen Chris Bradfield (cbscribe) Clay John (clayjohn) ConteZero Dana Olson (adolson) Daniel J. Ramirez (djrm) Daniel Rakos (aqnuep) Daniel Zilberleyb (dzil123) Danil Alexeev (dalexeev) dankan1890 Darío Banini (DarioSamo) David Cambré (Gallilus) David Sichma (DavidSichma) David Snopek (dsnopek) Dharkael (lupoDharkael) Dmitry Koteroff (Krakean) Dmitry Maganov (vonagam) Dominik Jasiński (dreamsComeTrue) Douglas Leão (DeeJayLSP) DualMatrix Ellen Poe (ellenhp) Emmanuel Barroga (codecustard) Emmanuel Leblond (touilleMan) Eoin O'Neill (Eoin-ONeill-Yokai) Eric Lasota (elasota) Eric M (EricEzaM) Eric Rybicki (ericrybick) Erik Selecký (rxlecky) est31 Eveline Jarosz (Marqin) Fabian Mathews (supagu) Fabio Alessandrelli (Faless) Fabrice Cipolla (fabriceci) Ferenc Arn (tagcup) FireForge (fire-forge) Florian Kothmeier (Dragoncraft89) follower foxydevloper François Belair (Razoric480) Franklin Sobrinho (TheHX) Fredia Huya-Kouadio (m4gr3d) Geequlim George Marques (vnen) Gerrit Großkopf (Grosskopf) Gilles Roudiere (groud) Gordon MacPherson (RevoluPowered) Guilherme Felipe de C. G. da Silva (guilhermefelipecgs) Hakim Rouatbi (hakro) Hanif Bin Ariffin (hbina) Haoyu Qiu (timothyqiu) HP van Braam (hpvb) Hendrik Brucker (Geometror) hilfazer Hiroshi Ogawa (hi-ogawa) HolonProduction homer666 hoontee Hugo Locurcio (Calinou) Ian Bishop (ianb96) Ibrahn Sahir (ibrahn) Ignacio Etcheverry (neikeq) Igor Kordiukiewicz (IgorKordiukiewicz) Ilaria Cislaghi (QbieShay) Indah Sylvia (ISylvox) J08nY Jake Young (Duroxxigar) Jakub Grzesik (kubecz3k) Jakub Marcowski (Chubercik) James Buck (jbuck3) Jan Haller (Bromeon) Jason Knight (jasonwinterpixel) Jean-Michel Bernard (jmb462) Jérôme Gully (Nutriz) Jia Jun Chai (SkyLucilfer) jitspoe Joan Fons Sanchez (JFonS) Johan Manuel (29jm) Johannes Witt (HaSa1002) Jonathan Nicholl (jtnicholl) Jordan Schidlowsky (winterpixelgames) Josh Jones (DarkKilauea) Joshua Grams (JoshuaGrams) Juan Linietsky (reduz) Julian Murgia (StraToN) Julien Nguyen (Blackiris) Jummit Justo Delgado (mrcdk) karroffel Kelly Thomas (KellyThomas) kleonc Kongfa Waroros (gongpha) Kostadin Damyanov (Max-Might) K. S. Ernest (iFire) Lee (fire) lawnjelly Leon Krause (leonkrause) Liz Haas (27thLiz) Lucien Menassol (Kanabenki) Lyuma Maganty Rushyendra (mrushyendra) Malcolm Nixon (Malcolmnixon) Manuele Finocchiaro (m4nu3lf) Marcel Admiraal (madmiraal) Marcelo Fernandez (marcelofg55) Marc Gilleron (Zylann) Marcin Zawiejski (dragmz) Marcus Brummer (mbrlabs) Marcus Elg (MCrafterzz) Mariano Javier Suligoy (MarianoGnu) Mario Schlack (hurikhan) Marios Staikopoulos (marstaik) Marius Hanl (Maran23) Mark Riedesel (klowner) Markus Sauermann (Sauermann) Martin Capitanio (capnm) Martin Liška (marxin) Martin Sjursen (binbitten) marynate Masoud BH (masoudbh3) Mateo Kuruk Miccino (kuruk-mm) Matias N. Goldberg (darksylinc) Matthew (skyace65) Matthias Hölzl (hoelzl) Max Hilbrunner (mhilbrunner) merumelu Meru Patel (Janglee123) MewPurPur Michael Alexsander (YeldhamDev) Michał Iwańczuk (iwek7) MichiRecRoom (LikeLakers2) Micky (Mickeon) Mikael Hermansson (mihe) MinusKube MJacred Morris "Tabor" Arroad (mortarroad) mrezai Muhammad Huri (CakHuri) muiroc myaaaaaaaaa Nathan Franke (nathanfranke) Nathan Lovato (NathanLovato) Nathan Warden (NathanWarden) Nicholas Huelin (SirQuartz) Nikita Lita (nikitalita) Nils André-Chang (NilsIrl) Noah Beard (TwistedTwigleg) Nông Văn Tình (nongvantinh) Nuno Donato (nunodonato) ocean (they/them) (anvilfolk) Omar El Sheikh (The-O-King) Ovnuniarchos Pascal Richter (ShyRed) passivestar Patrick Dawson (pkdawson) Patrick Exner (FlameLizard) Patrick (firefly2442) Paul Batty (Paulb23) Paul Joannon (paulloz) Paul Trojahn (ptrojahn) Pāvels Nadtočajevs (bruvzg) Paweł Fertyk (pfertyk) Pawel Kowal (pkowal1982) Pawel Lampe (Scony) Pedro J. Estébanez (RandomShaper) Pieter-Jan Briers (PJB3005) Poommetee Ketson (Noshyaar) Przemysław Gołąb (n-pigeon) Rafael M. G. (rafallus) Raffaele Picca (RPicster) Rafał Mikrut (qarmin) Ralf Hölzemer (rollenrolm) Ramesh Ravone (RameshRavone) Raphael2048 Raul Santos (raulsntos) Ray Koopa (RayKoopa) RedMser RedworkDE Rémi Verschelde (akien-mga) Rhody Lugo (rraallvv) Ricardo Buring (rburing) Ricardo Subtil (Ev1lbl0w) Riteo Siuga (Riteo) Roberto F. Arroyo (robfram) Robert Yevdokimov (ryevdokimov) Robin Hübner (profan) romulox-x Rune Smith (rune-scape) Ruslan Mustakov (endragor) Ryan Roden-Corrent (rrcore) Saniko (sanikoyes) santouits SaracenOne Septian Ganendra S. K. (sepTN) Sergey Minakov (naithar) sersoong Shiqing (kawa-yoiko) Silc 'Tokage' Renew (TokageItLab) Simon Wenner (swenner) smix8 snailrhymer Sofox (TheSofox) Stanislav Labzyuk (DarkMessiah) Stijn Hinlopen (hinlopen) stmSi Swarnim Arun (minraws) TC (floppyhammer) TechnoPorg Thaddeus Crews (Repiteo) Thakee Nathees (ThakeeNathees) thebestnom Theo Hallenius (TheoXD) Timo Schwarzer (timoschwarzer) Timothé Bonhoure (ajreckof) Timo (toger5) Tomasz Chabora (KoBeWi) trollodel Twarit Waikar (IronicallySerious) Umang Kalra (theoway) Vinzenz Feenstra (vinzenz) Vitika Soni (Vitika9) 박한얼 (volzhs) V. Vamsi Krishna (vkbsb) Wilhem Barbier (nounoursheureux) William Deurwaarder (williamd67) Will Nations (willnationsdev) Wilson E. Alvarez (Rubonnek) Xavier Cho (mysticfall) Yaohua Xiong (xiongyaohua) yg2f (SuperUserNameMan) Yordan Dolchinkov (Jordyfel) Yuri Rubinsky (Chaosus) Yuri Sizov (YuriSizov) Zae Chao (zaevi) Zak Stam (zaksnet) Zher Huei Lee (leezh) Zi Ye (MajorMcDoom) ZuBsPaCe 谢天 (jsjtxietian) 风青山 (Rindbee)
+with both regular and occasional contributors.Project Founders: Juan Linietsky (reduz) Ariel Manzur (punto-) Lead Developer: Project Manager: Rémi Verschelde (akien-mga) Developers: Aaron Franke (aaronfranke) Aaron Record (LightningAA) Adam Scott (adamscott) Alexander Holland (AlexHolly) Alex Drozd (brno32) Alexey Khoroshavin (allkhor) Alfred Reinold Baudisch (alfredbaudisch) Alistair Leslie-Hughes (alesliehughes) Alket Rexhepi (alketii) Andrea Catania (AndreaCatania) Andreia Gaita (shana) Andrii Doroshenko (Xrayez) Andy Maloney (asmaloney) Andy Moss (MillionOstrich) Angad Kambli (angad-k) Anilforextra (AnilBK) Anish Bhobe (KidRigger) Anton Yabchinskiy (a12n) Anutrix Aren Villanueva (kurikaesu) Ariel Manzur (punto-) Arman Elgudzhyan (puchik) AThousandShips aXu-AP Bartłomiej T. Listwon (Listwon) Bastiaan Olij (BastiaanOlij) Ben Brookshire (sheepandshepherd) Benjamin Larsson (Nallebeorn) Bernhard Liebl (poke1024) Bhuvan Vemula (Bhu1-V) bitsawer BlueCube3310 Błażej Szczygieł (zaps166) Bojidar Marinov (bojidar-bg) Brian Semrau (briansemrau) Bruno Lourenço (MadEqua) Cameron Reikes (creikey) Camille Mohr-Daurat (pouleyKetchoupp) Caner Demirer (cdemirer) Carl Olsson (not-surt) Carter Anderson (cart) ChibiDenDen Chris Bradfield (cbscribe) Clay John (clayjohn) ConteZero Dana Olson (adolson) Daniel J. Ramirez (djrm) Daniel Rakos (aqnuep) Daniel Zilberleyb (dzil123) Danil Alexeev (dalexeev) dankan1890 Darío Banini (DarioSamo) David Cambré (Gallilus) David Sichma (DavidSichma) David Snopek (dsnopek) Dharkael (lupoDharkael) Dmitry Koteroff (Krakean) Dmitry Maganov (vonagam) Dominik Jasiński (dreamsComeTrue) Douglas Leão (DeeJayLSP) DualMatrix Ellen Poe (ellenhp) Emmanuel Barroga (codecustard) Emmanuel Leblond (touilleMan) Eoin O'Neill (Eoin-ONeill-Yokai) Eric Lasota (elasota) Eric M (EricEzaM) Eric Rybicki (ericrybick) Erik Selecký (rxlecky) est31 Eveline Jarosz (Marqin) Fabian Mathews (supagu) Fabio Alessandrelli (Faless) Fabrice Cipolla (fabriceci) Ferenc Arn (tagcup) FireForge (fire-forge) Florian Kothmeier (Dragoncraft89) follower foxydevloper François Belair (Razoric480) Franklin Sobrinho (TheHX) Fredia Huya-Kouadio (m4gr3d) Geequlim George Marques (vnen) Gerrit Großkopf (Grosskopf) Gilles Roudiere (groud) Gordon MacPherson (RevoluPowered) Guilherme Felipe de C. G. da Silva (guilhermefelipecgs) Hakim Rouatbi (hakro) Hanif Bin Ariffin (hbina) Haoyu Qiu (timothyqiu) HP van Braam (hpvb) Hendrik Brucker (Geometror) hilfazer Hiroshi Ogawa (hi-ogawa) HolonProduction homer666 hoontee Hugo Locurcio (Calinou) Ian Bishop (ianb96) Ibrahn Sahir (ibrahn) Ignacio Etcheverry (neikeq) Igor Kordiukiewicz (IgorKordiukiewicz) Ilaria Cislaghi (QbieShay) Indah Sylvia (ISylvox) J08nY Jake Young (Duroxxigar) Jakub Grzesik (kubecz3k) Jakub Marcowski (Chubercik) James Buck (jbuck3) Jan Haller (Bromeon) Jason Knight (jasonwinterpixel) Jean-Michel Bernard (jmb462) Jérôme Gully (Nutriz) Jia Jun Chai (SkyLucilfer) jitspoe Joan Fons Sanchez (JFonS) Johan Manuel (29jm) Johannes Witt (HaSa1002) Jonathan Nicholl (jtnicholl) Jordan Schidlowsky (winterpixelgames) Josh Jones (DarkKilauea) Joshua Grams (JoshuaGrams) Juan Linietsky (reduz) Julian Murgia (StraToN) Julien Nguyen (Blackiris) Jummit Justo Delgado (mrcdk) karroffel Kelly Thomas (KellyThomas) kleonc Kongfa Waroros (gongpha) Kostadin Damyanov (Max-Might) K. S. Ernest (iFire) Lee (fire) lawnjelly Leon Krause (leonkrause) Liz Haas (27thLiz) Lucien Menassol (Kanabenki) Lyuma Maganty Rushyendra (mrushyendra) Malcolm Nixon (Malcolmnixon) Manuele Finocchiaro (m4nu3lf) Marcel Admiraal (madmiraal) Marcelo Fernandez (marcelofg55) Marc Gilleron (Zylann) Marcin Zawiejski (dragmz) Marcus Brummer (mbrlabs) Marcus Elg (MCrafterzz) Mariano Javier Suligoy (MarianoGnu) Mario Schlack (hurikhan) Marios Staikopoulos (marstaik) Marius Hanl (Maran23) Mark Riedesel (klowner) Markus Sauermann (Sauermann) Martin Capitanio (capnm) Martin Liška (marxin) Martin Sjursen (binbitten) marynate Masoud BH (masoudbh3) Mateo Kuruk Miccino (kuruk-mm) Matias N. Goldberg (darksylinc) Matthew (skyace65) Matthias Hölzl (hoelzl) Max Hilbrunner (mhilbrunner) merumelu Meru Patel (Janglee123) MewPurPur Michael Alexsander (YeldhamDev) Michał Iwańczuk (iwek7) MichiRecRoom (LikeLakers2) Micky (Mickeon) Mikael Hermansson (mihe) MinusKube MJacred Morris "Tabor" Arroad (mortarroad) mrezai Muhammad Huri (CakHuri) muiroc myaaaaaaaaa Nathan Franke (nathanfranke) Nathan Lovato (NathanLovato) Nathan Warden (NathanWarden) Nicholas Huelin (SirQuartz) Nikita Lita (nikitalita) Nils André-Chang (NilsIrl) Noah Beard (TwistedTwigleg) Nông Văn Tình (nongvantinh) Nuno Donato (nunodonato) ocean (they/them) (anvilfolk) Omar El Sheikh (The-O-King) Ovnuniarchos Pascal Richter (ShyRed) passivestar Patrick Dawson (pkdawson) Patrick Exner (FlameLizard) Patrick (firefly2442) Paul Batty (Paulb23) Paul Joannon (paulloz) Paul Trojahn (ptrojahn) Pāvels Nadtočajevs (bruvzg) Paweł Fertyk (pfertyk) Pawel Kowal (pkowal1982) Pawel Lampe (Scony) Pedro J. Estébanez (RandomShaper) Pieter-Jan Briers (PJB3005) Poommetee Ketson (Noshyaar) Przemysław Gołąb (n-pigeon) Rafael M. G. (rafallus) Raffaele Picca (RPicster) Rafał Mikrut (qarmin) Ralf Hölzemer (rollenrolm) Ramesh Ravone (RameshRavone) Raphael2048 Raul Santos (raulsntos) Ray Koopa (RayKoopa) RedMser RedworkDE Rémi Verschelde (akien-mga) Rhody Lugo (rraallvv) Ricardo Buring (rburing) Ricardo Subtil (Ev1lbl0w) Riteo Siuga (Riteo) Roberto F. Arroyo (robfram) Robert Yevdokimov (ryevdokimov) Robin Hübner (profan) romulox-x Rune Smith (rune-scape) Ruslan Mustakov (endragor) Ryan Roden-Corrent (rrcore) Saniko (sanikoyes) santouits SaracenOne Septian Ganendra S. K. (sepTN) Sergey Minakov (naithar) sersoong Shiqing (kawa-yoiko) Silc 'Tokage' Renew (TokageItLab) Simon Wenner (swenner) smix8 snailrhymer Sofox (TheSofox) Stanislav Labzyuk (DarkMessiah) Stijn Hinlopen (hinlopen) stmSi Swarnim Arun (minraws) TC (floppyhammer) TechnoPorg Thaddeus Crews (Repiteo) Thakee Nathees (ThakeeNathees) thebestnom Theo Hallenius (TheoXD) Timo Schwarzer (timoschwarzer) Timothé Bonhoure (ajreckof) Timo (toger5) Tomasz Chabora (KoBeWi) trollodel Twarit Waikar (IronicallySerious) Umang Kalra (theoway) Vinzenz Feenstra (vinzenz) Vitika Soni (Vitika9) 박한얼 (volzhs) V. Vamsi Krishna (vkbsb) Wilhem Barbier (nounoursheureux) William Deurwaarder (williamd67) Will Nations (willnationsdev) Wilson E. Alvarez (Rubonnek) Xavier Cho (mysticfall) Yaohua Xiong (xiongyaohua) yg2f (SuperUserNameMan) Yordan Dolchinkov (Jordyfel) Yuri Rubinsky (Chaosus) Yuri Sizov (YuriSizov) Zae Chao (zaevi) Zak Stam (zaksnet) Zher Huei Lee (leezh) Zi Ye (MajorMcDoom) ZuBsPaCe 谢天 (jsjtxietian) 风青山 (Rindbee)
\ No newline at end of file
diff --git a/donate/index.html b/donate/index.html
index d565fcc6cd..7cde75a201 100644
--- a/donate/index.html
+++ b/donate/index.html
@@ -15,7 +15,7 @@
-If you want to sponsor the project, please write to contact@godot.foundation .
Donate now!
+If you want to sponsor the project, please write to contact@godot.foundation .
Donate now!
\ No newline at end of file
diff --git a/download/3.x/android/index.html b/download/3.x/android/index.html
index db9b1fc994..710c10f106 100644
--- a/download/3.x/android/index.html
+++ b/download/3.x/android/index.html
@@ -30,7 +30,7 @@
Linux ,
Windows ,
and
-macOS .
+macOS .
\ No newline at end of file
diff --git a/download/3.x/linux/index.html b/download/3.x/linux/index.html
index f3fdb07f13..5e12a4878d 100644
--- a/download/3.x/linux/index.html
+++ b/download/3.x/linux/index.html
@@ -39,7 +39,7 @@
Linux ,
Windows ,
and
-macOS .
+macOS .
\ No newline at end of file
diff --git a/download/3.x/macos/index.html b/download/3.x/macos/index.html
index 4036a85773..27b514897e 100644
--- a/download/3.x/macos/index.html
+++ b/download/3.x/macos/index.html
@@ -34,7 +34,7 @@
Linux ,
Windows ,
and
-macOS .
+macOS .
\ No newline at end of file
diff --git a/download/3.x/server/index.html b/download/3.x/server/index.html
index 176313c39a..0c3044d6dc 100644
--- a/download/3.x/server/index.html
+++ b/download/3.x/server/index.html
@@ -39,7 +39,7 @@
Linux ,
Windows ,
and
-macOS .
+macOS .
\ No newline at end of file
diff --git a/download/3.x/windows/index.html b/download/3.x/windows/index.html
index 2e9dd9704a..f64c0061a4 100644
--- a/download/3.x/windows/index.html
+++ b/download/3.x/windows/index.html
@@ -40,7 +40,7 @@
Linux ,
Windows ,
and
-macOS .
+macOS .
\ No newline at end of file
diff --git a/download/android/index.html b/download/android/index.html
index 568550860d..f12c9ffebd 100644
--- a/download/android/index.html
+++ b/download/android/index.html
@@ -28,7 +28,7 @@
Linux ,
Windows ,
and
-macOS .
+macOS .
\ No newline at end of file
diff --git a/download/archive/1.0-stable/index.html b/download/archive/1.0-stable/index.html
index bb902f02ba..0167c14854 100644
--- a/download/archive/1.0-stable/index.html
+++ b/download/archive/1.0-stable/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/1.1-stable/index.html b/download/archive/1.1-stable/index.html
index 9eabd3f2b1..6943dd36ed 100644
--- a/download/archive/1.1-stable/index.html
+++ b/download/archive/1.1-stable/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/2.0-stable/index.html b/download/archive/2.0-stable/index.html
index d63d89ce84..e0726cc804 100644
--- a/download/archive/2.0-stable/index.html
+++ b/download/archive/2.0-stable/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/2.0.1-stable/index.html b/download/archive/2.0.1-stable/index.html
index 34e19d75aa..72cc4e430e 100644
--- a/download/archive/2.0.1-stable/index.html
+++ b/download/archive/2.0.1-stable/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/2.0.2-stable/index.html b/download/archive/2.0.2-stable/index.html
index 4447ca3f96..9e97da6873 100644
--- a/download/archive/2.0.2-stable/index.html
+++ b/download/archive/2.0.2-stable/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/2.0.3-stable/index.html b/download/archive/2.0.3-stable/index.html
index 95eb9ede43..ad0fa72d55 100644
--- a/download/archive/2.0.3-stable/index.html
+++ b/download/archive/2.0.3-stable/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/2.0.4-stable/index.html b/download/archive/2.0.4-stable/index.html
index b8034825cd..e13dd95ba0 100644
--- a/download/archive/2.0.4-stable/index.html
+++ b/download/archive/2.0.4-stable/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/2.0.4.1-stable/index.html b/download/archive/2.0.4.1-stable/index.html
index 183bf9191a..20685b551b 100644
--- a/download/archive/2.0.4.1-stable/index.html
+++ b/download/archive/2.0.4.1-stable/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/2.1-stable/index.html b/download/archive/2.1-stable/index.html
index d51ac4e837..554bc3a18d 100644
--- a/download/archive/2.1-stable/index.html
+++ b/download/archive/2.1-stable/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/2.1.1-stable/index.html b/download/archive/2.1.1-stable/index.html
index 7990ec00e7..ea91d34095 100644
--- a/download/archive/2.1.1-stable/index.html
+++ b/download/archive/2.1.1-stable/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/2.1.2-stable/index.html b/download/archive/2.1.2-stable/index.html
index a4e3cfc04e..c5f07ab872 100644
--- a/download/archive/2.1.2-stable/index.html
+++ b/download/archive/2.1.2-stable/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/2.1.3-stable/index.html b/download/archive/2.1.3-stable/index.html
index 2fd5187805..329fd100f9 100644
--- a/download/archive/2.1.3-stable/index.html
+++ b/download/archive/2.1.3-stable/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/2.1.4-stable/index.html b/download/archive/2.1.4-stable/index.html
index 6b47f99663..9b80e8a99c 100644
--- a/download/archive/2.1.4-stable/index.html
+++ b/download/archive/2.1.4-stable/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/2.1.5-stable/index.html b/download/archive/2.1.5-stable/index.html
index c693b7c039..60d87816e5 100644
--- a/download/archive/2.1.5-stable/index.html
+++ b/download/archive/2.1.5-stable/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/2.1.6-rc1/index.html b/download/archive/2.1.6-rc1/index.html
index eefefe00a5..9c1e784f99 100644
--- a/download/archive/2.1.6-rc1/index.html
+++ b/download/archive/2.1.6-rc1/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/2.1.6-stable/index.html b/download/archive/2.1.6-stable/index.html
index dcbca9e95a..7175394593 100644
--- a/download/archive/2.1.6-stable/index.html
+++ b/download/archive/2.1.6-stable/index.html
@@ -19,7 +19,7 @@
x86_32
+Used to export your games to all supported platforms
\ No newline at end of file
diff --git a/download/archive/3.0-alpha1/index.html b/download/archive/3.0-alpha1/index.html
index b92890d1df..17a9964684 100644
--- a/download/archive/3.0-alpha1/index.html
+++ b/download/archive/3.0-alpha1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0-alpha2/index.html b/download/archive/3.0-alpha2/index.html
index a0f3acc530..e9002710b0 100644
--- a/download/archive/3.0-alpha2/index.html
+++ b/download/archive/3.0-alpha2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0-beta1/index.html b/download/archive/3.0-beta1/index.html
index 7f1ae8f7e7..79f3c4312d 100644
--- a/download/archive/3.0-beta1/index.html
+++ b/download/archive/3.0-beta1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0-beta2/index.html b/download/archive/3.0-beta2/index.html
index e765807032..e947aa8b62 100644
--- a/download/archive/3.0-beta2/index.html
+++ b/download/archive/3.0-beta2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0-rc1/index.html b/download/archive/3.0-rc1/index.html
index 4de087b781..5b7a8b1ae6 100644
--- a/download/archive/3.0-rc1/index.html
+++ b/download/archive/3.0-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0-rc2/index.html b/download/archive/3.0-rc2/index.html
index 5755d87262..8700e671ed 100644
--- a/download/archive/3.0-rc2/index.html
+++ b/download/archive/3.0-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0-rc3/index.html b/download/archive/3.0-rc3/index.html
index d0008e5d31..d9a1d41631 100644
--- a/download/archive/3.0-rc3/index.html
+++ b/download/archive/3.0-rc3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0-stable/index.html b/download/archive/3.0-stable/index.html
index aa11d8fadf..543a25ad96 100644
--- a/download/archive/3.0-stable/index.html
+++ b/download/archive/3.0-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0.1-rc1/index.html b/download/archive/3.0.1-rc1/index.html
index 474cfd22e1..5ae2e1cb8d 100644
--- a/download/archive/3.0.1-rc1/index.html
+++ b/download/archive/3.0.1-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0.1-stable/index.html b/download/archive/3.0.1-stable/index.html
index cf15cc4733..ff3de774fa 100644
--- a/download/archive/3.0.1-stable/index.html
+++ b/download/archive/3.0.1-stable/index.html
@@ -44,7 +44,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0.2-stable/index.html b/download/archive/3.0.2-stable/index.html
index cabfb64244..bfebf09b0a 100644
--- a/download/archive/3.0.2-stable/index.html
+++ b/download/archive/3.0.2-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0.3-rc1/index.html b/download/archive/3.0.3-rc1/index.html
index 25c70b1a52..a0efd9a86f 100644
--- a/download/archive/3.0.3-rc1/index.html
+++ b/download/archive/3.0.3-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0.3-rc2/index.html b/download/archive/3.0.3-rc2/index.html
index 9de2955ef6..5904d4c6d0 100644
--- a/download/archive/3.0.3-rc2/index.html
+++ b/download/archive/3.0.3-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0.3-rc3/index.html b/download/archive/3.0.3-rc3/index.html
index 23b136e56f..5846799718 100644
--- a/download/archive/3.0.3-rc3/index.html
+++ b/download/archive/3.0.3-rc3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0.3-stable/index.html b/download/archive/3.0.3-stable/index.html
index 4a25eb9422..bdc20cc34f 100644
--- a/download/archive/3.0.3-stable/index.html
+++ b/download/archive/3.0.3-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0.4-stable/index.html b/download/archive/3.0.4-stable/index.html
index 97b42d5820..e6e6b02b4a 100644
--- a/download/archive/3.0.4-stable/index.html
+++ b/download/archive/3.0.4-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0.5-stable/index.html b/download/archive/3.0.5-stable/index.html
index 754ec00f75..03732cd698 100644
--- a/download/archive/3.0.5-stable/index.html
+++ b/download/archive/3.0.5-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.0.6-stable/index.html b/download/archive/3.0.6-stable/index.html
index f5dea51120..bc94402404 100644
--- a/download/archive/3.0.6-stable/index.html
+++ b/download/archive/3.0.6-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-alpha1/index.html b/download/archive/3.1-alpha1/index.html
index e93581b0b1..27dcc985a5 100644
--- a/download/archive/3.1-alpha1/index.html
+++ b/download/archive/3.1-alpha1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-alpha2/index.html b/download/archive/3.1-alpha2/index.html
index b3523bda04..784d28b41d 100644
--- a/download/archive/3.1-alpha2/index.html
+++ b/download/archive/3.1-alpha2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-alpha3/index.html b/download/archive/3.1-alpha3/index.html
index d38397e267..f2dd127bea 100644
--- a/download/archive/3.1-alpha3/index.html
+++ b/download/archive/3.1-alpha3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-alpha4/index.html b/download/archive/3.1-alpha4/index.html
index 2529b36b24..e5a46d26e4 100644
--- a/download/archive/3.1-alpha4/index.html
+++ b/download/archive/3.1-alpha4/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-alpha5/index.html b/download/archive/3.1-alpha5/index.html
index ec4f1c866b..92874c22f5 100644
--- a/download/archive/3.1-alpha5/index.html
+++ b/download/archive/3.1-alpha5/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-beta1/index.html b/download/archive/3.1-beta1/index.html
index 71bbfb6172..2bc8818378 100644
--- a/download/archive/3.1-beta1/index.html
+++ b/download/archive/3.1-beta1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-beta10/index.html b/download/archive/3.1-beta10/index.html
index bbed2b1227..356ade080b 100644
--- a/download/archive/3.1-beta10/index.html
+++ b/download/archive/3.1-beta10/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-beta11/index.html b/download/archive/3.1-beta11/index.html
index 82469d57c4..50c8ddc963 100644
--- a/download/archive/3.1-beta11/index.html
+++ b/download/archive/3.1-beta11/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-beta2/index.html b/download/archive/3.1-beta2/index.html
index b27944fdf8..17e84fe772 100644
--- a/download/archive/3.1-beta2/index.html
+++ b/download/archive/3.1-beta2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-beta3/index.html b/download/archive/3.1-beta3/index.html
index 452db97db1..f364d34b5e 100644
--- a/download/archive/3.1-beta3/index.html
+++ b/download/archive/3.1-beta3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-beta4/index.html b/download/archive/3.1-beta4/index.html
index 489c8fed77..d1483f3c63 100644
--- a/download/archive/3.1-beta4/index.html
+++ b/download/archive/3.1-beta4/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-beta5/index.html b/download/archive/3.1-beta5/index.html
index 3b9cfa19d7..2718690ef8 100644
--- a/download/archive/3.1-beta5/index.html
+++ b/download/archive/3.1-beta5/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-beta6/index.html b/download/archive/3.1-beta6/index.html
index 1811519db8..896131dc60 100644
--- a/download/archive/3.1-beta6/index.html
+++ b/download/archive/3.1-beta6/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-beta7/index.html b/download/archive/3.1-beta7/index.html
index 8e7c337487..fdee624685 100644
--- a/download/archive/3.1-beta7/index.html
+++ b/download/archive/3.1-beta7/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-beta8/index.html b/download/archive/3.1-beta8/index.html
index b72e095f0e..199605335f 100644
--- a/download/archive/3.1-beta8/index.html
+++ b/download/archive/3.1-beta8/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-beta9/index.html b/download/archive/3.1-beta9/index.html
index 4937e564c5..ca7823af6b 100644
--- a/download/archive/3.1-beta9/index.html
+++ b/download/archive/3.1-beta9/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-rc1/index.html b/download/archive/3.1-rc1/index.html
index 464f79a73a..a90990b42a 100644
--- a/download/archive/3.1-rc1/index.html
+++ b/download/archive/3.1-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-rc2/index.html b/download/archive/3.1-rc2/index.html
index d5d829cf11..32906a5ada 100644
--- a/download/archive/3.1-rc2/index.html
+++ b/download/archive/3.1-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-rc3/index.html b/download/archive/3.1-rc3/index.html
index 57d026b40d..30c2306dc4 100644
--- a/download/archive/3.1-rc3/index.html
+++ b/download/archive/3.1-rc3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1-stable/index.html b/download/archive/3.1-stable/index.html
index e1a1092d40..891e73ec63 100644
--- a/download/archive/3.1-stable/index.html
+++ b/download/archive/3.1-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1.1-rc1/index.html b/download/archive/3.1.1-rc1/index.html
index d68f289616..248dd6f5cf 100644
--- a/download/archive/3.1.1-rc1/index.html
+++ b/download/archive/3.1.1-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1.1-stable/index.html b/download/archive/3.1.1-stable/index.html
index be6166bbd0..22123efc66 100644
--- a/download/archive/3.1.1-stable/index.html
+++ b/download/archive/3.1.1-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1.2-rc1/index.html b/download/archive/3.1.2-rc1/index.html
index 6be965ec4e..85a59fdba0 100644
--- a/download/archive/3.1.2-rc1/index.html
+++ b/download/archive/3.1.2-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.1.2-stable/index.html b/download/archive/3.1.2-stable/index.html
index e0769f6fba..b3148413fa 100644
--- a/download/archive/3.1.2-stable/index.html
+++ b/download/archive/3.1.2-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2-alpha0-unofficial/index.html b/download/archive/3.2-alpha0-unofficial/index.html
index 034d64a58a..14968d177d 100644
--- a/download/archive/3.2-alpha0-unofficial/index.html
+++ b/download/archive/3.2-alpha0-unofficial/index.html
@@ -42,7 +42,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2-alpha1/index.html b/download/archive/3.2-alpha1/index.html
index bae465237e..95a89be5b3 100644
--- a/download/archive/3.2-alpha1/index.html
+++ b/download/archive/3.2-alpha1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2-alpha2/index.html b/download/archive/3.2-alpha2/index.html
index 1130fdb779..eee4e1db83 100644
--- a/download/archive/3.2-alpha2/index.html
+++ b/download/archive/3.2-alpha2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2-alpha3/index.html b/download/archive/3.2-alpha3/index.html
index 70ad63ea12..b723865927 100644
--- a/download/archive/3.2-alpha3/index.html
+++ b/download/archive/3.2-alpha3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2-beta1/index.html b/download/archive/3.2-beta1/index.html
index aeadfeee8a..132e19fe9f 100644
--- a/download/archive/3.2-beta1/index.html
+++ b/download/archive/3.2-beta1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2-beta2/index.html b/download/archive/3.2-beta2/index.html
index d812cebe03..4abafef0fe 100644
--- a/download/archive/3.2-beta2/index.html
+++ b/download/archive/3.2-beta2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2-beta3/index.html b/download/archive/3.2-beta3/index.html
index 088da44d08..7398f180e5 100644
--- a/download/archive/3.2-beta3/index.html
+++ b/download/archive/3.2-beta3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2-beta4/index.html b/download/archive/3.2-beta4/index.html
index 5e39279464..0eba8d64c0 100644
--- a/download/archive/3.2-beta4/index.html
+++ b/download/archive/3.2-beta4/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2-beta5/index.html b/download/archive/3.2-beta5/index.html
index e7712d14ed..019bcd0c55 100644
--- a/download/archive/3.2-beta5/index.html
+++ b/download/archive/3.2-beta5/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2-beta6/index.html b/download/archive/3.2-beta6/index.html
index 8438ce2177..c97655956f 100644
--- a/download/archive/3.2-beta6/index.html
+++ b/download/archive/3.2-beta6/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2-rc1/index.html b/download/archive/3.2-rc1/index.html
index 522016598b..b5d92fa546 100644
--- a/download/archive/3.2-rc1/index.html
+++ b/download/archive/3.2-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2-rc2/index.html b/download/archive/3.2-rc2/index.html
index 56f9203157..49db007c00 100644
--- a/download/archive/3.2-rc2/index.html
+++ b/download/archive/3.2-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2-rc3/index.html b/download/archive/3.2-rc3/index.html
index 6ae4d30251..f657fd7e2c 100644
--- a/download/archive/3.2-rc3/index.html
+++ b/download/archive/3.2-rc3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2-rc4/index.html b/download/archive/3.2-rc4/index.html
index de9387dc31..e2699f37aa 100644
--- a/download/archive/3.2-rc4/index.html
+++ b/download/archive/3.2-rc4/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2-stable/index.html b/download/archive/3.2-stable/index.html
index ad7014d477..3464cf29b0 100644
--- a/download/archive/3.2-stable/index.html
+++ b/download/archive/3.2-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.1-rc1/index.html b/download/archive/3.2.1-rc1/index.html
index 158d5d5f82..f88563e10d 100644
--- a/download/archive/3.2.1-rc1/index.html
+++ b/download/archive/3.2.1-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.1-rc2/index.html b/download/archive/3.2.1-rc2/index.html
index 4278c9ae77..ccb7c65164 100644
--- a/download/archive/3.2.1-rc2/index.html
+++ b/download/archive/3.2.1-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.1-stable/index.html b/download/archive/3.2.1-stable/index.html
index d8228928b0..435835be60 100644
--- a/download/archive/3.2.1-stable/index.html
+++ b/download/archive/3.2.1-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.2-beta1/index.html b/download/archive/3.2.2-beta1/index.html
index 94df407f00..2773f18e80 100644
--- a/download/archive/3.2.2-beta1/index.html
+++ b/download/archive/3.2.2-beta1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.2-beta2/index.html b/download/archive/3.2.2-beta2/index.html
index 3dd0fb8e20..fc7388889a 100644
--- a/download/archive/3.2.2-beta2/index.html
+++ b/download/archive/3.2.2-beta2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.2-beta3/index.html b/download/archive/3.2.2-beta3/index.html
index d4b947435d..3dcc294200 100644
--- a/download/archive/3.2.2-beta3/index.html
+++ b/download/archive/3.2.2-beta3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.2-beta4/index.html b/download/archive/3.2.2-beta4/index.html
index 48a01635b3..1ae2a104dc 100644
--- a/download/archive/3.2.2-beta4/index.html
+++ b/download/archive/3.2.2-beta4/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.2-rc1/index.html b/download/archive/3.2.2-rc1/index.html
index 50c922ba5f..3e37768dbd 100644
--- a/download/archive/3.2.2-rc1/index.html
+++ b/download/archive/3.2.2-rc1/index.html
@@ -44,7 +44,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.2-rc2/index.html b/download/archive/3.2.2-rc2/index.html
index 795fce0216..261bc37c2c 100644
--- a/download/archive/3.2.2-rc2/index.html
+++ b/download/archive/3.2.2-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.2-rc3/index.html b/download/archive/3.2.2-rc3/index.html
index 6a1b126c74..591dd5abdb 100644
--- a/download/archive/3.2.2-rc3/index.html
+++ b/download/archive/3.2.2-rc3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.2-rc4/index.html b/download/archive/3.2.2-rc4/index.html
index cd139a672c..6d1bdd4252 100644
--- a/download/archive/3.2.2-rc4/index.html
+++ b/download/archive/3.2.2-rc4/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.2-stable/index.html b/download/archive/3.2.2-stable/index.html
index c362b42988..976412f8b9 100644
--- a/download/archive/3.2.2-stable/index.html
+++ b/download/archive/3.2.2-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.3-beta1/index.html b/download/archive/3.2.3-beta1/index.html
index bc87fbd0b9..4d1f5c70c4 100644
--- a/download/archive/3.2.3-beta1/index.html
+++ b/download/archive/3.2.3-beta1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.3-rc1/index.html b/download/archive/3.2.3-rc1/index.html
index 8f61c6fcfb..bd53e72026 100644
--- a/download/archive/3.2.3-rc1/index.html
+++ b/download/archive/3.2.3-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.3-rc2/index.html b/download/archive/3.2.3-rc2/index.html
index 222dca08f9..c2fe206170 100644
--- a/download/archive/3.2.3-rc2/index.html
+++ b/download/archive/3.2.3-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.3-rc3/index.html b/download/archive/3.2.3-rc3/index.html
index eb63c75f4c..997ba5f728 100644
--- a/download/archive/3.2.3-rc3/index.html
+++ b/download/archive/3.2.3-rc3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.3-rc4/index.html b/download/archive/3.2.3-rc4/index.html
index 84dc349986..77575621de 100644
--- a/download/archive/3.2.3-rc4/index.html
+++ b/download/archive/3.2.3-rc4/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.3-rc5/index.html b/download/archive/3.2.3-rc5/index.html
index 33aec73231..d12b10d3fb 100644
--- a/download/archive/3.2.3-rc5/index.html
+++ b/download/archive/3.2.3-rc5/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.3-rc6/index.html b/download/archive/3.2.3-rc6/index.html
index 4fd90d3222..f1733a96af 100644
--- a/download/archive/3.2.3-rc6/index.html
+++ b/download/archive/3.2.3-rc6/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.2.3-stable/index.html b/download/archive/3.2.3-stable/index.html
index 2e0d5b8584..4143f862f7 100644
--- a/download/archive/3.2.3-stable/index.html
+++ b/download/archive/3.2.3-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-beta1/index.html b/download/archive/3.3-beta1/index.html
index 5e6cf78336..37d01c842f 100644
--- a/download/archive/3.3-beta1/index.html
+++ b/download/archive/3.3-beta1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-beta2/index.html b/download/archive/3.3-beta2/index.html
index 2864ae32e2..f4ac147c0d 100644
--- a/download/archive/3.3-beta2/index.html
+++ b/download/archive/3.3-beta2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-beta3/index.html b/download/archive/3.3-beta3/index.html
index 17e430554a..000ede5fbb 100644
--- a/download/archive/3.3-beta3/index.html
+++ b/download/archive/3.3-beta3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-beta4/index.html b/download/archive/3.3-beta4/index.html
index e892f49e8f..1d9b343378 100644
--- a/download/archive/3.3-beta4/index.html
+++ b/download/archive/3.3-beta4/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-beta5/index.html b/download/archive/3.3-beta5/index.html
index 723b791570..c5500a90a8 100644
--- a/download/archive/3.3-beta5/index.html
+++ b/download/archive/3.3-beta5/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-beta6/index.html b/download/archive/3.3-beta6/index.html
index 348c45add1..c45dad73c7 100644
--- a/download/archive/3.3-beta6/index.html
+++ b/download/archive/3.3-beta6/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-rc1/index.html b/download/archive/3.3-rc1/index.html
index fc840a76d4..774e40a45e 100644
--- a/download/archive/3.3-rc1/index.html
+++ b/download/archive/3.3-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-rc2/index.html b/download/archive/3.3-rc2/index.html
index 0c0bab3bee..1d8a67240a 100644
--- a/download/archive/3.3-rc2/index.html
+++ b/download/archive/3.3-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-rc3/index.html b/download/archive/3.3-rc3/index.html
index 480c8e28b5..36b9f52b19 100644
--- a/download/archive/3.3-rc3/index.html
+++ b/download/archive/3.3-rc3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-rc4/index.html b/download/archive/3.3-rc4/index.html
index c2dbb6a739..a2412bc233 100644
--- a/download/archive/3.3-rc4/index.html
+++ b/download/archive/3.3-rc4/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-rc5/index.html b/download/archive/3.3-rc5/index.html
index 5dd14c8bd0..e9ebd1d318 100644
--- a/download/archive/3.3-rc5/index.html
+++ b/download/archive/3.3-rc5/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-rc6/index.html b/download/archive/3.3-rc6/index.html
index 62dbca4404..57afb98186 100644
--- a/download/archive/3.3-rc6/index.html
+++ b/download/archive/3.3-rc6/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-rc7/index.html b/download/archive/3.3-rc7/index.html
index 1b8b09c672..7b4e9a19d2 100644
--- a/download/archive/3.3-rc7/index.html
+++ b/download/archive/3.3-rc7/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-rc8/index.html b/download/archive/3.3-rc8/index.html
index f4b1677f13..e3f09e1092 100644
--- a/download/archive/3.3-rc8/index.html
+++ b/download/archive/3.3-rc8/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-rc9/index.html b/download/archive/3.3-rc9/index.html
index a284d39c9e..ba9fe3820b 100644
--- a/download/archive/3.3-rc9/index.html
+++ b/download/archive/3.3-rc9/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3-stable/index.html b/download/archive/3.3-stable/index.html
index ee6495fc79..cfe6e06672 100644
--- a/download/archive/3.3-stable/index.html
+++ b/download/archive/3.3-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3.1-rc1/index.html b/download/archive/3.3.1-rc1/index.html
index fd09ac93e8..7a03411866 100644
--- a/download/archive/3.3.1-rc1/index.html
+++ b/download/archive/3.3.1-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3.1-rc2/index.html b/download/archive/3.3.1-rc2/index.html
index f829edfa32..72f00b4aff 100644
--- a/download/archive/3.3.1-rc2/index.html
+++ b/download/archive/3.3.1-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3.1-stable/index.html b/download/archive/3.3.1-stable/index.html
index 00e7d7f645..3243010283 100644
--- a/download/archive/3.3.1-stable/index.html
+++ b/download/archive/3.3.1-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3.2-stable/index.html b/download/archive/3.3.2-stable/index.html
index 5694c47b81..569ae022af 100644
--- a/download/archive/3.3.2-stable/index.html
+++ b/download/archive/3.3.2-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3.3-rc1/index.html b/download/archive/3.3.3-rc1/index.html
index a9b06d127b..a88aec3616 100644
--- a/download/archive/3.3.3-rc1/index.html
+++ b/download/archive/3.3.3-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3.3-rc2/index.html b/download/archive/3.3.3-rc2/index.html
index bcfc82a9d9..ee3a5bbe5e 100644
--- a/download/archive/3.3.3-rc2/index.html
+++ b/download/archive/3.3.3-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3.3-stable/index.html b/download/archive/3.3.3-stable/index.html
index a42febb044..15eefcef14 100644
--- a/download/archive/3.3.3-stable/index.html
+++ b/download/archive/3.3.3-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3.4-rc1/index.html b/download/archive/3.3.4-rc1/index.html
index c5a661aef9..22ad746c75 100644
--- a/download/archive/3.3.4-rc1/index.html
+++ b/download/archive/3.3.4-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.3.4-stable/index.html b/download/archive/3.3.4-stable/index.html
index b668f08a3b..92e2439532 100644
--- a/download/archive/3.3.4-stable/index.html
+++ b/download/archive/3.3.4-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4-beta1/index.html b/download/archive/3.4-beta1/index.html
index ab4debf1f3..cebf17d4f7 100644
--- a/download/archive/3.4-beta1/index.html
+++ b/download/archive/3.4-beta1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4-beta2/index.html b/download/archive/3.4-beta2/index.html
index e1b3279ffc..c5f5813285 100644
--- a/download/archive/3.4-beta2/index.html
+++ b/download/archive/3.4-beta2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4-beta3/index.html b/download/archive/3.4-beta3/index.html
index e132e4f8e6..220925ddec 100644
--- a/download/archive/3.4-beta3/index.html
+++ b/download/archive/3.4-beta3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4-beta4/index.html b/download/archive/3.4-beta4/index.html
index 5378f5375d..9170696e81 100644
--- a/download/archive/3.4-beta4/index.html
+++ b/download/archive/3.4-beta4/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4-beta5/index.html b/download/archive/3.4-beta5/index.html
index 80acb76b71..5092f00504 100644
--- a/download/archive/3.4-beta5/index.html
+++ b/download/archive/3.4-beta5/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4-beta6/index.html b/download/archive/3.4-beta6/index.html
index 8dda72f62f..182e1c5d21 100644
--- a/download/archive/3.4-beta6/index.html
+++ b/download/archive/3.4-beta6/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4-rc1/index.html b/download/archive/3.4-rc1/index.html
index 9141b4730b..05dab6d6ad 100644
--- a/download/archive/3.4-rc1/index.html
+++ b/download/archive/3.4-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4-rc2/index.html b/download/archive/3.4-rc2/index.html
index 073a6db1aa..a7b982a23c 100644
--- a/download/archive/3.4-rc2/index.html
+++ b/download/archive/3.4-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4-rc3/index.html b/download/archive/3.4-rc3/index.html
index 21dbb938c3..3536c62e10 100644
--- a/download/archive/3.4-rc3/index.html
+++ b/download/archive/3.4-rc3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4-stable/index.html b/download/archive/3.4-stable/index.html
index 29e2bcda19..6a6975fe6e 100644
--- a/download/archive/3.4-stable/index.html
+++ b/download/archive/3.4-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4.1-rc1/index.html b/download/archive/3.4.1-rc1/index.html
index 2753abf7fd..b2e8fc4446 100644
--- a/download/archive/3.4.1-rc1/index.html
+++ b/download/archive/3.4.1-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4.1-rc2/index.html b/download/archive/3.4.1-rc2/index.html
index b82a78e98b..1113df4f7d 100644
--- a/download/archive/3.4.1-rc2/index.html
+++ b/download/archive/3.4.1-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4.1-rc3/index.html b/download/archive/3.4.1-rc3/index.html
index d29c1616c4..87b1935ac7 100644
--- a/download/archive/3.4.1-rc3/index.html
+++ b/download/archive/3.4.1-rc3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4.1-stable/index.html b/download/archive/3.4.1-stable/index.html
index b5af826c30..0ec76c9637 100644
--- a/download/archive/3.4.1-stable/index.html
+++ b/download/archive/3.4.1-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4.2-stable/index.html b/download/archive/3.4.2-stable/index.html
index 2b83be0d90..6b8fbe38ed 100644
--- a/download/archive/3.4.2-stable/index.html
+++ b/download/archive/3.4.2-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4.3-rc1/index.html b/download/archive/3.4.3-rc1/index.html
index 8554a7277b..6b5cdf907c 100644
--- a/download/archive/3.4.3-rc1/index.html
+++ b/download/archive/3.4.3-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4.3-rc2/index.html b/download/archive/3.4.3-rc2/index.html
index e0884e793b..a20fad433a 100644
--- a/download/archive/3.4.3-rc2/index.html
+++ b/download/archive/3.4.3-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4.3-stable/index.html b/download/archive/3.4.3-stable/index.html
index 4711c94a8b..866cda94a2 100644
--- a/download/archive/3.4.3-stable/index.html
+++ b/download/archive/3.4.3-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4.4-rc1/index.html b/download/archive/3.4.4-rc1/index.html
index 90c8a9bf29..3c407b7572 100644
--- a/download/archive/3.4.4-rc1/index.html
+++ b/download/archive/3.4.4-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4.4-rc2/index.html b/download/archive/3.4.4-rc2/index.html
index 08ebf0f319..9561ad41ec 100644
--- a/download/archive/3.4.4-rc2/index.html
+++ b/download/archive/3.4.4-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4.4-stable/index.html b/download/archive/3.4.4-stable/index.html
index c59ab219aa..02a69e55d0 100644
--- a/download/archive/3.4.4-stable/index.html
+++ b/download/archive/3.4.4-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4.5-rc1/index.html b/download/archive/3.4.5-rc1/index.html
index 78794e5fd7..a2e5e4f664 100644
--- a/download/archive/3.4.5-rc1/index.html
+++ b/download/archive/3.4.5-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.4.5-stable/index.html b/download/archive/3.4.5-stable/index.html
index 750fb97124..86d592039e 100644
--- a/download/archive/3.4.5-stable/index.html
+++ b/download/archive/3.4.5-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5-beta1/index.html b/download/archive/3.5-beta1/index.html
index d5f8ba946e..90e8450692 100644
--- a/download/archive/3.5-beta1/index.html
+++ b/download/archive/3.5-beta1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5-beta2/index.html b/download/archive/3.5-beta2/index.html
index 838aa9a17d..7cedb2875e 100644
--- a/download/archive/3.5-beta2/index.html
+++ b/download/archive/3.5-beta2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5-beta3/index.html b/download/archive/3.5-beta3/index.html
index 7a82168fef..8f19b21515 100644
--- a/download/archive/3.5-beta3/index.html
+++ b/download/archive/3.5-beta3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5-beta4/index.html b/download/archive/3.5-beta4/index.html
index 88c489ba81..5a58ec9df2 100644
--- a/download/archive/3.5-beta4/index.html
+++ b/download/archive/3.5-beta4/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5-beta5/index.html b/download/archive/3.5-beta5/index.html
index 6516868305..5f768e6f07 100644
--- a/download/archive/3.5-beta5/index.html
+++ b/download/archive/3.5-beta5/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5-rc1/index.html b/download/archive/3.5-rc1/index.html
index d6ed1623b5..d365463cbd 100644
--- a/download/archive/3.5-rc1/index.html
+++ b/download/archive/3.5-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5-rc2/index.html b/download/archive/3.5-rc2/index.html
index ae41332a0e..978d6841f3 100644
--- a/download/archive/3.5-rc2/index.html
+++ b/download/archive/3.5-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5-rc3/index.html b/download/archive/3.5-rc3/index.html
index 9516ce4d89..9e2557054e 100644
--- a/download/archive/3.5-rc3/index.html
+++ b/download/archive/3.5-rc3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5-rc4/index.html b/download/archive/3.5-rc4/index.html
index 61538a70e0..13a9af1771 100644
--- a/download/archive/3.5-rc4/index.html
+++ b/download/archive/3.5-rc4/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5-rc5/index.html b/download/archive/3.5-rc5/index.html
index 479c163a60..74ea44df8b 100644
--- a/download/archive/3.5-rc5/index.html
+++ b/download/archive/3.5-rc5/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5-rc6/index.html b/download/archive/3.5-rc6/index.html
index 5bd9a8f1ba..8ae657055b 100644
--- a/download/archive/3.5-rc6/index.html
+++ b/download/archive/3.5-rc6/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5-rc7/index.html b/download/archive/3.5-rc7/index.html
index 107d287c9e..b0fea00c4c 100644
--- a/download/archive/3.5-rc7/index.html
+++ b/download/archive/3.5-rc7/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5-rc8/index.html b/download/archive/3.5-rc8/index.html
index adc4f77f1d..2a22b170fe 100644
--- a/download/archive/3.5-rc8/index.html
+++ b/download/archive/3.5-rc8/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5-stable/index.html b/download/archive/3.5-stable/index.html
index c206f58b0a..a0bcc75688 100644
--- a/download/archive/3.5-stable/index.html
+++ b/download/archive/3.5-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5.1-rc1/index.html b/download/archive/3.5.1-rc1/index.html
index b9fc04b15c..49489e38d6 100644
--- a/download/archive/3.5.1-rc1/index.html
+++ b/download/archive/3.5.1-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5.1-rc2/index.html b/download/archive/3.5.1-rc2/index.html
index 4244bb924e..64cafb2582 100644
--- a/download/archive/3.5.1-rc2/index.html
+++ b/download/archive/3.5.1-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5.1-stable/index.html b/download/archive/3.5.1-stable/index.html
index 8da9c4ef6a..7b8f42a6b6 100644
--- a/download/archive/3.5.1-stable/index.html
+++ b/download/archive/3.5.1-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5.2-rc1/index.html b/download/archive/3.5.2-rc1/index.html
index a5808eaab9..6390cc4d61 100644
--- a/download/archive/3.5.2-rc1/index.html
+++ b/download/archive/3.5.2-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5.2-rc2/index.html b/download/archive/3.5.2-rc2/index.html
index 7a07f8e0b1..93481f702b 100644
--- a/download/archive/3.5.2-rc2/index.html
+++ b/download/archive/3.5.2-rc2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5.2-stable/index.html b/download/archive/3.5.2-stable/index.html
index 3f4642c27c..36aff0102b 100644
--- a/download/archive/3.5.2-stable/index.html
+++ b/download/archive/3.5.2-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5.3-rc1/index.html b/download/archive/3.5.3-rc1/index.html
index 9024004579..0b7eb6f6d5 100644
--- a/download/archive/3.5.3-rc1/index.html
+++ b/download/archive/3.5.3-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.5.3-stable/index.html b/download/archive/3.5.3-stable/index.html
index 4cf556062e..b9fc01a617 100644
--- a/download/archive/3.5.3-stable/index.html
+++ b/download/archive/3.5.3-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.6-beta1/index.html b/download/archive/3.6-beta1/index.html
index 99c537df1b..01c7da3de0 100644
--- a/download/archive/3.6-beta1/index.html
+++ b/download/archive/3.6-beta1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.6-beta2/index.html b/download/archive/3.6-beta2/index.html
index 2831ceca14..86c1ec6f42 100644
--- a/download/archive/3.6-beta2/index.html
+++ b/download/archive/3.6-beta2/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.6-beta3/index.html b/download/archive/3.6-beta3/index.html
index c1d3d485b1..3d72d892a0 100644
--- a/download/archive/3.6-beta3/index.html
+++ b/download/archive/3.6-beta3/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.6-beta4/index.html b/download/archive/3.6-beta4/index.html
index a4453e5fef..7c3bd5425c 100644
--- a/download/archive/3.6-beta4/index.html
+++ b/download/archive/3.6-beta4/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.6-beta5/index.html b/download/archive/3.6-beta5/index.html
index 1c2b773a1d..ce81c8c633 100644
--- a/download/archive/3.6-beta5/index.html
+++ b/download/archive/3.6-beta5/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.6-rc1/index.html b/download/archive/3.6-rc1/index.html
index 442d0a3411..60696445ec 100644
--- a/download/archive/3.6-rc1/index.html
+++ b/download/archive/3.6-rc1/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/3.6-stable/index.html b/download/archive/3.6-stable/index.html
index 6a20a4cd8e..3a57ce7567 100644
--- a/download/archive/3.6-stable/index.html
+++ b/download/archive/3.6-stable/index.html
@@ -43,7 +43,7 @@
Used to export your games to all supported platforms
+Android plugins · Java · Kotlin · C# support
\ No newline at end of file
diff --git a/download/archive/4.0-alpha1/index.html b/download/archive/4.0-alpha1/index.html
index 2fea25a9ac..eb3527f272 100644
--- a/download/archive/4.0-alpha1/index.html
+++ b/download/archive/4.0-alpha1/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha10/index.html b/download/archive/4.0-alpha10/index.html
index e938cf9ef9..881aa66c43 100644
--- a/download/archive/4.0-alpha10/index.html
+++ b/download/archive/4.0-alpha10/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha11/index.html b/download/archive/4.0-alpha11/index.html
index 440667dc5e..bd648c6a92 100644
--- a/download/archive/4.0-alpha11/index.html
+++ b/download/archive/4.0-alpha11/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha12/index.html b/download/archive/4.0-alpha12/index.html
index 1d119cb50f..40d667adba 100644
--- a/download/archive/4.0-alpha12/index.html
+++ b/download/archive/4.0-alpha12/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha13/index.html b/download/archive/4.0-alpha13/index.html
index 4f705478ef..e2de0b7428 100644
--- a/download/archive/4.0-alpha13/index.html
+++ b/download/archive/4.0-alpha13/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha14/index.html b/download/archive/4.0-alpha14/index.html
index a4f87f6c8a..e70eb021fe 100644
--- a/download/archive/4.0-alpha14/index.html
+++ b/download/archive/4.0-alpha14/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha15/index.html b/download/archive/4.0-alpha15/index.html
index bc7e87ffca..310d4efb48 100644
--- a/download/archive/4.0-alpha15/index.html
+++ b/download/archive/4.0-alpha15/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha16/index.html b/download/archive/4.0-alpha16/index.html
index 0f4571a1c3..9b578c112a 100644
--- a/download/archive/4.0-alpha16/index.html
+++ b/download/archive/4.0-alpha16/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha17/index.html b/download/archive/4.0-alpha17/index.html
index 3342ef66aa..8cc4933aa2 100644
--- a/download/archive/4.0-alpha17/index.html
+++ b/download/archive/4.0-alpha17/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha2/index.html b/download/archive/4.0-alpha2/index.html
index 6c478767cd..16328c62ba 100644
--- a/download/archive/4.0-alpha2/index.html
+++ b/download/archive/4.0-alpha2/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha3/index.html b/download/archive/4.0-alpha3/index.html
index 0606f428a0..0a949b5434 100644
--- a/download/archive/4.0-alpha3/index.html
+++ b/download/archive/4.0-alpha3/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha4/index.html b/download/archive/4.0-alpha4/index.html
index e3bcf019c3..784b38436e 100644
--- a/download/archive/4.0-alpha4/index.html
+++ b/download/archive/4.0-alpha4/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha5/index.html b/download/archive/4.0-alpha5/index.html
index bf84b3945b..3875ece7d1 100644
--- a/download/archive/4.0-alpha5/index.html
+++ b/download/archive/4.0-alpha5/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha6/index.html b/download/archive/4.0-alpha6/index.html
index f05d6c898b..3b8a597c3a 100644
--- a/download/archive/4.0-alpha6/index.html
+++ b/download/archive/4.0-alpha6/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha7/index.html b/download/archive/4.0-alpha7/index.html
index 7ba5fbc0bd..d6c65fcb32 100644
--- a/download/archive/4.0-alpha7/index.html
+++ b/download/archive/4.0-alpha7/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha8/index.html b/download/archive/4.0-alpha8/index.html
index 7b51f32d57..e01fe771ed 100644
--- a/download/archive/4.0-alpha8/index.html
+++ b/download/archive/4.0-alpha8/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-alpha9/index.html b/download/archive/4.0-alpha9/index.html
index ee15ae0ad3..abf5903763 100644
--- a/download/archive/4.0-alpha9/index.html
+++ b/download/archive/4.0-alpha9/index.html
@@ -22,7 +22,7 @@
x86_32
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta1/index.html b/download/archive/4.0-beta1/index.html
index ed2631b9b8..bc2f8c831e 100644
--- a/download/archive/4.0-beta1/index.html
+++ b/download/archive/4.0-beta1/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta10/index.html b/download/archive/4.0-beta10/index.html
index 0238e54257..10397143f0 100644
--- a/download/archive/4.0-beta10/index.html
+++ b/download/archive/4.0-beta10/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta11/index.html b/download/archive/4.0-beta11/index.html
index da182ea1ef..c538b6f21a 100644
--- a/download/archive/4.0-beta11/index.html
+++ b/download/archive/4.0-beta11/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta12/index.html b/download/archive/4.0-beta12/index.html
index 47b1451ead..fdf436b924 100644
--- a/download/archive/4.0-beta12/index.html
+++ b/download/archive/4.0-beta12/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta13/index.html b/download/archive/4.0-beta13/index.html
index bf49f74310..cd243ff129 100644
--- a/download/archive/4.0-beta13/index.html
+++ b/download/archive/4.0-beta13/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta14/index.html b/download/archive/4.0-beta14/index.html
index fa033ddcba..55fafab7a4 100644
--- a/download/archive/4.0-beta14/index.html
+++ b/download/archive/4.0-beta14/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta15/index.html b/download/archive/4.0-beta15/index.html
index ce4355ebaf..3d253442d5 100644
--- a/download/archive/4.0-beta15/index.html
+++ b/download/archive/4.0-beta15/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta16/index.html b/download/archive/4.0-beta16/index.html
index 25234c161e..a812d9d415 100644
--- a/download/archive/4.0-beta16/index.html
+++ b/download/archive/4.0-beta16/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta17/index.html b/download/archive/4.0-beta17/index.html
index e0542338e6..d59f4716ec 100644
--- a/download/archive/4.0-beta17/index.html
+++ b/download/archive/4.0-beta17/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta2/index.html b/download/archive/4.0-beta2/index.html
index b52cf3d7f9..021c7473a0 100644
--- a/download/archive/4.0-beta2/index.html
+++ b/download/archive/4.0-beta2/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta3/index.html b/download/archive/4.0-beta3/index.html
index e91f1c7996..b406a3b98e 100644
--- a/download/archive/4.0-beta3/index.html
+++ b/download/archive/4.0-beta3/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta4/index.html b/download/archive/4.0-beta4/index.html
index f549ce8572..9f0bbdb0a2 100644
--- a/download/archive/4.0-beta4/index.html
+++ b/download/archive/4.0-beta4/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta5/index.html b/download/archive/4.0-beta5/index.html
index 5100ea706b..a20c43059f 100644
--- a/download/archive/4.0-beta5/index.html
+++ b/download/archive/4.0-beta5/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta6/index.html b/download/archive/4.0-beta6/index.html
index 2edd83f3ff..3989aa8551 100644
--- a/download/archive/4.0-beta6/index.html
+++ b/download/archive/4.0-beta6/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta7/index.html b/download/archive/4.0-beta7/index.html
index 6c87d31399..6f074262be 100644
--- a/download/archive/4.0-beta7/index.html
+++ b/download/archive/4.0-beta7/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta8/index.html b/download/archive/4.0-beta8/index.html
index 1e25c1b7e4..89af532cfe 100644
--- a/download/archive/4.0-beta8/index.html
+++ b/download/archive/4.0-beta8/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-beta9/index.html b/download/archive/4.0-beta9/index.html
index cc3ceb44d8..81b183baed 100644
--- a/download/archive/4.0-beta9/index.html
+++ b/download/archive/4.0-beta9/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-rc1/index.html b/download/archive/4.0-rc1/index.html
index 8a86a00ba8..5e68d2512b 100644
--- a/download/archive/4.0-rc1/index.html
+++ b/download/archive/4.0-rc1/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-rc2/index.html b/download/archive/4.0-rc2/index.html
index b1ed03b480..22133208af 100644
--- a/download/archive/4.0-rc2/index.html
+++ b/download/archive/4.0-rc2/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-rc3/index.html b/download/archive/4.0-rc3/index.html
index da700551bc..0a08d22446 100644
--- a/download/archive/4.0-rc3/index.html
+++ b/download/archive/4.0-rc3/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-rc4/index.html b/download/archive/4.0-rc4/index.html
index 619bd7b98c..0519fa8d8f 100644
--- a/download/archive/4.0-rc4/index.html
+++ b/download/archive/4.0-rc4/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-rc5/index.html b/download/archive/4.0-rc5/index.html
index 284144604b..9e7fd3d71d 100644
--- a/download/archive/4.0-rc5/index.html
+++ b/download/archive/4.0-rc5/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-rc6/index.html b/download/archive/4.0-rc6/index.html
index 796606abe3..97efb79ca4 100644
--- a/download/archive/4.0-rc6/index.html
+++ b/download/archive/4.0-rc6/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0-stable/index.html b/download/archive/4.0-stable/index.html
index 8658b0e2ef..67b0706301 100644
--- a/download/archive/4.0-stable/index.html
+++ b/download/archive/4.0-stable/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0.1-rc1/index.html b/download/archive/4.0.1-rc1/index.html
index 68cd349b4c..c0d236205f 100644
--- a/download/archive/4.0.1-rc1/index.html
+++ b/download/archive/4.0.1-rc1/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0.1-rc2/index.html b/download/archive/4.0.1-rc2/index.html
index f3de1ac678..1bde640c49 100644
--- a/download/archive/4.0.1-rc2/index.html
+++ b/download/archive/4.0.1-rc2/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0.1-stable/index.html b/download/archive/4.0.1-stable/index.html
index ff46883061..5f23d5a9d7 100644
--- a/download/archive/4.0.1-stable/index.html
+++ b/download/archive/4.0.1-stable/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0.2-rc1/index.html b/download/archive/4.0.2-rc1/index.html
index b95deaf815..1b196374b6 100644
--- a/download/archive/4.0.2-rc1/index.html
+++ b/download/archive/4.0.2-rc1/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0.2-stable/index.html b/download/archive/4.0.2-stable/index.html
index 6305c9bbb6..2a3a8af033 100644
--- a/download/archive/4.0.2-stable/index.html
+++ b/download/archive/4.0.2-stable/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0.3-rc1/index.html b/download/archive/4.0.3-rc1/index.html
index 062867c7d9..1bb16080cc 100644
--- a/download/archive/4.0.3-rc1/index.html
+++ b/download/archive/4.0.3-rc1/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0.3-rc2/index.html b/download/archive/4.0.3-rc2/index.html
index 42813acd61..13a18ef689 100644
--- a/download/archive/4.0.3-rc2/index.html
+++ b/download/archive/4.0.3-rc2/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0.3-stable/index.html b/download/archive/4.0.3-stable/index.html
index a8e1d60807..7b80d36147 100644
--- a/download/archive/4.0.3-stable/index.html
+++ b/download/archive/4.0.3-stable/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0.4-rc1/index.html b/download/archive/4.0.4-rc1/index.html
index ec55b683ec..b595268fa7 100644
--- a/download/archive/4.0.4-rc1/index.html
+++ b/download/archive/4.0.4-rc1/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.0.4-stable/index.html b/download/archive/4.0.4-stable/index.html
index 8360ee5867..b021bf93f0 100644
--- a/download/archive/4.0.4-stable/index.html
+++ b/download/archive/4.0.4-stable/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1-beta1/index.html b/download/archive/4.1-beta1/index.html
index db32c7399e..505b9f3002 100644
--- a/download/archive/4.1-beta1/index.html
+++ b/download/archive/4.1-beta1/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1-beta2/index.html b/download/archive/4.1-beta2/index.html
index de1184c79f..df94a9e14d 100644
--- a/download/archive/4.1-beta2/index.html
+++ b/download/archive/4.1-beta2/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1-beta3/index.html b/download/archive/4.1-beta3/index.html
index b728ce0fbe..5c7b1a4021 100644
--- a/download/archive/4.1-beta3/index.html
+++ b/download/archive/4.1-beta3/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1-dev1/index.html b/download/archive/4.1-dev1/index.html
index 8f1014f9f5..963b64e09b 100644
--- a/download/archive/4.1-dev1/index.html
+++ b/download/archive/4.1-dev1/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1-dev2/index.html b/download/archive/4.1-dev2/index.html
index 23674b65b2..9ed6afe504 100644
--- a/download/archive/4.1-dev2/index.html
+++ b/download/archive/4.1-dev2/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1-dev3/index.html b/download/archive/4.1-dev3/index.html
index b2744cb8bf..5a21d97af5 100644
--- a/download/archive/4.1-dev3/index.html
+++ b/download/archive/4.1-dev3/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1-dev4/index.html b/download/archive/4.1-dev4/index.html
index 71d840b2cc..abe0e2c9ba 100644
--- a/download/archive/4.1-dev4/index.html
+++ b/download/archive/4.1-dev4/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1-rc1/index.html b/download/archive/4.1-rc1/index.html
index ec27c97920..9068e971c7 100644
--- a/download/archive/4.1-rc1/index.html
+++ b/download/archive/4.1-rc1/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1-rc2/index.html b/download/archive/4.1-rc2/index.html
index a597f11778..6ba753b608 100644
--- a/download/archive/4.1-rc2/index.html
+++ b/download/archive/4.1-rc2/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1-rc3/index.html b/download/archive/4.1-rc3/index.html
index 131f4453d0..09891fbd7c 100644
--- a/download/archive/4.1-rc3/index.html
+++ b/download/archive/4.1-rc3/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1-stable/index.html b/download/archive/4.1-stable/index.html
index 3712fd33f6..dca4a6a292 100644
--- a/download/archive/4.1-stable/index.html
+++ b/download/archive/4.1-stable/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1.1-rc1/index.html b/download/archive/4.1.1-rc1/index.html
index a9c5a60b2c..f7272b28c9 100644
--- a/download/archive/4.1.1-rc1/index.html
+++ b/download/archive/4.1.1-rc1/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1.1-stable/index.html b/download/archive/4.1.1-stable/index.html
index 7bf00a9c93..92b8d04975 100644
--- a/download/archive/4.1.1-stable/index.html
+++ b/download/archive/4.1.1-stable/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1.2-rc1/index.html b/download/archive/4.1.2-rc1/index.html
index 3ece730112..371ccd40f2 100644
--- a/download/archive/4.1.2-rc1/index.html
+++ b/download/archive/4.1.2-rc1/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1.2-stable/index.html b/download/archive/4.1.2-stable/index.html
index 716b329ced..759487f9e0 100644
--- a/download/archive/4.1.2-stable/index.html
+++ b/download/archive/4.1.2-stable/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1.3-rc1/index.html b/download/archive/4.1.3-rc1/index.html
index 736a8f3780..8008ad6fc7 100644
--- a/download/archive/4.1.3-rc1/index.html
+++ b/download/archive/4.1.3-rc1/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1.3-stable/index.html b/download/archive/4.1.3-stable/index.html
index e7aa5e75e7..0974d2eaa1 100644
--- a/download/archive/4.1.3-stable/index.html
+++ b/download/archive/4.1.3-stable/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1.4-rc1/index.html b/download/archive/4.1.4-rc1/index.html
index 641e553bc6..3c274ba7e0 100644
--- a/download/archive/4.1.4-rc1/index.html
+++ b/download/archive/4.1.4-rc1/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1.4-rc2/index.html b/download/archive/4.1.4-rc2/index.html
index 6dc27a4037..9d9026d617 100644
--- a/download/archive/4.1.4-rc2/index.html
+++ b/download/archive/4.1.4-rc2/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1.4-rc3/index.html b/download/archive/4.1.4-rc3/index.html
index 686b093d3e..78f77508e8 100644
--- a/download/archive/4.1.4-rc3/index.html
+++ b/download/archive/4.1.4-rc3/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.1.4-stable/index.html b/download/archive/4.1.4-stable/index.html
index c2ecb0b90f..d7ebb0a328 100644
--- a/download/archive/4.1.4-stable/index.html
+++ b/download/archive/4.1.4-stable/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2-beta1/index.html b/download/archive/4.2-beta1/index.html
index 1da422cd32..40d59188c6 100644
--- a/download/archive/4.2-beta1/index.html
+++ b/download/archive/4.2-beta1/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2-beta2/index.html b/download/archive/4.2-beta2/index.html
index 75b344f95a..ece3666b9a 100644
--- a/download/archive/4.2-beta2/index.html
+++ b/download/archive/4.2-beta2/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2-beta3/index.html b/download/archive/4.2-beta3/index.html
index 5d7245cfd8..358ba7b913 100644
--- a/download/archive/4.2-beta3/index.html
+++ b/download/archive/4.2-beta3/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2-beta4/index.html b/download/archive/4.2-beta4/index.html
index 7840247c3a..858e47c155 100644
--- a/download/archive/4.2-beta4/index.html
+++ b/download/archive/4.2-beta4/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2-beta5/index.html b/download/archive/4.2-beta5/index.html
index aeb2ca48b1..8a36a9524d 100644
--- a/download/archive/4.2-beta5/index.html
+++ b/download/archive/4.2-beta5/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2-beta6/index.html b/download/archive/4.2-beta6/index.html
index 697c60ae9c..09c239dbb1 100644
--- a/download/archive/4.2-beta6/index.html
+++ b/download/archive/4.2-beta6/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2-dev1/index.html b/download/archive/4.2-dev1/index.html
index 5b44fe5683..4e28443944 100644
--- a/download/archive/4.2-dev1/index.html
+++ b/download/archive/4.2-dev1/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2-dev2/index.html b/download/archive/4.2-dev2/index.html
index 2e3283ddd4..1774ace903 100644
--- a/download/archive/4.2-dev2/index.html
+++ b/download/archive/4.2-dev2/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2-dev3/index.html b/download/archive/4.2-dev3/index.html
index 9fb674a90a..9276fb0da1 100644
--- a/download/archive/4.2-dev3/index.html
+++ b/download/archive/4.2-dev3/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2-dev4/index.html b/download/archive/4.2-dev4/index.html
index c5aec06d81..2b2015eaea 100644
--- a/download/archive/4.2-dev4/index.html
+++ b/download/archive/4.2-dev4/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2-dev5/index.html b/download/archive/4.2-dev5/index.html
index 94391c498b..b149a757ff 100644
--- a/download/archive/4.2-dev5/index.html
+++ b/download/archive/4.2-dev5/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2-dev6/index.html b/download/archive/4.2-dev6/index.html
index 690ac3e74b..5ec4264d1e 100644
--- a/download/archive/4.2-dev6/index.html
+++ b/download/archive/4.2-dev6/index.html
@@ -33,7 +33,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2-rc1/index.html b/download/archive/4.2-rc1/index.html
index ed7674c6ab..762296efa5 100644
--- a/download/archive/4.2-rc1/index.html
+++ b/download/archive/4.2-rc1/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2-rc2/index.html b/download/archive/4.2-rc2/index.html
index 7f9aca5a76..f428721d5d 100644
--- a/download/archive/4.2-rc2/index.html
+++ b/download/archive/4.2-rc2/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2-stable/index.html b/download/archive/4.2-stable/index.html
index 22a3e3da99..86fde62f1b 100644
--- a/download/archive/4.2-stable/index.html
+++ b/download/archive/4.2-stable/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2.1-rc1/index.html b/download/archive/4.2.1-rc1/index.html
index 28240c36ac..c3474d63a5 100644
--- a/download/archive/4.2.1-rc1/index.html
+++ b/download/archive/4.2.1-rc1/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2.1-stable/index.html b/download/archive/4.2.1-stable/index.html
index ee93719e0c..7e5578fc38 100644
--- a/download/archive/4.2.1-stable/index.html
+++ b/download/archive/4.2.1-stable/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2.2-rc1/index.html b/download/archive/4.2.2-rc1/index.html
index f70bbfc246..d76c481a51 100644
--- a/download/archive/4.2.2-rc1/index.html
+++ b/download/archive/4.2.2-rc1/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2.2-rc2/index.html b/download/archive/4.2.2-rc2/index.html
index 5a2fed0f57..8036603df5 100644
--- a/download/archive/4.2.2-rc2/index.html
+++ b/download/archive/4.2.2-rc2/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2.2-rc3/index.html b/download/archive/4.2.2-rc3/index.html
index 4fd5c8ab71..803c233252 100644
--- a/download/archive/4.2.2-rc3/index.html
+++ b/download/archive/4.2.2-rc3/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.2.2-stable/index.html b/download/archive/4.2.2-stable/index.html
index 78a068c341..ad4ad113f6 100644
--- a/download/archive/4.2.2-stable/index.html
+++ b/download/archive/4.2.2-stable/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.3-beta1/index.html b/download/archive/4.3-beta1/index.html
index 8e2ddcd3cd..b1878cce9b 100644
--- a/download/archive/4.3-beta1/index.html
+++ b/download/archive/4.3-beta1/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.3-beta2/index.html b/download/archive/4.3-beta2/index.html
index 5f3288a9c8..e28666701f 100644
--- a/download/archive/4.3-beta2/index.html
+++ b/download/archive/4.3-beta2/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.3-beta3/index.html b/download/archive/4.3-beta3/index.html
index 7aba6ebe26..71e9f66c5b 100644
--- a/download/archive/4.3-beta3/index.html
+++ b/download/archive/4.3-beta3/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.3-dev1/index.html b/download/archive/4.3-dev1/index.html
index 5f90650de7..d0c739a270 100644
--- a/download/archive/4.3-dev1/index.html
+++ b/download/archive/4.3-dev1/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.3-dev2/index.html b/download/archive/4.3-dev2/index.html
index 6485fc0515..800ed6fb00 100644
--- a/download/archive/4.3-dev2/index.html
+++ b/download/archive/4.3-dev2/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.3-dev3/index.html b/download/archive/4.3-dev3/index.html
index 74ceacbaa6..9ba01d9f26 100644
--- a/download/archive/4.3-dev3/index.html
+++ b/download/archive/4.3-dev3/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.3-dev4/index.html b/download/archive/4.3-dev4/index.html
index e3a82b633e..2046dfe3e9 100644
--- a/download/archive/4.3-dev4/index.html
+++ b/download/archive/4.3-dev4/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.3-dev5/index.html b/download/archive/4.3-dev5/index.html
index 220ee440e7..c06cdd23ea 100644
--- a/download/archive/4.3-dev5/index.html
+++ b/download/archive/4.3-dev5/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.3-dev6/index.html b/download/archive/4.3-dev6/index.html
index f8d1fe5423..2653807036 100644
--- a/download/archive/4.3-dev6/index.html
+++ b/download/archive/4.3-dev6/index.html
@@ -41,7 +41,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.3-rc1/index.html b/download/archive/4.3-rc1/index.html
index 30edde79b3..bb20830b50 100644
--- a/download/archive/4.3-rc1/index.html
+++ b/download/archive/4.3-rc1/index.html
@@ -45,7 +45,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.3-rc2/index.html b/download/archive/4.3-rc2/index.html
index a67e8593a6..49165c08e8 100644
--- a/download/archive/4.3-rc2/index.html
+++ b/download/archive/4.3-rc2/index.html
@@ -45,7 +45,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.3-rc3/index.html b/download/archive/4.3-rc3/index.html
index 0e8882be5a..1b7269dc2e 100644
--- a/download/archive/4.3-rc3/index.html
+++ b/download/archive/4.3-rc3/index.html
@@ -45,7 +45,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.3-stable/index.html b/download/archive/4.3-stable/index.html
index 72224f130d..c46133fe90 100644
--- a/download/archive/4.3-stable/index.html
+++ b/download/archive/4.3-stable/index.html
@@ -45,7 +45,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.4-dev1/index.html b/download/archive/4.4-dev1/index.html
index 209fbf8902..1e97efa26a 100644
--- a/download/archive/4.4-dev1/index.html
+++ b/download/archive/4.4-dev1/index.html
@@ -45,7 +45,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.4-dev2/index.html b/download/archive/4.4-dev2/index.html
index 64229322f3..c940f607a9 100644
--- a/download/archive/4.4-dev2/index.html
+++ b/download/archive/4.4-dev2/index.html
@@ -48,7 +48,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.4-dev3/index.html b/download/archive/4.4-dev3/index.html
index 79e7ab96f0..bb8aedff8a 100644
--- a/download/archive/4.4-dev3/index.html
+++ b/download/archive/4.4-dev3/index.html
@@ -48,7 +48,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.4-dev4/index.html b/download/archive/4.4-dev4/index.html
index e4a79452df..96b9f510be 100644
--- a/download/archive/4.4-dev4/index.html
+++ b/download/archive/4.4-dev4/index.html
@@ -48,7 +48,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.4-dev5/index.html b/download/archive/4.4-dev5/index.html
index dc150a8545..5b8a8062bb 100644
--- a/download/archive/4.4-dev5/index.html
+++ b/download/archive/4.4-dev5/index.html
@@ -48,7 +48,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/4.4-dev6/index.html b/download/archive/4.4-dev6/index.html
index d756254234..e599ccc492 100644
--- a/download/archive/4.4-dev6/index.html
+++ b/download/archive/4.4-dev6/index.html
@@ -48,7 +48,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/archive/index.html b/download/archive/index.html
index 23a250eb5e..c6145a4f1d 100644
--- a/download/archive/index.html
+++ b/download/archive/index.html
@@ -563,7 +563,7 @@
News
Changelog
Godot 1.0 Current state: stable
+Changelog
\ No newline at end of file
diff --git a/download/linux/index.html b/download/linux/index.html
index a1c086d40e..6f0102ba36 100644
--- a/download/linux/index.html
+++ b/download/linux/index.html
@@ -46,7 +46,7 @@
Linux ,
Windows ,
and
-macOS .
+macOS .
\ No newline at end of file
diff --git a/download/macos/index.html b/download/macos/index.html
index de33be444a..85bde38ae4 100644
--- a/download/macos/index.html
+++ b/download/macos/index.html
@@ -31,7 +31,7 @@
Linux ,
Windows ,
and
-macOS .
+macOS .
\ No newline at end of file
diff --git a/download/preview/index.html b/download/preview/index.html
index 589483ac8e..7a0cd19f38 100644
--- a/download/preview/index.html
+++ b/download/preview/index.html
@@ -48,7 +48,7 @@
Self-hosted · Cross-platform
+Android plugins · Java · Kotlin
\ No newline at end of file
diff --git a/download/windows/index.html b/download/windows/index.html
index cbc6d94985..82766a79ca 100644
--- a/download/windows/index.html
+++ b/download/windows/index.html
@@ -41,7 +41,7 @@
Linux ,
Windows ,
and
-macOS .
+macOS .
\ No newline at end of file
diff --git a/education/index.html b/education/index.html
index 3cba01800a..ad0615496a 100644
--- a/education/index.html
+++ b/education/index.html
@@ -23,7 +23,7 @@
Tutorials and resources page.We recommend GDQuest's Learn GDScript From Zero, which is a free and open source interactive tutorial for
absolute
beginners to learn to
-program with Godot's GDScript language. It is available as a desktop application or in the browser .
Want to know something else? If there is something else you would like to know, you can get in touch by writing us at contact@godotengine.org .
+program with Godot's GDScript language. It is available as a desktop application or in the browser .Want to know something else? If there is something else you would like to know, you can get in touch by writing us at contact@godotengine.org .
\ No newline at end of file
diff --git a/events/index.html b/events/index.html
index e671ab5041..14b872ab81 100644
--- a/events/index.html
+++ b/events/index.html
@@ -171,7 +171,7 @@
few weeks though).Date: Sunday, Feb 5 @ 16:30Location: Room AW1.126 (come early, places are limited)Link: FOSDEM abstract Meeting the community The primary purpose for many of us will be to meet each other in person after having worked for months or
even years together online.
We will have plenty of time to grab some Belgian beers together, and maybe organize a community dinner
-together on Saturday evening.
Event details Date: Feb 4 and 5 2017Location: Université Libre de Bruxelles (ULB), Brussels, Belgium
(Show on map )Entrance fee: Free
Registration: No registration needed, you can just show up at our stand and say hello, but we’d be glad if you would fill this form anyway so that we know who to expect.
+together on Saturday evening.Event details Date: Feb 4 and 5 2017Location: Université Libre de Bruxelles (ULB), Brussels, Belgium
(Show on map )Entrance fee: Free
Registration: No registration needed, you can just show up at our stand and say hello, but we’d be glad if you would fill this form anyway so that we know who to expect.
\ No newline at end of file
diff --git a/fbx-import/index.html b/fbx-import/index.html
index 3191d9be55..f8f1200a5d 100644
--- a/fbx-import/index.html
+++ b/fbx-import/index.html
@@ -26,7 +26,7 @@
case, macOS will automatically use Rosetta when running FBX2glTF. Creating an
universal macOS binary (x86_64 + ARM) for FBX2glTF is planned in the future.There are no plans to support the Android and HTML5 editor with FBX import, as
those platforms don't allow executing arbitrary external programs. For Android and HTML5, you can use FBX2glTF on another device then save the
-converted glTF file.
+converted glTF file.
\ No newline at end of file
diff --git a/features/index.html b/features/index.html
index 89154dbb64..77bc3ce83e 100644
--- a/features/index.html
+++ b/features/index.html
@@ -64,7 +64,7 @@
or build your own engine on top of it — it's all in your hands.
Find the logic behind any system in an open source codebase No need to wait for a support team to respond when you can read
the source code. Godot is an open book, and you can figure out everything
that is not yet documented after a single git checkout
.
-If you find and fix an issue, we will appreciate a PR upstream too.
+If you find and fix an issue, we will appreciate a PR upstream too.
\ No newline at end of file
diff --git a/governance/index.html b/governance/index.html
index 78491a6776..d45ea2f581 100644
--- a/governance/index.html
+++ b/governance/index.html
@@ -11,7 +11,7 @@
for their work to be included. Pull Requests are approved and merged by the respective area maintainers while,
again, always striving to promote agreement before moving forward. All improvements to the engine are made through
the Pull Requests of community members. Open discussion: Before doing any significant amount of work, we encourage maintainers,
-contributors, and community to open and discuss features and proposals in the Godot proposals repository . This allows all contributors to have a much better understanding of how users expect the new feature to be used. Because the primary aim of Godot is to produce a useful tool, we ask those who open proposals to discuss real-world use cases based on problems they are having with their current projects. This allows maintainers and contributors to have a much more "down to earth" understanding of user's requirements. This philosophy is best explained in the engine contributor guidelines .Community-minded: The Godot project is developed by and for the community. No corporate entity exists behind Godot that prioritizes one feature over another. Priorities are set by project leadership and area maintainers based on the feedback of the community in bug reports, proposals, and discussions in the various community channels. Ultimately, it is the community that determines the direction of the project.Every improvement to the engine, whether it is a feature or bug fix, is driven forward by Godot's community of contributors, users, maintainers, and leadership. Godot wouldn't exist in its current form without the countless contributions it receives from community members every day.
+contributors, and community to open and discuss features and proposals in the Godot proposals repository . This allows all contributors to have a much better understanding of how users expect the new feature to be used. Because the primary aim of Godot is to produce a useful tool, we ask those who open proposals to discuss real-world use cases based on problems they are having with their current projects. This allows maintainers and contributors to have a much more "down to earth" understanding of user's requirements. This philosophy is best explained in the engine contributor guidelines .
Community-minded: The Godot project is developed by and for the community. No corporate entity exists behind Godot that prioritizes one feature over another. Priorities are set by project leadership and area maintainers based on the feedback of the community in bug reports, proposals, and discussions in the various community channels. Ultimately, it is the community that determines the direction of the project.Every improvement to the engine, whether it is a feature or bug fix, is driven forward by Godot's community of contributors, users, maintainers, and leadership. Godot wouldn't exist in its current form without the countless contributions it receives from community members every day.
\ No newline at end of file
diff --git a/index.html b/index.html
index 6aee2a1e33..8dace20b1f 100644
--- a/index.html
+++ b/index.html
@@ -23,7 +23,7 @@
-
If you want to sponsor the project, please write to contact@godot.foundation .
Donate now!
+If you want to sponsor the project, please write to contact@godot.foundation .
Donate now!
\ No newline at end of file
diff --git a/license/index.html b/license/index.html
index dc86d2e90d..4ac6e212e3 100644
--- a/license/index.html
+++ b/license/index.html
@@ -51,7 +51,7 @@
legal advice.
They reflect the Godot Engine team's understanding of their own license terms and that of their third-party
components;
-in case of doubt, please refer to your lawyer.
+in case of doubt, please refer to your lawyer.
\ No newline at end of file
diff --git a/press/index.html b/press/index.html
index aa0704019d..3f78579f1d 100644
--- a/press/index.html
+++ b/press/index.html
@@ -45,7 +45,7 @@
credits or website, but it should not be done in a way that implies
endorsement of your project by the Godot developers.Do not distort the logo or icon.
In other words, always preserve the aspect ratio when scaling images.More design resources You can find more design resources such as artwork and 4K editor screenshots in the
-godot-design repository on GitHub .
+godot-design repository on GitHub .
\ No newline at end of file
diff --git a/priorities/index.html b/priorities/index.html
index cd05a6a67e..e0c4efaedb 100644
--- a/priorities/index.html
+++ b/priorities/index.html
@@ -81,7 +81,7 @@
unfold_less
Allow compiling Godot as a library that can be loaded and used by other applications
unfold_more
unfold_less
Currently, the engine’s capabilities are only accessible if the application itself is a Godot application. However, there are many situations where an application might want to use Godot as an intermediary. One case would be an application that uses native OS API for it’s UI, but needs Godot to render a complex 3D scene. Our goal is to make Godot available as a library to expand the possible uses of the engine.
This feature is better known as “LibGodot”.
Allow GDExtensions to communicate with one another
unfold_more
unfold_less
GDExtension was created to allow developers to create extensions as if they were coding a module directly in Godot’s source code. Currently, modules can depend on one another, but this is not yet possible for extensions. We aim to expose the necessary API to be able to. So, for example, an extension built with godot-rust would be able to extend an extension built with godot-cpp .
Add the ability to enable/disable GDExtensions in project settings
unfold_more
-unfold_less
For the time being, there’s no way to disable a GDExtension from a project without deleting the related files themselves. We plan to create a dialog akin to the Plugin tab in the Project settings in order to easily enable and disable GDExtensions.
+unfold_less For the time being, there’s no way to disable a GDExtension from a project without deleting the related files themselves. We plan to create a dialog akin to the Plugin tab in the Project settings in order to easily enable and disable GDExtensions.
\ No newline at end of file
diff --git a/privacy-policy/index.html b/privacy-policy/index.html
index a29e334fb2..b27622ebee 100644
--- a/privacy-policy/index.html
+++ b/privacy-policy/index.html
@@ -95,7 +95,7 @@
Statement will be posted on this site. A notice will be posted on our homepage for 30 days whenever this privacy
statement is changed in a material way.This Privacy Statement was last amended on 2021-02-01. You can review the change history at https://github.com/godotengine/godot-website/commits/master/themes/godotengine/pages/privacy-policy.htm .
Attribution and License This Privacy Policy is licensed under Attribution-ShareAlike 4.0 International (CC BY-SA 4.0). It is a derivative
work of:
+4.0). https://www.fsf.org/about/free-software-foundation-privacy-policy WordPress.org's Privacy Policy, used under Attribution-ShareAlike 2.5 Generic (CC BY-SA 2.5). https://wordpress.org/about/privacy
\ No newline at end of file
diff --git a/releases/4.3/index.html b/releases/4.3/index.html
index c4aae1d490..82fee9f82a 100644
--- a/releases/4.3/index.html
+++ b/releases/4.3/index.html
@@ -316,7 +316,7 @@
with special thanks to
GDQuest ,
Kenney ,
-and FR3NKD Texts by Nathalie Galla & Adam Scott
+and FR3NKD
Texts by Nathalie Galla & Adam Scott
\ No newline at end of file
diff --git a/showcase/Badaboom/index.html b/showcase/Badaboom/index.html
index 2805b5ff85..5536ce37c3 100644
--- a/showcase/Badaboom/index.html
+++ b/showcase/Badaboom/index.html
@@ -4,7 +4,7 @@
| October 2023
Badaboom is a match-3 puzzle game with gorgeous environments and great music.
Play in multiple environments, each with their own song. Each map has its own pace — whether you want to sit back and relax or you are in the mood to break your previous record, Badaboom has you covered!
Ideal for both casual and competitive players, Badaboom brings fun for the whole family. You can play seated or standing, with one or two controllers.
Main features:
🏞 10 different environments and songs, with an unlockable alternative version each + expansion packs! 📈 Global leaderboards. ⏰ Weekly challenges. ⚙️ Wide variety of accessibility options, including various colorblind settings. 🏆 Achievements & unlockable perks to enhance the gameplay experience.
-
+
\ No newline at end of file
diff --git a/showcase/a-most-extraordinary-gnome/index.html b/showcase/a-most-extraordinary-gnome/index.html
index 2b1d556917..3a15420125 100644
--- a/showcase/a-most-extraordinary-gnome/index.html
+++ b/showcase/a-most-extraordinary-gnome/index.html
@@ -3,7 +3,7 @@
A Most Extraordinary Gnome
A short adventure awaits! Waking up every day as the forest’s only protector is not an easy job for anyone. There’s not only every animal’s personal problem a gnome has to deal with — as mysteriously dark, unprecedented things start happening in the forest; the source of which no one really understands. Fear, escaping and destruction taint the previously peaceful life of the animals. Seemingly only one can stop this — but what can a single gnome really do to save the world?
A Most Extraordinary Gnome is a short, narrative-driven game, which combines challenging and unique 2D action with complex storytelling. You control a small gnome, who uses his hat to defeat the dangers he encounters in increasingly intense stages.
The features of the game Unlike anything you’ve seen in indie gaming! A colorful and vibrant 2D world, made entirely out of hand crafted paper cut-out elementsGameplay tailored just to you. Whether you’re looking for a laid-back experience or a harder challenge, gameplay settings are there to accommodate your needs!A deep story! There’s more than what just meets the eye. Embark on a short journey which will lead you to unexpected places.Confront the dangers facing the forest! Fight multiple distinctive bosses, each with its own challenge!Meet the dwellers of the forest! Your house is home to a diverse group of animals, each with its own look at the world and you.A memorable score! The game features a unique, Eastern-European inspired soundtrack, which dynamically changes based on the level of threat your character is facing at the moment.A world made out of paper As a rare sight in gaming, the entire adventure comes alive with the help of paper. Anything you see in the game is made by hand, stacking layers of colorful paper on each other to create this flat, but heavily detailed aesthetic the game. Utilizing traditional stop-motion techniques wherever necessary, the movements also get a unique flair specific to this game.
We hope you enjoy this hand-crafted adventure!
-
+
\ No newline at end of file
diff --git a/showcase/action-game-maker/index.html b/showcase/action-game-maker/index.html
index 9a5211e45a..4b107fe9e6 100644
--- a/showcase/action-game-maker/index.html
+++ b/showcase/action-game-maker/index.html
@@ -5,7 +5,7 @@
Unchain Your Imagination!
Fully No Coding Visual Scripting “ACTION GAME MAKER” builds on the node-based visual scripting system created for “Pixel Game Maker MV” with many improvements.
No knowledge of programming is needed. Simply connect up Actions (similar to RPG Maker’s Event Commands) and see the unique logic for your game come together!
Sample Assets Included! Everything you need to build your first game is included, from character art to tiles, music, and sound effects!
Free yourself from worrying about assets and just get started!
The provided samples are intentionally simple and pixel-style so that it’s easy to open them up and make modifications or extensions to begin creating your own original look!
Of course, if you already have your own assets it’s easy to import them – and high resolutions are supported!
-Why the developer chose Godot There's a lot to like about Godot. The very lightweight editor comes to mind first, but the straightforward UI and the breadth of 2D features combined with the modern selection of build targets are all great. But what really sets Godot apart is the energy and passion from the Godot community itself. Constantly active, you can really feel that everyone is working hard to make good games and Godot better at the same time. We're really going to need to give it our all to ensure that Action Game Maker can proudly be accepted by and call ourselves part of this community!
+Why the developer chose Godot There's a lot to like about Godot. The very lightweight editor comes to mind first, but the straightforward UI and the breadth of 2D features combined with the modern selection of build targets are all great. But what really sets Godot apart is the energy and passion from the Godot community itself. Constantly active, you can really feel that everyone is working hard to make good games and Godot better at the same time. We're really going to need to give it our all to ensure that Action Game Maker can proudly be accepted by and call ourselves part of this community!
\ No newline at end of file
diff --git a/showcase/beat-invaders/index.html b/showcase/beat-invaders/index.html
index 5952b29d9f..a6007543f3 100644
--- a/showcase/beat-invaders/index.html
+++ b/showcase/beat-invaders/index.html
@@ -3,7 +3,7 @@
Beat Invaders is a space-themed action roguelite shoot-em-up! Shoot your path through waves of enemies playing as one of three Pilots, each with their own Ship Class.
Combine upgrades, ship hacks, and specials to unleash an insane devastation on your enemies!
-Protect your freighters, beat the bosses and survive intense events to make your delivery.
Gameplay is speed is dependent on the speed of the current track , your opponents’ movements and firing rates are dictated by each song’s beat and tempo.
Level up during a run and choose from different upgrades to make your space ship more powerful. Combine different upgrades to create powerful builds.
Use your earned upgrade points after a run to further enhance your space ship and unlock different ship classes with unique main weapons and stats to take on enemies on harder difficulties. The upgrades can be reset and redestributed to try out different strategies with different ship classes.
Create devastating combos using events and boosts that wipe out screens full of enemies in seconds!
Event waves and mini events break up the pace and make for fun, rewarding challenges.
Features: Action Roguelite Shoot-em-up, paying tribute to old school games like Space Invaders or Galaga. Upgrade your ship’s and convoy's systems between enemy waves and purchase meta upgrades between runs. Different game modes: Easy, Normal, Hyper Mode, Speedrun, Lone Wolf, Weeklies and Dailies!) - all with online leaderboards Mini-events, Booster pickup items and different event waves make for challenging combos. Permanentely improve your ship’s sub-system, unlock new weapons and convoy gadgets between runs. Beat Bosses and tricky Events and show your worth! High score challenge! Compare your scores to your friends playing Beat Invaders, and try to beat their records! Runs great on the Steam Deck. Full mouse, keyboard and controller support. Atmospheric electronic and vocal soundtrack with 33 tracks that sets the pace of your adversaries, making each round unique to its song.
+Protect your freighters, beat the bosses and survive intense events to make your delivery.Gameplay is speed is dependent on the speed of the current track , your opponents’ movements and firing rates are dictated by each song’s beat and tempo.
Level up during a run and choose from different upgrades to make your space ship more powerful. Combine different upgrades to create powerful builds.
Use your earned upgrade points after a run to further enhance your space ship and unlock different ship classes with unique main weapons and stats to take on enemies on harder difficulties. The upgrades can be reset and redestributed to try out different strategies with different ship classes.
Create devastating combos using events and boosts that wipe out screens full of enemies in seconds!
Event waves and mini events break up the pace and make for fun, rewarding challenges.
Features: Action Roguelite Shoot-em-up, paying tribute to old school games like Space Invaders or Galaga. Upgrade your ship’s and convoy's systems between enemy waves and purchase meta upgrades between runs. Different game modes: Easy, Normal, Hyper Mode, Speedrun, Lone Wolf, Weeklies and Dailies!) - all with online leaderboards Mini-events, Booster pickup items and different event waves make for challenging combos. Permanentely improve your ship’s sub-system, unlock new weapons and convoy gadgets between runs. Beat Bosses and tricky Events and show your worth! High score challenge! Compare your scores to your friends playing Beat Invaders, and try to beat their records! Runs great on the Steam Deck. Full mouse, keyboard and controller support. Atmospheric electronic and vocal soundtrack with 33 tracks that sets the pace of your adversaries, making each round unique to its song.
\ No newline at end of file
diff --git a/showcase/blastronaut/index.html b/showcase/blastronaut/index.html
index 59d5fd9437..0d27559324 100644
--- a/showcase/blastronaut/index.html
+++ b/showcase/blastronaut/index.html
@@ -3,7 +3,7 @@
Mine resources! Upgrade your gear! Make Profit! It is a dangerous but lucrative job. Explore this vast procedurally generated world with your jetpack. Extract the minerals with an explosive gel. Expand your mining platform. But most importantly: stay alive.
The game offers you: Mining and selling resources for profit Exploring an infinite procedurally generated world Upgrading your gear A lot of explosions The depths of the planet hide many unique biomes and treasures, but also dangers. Every biome has its own way to harm you and having the right set of gear will make your life much easier.
On the ground, you can build your base of operation. Different machines allow you to process and trade the resources that you have brought from your last mining operation.
-
+
\ No newline at end of file
diff --git a/showcase/brotato/index.html b/showcase/brotato/index.html
index 563cb20b02..a7a1070a30 100644
--- a/showcase/brotato/index.html
+++ b/showcase/brotato/index.html
@@ -3,7 +3,7 @@
A spaceship from Potato World crashes onto an alien planet. The sole survivor: Brotato, the only potato capable of handling 6 weapons at the same time. Waiting to be rescued by his mates, Brotato must survive in this hostile environment.
Features
Auto-firing weapons by default with a manual aiming option Fast runs (under 30 minutes) Dozens of characters available to customize your runs (one-handed, crazy, lucky, mage and many more) Hundreds of items and weapons to choose from (flamethrowers, SMGs, rocket launchers or sticks and stones) Survive waves lasting 20 to 90 seconds each and kill off as many aliens as you can during that time Collect materials to gain experience and get items from the shop between waves of enemies Accessibility options: tweak the health, damage and speed of enemies so the difficulty is right for you
-
+
\ No newline at end of file
diff --git a/showcase/case-of-the-golden-idol/index.html b/showcase/case-of-the-golden-idol/index.html
index 24d53d52e0..50000812ae 100644
--- a/showcase/case-of-the-golden-idol/index.html
+++ b/showcase/case-of-the-golden-idol/index.html
@@ -4,7 +4,7 @@
| Oct 2022
Investigate Gruesome Crimes Step into the shoes of an 18th century detective and uncover the mystery behind twelve strange deaths spanning 50 years, all somehow connected.
Unmask the true killers in this sprawling narrative and discover their devious motives.
Piece Together the Plot Observe closely and reconstruct each scene of death. Your skills of deduction can identify each suspect, motive and murder weapon.
Uncover the Conspiracy Reveal the true nature of the mysterious Golden Idol and those who covet it. Follow the journey of a cursed aristocratic family as you untangle a web of deceit and villainy in your hunt for the truth behind this dark conspiracy.
-
+
\ No newline at end of file
diff --git a/showcase/cassette-beasts/index.html b/showcase/cassette-beasts/index.html
index 2c803dfead..3795250fcc 100644
--- a/showcase/cassette-beasts/index.html
+++ b/showcase/cassette-beasts/index.html
@@ -3,7 +3,7 @@
Welcome to New Wirral, a remote island inhabited by strange creatures you’ve only dreamed of, nightmares you hopefully haven’t, and a cast of brave folks who use cassette tapes to transform for battle. To find a way home you’ll need to explore every inch of the island, and record monsters to your trusty cassette tapes to gain their abilities!
Faced with the constant threat of monster attacks, you must protect the residents of Harbourtown. Record a monster to tape, then play it back to take on its form for battle!
Any two monster forms can be fused to produce unique, fully-animated new fusion forms.
Explore a rich open world Certain monster abilities can be used in human form. You’ll need these to help you get around, solve puzzles, and locate dungeons. Glide, fly, swim, climb, dash, or turn magnetic!
Travel alongside a diverse cast of human companions Never fight alone! Form bonds, spend time together, and help your selected partner complete personal goals to become a better team. The strength of your relationship determines how well you’re able to fuse!
Master a deep battle system Take advantage of elemental chemistry to apply extra buffs or debuffs alongside your attack, or even alter your opponent’s elemental type!
-
+
\ No newline at end of file
diff --git a/showcase/city-game-studio/index.html b/showcase/city-game-studio/index.html
index f60c7d693e..dadecd8ffc 100644
--- a/showcase/city-game-studio/index.html
+++ b/showcase/city-game-studio/index.html
@@ -13,7 +13,7 @@
Furthermore you will be able to publish your own publishing contracts. Then
you will then be ready to dominate the market and buy back your competitors.Feature list Develop or rent game engines Receive/publish game offers Buying or renting several buildings Develop and manage a digital store Cracking competitors' games Unlocking new game genres Spy the competitors Hire staff Organize marketing campaigns Organizing and attending conventions Buy out companies Executing contracts that trains your employees Porting games to several consoles Design your company logo Manage your employees' schedules Get awarded Game of the Year Microtransactions Console exclusive game Lootboxes Have a good time This game doesn’t have:
eSport competitions An R&D department A multiplayer mode City Game Studio is inspired by marvelous games like
Game Dev Story Game Dev Tycoon Software Inc Sim City Mad Games Tycoon
+View on GOG.com
\ No newline at end of file
diff --git a/showcase/cruelty-squad/index.html b/showcase/cruelty-squad/index.html
index b45aa0f9e0..33e9596f09 100644
--- a/showcase/cruelty-squad/index.html
+++ b/showcase/cruelty-squad/index.html
@@ -1,7 +1,7 @@
Cruelty Squad – Godot Engine Cruelty Squad is a tactical first person shooter set in the hardcore gig economy of corporate liquidations. You're an emotionally dead combat-substance fueled grunt of Cruelty Squad, a depraved subsidiary company tasked with performing wetworks for its host conglomerate. Will you make the Corporate Arch Demoness proud or succumb to bitter tears of failure?
Highly kinematic tactical gameplay using varied weapons such as the flechette shotgun, silenced 10mm pistol, radiation emitter, dart gun, corrosive gas launcher and more. No handholding! All of the missions have multiple viable approaches and routes. Plan out your equipment loadout to gain a tactical advantage. Choose between non-lethal and lethal options. Throw toilet bowls at enemies. Fight and sneak through offices, suburbs, police stations and secret compounds. Find and unlock hidden equipment and levels. Open objective based gameplay, in each mission your goal is to kill or destroy your targets before heading for the exit. Revisit earlier missions and try to beat your best time. Can you S-rank all of the missions? Enemies including private security, cops, psycho freaks, flower hybrids, swamp cultists and mutant dogs. Talk to NPCs and figure out the mysteries of the world. Advanced death mechanics. Stock and organ market simulation. Punishment mode.
+| June 2021
Cruelty Squad is a tactical first person shooter set in the hardcore gig economy of corporate liquidations. You're an emotionally dead combat-substance fueled grunt of Cruelty Squad, a depraved subsidiary company tasked with performing wetworks for its host conglomerate. Will you make the Corporate Arch Demoness proud or succumb to bitter tears of failure?
Highly kinematic tactical gameplay using varied weapons such as the flechette shotgun, silenced 10mm pistol, radiation emitter, dart gun, corrosive gas launcher and more. No handholding! All of the missions have multiple viable approaches and routes. Plan out your equipment loadout to gain a tactical advantage. Choose between non-lethal and lethal options. Throw toilet bowls at enemies. Fight and sneak through offices, suburbs, police stations and secret compounds. Find and unlock hidden equipment and levels. Open objective based gameplay, in each mission your goal is to kill or destroy your targets before heading for the exit. Revisit earlier missions and try to beat your best time. Can you S-rank all of the missions? Enemies including private security, cops, psycho freaks, flower hybrids, swamp cultists and mutant dogs. Talk to NPCs and figure out the mysteries of the world. Advanced death mechanics. Stock and organ market simulation. Punishment mode.
\ No newline at end of file
diff --git a/showcase/delta-v-rings-of-saturn/index.html b/showcase/delta-v-rings-of-saturn/index.html
index b772475a86..b0f8eed37d 100644
--- a/showcase/delta-v-rings-of-saturn/index.html
+++ b/showcase/delta-v-rings-of-saturn/index.html
@@ -12,7 +12,7 @@
gameplay - adapt to survive in the hostile environment of space. Discover the mystery of the Rings, or just try to get rich leading your
excavation company. Plan your strategy back on Enceladus Prime station. Sell your output,
upgrade your ship, hire the crew and manage your company.
+View on itch.io
\ No newline at end of file
diff --git a/showcase/dome-keeper/index.html b/showcase/dome-keeper/index.html
index 73309ac08b..a00759abad 100644
--- a/showcase/dome-keeper/index.html
+++ b/showcase/dome-keeper/index.html
@@ -1,7 +1,7 @@
Dome Keeper – Godot Engine Defend your dome from wave after wave of monsters in this innovative roguelike survival miner, Dome Keeper. Use the time between each attack to dig beneath the surface in search of valuable resources and artifacts – use them carefully to choose powerful upgrades and bonuses. Set on beautifully crafted pixel art alien planets, Dome Keeper offers a captivating atmosphere with music tracks fusing melodic and synthetic creations.
Dig Drill tunnels beneath your dome in search of precious materials or to uncover powerful hidden artifacts. Watch the time, you need to get back to the dome and be ready when the next wave of attack comes. How deep will you get this time? How much can you carry back?
Defend Take control of your defenses to fend off the alien attacks. Air and ground, slow and fast; the attackers must be prioritized and dealt with before they tear your dome apart.
Develop Utilize your mineral harvest to unlock powerful upgrades: augment your weapons, enhance the impact of your drill, boost your jetpack’s max speed, and many other upgrade paths -- each of which gives you and your dome the best odds for survival!
+| September 2022
Defend your dome from wave after wave of monsters in this innovative roguelike survival miner, Dome Keeper. Use the time between each attack to dig beneath the surface in search of valuable resources and artifacts – use them carefully to choose powerful upgrades and bonuses. Set on beautifully crafted pixel art alien planets, Dome Keeper offers a captivating atmosphere with music tracks fusing melodic and synthetic creations.
Dig Drill tunnels beneath your dome in search of precious materials or to uncover powerful hidden artifacts. Watch the time, you need to get back to the dome and be ready when the next wave of attack comes. How deep will you get this time? How much can you carry back?
Defend Take control of your defenses to fend off the alien attacks. Air and ground, slow and fast; the attackers must be prioritized and dealt with before they tear your dome apart.
Develop Utilize your mineral harvest to unlock powerful upgrades: augment your weapons, enhance the impact of your drill, boost your jetpack’s max speed, and many other upgrade paths -- each of which gives you and your dome the best odds for survival!
\ No newline at end of file
diff --git a/showcase/dungeondraft/index.html b/showcase/dungeondraft/index.html
index 5085cdefa5..ac0419b036 100644
--- a/showcase/dungeondraft/index.html
+++ b/showcase/dungeondraft/index.html
@@ -2,7 +2,7 @@
Dungeondraft is an easy-to-use and featureful encounter mapping tool for your
-table-top RPG and D&D needs.
Unintimidating UI Clean, appealing art style Fast workflow Smart tiling system Smart object scattering Built-in lighting system Built-in dungeon and cave generator No Internet required to use, DRM-free
+table-top RPG and D&D needs.Unintimidating UI Clean, appealing art style Fast workflow Smart tiling system Smart object scattering Built-in lighting system Built-in dungeon and cave generator No Internet required to use, DRM-free
\ No newline at end of file
diff --git a/showcase/endoparasitic/index.html b/showcase/endoparasitic/index.html
index 3ef7e9ae6f..9d7511dc31 100644
--- a/showcase/endoparasitic/index.html
+++ b/showcase/endoparasitic/index.html
@@ -2,7 +2,7 @@
Three limbs ripped off, infected with a deadly parasite, you must save your research. Drag yourself through the corridors of a secret research lab on a remote asteroid, fight off horribly mutated monsters, inject countless syringes of vaccines, and survive at all costs.
Endoparasitic is a tactical survival horror game where you must manually do every action from reloading to moving. Juggle movement and firing and plan room entrances to avoid getting swarmed.
Features:
One handed in game, one handed in real life: Everything is mouse-controlled Guns are manually loaded one bullet at a time Your healthbar is a parasite burrowing to your brain Stealth sections Puzzles Story and characters Various mutated monsters to fight Boss fights Four guns
+View on itch.io
\ No newline at end of file
diff --git a/showcase/ex-zodiac/index.html b/showcase/ex-zodiac/index.html
index 82fdee86e5..15a2a0aef5 100644
--- a/showcase/ex-zodiac/index.html
+++ b/showcase/ex-zodiac/index.html
@@ -5,7 +5,7 @@
early 90's 3D games. Join protagonist Kyuu as she fights to free the worlds of
the Sanzaru Star System, overrun by the intergalactic terrorist organization
known as Zodiac.Featuring A retro, colourful, low-poly visual style 12 main levels (plus secret areas and side-paths) Multiple routes to complete the game Major bosses at the end of each level, each piloted by a member of the Zodiac A 16-bit style soundtrack by +TEK combining FM and wavetable synthesis
+View on itch.io
\ No newline at end of file
diff --git a/showcase/fist-of-the-forgotten/index.html b/showcase/fist-of-the-forgotten/index.html
index 7fdfb4d69e..c6fb4d3d56 100644
--- a/showcase/fist-of-the-forgotten/index.html
+++ b/showcase/fist-of-the-forgotten/index.html
@@ -1,7 +1,7 @@
Fist of the Forgotten – Godot Engine Fist of the Forgotten is a platformer set in a harsh, dark world, but that doesn't mean you're helpless. Relics passed down from your family allow you to interact with forgotten technology and fight your way forward.
Make your way through a forgotten civilization, facing ancient automatons, and acquire some of their technology.
3D assets and high framerate physics allow for perfectly smooth, fluid animation, even on monitors that display at > 100hz. Mechanics in the game, such as sliding down slopes and grappling allow you to build up and maintain momentum.
Fist of the Forgotten's narrative contains no dialogue, so you are free to pay attention to the details to understand the depth of the story, try to uncover alternate endings, or simply focus on flowing through the levels as quickly as possible and enjoy the gameplay.
The fist provides combat capabilities as well as movement. Use it to reach further platforms and combine it with other momentum gaining abilities, such as sliding down hills, to cover extreme gaps.
+| Release date: TBD
Fist of the Forgotten is a platformer set in a harsh, dark world, but that doesn't mean you're helpless. Relics passed down from your family allow you to interact with forgotten technology and fight your way forward.
Make your way through a forgotten civilization, facing ancient automatons, and acquire some of their technology.
3D assets and high framerate physics allow for perfectly smooth, fluid animation, even on monitors that display at > 100hz. Mechanics in the game, such as sliding down slopes and grappling allow you to build up and maintain momentum.
Fist of the Forgotten's narrative contains no dialogue, so you are free to pay attention to the details to understand the depth of the story, try to uncover alternate endings, or simply focus on flowing through the levels as quickly as possible and enjoy the gameplay.
The fist provides combat capabilities as well as movement. Use it to reach further platforms and combine it with other momentum gaining abilities, such as sliding down hills, to cover extreme gaps.
\ No newline at end of file
diff --git a/showcase/gourdlets/index.html b/showcase/gourdlets/index.html
index f4d53315cb..1b5fa866fd 100644
--- a/showcase/gourdlets/index.html
+++ b/showcase/gourdlets/index.html
@@ -5,7 +5,7 @@
View on itch.io
-
+
\ No newline at end of file
diff --git a/showcase/gravity-ace/index.html b/showcase/gravity-ace/index.html
index 30bd51bfb2..738b885098 100644
--- a/showcase/gravity-ace/index.html
+++ b/showcase/gravity-ace/index.html
@@ -6,7 +6,7 @@
Descend into dark caverns, fly and blast your way past enemies, retrieve the
reactor core and make your escape, all while fighting the deadly embrace of
crushing gravity.
Why the developer chose Godot I think without Godot I'd be much farther behind where I am now. Godot just works in a way that meshes with how I like to think and work. I'd be much less productive for sure.
The 2D workflow is pretty great. Just drop some images in and drag them onto the canvas, attach a script, write a few lines of GDScript and you've got the beginning of a game. Modifying assets is seamless. And the node tree is super powerful. Reusing scenes in other scenes allows me to do a lot of stuff quickly and visually that would have been much more cumbersome in other frameworks.
— Godot Showcase - Gravity Ace developer talks about his experience
+View on itch.io
Why the developer chose Godot I think without Godot I'd be much farther behind where I am now. Godot just works in a way that meshes with how I like to think and work. I'd be much less productive for sure.
The 2D workflow is pretty great. Just drop some images in and drag them onto the canvas, attach a script, write a few lines of GDScript and you've got the beginning of a game. Modifying assets is seamless. And the node tree is super powerful. Reusing scenes in other scenes allows me to do a lot of stuff quickly and visually that would have been much more cumbersome in other frameworks.
— Godot Showcase - Gravity Ace developer talks about his experience
\ No newline at end of file
diff --git a/showcase/haiki/index.html b/showcase/haiki/index.html
index 8c648a659f..de2f1d141a 100644
--- a/showcase/haiki/index.html
+++ b/showcase/haiki/index.html
@@ -8,7 +8,7 @@
oblivion. You’ll need precision jumps and keen reactions to survive the 80
hand-crafted levels standing between Haiki and victory.Die, die and die again until your reflexes are sharp enough to face the
headless Baron and get your body back.
Or lose your head forever.
Want to get ahead? Get a hat! Collect dapper, dashing and dandy hats on your
-journey up from the gutter. How do the hats help Haiki on his quest?
They don't. AT ALL.
They're just hats.
Features Fast-paced, intuitive, limb-free platforming 80 levels, from EASY to PURE HELL A story that makes Shakespeare look like an idiot Speedrun mode for the truly hardcore Collectible hats for the truly awesome
+journey up from the gutter. How do the hats help Haiki on his quest?They don't. AT ALL.
They're just hats.
Features Fast-paced, intuitive, limb-free platforming 80 levels, from EASY to PURE HELL A story that makes Shakespeare look like an idiot Speedrun mode for the truly hardcore Collectible hats for the truly awesome
\ No newline at end of file
diff --git a/showcase/halls-of-torment/index.html b/showcase/halls-of-torment/index.html
index 7f16adb83d..c4488715d8 100644
--- a/showcase/halls-of-torment/index.html
+++ b/showcase/halls-of-torment/index.html
@@ -4,7 +4,7 @@
| May 2023
Halls of Torment is a horde survival game in a pre rendered retro look reminiscent of RPGs from the late 90s. Choose one of many hero characters and descend into the deadly Halls of Torment. Fight unholy horrors from beyond and survive wave after wave until you face one of the tormented lords. Advance your hero with character traits, abilities, and items. Create a new powerful build during each run. Explore various underground expanses and find new powerful items that enable you to venture even deeper into the abyss.
Features Quick and casual runs of maximum 30 minutes Old school pre rendered artstyle Quest based meta progression Large selection of diverse abilities, traits, and items, all enabling you to create interesting synergies Diverse bosses featuring unique mechanics and attack patterns Items can be retrieved to the overworld and used to customize future runs Dozens of interesting characters allowing many different playstyles Unlock and explore multiple interesting and challenging underground worlds Interactable environments: Use traps and hazards to your advantage! Early Access Content 3+ stages unique environment 7+ playable characters 11+ different and upgradable abilities 12+ unique bosses 30+ unique monsters 14+ blessings making you stronger for each attempt 50+ different items to unlock and retrieve 500+ traits that upgrade characters and abilities 150+ quests to complete This is the content the early access will start with and will be expanded on until the final release.
-
+
\ No newline at end of file
diff --git a/showcase/hive-time/index.html b/showcase/hive-time/index.html
index 6e1427838d..edc96c1cc2 100644
--- a/showcase/hive-time/index.html
+++ b/showcase/hive-time/index.html
@@ -8,7 +8,7 @@
find pollen and nectar, have Builders research new cell types, and ensure you
have enough Beesitters to raise the next generation of bees. Make interesting
choices that affect the hive - respond to wasp attacks, deal with outlaw
-slugs, or help a caterpillar realise a lifelong dream.
Why the developer chose Godot I felt like Godot enabled me to pull the core game together very quickly. The most attractive parts of the engine for me come from its nature as a Free/Open Source Software project and the ability that gives me to debug, fix, or modify the engine to suit my personal needs.
I also feel more comfortable using free and Free tools because I can be confident that if others want to follow in my footsteps, financial or philosophical hurdles won't prevent them from doing so.
— Godot Showcase - Hive Time developer Cheeseness talks about his experience
+slugs, or help a caterpillar realise a lifelong dream.
Why the developer chose Godot I felt like Godot enabled me to pull the core game together very quickly. The most attractive parts of the engine for me come from its nature as a Free/Open Source Software project and the ability that gives me to debug, fix, or modify the engine to suit my personal needs.
I also feel more comfortable using free and Free tools because I can be confident that if others want to follow in my footsteps, financial or philosophical hurdles won't prevent them from doing so.
— Godot Showcase - Hive Time developer Cheeseness talks about his experience
\ No newline at end of file
diff --git a/showcase/human-diaspora/index.html b/showcase/human-diaspora/index.html
index ae51feb6fd..5c4f096480 100644
--- a/showcase/human-diaspora/index.html
+++ b/showcase/human-diaspora/index.html
@@ -9,7 +9,7 @@
the stars and landed on an alien planet. The only way to save humanity is to
fight the enemy invader and secure your place among the strongest. Be it on
land, sea or space territories, shoot your way into victory, never accept
-defeat. Humanity must endure!
Why the developer chose Godot Foremost, Godot is FOSS . It entails freedom to dispose of my game projects as I best see fit without worrying about the intricacies of software licenses. And while learning to use it, I realized it already had the necessary set of tools to pull out my game ideas. The node architecture with the concept of scene within scenes and the straightforward way of scripting with GDScript sealed the deal for me.
— Godot Showcase - Human Diaspora developer interview
+defeat. Humanity must endure!
Why the developer chose Godot Foremost, Godot is FOSS . It entails freedom to dispose of my game projects as I best see fit without worrying about the intricacies of software licenses. And while learning to use it, I realized it already had the necessary set of tools to pull out my game ideas. The node architecture with the concept of scene within scenes and the straightforward way of scripting with GDScript sealed the deal for me.
— Godot Showcase - Human Diaspora developer interview
\ No newline at end of file
diff --git a/showcase/index.html b/showcase/index.html
index 5458ebaf77..0e604ded53 100644
--- a/showcase/index.html
+++ b/showcase/index.html
@@ -126,7 +126,7 @@
Gotcha Gotcha Games PVKK: Planetenverteidigungskanonenkommandant
Bippinbits
Fist of the Forgotten
Lone Wulf Studio
Kingdoms of the Dump
-Roach Games
Do you want us to showcase your game or project? Read our showcase guidelines and criteria .
+Roach Games
Do you want us to showcase your game or project? Read our showcase guidelines and criteria .
\ No newline at end of file
diff --git a/showcase/kamaeru/index.html b/showcase/kamaeru/index.html
index 82275bfe32..3bf78bffc2 100644
--- a/showcase/kamaeru/index.html
+++ b/showcase/kamaeru/index.html
@@ -5,7 +5,7 @@
-
+
\ No newline at end of file
diff --git a/showcase/kingdoms-of-the-dump/index.html b/showcase/kingdoms-of-the-dump/index.html
index e86dc9630a..956ba70bd1 100644
--- a/showcase/kingdoms-of-the-dump/index.html
+++ b/showcase/kingdoms-of-the-dump/index.html
@@ -3,7 +3,7 @@
Kingdoms of the Dump is a SNES-styled RPG with heavy inspiration from
platformers and zelda-like games. Join Dustin Binsley, the Trash Can Knight,
-on his journey to save the Lands of Fill.
Character Swapping to use on-field abilities Jumping and elevation No Random Encounters Turn based Combat on a grid Timed Hits Made by real-life janitors
+on his journey to save the Lands of Fill.
Character Swapping to use on-field abilities Jumping and elevation No Random Encounters Turn based Combat on a grid Timed Hits Made by real-life janitors
\ No newline at end of file
diff --git a/showcase/luck-be-a-landlord/index.html b/showcase/luck-be-a-landlord/index.html
index 87ee761532..c5669932a9 100644
--- a/showcase/luck-be-a-landlord/index.html
+++ b/showcase/luck-be-a-landlord/index.html
@@ -7,7 +7,7 @@
-
+
\ No newline at end of file
diff --git a/showcase/lumencraft/index.html b/showcase/lumencraft/index.html
index c223506e38..1167fd354e 100644
--- a/showcase/lumencraft/index.html
+++ b/showcase/lumencraft/index.html
@@ -4,7 +4,7 @@
| February 2023
Lumencraft is a unique combination of a top-down shooter and base building game with tower defense elements. Enter procedurally generated levels with a fully destructible environment to build your base, dig some tunnels and find the precious Lumen - humanity’s only chance for survival.
BECOME THE SAVIOR OF MANKIND For two centuries the remnants of humanity struggle to survive without electricity and light. But there is a spark of hope. In 2221 the survivors find Lumen – a crystal of high energy potency that may be the last chance for mankind. Scouts, brave miners, established an underground settlement and voyage into the dark to reach the nearby Lumen deposits. But the darkness consumed them, as the subterranean caves and tunnels hold as much danger as salvation. Now it’s time for you to step into the endless shadows…
DRILL AND SHOOT YOUR WAY TO SALVATION The lightless underground holds swarms of enemies that will raid your base. Illuminate the gloomy tunnels with your weapons and turrets in a struggle for survival. Drill new paths and shafts to reach valuable resources or blast walls and your foes.
EXPLORE A FULLY DESTRUCTIBLE ENVIRONMENT With a lot of effort and a set of original algorithms, 2Dynamic Games have transformed the open-source Godot Engine into a completely new tool. This allows every bit of terrain (pixel, as we used to call them) to be destroyed, and maps to be painted as if in a drawing program.
YOUR WAY TO PLAY Lumencraft offers several game modes to suit your gameplay style. With a 27-mission campaign experience the full narrative of humanity’s struggle for survival. Jump into procedurally generated maps and fight in a true roguelike fashion. Or maybe create your own level in the editor, or try out what the creators and Steam Workshop users have prepared for you. Custom game types (e.g. tower defence, action, survival or mix of them) with user-defined starting technologies/upgrades and goals allow you to test your skills as a scout in any conditions. Invite your friend to play locally or using Steam Remote play and dive into the darkness together.
MAP EDITOR Easily create stunning maps with moldable terrain and a variety of objects to choose from. Invite friends to play in your custom map and define game types, starting technologies, upgrades, and goals.
We hope the community will create many amazing maps for the Steam Workshop.
KEY FEATURES Multiple game modes - a story campaign, custom maps created by the developers and the community or procedurally generated levels. The choice is yours! Defending the underground settlement by direct combat and the use of diversified turrets. Highly efficient and satisfying digging mechanics (just listen to the sweet sound of crushed rocks and Lumen). Explosive weapons. Yes, we have dynamite. Dynamic lights and pixel-perfect interaction with a fully destructible terrain. Dread atmosphere created through an impactful sound design and a unique 2Dynamic lighting system. Realistic simulations. Just look at the lava! Play with your friends in co-op mode either using Steam Remote Play or locally on a shared screen :)
-
+
\ No newline at end of file
diff --git a/showcase/madness-endless/index.html b/showcase/madness-endless/index.html
index d2daf1f580..4079a0413d 100644
--- a/showcase/madness-endless/index.html
+++ b/showcase/madness-endless/index.html
@@ -3,7 +3,7 @@
Darkness, despair, challenge… The world as we know it is run over by eldritch monstrosities. Survivors are few and far between, stuck between living in this new, grim world and scheming to overthrow others. You have been chosen to bear the greatest burden - the Herald’s Blade. Are you going to help your covenant or take over as the new overlord? Do you really have a choice?
Experience a unique ACTION STEALTH game created specifically for mobile. A hand crafted, pixel art world full of horrific creatures and hidden tragedies. Play with ONE hand and defeat enemies by using slick COMBOS and special ITEMS, while dashing through the environment with blinding speed! Discover a clandestine plot in this ruined world, where friends will betray you and foes will aid you…
Master the blade, master your surroundings and CONQUER!
But remember…
YOU ARE ALONE. YOU WILL DIE. YOU WILL DO IT AGAIN.
After two possible endings, see how far you can get in an ENDLESS MODE where you explore and conquer procedurally generated levels.
Fight against over 15 UNIQUE enemy types, Elite enemies and 4 carefully crafted BOSSES that will test your skills to their limit.
Speak to many colorful characters and try to piece together the bigger picture.
Uncover your own origin as your perspective on evil changes with every nightmare and flashback.
ORIGINAL CONTROLS - Built natively for touchscreen and one handed play, movement and combat interact smoothly and seamlessly.
TENSE, UNNERVING AND MYSTERIOUS - Reap through the ruined world with fast and furious dashes off walls, while staying out of sight of monstrosities, away from traps and countless hazards!
HARDCORE DIFFICULTY - Combine speed, skill, wits & reflexes, to solve increasingly complex rooms, use powerful items, and CONQUER gigantic bosses!
HANDCRAFTED & UNIQUE ARTSTYLE - A depressing, unique, visual horror where every nook and cranny was crafted to keep you on your toes and intensify the experience.
A GRIM quest awaits you! Will you answer the Heralds’ call?
-
+
\ No newline at end of file
diff --git a/showcase/material-maker/index.html b/showcase/material-maker/index.html
index a8770d4b11..fdcb69b73a 100644
--- a/showcase/material-maker/index.html
+++ b/showcase/material-maker/index.html
@@ -6,7 +6,7 @@
textures, and can be exported for the Godot, Unity and Unreal game engines.A base library of ~150 nodes that define shapes, patterns, filters and
transforms on textures, as well as 2D and 3D shapes described as signed
distance functions.
New group nodes and shader nodes can easily be created using the user interface.
+View on GitHub
\ No newline at end of file
diff --git a/showcase/of-life-and-land/index.html b/showcase/of-life-and-land/index.html
index e99eef1692..8708e04044 100644
--- a/showcase/of-life-and-land/index.html
+++ b/showcase/of-life-and-land/index.html
@@ -4,7 +4,7 @@
| April 2024
Take the role of a leader delegated to build new settlements in remote, unknown corners of the empire. In those forgotten places, nature is wild and legends are more real and vivid than one may think. Experience the challenges of different seasons and climates in a world, where every animal and every plant tries to find their place in nature, while you lead your villagers. How much will you share with nature? Will you strive for balance or even enforce the extinction of certain animals? Follow the old paths… or find your own.
Build Your Economy Manage the acquisition, refinement, and distribution of resources. Goods must be transported to desired locations by someone who has the time and space to do it.
Care For All Living Things Manage the needs of the citizens. They are “alive” and have a specific home, workplace, and broad range of needs and goals. But animals also look for food, get thirsty, sleepy, form groups, look for social interactions, and try to find their place in nature. Even plants need water and the right temperature in order to survive.
Find Balance (Or Not) Humans share the same space and resources with nature, and they influence each other. While in the beginning the influence of the humans is insignificant, it gets more and more important when the city - and its needs - grow. There is a risk that some animals or groups will become extinct or explosively multiply, depending on your actions.
Observe The Vibrant World Seasons and weather affect the gameplay. Certain plants grow only in certain seasons, need more water on hot days or freeze during cold periods. Humans and animals need more energy to keep warm in winter or more water in summer to keep cool. In extreme cases, they suffer from exhaustion and may even be harmed.
Take Your Time You set the pace. Pause the game, speed it up or slow it down whenever you want. Nature is robust, and your villagers develop more complex needs as you progress.
Build Your Own Scenarios Create your own maps and scenarios in the editor. You can change the landscape, generate plants, and place animals. You can also connect watercourses and create new paths for travellers. Add new maps or link existing ones together to a new world.
Features
Unique deep simulation of the nature in a building strategy game with complex interdependence between humans and nature. Manage simultaneously the acquisition, refining and distribution of resources on multiple maps in different climatic conditions. Manage the needs of the citizens. They are “alive” and have a specific home, workplace, and unique needs. Animals are looking for food, get thirsty, sleepy, and form social groups to find their place in nature. Plants grow and are affected by the actions of the humans, animals, and their environment. Seasons and climate affect the gameplay, as certain plants grow only under certain conditions. Temperature affects humans, animals, plants, and the environment. Interact and trade with other factions that produce goods with the same rules as you do. Create own maps and scenarios in the editor and extend them using mods. Charming and calm low poly art style.
-
+
\ No newline at end of file
diff --git a/showcase/pingo-adventure/index.html b/showcase/pingo-adventure/index.html
index 13e6c978d7..397ae9c19d 100644
--- a/showcase/pingo-adventure/index.html
+++ b/showcase/pingo-adventure/index.html
@@ -2,7 +2,7 @@
Pingo Adventure is a cute 3D platformer in a physics simulated world with jiggly plants, bouncy bridge, springy rope etc.
Explore the adorable & interactive 3D world from rainforest, ancient ruins to dungeon filled with hot lava and solving puzzles designed for the physics simulated environment.
But that’s not all, there are mini games in between the platforming level which can be unlocked and played in the “arcade mode”.
And don’t forget to customize your own Pingo with all the costumes that can be unlocked from the adventures.
Features: Physics Simulation - Immerse in the physics simulated cute world with jiggly plants, bouncy bridge, springy rope and more...Puzzles - Solving puzzles designed for the physics simulated environmentMini Games - Collect replayable mini games from adventuresCamera Mode - Capture the cute moments of your adventures from different anglesCharacter Customization - Customize your own Pingo with various costumes that you can unlock from the adventures
+View on itch.io
\ No newline at end of file
diff --git a/showcase/pixelorama/index.html b/showcase/pixelorama/index.html
index a832e030e8..d415e29826 100644
--- a/showcase/pixelorama/index.html
+++ b/showcase/pixelorama/index.html
@@ -6,7 +6,7 @@
View on GitHub
-
+
\ No newline at end of file
diff --git a/showcase/planetenverteidigungskanonenkommandant/index.html b/showcase/planetenverteidigungskanonenkommandant/index.html
index 4b55547c5b..d2c3ebe64e 100644
--- a/showcase/planetenverteidigungskanonenkommandant/index.html
+++ b/showcase/planetenverteidigungskanonenkommandant/index.html
@@ -5,7 +5,7 @@
-
+
\ No newline at end of file
diff --git a/showcase/precipice/index.html b/showcase/precipice/index.html
index ddc70057bd..2b6efa0c0e 100644
--- a/showcase/precipice/index.html
+++ b/showcase/precipice/index.html
@@ -11,7 +11,7 @@
all pawns in the dangerous game of nuclear chicken. Manage resources from territories under your control to resolve immediate
crises or win over future allies. Recreate history, or forge your own path. Put a bear on the moon. The
possibilities are endless with simple, intuitive gameplay that is
-simultaneously difficult to master.
+simultaneously difficult to master.
\ No newline at end of file
diff --git a/showcase/primal-light/index.html b/showcase/primal-light/index.html
index 580b04b187..2f9b02505c 100644
--- a/showcase/primal-light/index.html
+++ b/showcase/primal-light/index.html
@@ -8,7 +8,7 @@
victory, leaving a graveyard of grotesque bosses in your wake.Features Explore a bizarre and evocative world filled with ladders, levers, traps, and monsters, arranged linearly across 10 levels. Face 10 challenging bosses in arcade-style combat reminiscent of the 16-bit era. Master new acrobatic abilities as you progress, allowing you to overcome obstacles and enemies. Dive into challenging side paths to uncover hidden collectibles, unlocking upgrades and passive abilities. Experience jaw-dropping pixel art and a hypnotic soundtrack.
-Why the developer chose Godot Godot has a ton of strengths. A few come to mind. First, Godot uses the pixel as the native unit of measurement, which makes it ideal for 2D games. Second, Godot has a much better implementation of coroutines than other engines (and coroutines are a game developer’s best friend). Third, Godot’s signal system provides an out-of-the-box implementation of the observer pattern that is more intuitive that what you have in other engines (for example, using C# events). Finally, Godot has better animation tools than other engines I have worked with.
— Godot Showcase - Primal Light developer interview
+Why the developer chose Godot Godot has a ton of strengths. A few come to mind. First, Godot uses the pixel as the native unit of measurement, which makes it ideal for 2D games. Second, Godot has a much better implementation of coroutines than other engines (and coroutines are a game developer’s best friend). Third, Godot’s signal system provides an out-of-the-box implementation of the observer pattern that is more intuitive that what you have in other engines (for example, using C# events). Finally, Godot has better animation tools than other engines I have worked with.
— Godot Showcase - Primal Light developer interview
\ No newline at end of file
diff --git a/showcase/resolutiion/index.html b/showcase/resolutiion/index.html
index 8efdc6501e..5a588d0683 100644
--- a/showcase/resolutiion/index.html
+++ b/showcase/resolutiion/index.html
@@ -12,7 +12,7 @@
that doesn’t care if it confuses or kills you — oh hey, a kitty!Features 16 hour playtime Explore a grim cyberpunk world where nothing is as it seems Experience a dark story where you might be the hero - or the villain Unlock new abilities to defeat your enemies Survive in brutal fights and crush gruesome bosses Listen to a badassemotional cyberpunk Soundtrack Here kitty-kitty…
-
+
\ No newline at end of file
diff --git a/showcase/rogue-state-revolution/index.html b/showcase/rogue-state-revolution/index.html
index d20d5ddf94..d9966cfa32 100644
--- a/showcase/rogue-state-revolution/index.html
+++ b/showcase/rogue-state-revolution/index.html
@@ -9,7 +9,7 @@
global pandemic... no two playthroughs will ever be the same, and each run can
unlock new content as you stay in power longer. The coup is coming: can you
keep your wits about you and hold onto the presidency? Steer the country in any manner you choose. Hundreds of events and an insane
-number of policies make every experience unique to the player.
Why the developer chose Godot We love how Godot's scene structure emphasizes getting things done quickly and flexibly. Writing editor plugins and custom nodes is very useful, and if there is ever something that we want to tackle that it's in the main branch, there is nothing stopping us from cracking the thing open and building our own solutions to whatever problems we might encounter.
— Godot Showcase - Little Red Dog Games talk about their experience
+number of policies make every experience unique to the player.
Why the developer chose Godot We love how Godot's scene structure emphasizes getting things done quickly and flexibly. Writing editor plugins and custom nodes is very useful, and if there is ever something that we want to tackle that it's in the main branch, there is nothing stopping us from cracking the thing open and building our own solutions to whatever problems we might encounter.
— Godot Showcase - Little Red Dog Games talk about their experience
\ No newline at end of file
diff --git a/showcase/rpg-in-a-box/index.html b/showcase/rpg-in-a-box/index.html
index e7ba65e622..6fa35b13d8 100644
--- a/showcase/rpg-in-a-box/index.html
+++ b/showcase/rpg-in-a-box/index.html
@@ -17,7 +17,7 @@
engine's custom scripting language. Basic dialogue and item systems, multiple camera options, UI customization,
sound effect generator, and much more!
Why the developer chose Godot One of the primary aspects that drew me to try Godot was its built-in UI components, since it would allow me to easily build the various editors and interfaces that I needed while also supporting graphical elements like 3D viewports. The fact that it's open source and supports multiple platforms, as well as how lightweight the engine is, are all attractive aspects that made the choice even more straightforward.
— Godot Showcase - RPG in a Box developer talks about his experience
+View on Humble Store
Why the developer chose Godot One of the primary aspects that drew me to try Godot was its built-in UI components, since it would allow me to easily build the various editors and interfaces that I needed while also supporting graphical elements like 3D viewports. The fact that it's open source and supports multiple platforms, as well as how lightweight the engine is, are all attractive aspects that made the choice even more straightforward.
— Godot Showcase - RPG in a Box developer talks about his experience
\ No newline at end of file
diff --git a/showcase/submissions/index.html b/showcase/submissions/index.html
index c2965066d4..922415de36 100644
--- a/showcase/submissions/index.html
+++ b/showcase/submissions/index.html
@@ -1,6 +1,6 @@
Showcase Submissions – Godot Engine Godot Showcase Guidelines and Criteria To ensure that our showcase page reflects the best of what the Godot Engine and its community has to offer, we have established the following criteria for featuring games. These guidelines help maintain the quality and relevance of the games presented.
Eligibility Criteria 👾 Completed Games or Demos : Only fully released games or those with a publicly available demo will be considered for the showcase. ⏳ No Pending Long-Term Releases : Games expected to be released more than 12 months from the submission date will not be considered. 4️⃣ Godot 4 Preferred : While we welcome all games made with any version of Godot, those developed using the latest ones will be given preference. ✨ Polished Experience : The game must exhibit a high level of polish, including well-designed gameplay, user interface, and/or visuals. 📈 Reviews : The game must have at least 100 positive reviews on platforms such as Steam, itch.io, or equivalent. If this criterion is not applicable, supplementary material such as videos, articles, a high number of wishlists, or strong media presence is welcome. 🏬 Active Store Page : The game must have an active and live store page, such as on Steam, itch.io, or another major platform. If the game is self-hosted, it should have its own website with detailed media describing the game. 🚫 Content Guidelines : Your game should be ideally intended for all audiences. Avoid breaching our Code of Conduct , referencing real life events and personalities, international politics, NSFW content, or excessive gore. 🤝 Exemptions for Collaborations : Games that may not fully meet the criteria but are part of collaborative efforts with the Godot Foundation (e.g., featured in events, blog posts, or other activities) may be included at our discretion. Submission and Review Process Developers wishing to have their game featured must submit it via this form . Please refrain from reaching out to project members directly. Kindly ensure that all eligibility criteria are met before submission. Submissions will be reviewed on a best-effort basis, and selected games will be added to the showcase as per the eligibility criteria. If a game is not selected, we may provide feedback. However, due to the volume of requests, not all submissions will receive a detailed response. Games that have been pending or have not made significant progress towards release within 12 months may be removed from the showcase. These guidelines are subject to change. We will update this page should there be any revisions to the criteria or process.
Submit your game Latest update: August 2024
+Godot Showcase Guidelines and Criteria To ensure that our showcase page reflects the best of what the Godot Engine and its community has to offer, we have established the following criteria for featuring games. These guidelines help maintain the quality and relevance of the games presented.
Eligibility Criteria 👾 Completed Games or Demos : Only fully released games or those with a publicly available demo will be considered for the showcase. ⏳ No Pending Long-Term Releases : Games expected to be released more than 12 months from the submission date will not be considered. 4️⃣ Godot 4 Preferred : While we welcome all games made with any version of Godot, those developed using the latest ones will be given preference. ✨ Polished Experience : The game must exhibit a high level of polish, including well-designed gameplay, user interface, and/or visuals. 📈 Reviews : The game must have at least 100 positive reviews on platforms such as Steam, itch.io, or equivalent. If this criterion is not applicable, supplementary material such as videos, articles, a high number of wishlists, or strong media presence is welcome. 🏬 Active Store Page : The game must have an active and live store page, such as on Steam, itch.io, or another major platform. If the game is self-hosted, it should have its own website with detailed media describing the game. 🚫 Content Guidelines : Your game should be ideally intended for all audiences. Avoid breaching our Code of Conduct , referencing real life events and personalities, international politics, NSFW content, or excessive gore. 🤝 Exemptions for Collaborations : Games that may not fully meet the criteria but are part of collaborative efforts with the Godot Foundation (e.g., featured in events, blog posts, or other activities) may be included at our discretion. Submission and Review Process Developers wishing to have their game featured must submit it via this form . Please refrain from reaching out to project members directly. Kindly ensure that all eligibility criteria are met before submission. Submissions will be reviewed on a best-effort basis, and selected games will be added to the showcase as per the eligibility criteria. If a game is not selected, we may provide feedback. However, due to the volume of requests, not all submissions will receive a detailed response. Games that have been pending or have not made significant progress towards release within 12 months may be removed from the showcase. These guidelines are subject to change. We will update this page should there be any revisions to the criteria or process.
Submit your game Latest update: August 2024
\ No newline at end of file
diff --git a/showcase/swords-and-sandals-immortals/index.html b/showcase/swords-and-sandals-immortals/index.html
index 50e0e67c23..137876af72 100644
--- a/showcase/swords-and-sandals-immortals/index.html
+++ b/showcase/swords-and-sandals-immortals/index.html
@@ -2,7 +2,7 @@
Swords and Sandals Immortals
Gladiator! Grab your sword, equip your sandals and take on the world in multiplayer Swords and Sandals! Brutal turn-based combat where gladiators can lose limbs, wield guitars and yell so loudly enemy heads will fall off.
Fast, brutal turn based gladiator combat! It’s Swords and Sandals as you’ve never seen it. Brutal turn-based combat where gladiators can lose limbs, wield guitars and yell so loudly their foe’s heads will fall off. This is the most fun you’ll ever have in the arena, and it all starts here.
Epic online battles against real players. COMING SOON - Finally, for the first time in over a decade, multiplayer combat will return to the world of Swords and Sandals. Be matched with and test your skills against real humans as you strive to be the greatest gladiator in the whole world. Rise in the leaderboards and prove once and for all who the best player of all time is.
Sever limbs, wield guitars, the choice is yours. Create a gladiator from one of dozens of races, make them a 7 foot undead giant with a battle axe or a tiny jelly blob with a laser cannon. Your gladiator will be unlike any other, with deep skill trees and hundreds of weapons to craft and equip you will not face the horrors of the arena unprepared!
Continue the story of the Starbound Gladiator. For a decade we wondered what happened to the Starbound Gladiator at the end of Swords and Sandals III … now all answers are revealed as the robotic Automatons return to Brandor with new space-age technology! Embark upon a massive new single player campaign in the form of Swords and Sandals VI, where you shall journey across the vast continent in search of fabled Arena Champions to defeat. Do battle in the scorching heat of the T’Kash desert, in the lonely abyssal caverns of the Forbidden Depths and in the great palaces of Phaetor itself.
Swords and Sandals Immortals Core Gameplay Features COMING SOON - Multiplayer mode! At last, battle player controlled gladiators from all over the world in online turn based combat!Swords and Sandals VI : Continue the story from where S&S III left off as the Automatons return to Brandor with new challenges for our gladiators! A single player adventure across Brandor featuring over 40 all new Arena Champions ( and some returning fan favourites ) Limb severing and decapitations! Sever arms and legs and keep on fighting as your gladiator finds the strength to endure Create a gladiator your way. Customize everything from height and weight to facial features and hometown, the choice is yours. Will you be a powerful undead mandolin-wielding barbarian? A Sagan Blob archmage with the power to regenerate lost limbs? Many new classes to choose, skills and talents to learn. Rain molten death from the skies, play guitar solos that shake the ground! Dungeon Crawl through fast paced 3D mini-dungeons on your journey, fighting powerful Champions for great rewards Defeat your enemy using all new combat skills. Throw your weapons, even throw discarded healing potions. Whatever it takes to win! An all new game engine for the first time in years! New special FX, particles, animations and music, created from the ground up with the Godot Engine. This is indeed the greatest Swords and Sandals adventure ever. Grab your sword, equip your sandals. It’s time to take on the world and become an immortal.
-
+
\ No newline at end of file
diff --git a/showcase/tail-quest/index.html b/showcase/tail-quest/index.html
index 993192175c..f703e63c59 100644
--- a/showcase/tail-quest/index.html
+++ b/showcase/tail-quest/index.html
@@ -5,7 +5,7 @@
Stop invaders by placing towers at strategic points around colorful landscapes. Collect hidden treasures, use the environment to your advantage and most importantly, save Nell’s fluffy friends!Best game for couch co-op play! Defeat hundreds of enemies and protect your friends! Game for everyone! Casual, core and hardcore gamers Game without violence Colorful and vivid graphics Tower defense mixed with puzzle platformer game Explore a tiny world full of surprises Solve environmental puzzles Use the lever and watch the entire level change! Use special items such as tomato-mines, the bubble gun, and more to stop evil robots!
-
+
\ No newline at end of file
diff --git a/showcase/the-garden-path/index.html b/showcase/the-garden-path/index.html
index 52c3074320..d1f981cbc2 100644
--- a/showcase/the-garden-path/index.html
+++ b/showcase/the-garden-path/index.html
@@ -5,7 +5,7 @@
View on itch.io
-Why the developer chose Godot I've been an advocate for open source software since I can remember, so Godot just seemed like the right fit. It's a good feeling knowing that my work isn't under the thumb of any kind of restrictive licensing.
I also liked the idea of being an early adopter at the time. There was buzz around the engine, but it still needs those flagship titles that people can point to. And that's really very important, because if people are asking 'how was this made' and the answer is something open source, that's a big accomplishment.
Something for me to aspire toward, anyway.
— Godot Showcase - The Garden Path developer talks about his experience
+Why the developer chose Godot I've been an advocate for open source software since I can remember, so Godot just seemed like the right fit. It's a good feeling knowing that my work isn't under the thumb of any kind of restrictive licensing.
I also liked the idea of being an early adopter at the time. There was buzz around the engine, but it still needs those flagship titles that people can point to. And that's really very important, because if people are asking 'how was this made' and the answer is something open source, that's a big accomplishment.
Something for me to aspire toward, anyway.
— Godot Showcase - The Garden Path developer talks about his experience
\ No newline at end of file
diff --git a/showcase/until-then/index.html b/showcase/until-then/index.html
index 675ef867f2..b94c8e0052 100644
--- a/showcase/until-then/index.html
+++ b/showcase/until-then/index.html
@@ -4,7 +4,7 @@
| June 2024
“The world hasn’t ended yet.”
In a world still recovering from catastrophe, Mark Borja and his friends navigate the joys and woes of another year of high school. Wake up in a typical teenage bedroom, practice piano, race to meet homework deadlines, and build (and burn) relationships, as you reminisce about the daily insecurities of high school life.
That is, until a fateful meeting sets off a chain reaction, upending Mark’s life. People disappear and memories prove unreliable. Uncover a hidden truth with Mark and his friends in this narrative adventure and race to unravel the mystery before it’s too late.
Play Out Your Own Adventure Meet a diverse and achingly familiar cast of characters to converse with in person, over text, and through email. Get to know them, build relationships, flunk group projects, and watch how their individual personal stories unfold alongside yours.
Investigate the Setting through Everyday Technology Explore the depths of social media where your likes and comments may pose consequences. Scroll through social posts, emails, webpages, and more on your in-game smartphone, where you might discover hints and clues about the people and world around you. Chat with your friends, classmates, and even strangers.
Explore Themes of Love, Loss, and Friendship Tackle philosophical issues as the main character. Make mistakes and difficult choices. Will Mark stand up for his friends and be there when they need him or will he let them down? Can he heal his wounds by letting go of the past? Decide for yourself how Mark grows and strives to do better throughout the story.
Play Addictively Mundane Minigames Insert a flash drive—oh wait, wrong way—nope, it was right the first time. Fight your friend for more fishballs at the food stand outside. Get in the groove to pay for the jeepney. Lose yourself in little games you find yourself playing in everyday life.
Immerse Yourself in a Cinematic Visual Experience Witness an intriguing narrative uniquely presented in eye-catching hand-drawn pixel art and immerse yourself in the warm colors and music of a world trying to move on from tragedy. Characters, landscapes, and props blend in 3D. Shadows, reflections, and lighting set the tone in a lovingly crafted experience.
Experience a World Inspired by Philippine Locations and Culture Traverse Philippine-inspired landscapes in search for the truth. From the heart of the bustling capital to long bus rides past grass fields and coast towns, explore the world of Until Then set in a fictional version of the Philippines. Interior spaces are shaped by the mannerisms of the locals, setting the scene for a recent past.
-
+
\ No newline at end of file
diff --git a/showcase/usagi-shima/index.html b/showcase/usagi-shima/index.html
index 6ebafeaa0b..6311d26b37 100644
--- a/showcase/usagi-shima/index.html
+++ b/showcase/usagi-shima/index.html
@@ -5,7 +5,7 @@
View on Google Play
Learn More
-
+
\ No newline at end of file
diff --git a/showcase/windowkill/index.html b/showcase/windowkill/index.html
index f1b1d62e82..c0f3f65025 100644
--- a/showcase/windowkill/index.html
+++ b/showcase/windowkill/index.html
@@ -7,7 +7,7 @@
-
+
\ No newline at end of file
diff --git a/showcase/wrought-flesh/index.html b/showcase/wrought-flesh/index.html
index 2d1ec80864..be03170e1f 100644
--- a/showcase/wrought-flesh/index.html
+++ b/showcase/wrought-flesh/index.html
@@ -2,7 +2,7 @@
Rip out enemies organs and equip them in your own body. Fight biopunk monsters and drugged-up space bandits. You are a Gajeshian Cultist: A near-mythological being built from the bodies of long-dead saints. You have arrived on the partially terraformed planet of Chrisembourgh on a temple-ordained mission to find and kill someone. Explore the planet and trace your victims steps to the end.
Features:
organ based stat system literal finger gun 10 unique enemies 8 guns 3 boss fights dozens of quests 3 biomes to explore
+View on itch.io
\ No newline at end of file
diff --git a/teams/index.html b/teams/index.html
index 363a9fbf22..8eb2980b64 100644
--- a/teams/index.html
+++ b/teams/index.html
@@ -125,7 +125,7 @@
coordination, let us know so we can link it here.
+Rémi Verschelde (@akien-mga )
\ No newline at end of file