From 245bdd5e83848c6286113e1d8f128ed7d9c9e16c Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Thu, 21 Aug 2025 03:28:21 +0200 Subject: [PATCH] Add documentation on using the Engine compilation configuration editor --- about/list_of_features.rst | 10 +- .../compiling/optimizing_for_size.rst | 23 ++++ ...mpilation_configuration_editor_detect.webp | Bin 0 -> 14532 bytes ...ilation_configuration_editor_detected.webp | Bin 0 -> 14244 bytes tutorials/editor/index.rst | 1 + ...ngine_compilation_configuration_editor.rst | 107 ++++++++++++++++++ 6 files changed, 140 insertions(+), 1 deletion(-) create mode 100644 tutorials/editor/img/engine_compilation_configuration_editor_detect.webp create mode 100644 tutorials/editor/img/engine_compilation_configuration_editor_detected.webp create mode 100644 tutorials/editor/using_engine_compilation_configuration_editor.rst diff --git a/about/list_of_features.rst b/about/list_of_features.rst index b3fcee1572c..f0f69792e0b 100644 --- a/about/list_of_features.rst +++ b/about/list_of_features.rst @@ -669,7 +669,7 @@ XR support (AR and VR) - Currently only exporting an application for use on a flat plane within the headset is supported. Immersive experiences are not supported. - + - Other devices supported through an XR plugin structure. - Various advanced toolkits are available that implement common features required by XR applications. @@ -776,8 +776,16 @@ Miscellaneous - Print colored text to standard output on all platforms using :ref:`print_rich `. +- The editor can + :ref:`detect features used in a project and create a compilation profile `, + which can be used to create smaller export template binaries + with unneeded features disabled. - Support for :ref:`C++ modules ` statically linked into the engine binary. + + - Most built-in modules can be disabled at compile-time to reduce binary size + in custom builds. See :ref:`doc_optimizing_for_size` for details. + - Engine and editor written in C++17. - Can be :ref:`compiled ` using GCC, diff --git a/engine_details/development/compiling/optimizing_for_size.rst b/engine_details/development/compiling/optimizing_for_size.rst index bb0ac935c77..768ebc370ef 100644 --- a/engine_details/development/compiling/optimizing_for_size.rst +++ b/engine_details/development/compiling/optimizing_for_size.rst @@ -93,6 +93,29 @@ Godot 4.5 introduced the ``size_extra`` option, which can further reduce size. scons target=template_release optimize=size_extra +Detecting used features from the current project and disabling unused features +------------------------------------------------------------------------------ + +- **Space savings:** Moderate to high depending on project +- **Difficulty:** Easy to medium depending on project +- **Performed in official builds:** No + +Godot features an :ref:`doc_engine_compilation_configuration_editor` tool that can detect +the features used in the current project and create a build profile. Once saved, +this build profile can then be passed to SCons when compiling custom export templates: + +:: + + scons target=template_release build_profile=/path/to/profile.gdbuild + +Note that for certain projects, the feature detection may be too aggressive and disable +features that are actually needed at runtime. This can occur if certain features are used +in a way that their usage cannot be detected statically (such as a script being procedurally +created and run at runtime). + +More specific features can be disabled by following the sections below, but remember +that many of them are automatically detected by the engine compilation configuration detector. + Disabling advanced text server ------------------------------ diff --git a/tutorials/editor/img/engine_compilation_configuration_editor_detect.webp b/tutorials/editor/img/engine_compilation_configuration_editor_detect.webp new file mode 100644 index 0000000000000000000000000000000000000000..6ced779da87c919efacefb525a2107e404a86bb2 GIT binary patch literal 14532 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 literal 0 HcmV?d00001 diff --git a/tutorials/editor/img/engine_compilation_configuration_editor_detected.webp b/tutorials/editor/img/engine_compilation_configuration_editor_detected.webp new file mode 100644 index 0000000000000000000000000000000000000000..72427bf16807861dbcf8d858108b8e083872f14c GIT binary patch literal 14244 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 bCZ7yeoj0c{yMYISADqsIu!hVlIWGSnYk>Bm literal 0 HcmV?d00001 diff --git a/tutorials/editor/index.rst b/tutorials/editor/index.rst index 572eb6aa80d..66b364173bc 100644 --- a/tutorials/editor/index.rst +++ b/tutorials/editor/index.rst @@ -81,6 +81,7 @@ like Visual Studio Code or Emacs. command_line_tutorial external_editor + using_engine_compilation_configuration_editor Managing editor features ------------------------ diff --git a/tutorials/editor/using_engine_compilation_configuration_editor.rst b/tutorials/editor/using_engine_compilation_configuration_editor.rst new file mode 100644 index 00000000000..aea286140e9 --- /dev/null +++ b/tutorials/editor/using_engine_compilation_configuration_editor.rst @@ -0,0 +1,107 @@ +.. _doc_engine_compilation_configuration_editor: + +Using the engine compilation configuration editor +================================================= + +Godot comes with a large set of built-in features. While this is convenient, +this also means its binary size is larger than it could be, especially +for projects that only use a small portion of its feature set. + +To help reduce binary size, it is possible to compile custom export templates +with certain features disabled. This is described in detail in :ref:`doc_optimizing_for_size`. +However, determining which features need to be disabled can be a tedious task. +The engine compilation configuration editor aims to address this +by providing an interface to view and manage these features easily, +while also being able to detect the features currently being used in the project. + +The :menu:`Project > Tools > Engine Compilation Configuration Editor` +allows you to create and manage build profiles for your Godot project. + +From now on, you have two possibilities: + +- View the list and manually uncheck features that you don't need. +- Use the :button:`Detect from Project` button to automatically detect features + currently used in the project and disable unused features. Note that this will + override the existing list of features, so if you have manually unchecked some + items, their state will be reset based on whether the project actually + uses the feature. + +.. figure:: img/engine_compilation_configuration_editor_detect.webp + :align: center + :alt: Opening the Engine Compilation Configuration Editor + + Opening the Engine Compilation Configuration Editor + +Once you click :button:`Detect from Project`, the project detection step will run. +This can take from a few seconds up to several minutes depending on the project size. +Once detection is complete, you'll see an updated list of features with some features disabled: + +.. figure:: img/engine_compilation_configuration_editor_detected.webp + :align: center + :alt: Updated features list after using feature detection (example from the 3D platformer demo) + + Updated features list after using feature detection (example from the 3D platformer demo) + +.. warning:: + + Unchecking features in this dialog will not reduce binary size directly on export. + Since it is only possible to actually remove features from the binary at compile-time, + you still need to compile custom export templates with the build profile specified + to actually benefit from the engine compilation configuration editor. + +You can now save the build profile by clicking **Save As** at the top. +The build profile can be saved in any location, but it's a good idea to +save it somewhere in your project folder and add it to version control to be able +to go back to it later when needed. This also allows using version control +to track changes to the build profile. + +The build profile is a JSON file (and ``.gdbuild`` extension) that looks like this +after detection in the above example: + +:: + + { + "disabled_build_options": { + "disable_navigation_3d": true, + "disable_xr": true, + "module_godot_physics_3d_enabled": false, + "module_msdfgen_enabled": false, + "module_openxr_enabled": false + }, + "disabled_classes": [ + "AESContext", + ... + "ZIPReader" + ], + "type": "build_profile" + } + +This file can be passed as a SCons option when :ref:`compiling ` +export templates: + +:: + + scons target=template_release build_profile=/path/to/profile.gdbuild + +The buildsystem will use this to disable unused classes and reduce binary size as a result. + +Limitations +----------- + +The :button:`Detect from Project` functionality relies on reading the project's scenes and scripts. +It will not be able to detect used features in the following scenarios: + +- Features that are used in GDScripts that are procedurally created then run at runtime. +- Features that are used in :ref:`expressions `. +- Features that are used in :ref:`GDExtensions `, unless the language binding + allows for defining used classes and the extension makes use of the functionality. + See `GH-104129 `__ for details. +- Features that are used in :ref:`external PCKs loaded at runtime `. +- Certain edge cases may exist. If unsure, please + `open an issue on GitHub `__ + with a minimal reproduction project attached. + +.. seealso:: + + You can achieve further size reductions by passing other options that reduce binary size. + See :ref:`doc_optimizing_for_size` for more information.