OpenParable
Skip to content
← Back to skills

engine-settings

Development

Configure Unreal Engine core settings — rendering, physics, audio, garbage collection, console variables (cvars), and scalability levels (EngineSettingsService). Use when the user asks to change engine/rendering settings, set a console variable (r.*, etc.), adjust scalability/quality levels, or read engine config categories.

View on GitHub ↗
QUICK START

How to use this skill

Bring this guide into your coding agent with a prompt tailored to the tool you use.

  1. Open your project in Codex.
  2. Copy and paste the prompt below.
  3. Review files and risks before approving any action.
Prompt to paste
Inspect the Agent Skill at https://github.com/kevinpbuckley/VibeUE/blob/HEAD/Content/Skills/engine-settings/SKILL.md and all supporting files. Report provenance, permissions, scripts, dependencies, and security risks. Propose an exact installation into .agents/skills/engine-settings, but wait for my approval before writing files or running scripts.

Copying this prompt does not install or run the skill. Review third-party files before use.

Engine Settings Skill

🔀 Registered settings moved to the engine. Category-based registered-setting access (list_categories / list_settings / get_setting / set_setting) is now Unreal 5.8's native ConfigSettingsToolset — reach it with call_tool (run describe_toolset on ConfigSettingsToolset for its actions/params). VibeUE's EngineSettingsService was trimmed to the delta the engine doesn't cover: console variables (cvars), scalability levels, raw engine INI read/write, and config save. Use those from execute_python_code as shown below.

Critical Rules

⚠️ CVars (VibeUE) vs Registered Settings (engine toolset)

  • CVars (console variables) → unreal.EngineSettingsService.get_console_variable / set_console_variable (kept in VibeUE).
  • Registered settings (category + key, e.g. RendererSettings) → engine ConfigSettingsToolset via call_tool. EngineSettingsService.get_setting / set_setting / list_categories / list_settings were removed in the 5.8 consolidation.
# CVars (names like r.ReflectionMethod) — VibeUE
value = unreal.EngineSettingsService.get_console_variable("r.ReflectionMethod")
unreal.EngineSettingsService.set_console_variable("r.ReflectionMethod", "1")

# Registered settings (category-based) — use the engine ConfigSettingsToolset via call_tool.
# Raw INI is also still available in VibeUE when you know the section/key:
value = unreal.EngineSettingsService.get_engine_ini_value(
    "/Script/Engine.RendererSettings", "bEnableRayTracing", "Engine.ini")

⚠️ Check Read-Only Before Setting CVars

info = unreal.ConsoleVariableInfo()
if unreal.EngineSettingsService.get_console_variable_info("r.MaxQualityMode", info):
    if not info.is_read_only:
        unreal.EngineSettingsService.set_console_variable(info.name, "1")

⚠️ Some Settings Require Restart

set_console_variable / set_engine_ini_value return an FEngineSettingResult whose requires_restart flag tells you whether the change takes effect immediately. (Registered-setting results come from the engine ConfigSettingsToolset instead.)


Browsing registered settings

Listing categories and the settings inside them is now an engine ConfigSettingsToolset job — call it via call_tool and run describe_toolset for the available actions. These engine categories cover rendering, physics, audio, GC, networking, collision, AI, input, and the rest.

For everything VibeUE still owns, see the cvar / INI / scalability workflows below.


Workflows

Enable Ray Tracing

import unreal
import json

rt_settings = {
    "r.RayTracing": "1",
    "r.RayTracing.Shadows": "1",
    "r.RayTracing.Reflections": "1",
    "r.ReflectionMethod": "1"
}
result = unreal.EngineSettingsService.set_console_variables_from_json(json.dumps(rt_settings))
unreal.EngineSettingsService.save_all_engine_config()

Optimize for Performance

import unreal
import json

# Set overall scalability to Low (0)
unreal.EngineSettingsService.set_overall_scalability_level(0)

# Disable expensive features
perf_settings = {
    "r.RayTracing": "0",
    "r.VolumetricFog": "0",
    "r.MotionBlurQuality": "0",
    "r.Shadow.MaxResolution": "512"
}
unreal.EngineSettingsService.set_console_variables_from_json(json.dumps(perf_settings))

Search CVars

import unreal

shadows = unreal.EngineSettingsService.search_console_variables("shadow", 100)
for cvar in shadows:
    print(f"{cvar.name}: {cvar.value} ({cvar.type})")

Set Engine INI Values

import unreal

result = unreal.EngineSettingsService.set_engine_ini_value(
    "/Script/EngineSettings.GameMapsSettings",
    "GameDefaultMap",
    "/Game/Maps/Lvl_Main.Lvl_Main",
    "DefaultEngine.ini"
)

Data Structures

Python Naming Convention: C++ types like FEngineSettingResult are exposed as EngineSettingResult in Python (no F prefix).

EngineSettingResult (returned by set_* and INI write methods)

  • success, error_message
  • modified_settings, failed_settings
  • requires_restart

ConsoleVariableInfo

  • name, value, default_value, description
  • type, flags, is_read_only

VibeUE EngineSettingsService covers:

  • Rendering optimization: Adjust r.* cvars, ray tracing, shadows
  • Performance profiling: GC cvars (gc.*), streaming, scalability
  • Quality presets: Apply overall or per-group scalability levels
  • Raw engine INI: read/write sections directly when you know the key

For browsing/editing registered settings by category (physics, audio, collision, AI, input classes, etc.), use the engine ConfigSettingsToolset via call_tool.

Sample scripts (run via execute_python_code)

  • scripts/set_cvars.txt — read scalability and set a console variable.