Contains global variables accessible from everywhere.
Contains global variables accessible from everywhere. Use "ProjectSettings.get_setting(variable)", "ProjectSettings.set_setting(variable,value)" or "ProjectSettings.has_setting(variable)" to access them. Variables stored in project.godot are also loaded into ProjectSettings, making this object very useful for reading custom game configuration options.
Add a custom property info to a property. The dictionary must contain: name:[String](the name of the property) and type:[int](see TYPE_* in [@GlobalScope]), and optionally hint:[int](see PROPERTY_HINT_* in [@GlobalScope]), hint_string:[String]. Example: [codeblock] ProjectSettings.set("category/property_name", 0)

var property_info = { "name": "category/property_name", "type": TYPE_INT, "hint": PROPERTY_HINT_ENUM, "hint_string": "one,two,three" }

ProjectSettings.add_property_info(property_info) [/codeblock]
Clear the whole configuration (not recommended, may break things).
Return the order of a configuration value (influences when saved to the config file).
Convert a localized path (res://) to a full native OS path.
Return true if a configuration value is present.
Loads the contents of the .pck or .zip file specified by [code]pack[/code] into the resource filesystem (res://). Returns true on success. Note: If a file from [code]pack[/code] shares the same path as a file already in the resource filesystem, any attempts to load that file will use the file from [code]pack[/code].
Convert a path to a localized path (res:// path).
Returns true if the specified property exists and its initial value differs from the current value.
Returns the initial value of the specified property. Returns null if the property does not exist.
Saves the configuration to the project.godot file.
Saves the configuration to a custom file.
Set the order of a configuration value (influences when saved to the config file).
- Comma-separated list of custom Android modules (which must have been built in the Android export templates) using their Java package path, e.g. [code]org/godotengine/org/GodotPaymentV3,org/godotengine/godot/MyCustomSingleton"[/code].
- Background color for the boot splash.
- Scale the boot splash image to the full window length when engine starts (will leave it as default pixel size otherwise).
- Path to an image used for boot splash.
- This user directory is used for storing persistent data ([code]user://[/code] filesystem). By default (no custom name defined), [code]user://[/code] resolves to a project-specific folder in Godot's own configuration folder (see [method OS.get_user_data_dir]). If a custom directory name is defined, this name will be used instead and appended to the system-specific user data directory (same parent folder as the Godot configuration folder documented in [method OS.get_user_data_dir]). The [member application/config/use_custom_user_dir] setting must be enabled for this to take effect.
- Icon used for the project, set when project loads. Exporters will use this icon when possible to.
- Name of the project. It is used from both project manager and by the exporters. Overriding this as name.locale allows setting it in multiple languages.
- Specifies a file to override project settings. For example: [code]user://custom_settings.cfg[/code].
- Allow the project to save to its own custom user dir (see [member application/config/custom_user_dir_name]). This setting only works for desktop platforms. A name must be set in the [member application/config/custom_user_dir_name] setting for this to take effect.
- Disable printing to stderr on exported build.
- Disable printing to stdout on exported build.
- Force a delay between frames in the main loop. This may be useful if you plan to disable vsync.
- Turn on low processor mode. This setting only works on desktops. The screen is not redrawn if nothing changes visually. This is meant for writing applications and editors, but is pretty useless (and can hurt performance) on games.
- Amount of sleeping between frames when the low_processor_mode is enabled. This effectively reduces CPU usage when this mode is enabled.
- Path to the main scene file that will be loaded when the project runs.
- Audio buses will disable automatically when sound goes below a given DB threshold for a given time. This saves CPU as effects assigned to that bus will no longer do any processing.
- Audio buses will disable automatically when sound goes below a given DB threshold for a given time. This saves CPU as effects assigned to that bus will no longer do any processing.
- This option should be enabled if project works with microphone.
- Mix rate used for audio. In general, it's better to not touch this and leave it to the host operating system.
- Setting to hardcode audio delay when playing video. Best to leave this untouched unless you know what you are doing.
- Default compression level for gzip. Affects compressed scenes and resources.
- Default compression level for zlib. Affects compressed scenes and resources.
- Default compression level for zstd. Affects compressed scenes and resources.
- Enable long distance matching in zstd.
- Maximum call stack allowed for debugging GDScript.
- Maximum amount of functions per frame allowed when profiling.
- Print frames per second to stdout. Not very useful in general.
- Print more information to stdout when running. It shows info such as memory leaks, which scenes and resources are being loaded, etc.
- Maximum call stack in visual scripting, to avoid infinite recursion.
- Custom image for the mouse cursor.
- Hotspot for the custom mouse cursor image.
- Position offset for tooltips, relative to the hotspot of the mouse cursor.
- Allow HiDPI display on Windows and OSX. On Desktop Linux, this can't be enabled or disabled.
- Force keep the screen on, so the screensaver does not take over. Works on Desktop and Mobile.
- Default orientation for cell phone or tablet.
- Allow per pixel transparency in a Desktop window. This affects performance if not needed, so leave it off.
- Force the window to be always on top.
- Force the window to be borderless.
- Set the window to full screen when it starts.
- Set the main window height. On desktop, this is the default window size. Stretch mode settings use this also as a reference when enabled.
- Allow the window to be resizable by default.
- Test a different height for the window. The main use for this is to test with stretch modes.
- Test a different width for the window. The main use for this is to test with stretch modes.
- Set the main window width. On desktop, this is the default window size. Stretch mode settings use this also as a reference when enabled.
- Use VSync. Don't be stupid, don't turn this off.
- Internal editor setting, don't touch.
- Enable swap OK and Cancel buttons on dialogs. This is because Windows/MacOS/Desktop Linux may use them in different order, so the GUI swaps them depending on the host OS. Disable this behavior by turning this setting off.
- Use a custom theme resource, set a path to it here.
- USe a custom default font resource, set a path to it here.
- Make sure the theme used works with hidpi.
- Timer setting for incremental search in Tree, IntemList, etc. controls.
- Timer for detecting idle in the editor.
- Log all output to a file.
- Path to logs withint he project. Using an [code]user://[/code] based path is recommended.
- Amount of log files (used for rotation).
- Godot uses a message queue to defer some function calls. If you run out of space on it (you will see an error), you can increase the size here.
- This is used by servers when used in multi threading mode (servers and visual). RIDs are preallocated to avoid stalling the server requesting them on threads. If servers get stalled too often when loading resources in a thread, increase this number.
- Maximum amount of characters allowed to send as output from the debugger. Over this value, content is dropped. This helps not to stall the debugger connection.
- Maximum amount of errors allowed to send as output from the debugger. Over this value, content is dropped. This helps not to stall the debugger connection.
- Maximum amount of messages allowed to send as output from the debugger. Over this value, content is dropped. This helps not to stall the debugger connection.
- Default size of packet peer stream for deserializing godot data. Over this size, data is dropped.
- Amount of read ahead used by remote filesystem. Improves latency.
- Page size used by remote filesystem.
- When creating nodes names automatically, set the type of casing in this project. This is mostly an editor setting.
- What to use to separate node name from number. This is mostly an editor setting.
- Set whether physics is run on the main thread or a separate one. Running the server on a thread increases performance, but restricts API Access to only physics process.
- Frames per second used in the physics. Physics always needs a fixed amount of frames per second.
- Fix to improve physics jitter, specially on monitors where refresh rate is different than physics FPS.
- Default background clear color. Overridable per [Viewport] using its [Environment]. See [member Environment.background_mode] and [member Environment.background_color] in particular. To change this default color programmatically, use [method VisualServer.set_default_clear_color].
- Max buffer size for blend shapes. Any blend shape bigger than this will not work.
- Max buffer size for drawing polygons. Any polygon bigger than this will not work.
- Max index buffer size for drawing polygons. Any polygon bigger than this will not work.
- Max buffer size for drawing immediate objects (ImmediateGeometry nodes). Nodes using more than this size will not work.
- Max amount of elements renderable in a frame. If more than this are visible per frame, they will be dropped. Keep in mind elements refer to mesh surfaces and not mesh themselves.
- Shaders have a time variable that constantly increases. At some point it needs to be rolled back to zero to avoid numerical errors on shader animations. This setting specifies when.
- Some Nvidia GPU drivers have a bug, which produces flickering issues for the [code]draw_rect[/code] method, especially as used in [TileMap]. Refer to https://github.com/godotengine/godot/issues/9913 for details. If [code]true[/code], this option enables a "safe" code path for such Nvidia GPUs, at the cost of performance. This option only impacts the GLES2 rendering backend (so the bug stays if you use GLES3), and only desktop platforms. Default value: [code]false[/code].
- Force snapping of polygons to pixels in 2D rendering. May help in some pixel art styles.
- Disable depth pre-pass for some GPU vendors (usually mobile), as their architecture already does this.
- Do a previous depth pass before rendering materials. This increases performance in scenes with high overdraw, when complex materials and lighting are used.
- Size in pixels of the directional shadow.
- Name of the configured video driver ("GLES2" or "GLES3"). Note that the backend in use can be overridden at runtime via the [code]--video-driver[/code] command line argument, or by the [member rendering/quality/driver/fallback_to_gles2] option if the target system does not support GLES3 and falls back to GLES2. In such cases, this property is not updated, so use [method OS.get_current_video_driver] to query it at runtime.
- Whether to allow falling back to the GLES2 driver if the GLES3 driver is not supported. Default value: [code]false[/code]. Note that the two video drivers are not drop-in replacements for each other, so a game designed for GLES3 might not work properly when falling back to GLES2. In particular, some features of the GLES3 backend are not available in GLES2. Enabling this setting also means that both ETC and ETC2 VRAM-compressed textures will be exported on Android and iOS, increasing the size of the game data pack.
- Maximum Anisotropic filter level used for textures when anisotropy enabled.
- Force to use nearest mipmap filtering when using mipmaps. This may increase performance in mobile as less memory bandwidth is used.
- Strategy used for framebuffer allocation. The simpler it is, the less memory it uses (but the least features it supports).
- For reflection probes and panorama backgrounds (sky), use a high amount of samples to create ggx blurred versions (used for roughness).
- For reflection probes and panorama backgrounds (sky), use a texture array instead of mipmaps. This reduces jitter noise on reflections, but costs more performance and memory.
- Force vertex shading for all rendering. This can increase performance a lot, but also reduces quality immensely. Can work to optimize on very low end mobile.
- Subdivision quadrant size for shadow mapping. See shadow mapping documentation.
- Subdivision quadrant size for shadow mapping. See shadow mapping documentation.
- Subdivision quadrant size for shadow mapping. See shadow mapping documentation.
- Subdivision quadrant size for shadow mapping. See shadow mapping documentation.
- Size for shadow atlas (used for point and omni lights). See documentation.
- Shadow filter mode. The more complex the filter, the more memory bandwidth required.
- Improves quality of subsurface scattering, but cost significantly increases.
- Quality setting for subsurface scaterring (samples taken).
- Weight subsurface scattering samples. Helps to avoid reading samples from unrelated parts of the screen.
- Use high quality voxel cone tracing (looks better, but requires a higher end GPU).
- Thread model for rendering. Rendering on a thread can vastly improve performance, but syncinc to the main thread can cause a bit more jitter.
- If the project uses this compression (usually low end mobile), texture importer will import these.
- If the project uses this compression (usually high end mobile), texture importer will import these.
- If the project uses this compression (usually iOS), texture importer will import these.
- If the project uses this compression (usually Desktop and Consoles), texture importer will import these.