Maintenance release: Godot 2.1.5

By: Rémi Verschelde Jul 28, 2018

At long last, Godot 2.1.5 is ready and comes packed with new features and bug fixes! It's the result of 11 months of work (since 2.1.4) from many contributors who care about supporting our previous stable branch (the current one and main focus being Godot 3.0.x).

Download it now from our repositories if you are still using Godot 2.1.x for some projects. If you use it via the Steam distribution (where both 2.1.x and 3.0.x are included), it has been updated already - please keep in mind that we'll eventually stop distributing Godot 2.1.x on Steam (likely when moving to Godot 3.1). Note: This release fixes security vulnerabilities in Godot's marshalling code (see the Godot 3.0.6 announcement for details) as well as an OpenSSL security update, so upgrading to this version is strongly recommended if you use any networking features.

Note that contrarily to 3.0 which can download the export templates for you automatically, with 2.1 you still need to download the .tpz file manually and use it to install templates within the editor.

Wait, what is 2.1.x again?

Before presenting the highlights of this release, let's clear some frequently asked questions upfront:

What is 2.1.5? Isn't the current stable version 3.0.x?

Godot 2.1 (from August 2016) was our previous major release before Godot 3.0 (from January 2018). Just like the current 3.0.x branch, it received maintenance updates with bug fixes and enhancements every few months, though the last to date was 2.1.4 in August 2017.

As some users cannot use Godot 3.0 or later for a number of reasons, we are still maintaining the 2.1.x branch for a while. Those reasons are typically:

  • OpenGL ES 2.0 support needed for mobile games. Godot 3.0 only supports OpenGL ES 3.0 which is problematic on many mobile devices. The upcoming Godot 3.1 will bring back support for OpenGL ES 2.0, so by then the 2.1.x branch will cease to be so important for mobile developers.
  • Existing projects started in Godot 2.1 might not always be worth porting to 3.0 given the important compatibility breakage.

The latter implies that new 2.1.x releases can be needed for users willing to push their 2.1 games in production, and especially:

  • Distribution platforms like Google Play or Apple Store regularly increase their requirements in terms of targeted SDKs, so we need to update our export templates accordingly.
  • Security vulnerabilities in thirdparty libraries or in Godot's own code need to be addressed in all supported branches.

I'm using 3.0.x, do I need this new release?

If you don't know, you probably don't. The 2.1.5 release is strictly intended for existing users who need it to publish or update their 2.1 games. If you are already using Godot 3.0.x, stick to it as it has hundreds of features that Godot 2.1.5 does not have, since it's based on a 2016 branching of the main development branch.

Where are all the cool new features seen on the blog?

Most new features you see on this blog or on Twitter are merged in the master branch, which is the development branch of our next stable branch, i.e. Godot 3.1. So those features are only available in nightly builds, or when compiling from the master branch - they will eventually be made available for all with Godot 3.1 alpha 1, and in a few months 3.1-stable.

Highlights

With 11 months of work and over 450 commits to the 2.1 branch since 2.1.4, there's a lot to cover! Check the detailed changelog for the exhaustive listing.

Here are some of the main highlights of this release, listed by topic/category.

Platform support

Android

iOS

  • Minimum SDK raised to 9.0, target SDK raised to 11.4 (11.0+ required for new uploads on Apple Store). [GH-18995]

Linux

macOS

  • Exporting for macOS from a Mac now generates a .dmg package. [GH-11476]
  • Implement vsync OS functions for macOS. [GH-12354]

Windows

  • New WASAPI audio driver with better latency than RtAudio (as in 3.0). [GH-10942]

Common

  • Add hardware cursor acceleration support for all platforms. Note: Breaks compatibility with cursor methods in Input, some scripts might need to be adjusted. [GH-13437]
  • Add OS.center_window to center the window precisely on desktop platforms. [GH-13930]

Editor tools

  • New crash handler to generate backtraces when crashing on all desktop platforms (as in 3.0). [GH-10124]
  • Dozens of improvements to the "Godot 2 to 3 converter" tool, which can now convert many more resources than the one in 2.1.4. It even has an option to tentatively convert your scripts and change things like get_pos() (2.1) to get_position() (3.0) automatically.
  • Add class members overview in script editor. [GH-11909]
  • New contextual menu in FileSystem dock. [GH-13029]

Core

  • Fix security vulnerabilities in marshalls size checks and InputEvent marshalling that could be used to crash a Godot server by sending a malformed packet (Thanks Fabio Alessandrelli!).
  • Fix serialization of identifiers with non printable ASCII characters. [GH-17177]
  • Add String.encrypt_text and Script.decrypt_text using AES-256. [GH-17366]
  • Buffer write performance improvements. [GH-16671]
  • Thirdparty dependencies updated: FreeType 2.8.1, libogg 1.3.3, libpng 1.6.34, libwebp 1.0.0, minizip 1.2.11, OpenSSL 1.0.2o (includes security fixes)

You can refer to the list of merged Pull Requests in the 2.1 branch for details on other changes.

Thanks

I'd like to thank the dozens of contributors (both developers and testers) who have helped shape this release and its impressive feature set!

And thanks to all the community members supporting us on Patreon, allowing me to dedicate some of my time to the old 2.1 branch.


The illustration picture (full size) is from the great "survival adventure point'n'click" Deep Sixed by Little Red Dog Games, developed with Godot 2.1.4 and available on itch.io and Steam.