Release candidate: Godot 3.2.2 RC 2
By: Rémi Verschelde 18 June 2020
The upcoming Godot 3.2.2 is turning out to be quite feature-packed and we've been taking the time to iterate with four beta snapshots. Last week saw a first release candidate (RC), and now's the second one with a couple regression fixes and more bugfixes and usability improvements.
This new RC 2 build should be quite stable and we hope that many Godot 3.2.x users will give it a try and help us confirm that it's ready to take the place of the current 3.2.1 stable build.
If all goes well, the next build should be 3.2.2-stable.
Notably, Godot 3.2.2 is going to add 5 major features:
- C# support for the iOS platform, courtesy of Ignacio (neikeq).
- 2D batching for the GLES2 renderer, thanks to lawnjelly and Clay (clayjohn).
- Re-architecture of the Android plugin system, by Fredia (m4gr3d).
- DTLS support and ENET integration, developed by Fabio (Faless).
- Fix for the dangling Variant bug, kudos to Pedro (RandomShaper).
- While this is not a feature per se, it fixes a major annoyance that users have had with pointers to freed objects unexpectedly being re-assigned to new objects, causing hard-to-debug issues.
If you find any new issue with this build, especially related to one of the listed big changes, please report it on GitHub, ideally including a minimal project that can be used to reproduce the issue.
How to test
It should be safe to test this build directly with pre-existing projects made with Godot 3.2.x. It's of course always advised to use a version control system or backups in case you want to go back to the previous version (but testing 3.2.2-beta4 shouldn't prevent you from doing so anyway).
Note: If using C#, the
.csproj file will be converted with some bug fixes which makes it incompatible with earlier Godot 3.2 and 3.2.1. A backup of the file will be generated upon conversion so that you can revert to older releases if need be.
C# support for iOS
C# support for iOS should work similarly to exporting a GDScript project for iOS. Note that the export needs to be done from a macOS system to use the included AOT compiler for iOS arm64. If you run into any issue with the export process, please also test the export of a simple GDScript project to verify if the issue relates to the new C# support or to the iOS export pipeline in general.
GLES2 2D batching
The new 2D batching is only implemented for the GLES2 renderer, so if you use GLES3 you will not be able to benefit from it in this build. Our main batching architecture lawnjelly has already done a lot of groundwork to implement the batching in GLES3 too, but we will start evaluating these changes for the 3.2.3 release.
GLES2 batching is enabled by default both in-game and in the editor. You can turn it off or configure advanced settings in the Project Settings (note that settings used until 3.2.2 beta 4 have been renamed in preparation for the addition of GLES3 batching, see this Pull Request). Please see this dedicated issue for more details and to share your own testing results (we're interested in all feedback, whether you gained a lot of performance, lost some or didn't notice any change). Note that currently, only rects are batched (TileMaps,
draw_rect, text rendering, etc.), but we plan to include more primitive types once this has been well tested.
New Android plugin system
Godot 3.2 came with a brand new Android plugin system already, and notably the possibility to build custom APKs from your project folder with any additional plugins/modules that your project needs.
Fredia had done a lot of work back then to improve Juan's initial custom build system, which led him to notice many things that could be modernized to be better suited to the current Android ecosystem. Notably, he re-architectured the plugin system to leverage the Android AAR library file format.
This new plugin system is backward-incompatible with the 3.2/3.2.1 system, but both systems are kept functional in future releases of the 3.2.x branch. Since we previously did not version our Android plugin systems, this new one is now labelled
v1, and is the starting point for the modern Godot Android ecosystem.
DTLS support and ENet integration
Fabio's work on DTLS support was nearly done by the time 3.2 was released, but came too late to be thoroughly tested. Testing has happened since then both in the
master branch and in the pending
3.2 Pull Request, so we're now confident to include it in this beta build for further testing.
See the dedicated devblog for usage examples.
Fix for the dangling Variant bug
If you were running into this bug, it would typically be in situations where you'd check
is_instance_valid() on what you expect to be a freed instance (which should give
False), and it would actually return
True and lead you to access a method or a property of a different object (causing an error if the object's class does not include this method or property).
The fix made in the 3.2 is only done on debug builds for performance reasons, so make sure to fix any error reported by the editor or debug builds before shipping a release build to your players. In the upcoming Godot 4.0, this bug was fixed with a more comprehensive approach which prevents dangling Variant pointers in both release and debug builds.
Apart from those major features, there are over 750 cherry-picks (beta 1, beta 2, beta 3, beta 4, RC 1, RC 2) for bug fixes and enhancements which have been merged since Godot 3.2.1. Here are some highlights:
- 2D: Expose the
- 2D: Add
MODULATEbuiltin to canvas item shaders (GH-38432).
- 2D: Implement skew in
- Android: Re-architecture of the Godot Android plugin (GH-36336).
- Android: Add signal support to Godot Android plugins (GH-37305).
- Android: Fix
LineEditvirtual keyboard issues (GH-38309).
- Android: Reimplementation of the
GodotPaymentplugin using the Google Play Billing library (GH-39034).
- Note: Breaks compatibility slightly, but the Android plugin re-architecture already did so. See GH-39034 for usage instructions, docs will be updated before the 3.2.2 release.
- AStar: Implements
compute_costfor AStar2D (GH-37039).
- AStar: Make
get_closest_point()deterministic for equidistant points (GH-39409).
- Audio: Fix volume interpolation in positional audio nodes (GH-37279).
- C#: Add iOS support (GH-36979).
- C#: Sync csproj when files are changed from the FileSystem dock (GH-37149).
- C#: Replace uses of old Configuration and update old csprojs (GH-36865).
- C#: Allow debugging exported games (GH-38115).
- C#: Revert marshalling of IDictionary/IEnumerable implementing types (GH-38141).
- C#: Fix inherited scene not inheriting parent's exported properties (GH-38638).
- C#: Fix exported values not updated in the remote inspector (GH-38940.
- Core: Ensure COWData does not always reallocate on resize (GH-37373).
- Core: Fix dangling Variants (GH-38119).
- Core: Fixed false positives in the culling system (GH-37863).
- Core: Fix leaks and crashes in
- CSG: Various bug fixes (GH-38011).
- Debug: Add a suffix to the window title when running from a debug build (GH-33148).
- Editor: Add rotation widget to 3D viewport (GH-33098).
- Editor: Add editor freelook navigation scheme settings (GH-37989).
- Editor: Improved go-to definition (Ctrl + Click) in script editor (GH-37293).
- Editor: Account for file deletion and renaming in Export Presets (GH-39434).
- Editor: Allow duplicating files when holding Control (GH-39307).
- Files: Improve UX of drive letters (GH-36639).
- GDNative: Fix Variant size on 32-bit platforms (GH-38799).
- GDScript: Fix leaked objects when game ends with yields in progress (GH-38288).
- GDScript: Fix object leaks caused by unfulfilled yields (GH-38482).
- GDScript: Various bugs fixed in the parser.
- GLES2: Add 2D batch rendering across items (GH-37349).
- GLES2: Avoid unnecessary material rebind when using skeleton (GH-37667).
- GLES3: Add Nvidia
draw_rectflickering workaround (GH-38517).
- GLES2/GLES3: Add support for OpenGL external textures (GH-36342).
- GLES2/GLES3: Reset texture flags after radiance map generation (GH-37815).
- HTML5: Implement audio buffer size calculation, should fix iOS Safari audio issues (GH-38816).
- HTML5: Switch key detection from
- Image: Fixing wrong blending rect methods (GH-39200).
- Import: Fix changing the import type of multiple files at once (regression fix) (GH-37610).
- Import: Respect 'mesh compression' editor import option in Assimp and glTF importers (GH-39134).
- Import: Add support for glTF lights (GH-39428).
- Input: Various fixes for touch pen input (GH-37756, GH-38439, GH-38484).
- Input: Fix joypad GUID conversion to match new SDL format on OSX and Windows (GH-39060, GH-39172)
- Input: Add keyboard layout enumeration / set / get functions (GH-39502).
- Language Server: Switch the GDScript LSP from WebSocket to TCP, compatible with more external editors (GH-35864).
- macOS: Ignore process serial number argument passed by macOS Gatekeeper (GH-37719).
- macOS: Enable signing of DMG and ZIP'ed exports (GH-33447).
- Networking: DTLS support + optional ENet encryption (GH-35091).
- Object: Add
- Particles: Fix uninitialized memory in CPUParticles and CPUParticles2D (GH-38346, GH-38378).
- Physics: Make soft body completely stiff to attachment point (GH-36048).
- Physics: Test collision mask before creating constraint pair in Godot physics broadphase 2D and 3D (GH-39399).
- Physics: Normalise up direction vector in
- RegEx: Enable Unicode support for RegEx class (GH-39454).
- RichTextLabel: Fix alignment bug with
- Shaders: Add shader time scaling (GH-38995).
- Skeleton: Fix IK rotation issue (GH-37272).
- VR: Fix aspect ratio on HMD projection matrix (GH-37601).
- Windows: Make stack size on Windows match Linux and macOS (GH-37115).
- Windows: Fix certain characters being recognized as special keys when using the US international layout (GH-38820).
- Windows: Add tablet driver selection (WinTab, Windows Ink) (GH-38875).
- Windows: Fix quoting arguments with special characters in
- Windows: Do not probe joypads if DirectInput cannot be initializer (GH-39143).
- Windows: Fix overflow condition with QueryPerformanceCounter (GH-38958).
- API documentation updates.
- Editor translation updates.
- And many more bug fixes and usability enhancements all around the engine!
Godot 3.2.2 RC 2 is built from commit ae59e22cdd7101d85bcb92871ce53f05c668f5c4 (June 18, 2020).
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:
- Classical 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 22.214.171.124 are included in this build.
As a tester, you are encouraged to open bug reports if you experience issues with 3.2.2 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.2.1 no longer works in 3.2.2 RC 2).