> For the complete documentation index, see [llms.txt](https://stylizededge-devs.gitbook.io/aqs-doc/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://stylizededge-devs.gitbook.io/aqs-doc/authoring-presets/cvar-overrides.md).

# CVar Overrides

Layer 2 of every preset. A raw `TMap<FString, FString>` — key is the CVar name, value is the value as a string. Applied *after* every Layer 1 field, so it always wins if it touches the same CVar.

## When to Use This Instead of a Named Field

Use a named field (Layer 1) whenever one exists for what you need — they're validated, show up correctly in the menu system, and are what most players will ever touch.

Use a CVar override when:

* You need a setting that has no corresponding named field at all
* You're testing something experimental before deciding it deserves a named field
* You need fine-grained control beyond what a named field's 0–3 quality level offers (e.g. a specific `r.Lumen.SceneLightingQuality` multiplier the named fields don't expose)

## Important: This Layer Is Invisible to the Menu System

The descriptor generator explicitly skips `CVarOverrides` — raw CVar strings have no type information, no range, no player-friendly label, so there's nothing for the generator to build a row from automatically.

If you want a CVar-only setting to actually appear as a row in the player menu, use [Virtual CVar Settings](/aqs-doc/building-menus/virtual-cvar-settings.md) instead — same underlying mechanism (a CVar, set directly), but declared with enough metadata to render properly.

## Finding the Right CVar Name and Value

Check the [CVar Reference](/aqs-doc/reference/cvar-reference.md) page, or download the full [100-CVar PDF](https://github.com/KimsFerdy/AutoQualitySwitcherDoc/blob/main/docs-assets/AQS_Understand_Your_CVars.pdf) for the complete categorized list with ranges and stability notes.

## Priority — Why These Always Apply Correctly

Every CVar write in this plugin uses `ECVF_SetByCode` consistently — applier, editor test buttons, virtual rows, all of it. This matters because Unreal's CVar system has a strict priority ladder; a value set by a lower-priority source is silently ignored if a higher-priority source already claimed that CVar. Keeping every AQS write path at the same priority means they never fight each other.

One thing AQS deliberately does **not** do: out-rank the player's own console. If a player manually types a CVar into the live console (`SetByConsole`), that outranks AQS on purpose — a developer console override should always be able to win for debugging, and AQS respects that.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://stylizededge-devs.gitbook.io/aqs-doc/authoring-presets/cvar-overrides.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
