It’s been about a month and a half since the release of 3.1-stable, and our contributors have worked hard to get you, most valued users, bugfixes, new features, and documentation updates. So on this nice and sunny Dutch King’s Day we’re happy to announce the availability of the first maintenance release in the 3.1 series Godot 3.1.1-Stable. Hail to the king, baby!

With the -stable releases we offer you the backwards compatible changes and bugfixes. However in this release we had to break some compatibility with networking due to a security issue. See the Known incompatibilities section of this blog post. If we inadvertently changed behavior for your project started with Godot 3.1-stable please report a bug.

I’d like to use this space to say “Thank you” to our amazing contributors, none of whom would ever give you up, let you down, and/or desert you. If you too would like to to be counted amongst their ranks join us and fix bugs, write documentation, or file bugreports.

If you enjoy our work please consider becoming our Patron and help Godot main developers work full time on the project!


  • A security issue was reported and fixed. This change does add some API to Godot in case you need to be able to deserialize Object data. Please see This PR for details. If you do not use networking in your project you should not be affected. However GDNative ABI was changed so any native plugins need to be rebuilt for 3.1.1.
  • GLES 3 support for depth textures was fixed. This was a regression in 3.1 from 3.0.x.
  • GLES 2 crash on older iOS devices was resolved.
  • OS.get_unique_id() was fixed on Android.
  • A HeightMapShape was added to the Bullet physics engine implementation.
  • FPS snapping in the Animation player was added to the engine, along with other quality of life improvements.
  • New audio features for 3.2 were backported.
  • New menu options for the Sprite editor were added: “Convert to Mesh2D”, “Convert to Polygon2D”, “Create CollisionPolygon2D Sibling” and “Create LightOccluder2D Sibling”.
  • AnimatedSprite can now play backwards.
  • Emission Mask was added to CPUParticles2D.
  • GLTF2 importer fixes.
  • C#: Support for MSBuild from VS2019 was added.
  • C#: Improvements were made to the generated C# documentation comments. The BBCode is now translated to XML doc comments.
  • C#: _GetPropertyList never being called was fixed.
  • C#: Unhandled exceptions no longer hard-crash the application.
  • C#: Exports information now only gets updated in the editor, this fixes temporary instances being created in-game.
  • C#: Fixed parsing of generic type declarations in C# source files.
  • C#: Bundled Mono was upgraded to

And many more small quality of life improvements and bugfixes. See the full changelog below for details.

See the changes between 3.1-stable and 3.1.1-stable on Github, or the full changelog in text format. This release is built from commit 66baa3b.


As always, you will find the binaries for your platform on our mirrors:

Known incompatibilities

Below we describe the known incompatibilities with previous releases in this cycle.

Known incompatibilities with Godot 3.1

  • Due to a security fix the GDNative ABI has changed. If you use GDNative modules in your project they will need to be rebuilt from source.
  • Godot no longer automatically decodes Objects when using high level multiplayer. If you do want your client or server to do this it is now necessary to explicitly allow it. See this PR for details.
  • Previously on Android OS.get_unique_id() would return the static value for Secure.ANDROID_ID. This was a bug and now an actually unique ID is returned. If you were using the unique ID for encryption purposes you must now also check the original static value or your users may lose access to any encrypted (save) data.

Known bugs in Godot 3.1.1

  • None

The illustration picture is a screenshot of *GRIEF, a game in development by Manuel ‘TheDuriel’ Fischer and IAmActuallyCthulhu.*