godotengine/godot
Configuration
Three config surfaces matter when working in Godot:
- Build options — passed to
sconsat compile time. - Project settings — the
project.godotfile that ships with each project. - Editor settings — per-user preferences for the editor.
This page summarizes each.
Build options
Top-level options are documented by scons --help. The most common ones:
| Option | Default | Effect |
|---|---|---|
platform |
host | One of linuxbsd, windows, macos, android, ios, visionos, web |
target |
editor |
editor, template_debug, template_release |
arch |
host | x86_64, x86_32, arm64, arm32, rv64, ppc32, ppc64, wasm32, universal |
dev_build |
no |
Debug symbols, asserts, fast incremental builds |
dev_mode |
no |
Like dev_build, plus extra warnings as errors |
production |
no |
Release-grade flags (LTO, optimize=speed, no asserts) |
optimize |
by target | none, custom, debug, speed, speed_trace, size, size_extra |
use_lto |
no |
Link-time optimization (auto, thin, full) |
tests |
no |
Compile the doctest unit tests |
scu_build |
no |
Single compilation unit mode (faster compile, smaller objects) |
precision |
single |
single or double for float precision |
compiledb |
no |
Emit compile_commands.json |
verbose |
no |
Print full compile command lines |
module_<name>_enabled |
varies | Disable a module |
custom_modules |
empty | Comma-separated list of paths to external module dirs |
disable_3d |
no |
Build without any 3D code (smaller binary) |
disable_navigation |
no |
Drop the navigation servers |
disable_xr |
no |
Drop XR servers |
tools |
yes |
Include editor and editor-only code |
Per-platform options live in platform/<name>/detect.py. Examples:
linuxbsd:use_pulseaudio,use_alsa,use_dbus,use_sowrap,use_libdecor,wayland,x11.windows:use_mingw,use_llvm,use_static_cpp,windows_subsystem.macos:vulkan,use_volk,bundle_sign_identity.android:swappy,generate_android_apk.web:threads,dlink_enabled,proxy_to_pthread.
Project settings (project.godot)
ProjectSettings (core/config/project_settings.cpp) loads settings from project.godot (or the binary project.binary for exported projects). Settings are:
- Hierarchical key paths like
application/config/name,rendering/textures/canvas_textures/default_texture_filter. - Per-feature override-able — adding
application/config/name.mobile = "MyGameMobile"overrides the base value when the engine reports themobilefeature. - Persistable — only changes from the engine defaults are written.
Key sections
| Section | Examples |
|---|---|
application/ |
App name, version, autoload list, splash screen, run/main_scene |
audio/ |
Driver, output channels, default bus layout |
compression/ |
Default compression mode for .res |
debug/ |
Settings shape and stack-trace behaviour |
display/window/ |
Window size, mode, position, vsync, MSAA |
editor/ |
Editor-only project hints (when this project is open in the editor) |
filesystem/ |
File system caching, import settings |
gui/ |
Theme, common controls behaviour, focus |
input/ |
Action map (per-action event lists) |
internationalization/ |
Locale, fallback locales, RTL hints |
layer_names/ |
Friendly names for physics + render layers |
memory/ |
Limits |
navigation/ |
Navigation server defaults |
network/ |
TLS cert path, multiplayer defaults |
physics/ |
Engine choice, ticks per second, layer count |
rendering/ |
Driver, method, shadows, post-process, GI defaults |
xr/ |
OpenXR enable/disable + per-runtime tweaks |
The full default list can be inspected with Engine.get_singleton("ProjectSettings") from a script or by reading the engine's register_* calls (each subsystem registers its defaults via GLOBAL_DEF/GLOBAL_DEF_INTERNAL).
Feature tags
Built-in feature tags include:
- Platform:
linux,windows,macos,android,ios,visionos,web. - Architecture:
x86_64,x86_32,arm64,arm32,rv64,wasm32. - Capability:
mobile,web,release,debug,editor,template. - GPU:
s3tc,etc2,astc,bptc. - Custom: any tag declared in
application/config/custom_features.
Feature tags drive both project-setting overrides and export preset filtering.
Editor settings
EditorSettings (editor/settings/editor_settings.cpp) holds per-user editor preferences in editor_settings.tres under the user's data dir. The defaults are registered through _initial_set calls grouped by category:
| Category | What's there |
|---|---|
interface/ |
Theme, font, language, scale, display features |
editor/ |
Save behaviour, scene defaults, recent project list |
text_editor/ |
Code editor: theme, font size, completion, navigation |
docks/ |
Visibility, sort orders |
network/ |
Proxy, debugger ports |
filesystem/ |
Trash usage, scanning |
run/ |
Player run paths, environment |
debugger/ |
Breakpoint behaviour, profiler defaults |
import/ |
Import dialog defaults |
Editor settings are not exported with the project — they are user preferences. Shortcuts live alongside as ShortcutMap entries.
Where defaults come from
When a new project is created, the engine writes a small project.godot containing the project name and the engine version. Everything else is implied by the defaults in code. This is why projects are small and forward-compatible: the defaults can shift between engine versions without rewriting every file.
Project upgrades on major version changes are handled by editor/project_upgrade/.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.