Godot has a special system to tag availability of features. Each feature is represented as a string, which can refer to many of the following:
- Platform name.
- Platform architecture (64-bit or 32-bit, x86 or ARM).
- Platform type (desktop, mobile, Web).
- Supported texture compression algorithms on the platform.
- Whether a build is
debugincludes the editor).
- Whether the project is running from the editor or a “standalone” binary.
- Many more things.
Features can be queried at run-time from the singleton API by calling:
Here is a list of most feature tags in Godot. Keep in mind they are case-sensitive:
|Android||Running on Android|
|HTML5||Running on HTML5|
|OSX||Running on macOS|
|iOS||Running on iOS|
|UWP||Running on UWP|
|Windows||Running on Windows|
|X11||Running on X11 (Linux/BSD desktop)|
|Server||Running on the headless server platform|
|debug||Running on a debug build (including the editor)|
|release||Running on a release build|
|editor||Running on an editor build|
|standalone||Running on a non-editor build|
|64||Running on a 64-bit build (any architecture)|
|32||Running on a 32-bit build (any architecture)|
|x86_64||Running on a 64-bit x86 build|
|x86||Running on a 32-bit x86 build|
|arm64||Running on a 64-bit ARM build|
|arm||Running on a 32-bit ARM build|
|mobile||Host OS is a mobile platform|
|pc||Host OS is a PC platform (desktop/laptop)|
|web||Host OS is a Web browser|
|etc||Textures using ETC1 compression are supported|
|etc2||Textures using ETC2 compression are supported|
|s3tc||Textures using S3TC (DXT/BC) compression are supported|
|pvrtc||Textures using PVRTC compression are supported|
It is possible to add custom features to a build, use the relevant field in the export preset used to generate it:
Overriding project settings¶
Features can be used to override specific configuration values in the Project Settings. This allows to better customize any configuration when doing a build.
In the following example, a different icon is added for the demo build of the game (which was customized in a special export preset which, in turn, includes only demo levels).
After overriding, a new field is added for this specific configuration:
There are already a lot of settings that come with overrides by default, they can be found in many sections of the project settings.
Feature tags can be used to customize a build process too, by writing a custom ExportPlugin. They also are used to specify which shared library is loaded and exported in GDNative.