Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Feature-Tags

Einführung

Godot verfügt über ein spezielles System zur Kennzeichnung der Verfügbarkeit von Features. Jedes Feature wird als String dargestellt, der sich auf viele der folgenden Elemente beziehen kann:

  • Plattformname.

  • Plattformarchitektur (64-Bit oder 32-Bit, x86 oder ARM).

  • Plattformtyp (Desktop, Mobile, Web).

  • Unterstützte Texturkomprimierungsalgorithmen auf der Plattform.

  • Ob ein Build debug oder release ist (debug enthält den Editor).

  • Ob das Projekt über den Editor oder eine "eigenständige" Binärdatei ausgeführt wird.

  • Viele weitere Dinge.

Features can be queried at runtime from the singleton API by calling:

OS.has_feature(name)

GDExtension verwendet die Betriebssystem-Tags, um zu bestimmen, welche Bibliotheken geladen werden sollen. Zum Beispiel wird eine Bibliothek für linux.debug.editor.x86_64 nur auf einem Debug-Editor geladen, der für Linux x86_64 gebaut wurde.

Default-Funktionen

Hier ist eine Liste der meisten Feature-Tags in Godot. Beachten Sie, dass bei ihnen die Groß- und Kleinschreibung wichtig ist:

Feature-Tag

Beschreibung

android

Läuft auf Android (aber nicht innerhalb eines Webbrowsers)

bsd

Läuft auf *BSD (aber nicht in einem Webbrowser)

linux

Läuft unter Linux (aber nicht innerhalb eines Webbrowsers)

macos

Läuft unter macOS (aber nicht in einem Webbrowser)

ios

Läuft unter iOS (aber nicht innerhalb eines Webbrowsers)

visionos

Running on visionOS (but not within a Web browser)

windows

Läuft unter Windows

linuxbsd

Läuft unter Linux oder *BSD

debug

Läuft auf einem Debug-Build (einschließlich des Editors)

release

Läuft auf einem Release-Build

editor

Läuft auf einem Editor-Build

editor_hint

Running on an editor build, and inside the editor

editor_runtime

Running on an editor build, and running the project

template

Läuft auf einem Nicht-Editor-Build (Exportvorlage)

double

Läuft auf einem Double-Precision-Build

single

Läuft auf einem Single-Precision-Build

64

Läuft auf einem 64-bit Build (jede Architektur)

32

Läuft auf einem 32-bit Build (jede Architektur)

x86_64

Läuft auf einem 64-bit x86 Build

x86_32

Läuft auf einem 32-bit x86 Build

x86

Läuft auf einem x86 Build (jede Bitgröße)

arm64

Läuft auf einem 64-bit ARM Build

arm32

Läuft auf einem 32-Bit ARM Build

arm

Läuft auf einem 64-bit Build (jede Bitgröße)

rv64

Läuft auf einem 64-bit RISC-V Build

riscv

Läuft auf einem RISC-V-Build (jede Bitgröße)

ppc64

Läuft auf einem 64-Bit-PowerPC-Build

ppc32

Läuft auf einem 32-Bit-PowerPC-Build

ppc

Läuft auf einem PowerPC-Build (jede Bitgröße)

wasm64

Läuftg auf einem 64-Bit-WebAssembly-Build (noch nicht möglich)

wasm32

Läuft auf einem 32-Bit-WebAssembly-Build

wasm

Läuft auf einem WebAssembly-Build (beliebige Bitgröße)

mobile

Host-Betriebssystem ist eine mobile Plattform

pc

Host-Betriebssystem ist eine PC-Plattform (Desktop/Laptop)

web

Das Host-Betriebssystem ist ein Webbrowser

nothreads

Running without threading support

threads

Running with threading support

web_android

Host OS ist ein Webbrowser, der auf Android läuft

web_ios

Host OS ist ein Webbrowser, der auf iOS läuft

web_linuxbsd

Host-Betriebssystem ist ein Webbrowser, der unter Linux oder *BSD läuft

web_macos

Host OS ist ein Webbrowser, der unter macOS läuft

web_windows

Host-Betriebssystem ist ein Webbrowser, der unter Windows läuft

etc

Texturen mit ETC1-Komprimierung werden unterstützt

etc2

Texturen mit ETC2-Komprimierung werden unterstützt

s3tc

Texturen die S3TC (DXT/BC)-Kompression nutzen, werden unterstützt

movie

Movie Maker mode ist aktiv

shader_baker

Project was exported with shader baking enabled (only applies to the exported project, not when running in the editor)

dedicated_server

Project was exported as a dedicated server (only applies to the exported project, not when running in the editor)

Warnung

With the exception of texture compression, web_<platform> and movie feature tags, default feature tags are immutable. This means that they will not change depending on runtime conditions. For example, OS.has_feature("mobile") will return false when running a project exported to Web on a mobile device.

To check whether a project exported to Web is running on a mobile device, use OS.has_feature("web_android") or OS.has_feature("web_ios").

Benutzerdefinierte Features

Es ist möglich, benutzerdefinierte Features zu einem Build hinzuzufügen; verwenden Sie dazu das entsprechende Feld in der Exportvorgabe, die zur Erstellung des Builds verwendet wurde:

../../_images/feature_tags1.webp

Bemerkung

Benutzerdefinierte Feature-Tags werden nur verwendet, wenn das exportierte Projekt ausgeführt wird (auch mit Ein-Klick-Auslieferung). Sie werden nicht verwendet, wenn das Projekt vom Editor aus ausgeführt wird, selbst wenn die Exportvorgabe, die für Ihre aktuelle Plattform als Runnable markiert ist, benutzerdefinierte Featuretags definiert hat.

Custom feature tags are also not used in EditorExportPlugin scripts. Instead, feature tags in EditorExportPlugin will reflect the device the editor is currently running on.

Projekteinstellungen überschreiben

Features können verwendet werden, um bestimmte Konfigurationswerte in den Projekteinstellungen außer Kraft zu setzen. Dadurch können Sie eine beliebige Konfiguration beim Erstellen eines Builds besser anpassen.

Im folgenden Beispiel wird ein anderes Icon für den Demo-Build des Spiels hinzugefügt (der in einer speziellen Exportvorgabe angepasst wurde, die wiederum nur Demo-Levels enthält).

The Project Settings panel

The desired configuration is selected, which effectively copies its properties to the panel above (1). The "demo_build" feature tag is selected (2). The configuration is added to the project settings (3).

After overriding, a new field is added for this specific configuration.

../../_images/feature_tags3.webp

Bemerkung

Wenn Sie die Projekteinstellungen "override.cfg"-Funktionalität verwenden (die nichts mit Featuretags zu tun hat), denken Sie daran, dass Featuretags weiterhin gelten. Stellen Sie daher sicher, dass Sie auch die Einstellung mit dem/den gewünschten Featuretag(s) überschreiben, wenn Sie wollen, dass diese die Basisprojekteinstellungen auf allen Plattformen und Konfigurationen überschreiben.

Default-Überschreibungen

Es gibt bereits eine Vielzahl von Einstellungen, die standardmäßig mit Überschreibungen versehen sind; sie sind in vielen Abschnitten der Projekteinstellungen zu finden.

../../_images/feature_tags4.webp

Taking feature tags into account when reading project settings

By default, feature tags are not taken into account when reading project settings using the typical approaches (ProjectSettings.get_setting or ProjectSettings.get). Instead, you must use ProjectSettings.get_setting_with_override.

For example, with the following project settings:

[section]

subsection/example = "Release"
subsection/example.debug = "Debug"

Using ProjectSettings.get_setting("section/subsection/example") will return "Release" regardless of whether a debug build is currently running. On the other hand, ProjectSettings.get_setting_with_override("section/subsection/example") will obey feature tags and will return "Debug" if using a debug build.

Anpassen des Builds

Featuretags können auch verwendet werden, um einen Build-Prozess anzupassen, indem man ein eigenes ExportPlugin schreibt. Sie werden auch verwendet, um festzulegen, welche Shared Library in GDExtension geladen und exportiert wird.