Dev Planet
Release candidate: Godot 4.6 RC 2
Last Wednesday saw the release of our first Release Candidate build of Godot 4.6. As a reminder, we release RC builds once we think the engine has stabilized and is ready for release. It is your last chance to report critical regressions before we release the stable version.
Today, we’re excited to produce our second snapshot, which addresses the handful of critical regressions that cropped up in testing since then. Unless reports of any show-stopping regressions come from the changes made in RC 1 or RC 2, a stable release is just around the corner.
Please consider supporting the project financially, if you are able. Godot is maintained by the efforts of volunteers and a small team of paid contributors. Your donations go towards sponsoring their work and ensuring they can dedicate their undivided attention to the needs of the project.
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, the XR editor, or the Android editor for this release. If you are interested in the latter, please request to join our testing group to get access to pre-release builds.
The cover illustration is from Eggo, a creature-collecting life simulator, where your very own scrungly companion is raised as a baby, gets married, hunts for treasure, and more on your desktop. You can buy the game on Steam, and follow the developer on Twitter.
Highlights
We covered the most important highlights from Godot 4.6 in the previous 4.6 beta 1 blog post, so if you haven’t read that one, have a look to be introduced to the main new features added in the 4.6 release.
Especially if you’re testing 4.6 for the first time, you’ll want to get a condensed overview of what new features you might want to make use of.
This section covers the most relevant changes made since the RC 1 snapshot, which are largely regression fixes:
- Core: Don’t strip data in
ClassDB::class_get_method_list(GH-114893). - Editor: Fix TileMap Dock button placement and errors (GH-113594).
- Editor: Fix viewport rotation gizmo aligned axis reversing (GH-101209).
- GUI: Remove clip ignore from Tree background (GH-115074).
- Platforms: Android: Fix XR build regression when vendor plugin overrides the same feature (GH-115148).
- Platforms: macOS: Process system events during boot splash wait time (GH-115118).
- Platforms: Wayland: Allow non-interactive window resizing (GH-114082).
- Rendering: Do not store SPIR-V in memory unless pipeline statistics are used (GH-115049).
- XR: Allow setting a specific version of OpenXR to initialize (GH-115022).
Changelog
As we’ve tightened our policy on what kind of changes can be merged leading to the Release Candidate stage, there aren’t a lot of changes in this snapshot. 19 contributors submitted 37 fixes for this release. See our interactive changelog for the complete list of changes since 4.6 RC 1. You can also review all changes included in 4.6 compared to the previous 4.5 feature release.
This release is built from commit 78c6632eb.
Downloads
Godot is downloading…
Godot exists thanks to donations from people like you. Help us continue our work:
Standard build includes support for GDScript and GDExtension.
.NET 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
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.6. This list is dynamic and will be updated if we discover new showstopping issues after more users start testing the RC snapshots.
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 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.
Castle Game Engine: Engine downloads with “bundled FPC” for all platforms, castle-build-ci to easily use CI with our engine, Woodpecker (Codeberg) CI examples and impressions
Release candidate: Godot 4.6 RC 1
At last, Godot 4.6 arrives at the Release Candidate stage. All of our planned features are in place, and the most critical regressions have been resolved, so we can confidently say our product is ready for production use. A new editor theme, inverse kinematics, standalone library support, and more await in this feature-packed update!
With that said, this comes with the same caveat that all of our release candidate builds come with: we can only truly ratify this claim through extensive testing by the community. So while Godot 4.6 is now suitable for testing on existing projects, we’re eager to hear how it fares and whether any new major issues have gone unnoticed until now. As always: making a copy/backup before upgrading is strongly recommended, ideally with version control!
Please consider supporting the project financially, if you are able. Godot is maintained by the efforts of volunteers and a small team of paid contributors. Your donations go towards sponsoring their work and ensuring they can dedicate their undivided attention to the needs of the project.
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, the XR editor, or the Android editor for this release. If you are interested in the latter, please request to join our testing group to get access to pre-release builds.
The cover illustration is from Vital Shell, a science-fantasy top-down arena shooter, boasting PSX-style graphics and an ambient jungle OST, where you take control of classic fantasy archetypes through the lens of a mech. You can buy the game on Steam, and follow the developer on Twitter.
Highlights
We covered the most important highlights from Godot 4.6 in the previous 4.6 beta 1 blog post, so if you haven’t read that one, have a look to be introduced to the main new features added in the 4.6 release.
Especially if you’re testing 4.6 for the first time, you’ll want to get a condensed overview of what new features you might want to make use of.
This section covers the most relevant changes made since the beta 3 snapshot, which are largely regression fixes:
- Animation: Fix Skeleton3D edit mode usability issues (GH-114752).
- Core: Auto-release static GDTypes at exit (GH-114790).
- GDScript: Don’t clean up other scripts (GH-114801).
- GUI: Automatically Resample CanvasItems in Scene Editor (GH-114200).
- Import: Fix importing projects with PNG assets freezes Web Editor (GH-114410).
- Network: Make HTTPRequest 301 and 302 Redirects Standards-Compliant (GH-91199).
- Network: Normalize IP parsing, fix IPv6, tests (GH-114827).
- Platforms: Android: Fix ANRs when shutting down the engine due to the render thread (GH-114207).
- Rendering: Fix MSAA crashing Mali GPUs when using subpasses (GH-114785).
Changelog
As we’ve tightened our policy on what kind of changes can be merged leading to the release candidate stage, there aren’t a lot of changes in this snapshot. 48 contributors submitted 100 fixes for this release. See our interactive changelog for the complete list of changes since 4.6-beta3. You can also review all changes included in 4.6 compared to the previous 4.5 feature release.
This release is built from commit 481f36ed2.
Downloads
Godot is downloading…
Godot exists thanks to donations from people like you. Help us continue our work:
Standard build includes support for GDScript and GDExtension.
.NET 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
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.6. This list is dynamic and will be updated if we discover new showstopping issues after more users start testing the RC snapshots.
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 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.
Dev snapshot: Godot 4.6 beta 3
Happy new year, everyone! While most of our contributors were taking time off these past few weeks, there were still quite a few issues and regressions addressed in that time. As such, let’s welcome in 2026 with a brand new build: 4.6 beta 3 has arrived! This iterates upon the relatively-stable 4.6 beta 2, so it won’t be much longer before we’re ready for the release candidate stage.
Please consider supporting the project financially, if you are able. Godot is maintained by the efforts of volunteers and a small team of paid contributors. Your donations go towards sponsoring their work and ensuring they can dedicate their undivided attention to the needs of the project.
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, the XR editor, or the Android editor for this release. If you are interested in the latter, please request to join our testing group to get access to pre-release builds.
The cover illustration is from Sengodai, a rougelike deckbuilding where you collect and create your Gokai monsters team to explore diverse worlds and challenge the cursed gods. You can buy the game on Steam, and check out the developers on Bluesky or YouTube!
Highlights
For an overview of what’s new overall in Godot 4.6, have a look at the highlights for 4.6 beta 1, which cover a lot of the changes. This blog post only covers the changes between beta 2 and beta 3, which are largely regression fixes:
- Core: Improve determinism of UIDs (GH-111858).
- Editor: Correctly handle discarding of saved redo (GH-112597).
- Editor: Improve interaction feedback in modern theme (GH-114571).
- Editor: Validate Resource type when pasting property (GH-112386).
- GUI: Add non-public
{Line,Text}Edit::_set_text()to fixtext_submittedsignal emission on Web (GH-113461). - GUI: Improve the look of inner tabs in modern theme (GH-114392).
- Rendering: Create new pools when they become fragmented on Vulkan (GH-114313).
- Rendering: Fix VoxelGI glossy reflection artifacts (GH-113334).
- Rendering: Implement workaround for GPU driver crash on Adreno 5XX (GH-114416).
- XR: Android: Handle
YUV_420_888strides correctly in CameraFeed (GH-110720).
Changelog
60 contributors submitted 133 fixes for this release. See our interactive changelog for the complete list of changes since 4.6-beta2. You can also review all changes included in 4.6 compared to the previous 4.5 feature release.
This release is built from commit 76dda5c6c.
Downloads
Godot is downloading…
Godot exists thanks to donations from people like you. Help us continue our work:
Standard build includes support for GDScript and GDExtension.
.NET 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
During the beta stage, we focus on solving both regressions (i.e. something that worked in a previous release is now broken) and significant new bugs introduced by new features. You can have a look at our current list of regressions and significant issues which we aim to address before releasing 4.6. This list is dynamic and will be updated if we discover new showstopping issues after more users start testing the beta snapshots.
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 snapshot).
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 and 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.
Castle Game Engine: December news (unlimited skin joints on shaders, PointProperties), and plans for 2026 (next release, SignPath, better macOS Silicon, shadow maps…)
Panda3D: SDK 1.10.16 Release
jMonkeyEngine: jMonkeyEngine 3.9.0-beta1
Dev snapshot: Godot 4.6 beta 2
As 2025 winds to a close, so too does our team for the holiday season. Before we head off, let us leave you with a parting gift: the final development build of the year, 4.6 beta 2!
We’ve already discovered and tackled a fair number of regressions since 4.6 beta 1, which we’re hoping will lend itself to a quick release cycle. However, there’s still further bugfixing and testing to be done, so users are encouraged to report whatever new issues crop up this release.
Please consider supporting the project financially, if you are able. Godot is maintained by the efforts of volunteers and a small team of paid contributors. Your donations go towards sponsoring their work and ensuring they can dedicate their undivided attention to the needs of the project.
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, the XR editor, or the Android editor for this release. If you are interested in the latter, please request to join our testing group to get access to pre-release builds.
The cover illustration is from Nine-Ball Roulette, a thriller where you and up to 3 friends take part in a relaxing game of pool with a little Russian Roulette on the side. You can buy the game on Steam, and check out the developers on YouTube!
Highlights
For an overview of what’s new overall in Godot 4.6, have a look at the highlights for 4.6 beta 1, which cover a lot of the changes. This blog post only covers the changes between beta 1 and beta 2. This section covers the most relevant changes made since the beta 1 snapshot, which are largely regression fixes:
- Editor: Disable tool button for multiple nodes (GH-113944).
- Editor: Fix shader editor minimum size (GH-113916).
- Editor: Show file when FileSystem is searched with UID (GH-102789).
- GUI: Fix
TextEditdoes not auto scroll properly on certain vertical sizes (GH-113390). - Platforms: iOS: Automatically enable
iphone-ipad-minimum-performance-a12if project is using Forward+/Mobile renderer (GH-114098). - Platforms: Linux: X11: Fix input delay regression (GH-113537).
- Rendering: Update Mesa NIR to 25.3.1 + Make each SPIR-V -> DXIL conversion thread allocate from its own heap (GH-113618).
- Rendering: OpenGL: Split the ubos for motion vectors into separate uniforms to fix Adreno GPU crash (GH-114175),
- Thirdparty: Replace
minimp3withdr_mp3(GH-96547). - Thirdparty: SDL: Update to 3.2.28 (GH-113968).
- Translations: Sync with latest Weblate, new 4.6 strings are now available to translate.
Changelog
64 contributors submitted 198 fixes for this release. See our interactive changelog for the complete list of changes since 4.6-beta1. You can also review all changes included in 4.6 compared to the previous 4.5 feature release.
This release is built from commit 551ce8d47.
Downloads
Godot is downloading…
Godot exists thanks to donations from people like you. Help us continue our work:
Standard build includes support for GDScript and GDExtension.
.NET 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
During the beta stage, we focus on solving both regressions (i.e. something that worked in a previous release is now broken) and significant new bugs introduced by new features. You can have a look at our current list of regressions and significant issues which we aim to address before releasing 4.6. This list is dynamic and will be updated if we discover new showstopping issues after more users start testing the beta snapshots.
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.
- XR: Motion vectors are currently broken in the compatibility renderer, causing geometry to predominantly render as black (GH-107438).
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 in their free time, as well as a handful of part and 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.
Inverse Kinematics Returns to Godot 4.6
In Godot 4.6, IK is back in 3D!

Of course, “IK” means inverse kinematics.
If you have experience with Godot 3.x, you might remember that IK was removed during the upgrade to 4.0. I explained in a previous blog post that it was removed because the old skeleton API design had issues and needed reworking.
Then, you might wonder if it was theoretically possible to implement IK alongside the SkeletonModifier3D implementation in 4.4. However, we had to avoid adding immature features and then hastily removing it again. To implement IK, we staged the elements for the entire IK across three versions.
This blog post will explain that journey.

Godot 4.4
In Godot 4.4, I implemented the base class for SkeletonModifier3D, along with two new modifiers, LookAtModifier3D and RetargetModifier3D.
SkeletonModifier3D / LookAtModifier3D
LookAtModifier3D was the minimal implementation to verify that the SkeletonModifier3D design was correct. LookAtModifier3D could be considered equivalent to one-bone IK, so it was suitable as a test case.
RetargetModifier3D
However, when implementing LookAtModifier3D, I confirmed that users must specify the bone axis based on the bone rest. It was my initial concern that the retarget feature implemented in 4.0 discarded the bone rests of the imported skeleton.
As this concern became a certainty, I attempted to preserve bone rests by implementing RetargetModifier3D.

It was fortunate for me that the processing order design of SkeletonModifier3D matched the requirements for implementing RetargetModifier3D.
Godot 4.5
In Godot 4.5, I implemented SpringBoneSimulator3D and BoneConstraint3D (and its three child classes AimModifier3D, ConvertTransformModifier3D and CopyTransformModifier3D).
By the way, I’m involved in a project that utilizes a 3D character model format known as VRM. VRM has implementations of SpringBone and Constraint as model-specific configurations that can be ported to cross-platform environments, so ensuring compatibility with these was one of the purposes.
SpringBoneSimulator3D
One challenging part of implementing SpringBoneSimulator3D was creating the bone chain internally. Specifically, by setting the root bone as the ancestor and the end bone as the descendant, we could retrieve the bones between them and automatically construct the joint array.

Compared to users manually creating these arrays, this approach reduced user operations and validation on the core side, making it beneficial for both ends.
BoneConstraint3D (and 3 child classes)
BoneConstraint3D is a feature that allows bones to interact with other bones. The actual behavior and calculations it provides are simple.
What was challenging here was the design for a base class containing a virtual struct array as a member and extending that struct in a child class. This topic is a bit more advanced for beginner coders, but when using struct arrays as properties in Godot, you need to implement a slightly tricky approach.

I already had the design idea that IK would have a base class similar to BoneConstraint3D, with child classes extending the structure to implement the actual solver. So, I was confident that merging and establishing that method at this point would be beneficial for IK.
Godot 4.6
Finally, I began implementing IK in Godot 4.6.
IKModifier3D (and 7 child classes)
As a first step, I defined IKModifier3D and ChainIK3D by reusing BoneConstraint3D and SpringBoneSimulator3D. After that, I implemented the process for moving joints called the IK solver.
Therefore, IKModifier3D has the following child classes:
- IKModifier3D
- TwoBoneIK3D
- ChainIK3D
- SplineIK3D
- IterateIK3D
- FABRIK3D
- CCDIK3D
- JacobianIK3D
When implementing those IKs, I made sure to keep them to the minimum functions.
Some IK systems outside of Godot might have additional “processing to make the IK results look better”, separate from the core calculation algorithm that rotates the bones. In the rich IK system, the IK class may include them and can enable their processing by their bool property.
Then, I believed separating them would help maintain maintainability and extendability. In other words, if only the “processing to make the IK results look better” can be reused, when users want to implement custom IK, they only need to implement a minimal IK solver.
The following are the improvements and additions made in Godot 4.6 to make the IK results look better.
Tweak BoneConstraint3D
For example, there are cases where Twist is applied before IK calculation, or where the end bone is directed toward the IK target after IK calculation.
In Godot 4.5, the BoneConstraint3D could only assign bones as reference objects, but in 4.6, it can now assign [Node3D] objects.

This tweaking allows BoneConstraint3D to be used to perform these additional rotations.
BoneTwistDisperser3D
In theory, using ConvertTransform3D allows you to apply the rotation of descendant bones to their ancestors. However, the process for setting this up properly was somewhat complex and could only be handled by advanced users.
BoneTwistDisperser3D provides a simple way to achieve that process.
LimitAngularVelocityModifier3D
LimitAngularVelocityModifier3D is a modifier that limits angular velocity. The behavior is quite simple, so it doesn’t need much explanation.
However, it’s worth learning that there are two types of IK.
Deterministic IK
In computer science, “deterministic” means that the result is always the same for a given input. In particular, for game applications like Godot, the term means that the result does not depend on the state of the previous frame. Incidentally, since AnimationMixer already has a deterministic option, that immediately made me decide to adopt this term.
TwoBoneIK3D and SplineIK3D are always deterministic. However, in IterateIK3D, whether it is deterministic depends on the options.
IterateIK3D repeats the routine provided by the solver to approach the end bone toward its goal. At this point, the number of repetitions per frame depends on the option.
When the deterministic option is disabled, it means that the iteration is performed by carrying over the state from the previous frame. In this case, even with a small number of iterations per frame, the end bone can reach the goal eventually as frames progress.
In contrast, when the deterministic option is enabled, the previous frame’s state is not carried over. Therefore, if the number of iterations per frame is small, the end bone may never reach its goal.
However, if you want to ensure consistent results depending on the relative position between the IK target and the skeleton, the deterministic option is useful. For example, it is ideal for online applications where only the coordinates of the IK target are shared to synchronize the model’s pose.
As a point to note, deterministic IK cannot avoid causing rotation with large angular velocities by its design. It goes without saying that LimitAngularVelocityModifier3D is useful for smoothing this out.
Looking back on the journey
Between versions 4.4 and 4.6, excluding migrations, including base classes, 19 new SkeletonModifiers have been implemented!

There are many possibilities depending on how you combine them. So we have a plan to add detailed explanations and tutorials to the documentation in the future, but since that is expected to be quite large, we will need more time…

For now, I’ll show you just one example in advance. This setup emulates the old SkeletonIK3D’s magnet option.
As you can see from that example, it was just a 2-path deterministic FABRIK. As explained above, it was also “processing to make the IK results look better”, and I think you can understand that the process could be separated.
At last, I wish you all the best in creating fun games using SkeletonModifier3Ds.
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.