Q2PRO-X 1.6 Beta 5 by ly — Q2PRO-X 1.6 Beta 5 Cvars and Cvar Browser Guide
The complete guide in HTML. The original DOCX is available from its documentation card.
Q2PRO-X 1.6 Beta 5 by ly
Q2PRO-X 1.6 Beta 5 Cvars and Cvar Browser Guide
Project author: ly
How variables work, where they are saved, and how to use the browser
English edition • Q2PRO-X 1.6 Beta 5 by ly • 2026-10-10
Contents
The entries are links: click one to jump to that section.
Variables, configs and the cvar browser
2. The four places settings are saved
2.2. Local settings of the base game
3. Why the release ships no ready-made user config
5.3. Why not to clean configs by hand
6.1. The browser's own settings
7. The browser's language and appearance
Save everything before quitting
Work out why a value is not saved
Command and menu help in Beta 5
Beta 3 reference coverage
Added 106 missing RU/EN entries covering health ambient, part/item highlights, volume categories and window mode. Search exposes current descriptions and value hints. Diagnostic variables and ambient status are not ordinary saved gameplay settings.
Variables, configs and the cvar browser
This document explains how variables work in Q2PRO-X, what scopes they have, how settings are saved, and how the built-in cvar browser is used.
1. What a variable is
A variable (cvar) is a named engine setting you can:
Examples: sensitivity, vid_driver, cl_vis_enable, cl_avfx, cl_it.
Most Q2PRO-X user variables have a clear scope, so a setting is saved where it belongs.
2. The four places settings are saved
2.1. Global settings
baseq2\q2pro-x\q2pro-x.cfg
These are the things that are normally the same everywhere:
In the menu such rows carry the (G) badge.
2.2. Local settings of the base game
baseq2\q2pro-x\q2pro-x.local.cfg
This holds the client's local settings while the base game is active: the visual layer, the highlights, the colours, a large part of the render profile, and the local binds.
2.3. Mod-dependent settings
<mod folder>\q2pro-x\q2pro-x.cfg
The same local settings while a mod is active. That is how one visual profile can differ between mods. In the menu such rows carry the (M) badge.
2.4. The demo visual profile
baseq2\q2pro-x\demo_visual\q2pro-x.demo.cfg
While .dm2 and .mvd2 recordings are being watched, the local visual settings are written into one shared profile instead of the mod folder. That is what makes recordings from different mods look the same.
| A simple rule. Mouse, sound, voice, network and interface are global. A mod's visuals, highlights and appearance are local. Those same visual settings while watching a recording go into the demo profile. |
|---|
3. Why the release ships no ready-made user config
The release package does not place a user q2pro-x.cfg in baseq2. That is deliberate:
If the file is absent, Q2PRO-X starts from its built-in defaults and creates its own files when settings are saved.
4. Schema migration
The internal marker cl_q2prox_cfg_version records which settings schema has already been applied to your profile.
| Variable | Accepted values | Description |
|---|---|---|
| cl_q2prox_cfg_version | internal schema marker (0=pre-1.2 / 1.2=onboarding / 1.5=startup menu / 1.51=exact fullscreen default / 1.52=safe GLOBAL migration / 1.53=complete GL coverage) | Internal Q2PRO-X GLOBAL config schema marker, read from the physical baseq2/q2pro-x/q2pro-x.cfg rather than from the live cvar so a legacy config cannot spoof completion. Tracks which version-gated migrations were applied exactly once. Missing/0 receives the 1.2 onboarding preset; 1.5 enables the idle-start main menu; 1.51 migrates the former serialized desktop-fullscreen automatic margin to the new exact-size default; 1.52 completes safe add-only GLOBAL ownership migration; 1.53 extends the audited GL coverage to previously omitted user preferences such as gl_bloom_sigma. Existing records always win. The marker advances only after the GLOBAL target has been written and validated, and a newer marker from a future build is never downgraded. Not a user preference and not exposed in the config menu. |
If the marker is absent or older than the current one, the engine applies only the safe recommended settings and writes the new marker. The migration does not repeat on the next launch.
| This is not a full reset. Your sensitivity, sound, voice, mouse, zoom and other settings are not reset. |
|---|
Migration from legacy configs is strictly add-only: it adds missing supported values and never overwrites settings and binds that are already stored. The stock game configs remain immutable input sources.
5. Save and reset commands
| Command | What it does |
|---|---|
| q2prox_cfg_save | Save the global and the local profiles |
| q2prox_cfg_save_global | Save the global profile only |
| q2prox_cfg_save_local | Save the local profile — or, while a recording is playing, the demo profile |
| q2prox_cfg_save_demo_visual | Save the demo profile explicitly |
| q2prox_cfg_defaults | Reset every Q2PRO-X setting |
| q2prox_cfg_defaults_global | Reset the global scope only |
| q2prox_cfg_defaults_local | Reset the local scope; during playback, only the demo visual variables, with binds preserved |
| q2prox_cfg_defaults_demo_visual | Reset the demo visual variables only |
5.1. Autosave
| Variable | Accepted values | Description |
|---|---|---|
| cl_q2prox_cfg_autosave | 0=no autosave / 1=autosave on every change (default) | Autosave Q2PRO-X config on menu / console changes. When on, any adjustment that flips a CVAR_Q2PROXCFG_GLOBAL or CVAR_Q2PROXCFG_LOCAL cvar is written after a 500 ms debounce to the correct target. Post-2026-04-25 storage split: GLOBAL cvars go to baseq2/q2pro-x/q2pro-x.cfg (GLOBAL-only now); LOCAL cvars go to <gamedir>/q2pro-x/q2pro-x.cfg when a mod is active, to baseq2/q2pro-x/q2pro-x.local.cfg when fs_game is empty, or to baseq2/q2pro-x/demo_visual/q2pro-x.demo.cfg while a .dm2/.mvd2 demo is playing. Every save goes through the atomic pipeline: write to .tmp, validate, rotate backups under backups/ (.bak/.bak.2/.bak.3), replace. Automatic writes additionally reject candidates that look like mass-reset / mass-bind-loss stamps (rejected candidates are kept under rejected/ as *.rejected-<ts> for diagnosis); explicit q2prox_cfg_defaults_* commands bypass that guard. |
5.2. Full config write
| Variable | Accepted values | Description |
|---|---|---|
| cl_writeconfig_full | 0=bindings + archived cvars (default) / 1=same as -b -m -a (bindings + aliases + all modified cvars) | Controls what a bare writeconfig <filename> writes when you give it no content flags. 0 (default) keeps the historical meaning: key bindings plus archived cvars. 1 makes the flagless form save everything the explicit -b -m -a form saves — all key bindings, all your command aliases, and every eligible cvar whose current (or latched) value differs from its default, including Q2PRO-X global (G) and mod-local (M) settings. Explicit flags are never touched: if you type -a, -b, -c or -m yourself, exactly that selection is written and this setting is ignored; -h still only prints help. The destination stays configs/<filename>.cfg and the config-readonly barrier still applies first. Note this is a manual legacy-style CFG export and NOT a replacement for Q2PRO-X global/local preset saving, which has its own storage. Saved to the global Q2PRO-X config, shared across all mods. |
Explicit flags on the config-write command always take priority over this setting.
5.3. Why not to clean configs by hand
Q2PRO-X does not overwrite existing values with a mass reset on an ordinary start. If something looks wrong, first:
1. open the corresponding menu page;
2. check the value in the cvar reference;
3. use a scope-specific reset instead of deleting the whole directory.
Deleting the configs completely is only justified when you genuinely want to start from a clean profile.
6. The cvar browser
The cvar browser is the built-in window for searching, describing and editing settings.
It opens in three ways:
6.1. The browser's own settings
Menu path: Main menu → Help / About Q2PRO-X → Cvar Browser
Cvar Browser
| Type | Section | Row | Variable or target | What it does |
|---|---|---|---|---|
| Slider | Opacity | cl_cvar_browser_alpha | Opacity of the cvar browser overlay background. Applies immediately. | |
| Slider | Text scale | cl_cvar_browser_scale | Font / UI scale of the cvar browser overlay; 1.0 default. Applies immediately. | |
| Toggle | Remember last tab | cl_cvar_browser_remember_tab | Restore the last opened tab of the cvar browser on the next session. Applies immediately. | |
| Navigation | Open cvar browser... | cvar_help | Open the modern cvar reference browser overlay. | |
| Key | Toggle key | cvar_browser_toggle | Bind a key that opens/closes the cvar browser overlay. |
6.2. Tabs
| Tab | What it shows |
|---|---|
| All | Every variable |
| Favorites | Your personal list of frequently used ones |
| Commands | The registered console commands |
| Demo | Everything relating to recordings |
| Visual | Video, renderer, effects |
| Audio | The sound subsystem and the volumes |
| Input | Mouse, keyboard, zoom |
| Network | Network settings and tools |
| Gameplay | Game settings |
| HUD/UI | The interface and the on-screen elements |
| Server | Server settings |
| System | System settings |
| Debug | Diagnostic variables, kept apart from user settings |
The Debug tab exists precisely so diagnostics never mix with ordinary settings and never end up in a config by accident.
6.3. What the window can do
6.4. Favourites
Favourites is a local list of frequently used variables. Its state is kept in a separate file:
baseq2\q2pro-x\cvar_browser_state.txt
Useful candidates for it: vid_driver, sensitivity, cl_zoom_fov, cl_vis_enable, cl_avfx, cl_it, cl_network_god_mode.
6.5. The Commands tab
The Commands tab is a fast way to find and run an action: open a menu page, execute a command, open an overlay or run a helper command. When a command needs input, the window opens the console over itself and then returns to its previous state.
6.6. Search
Search works on more than the name. It also searches descriptions, categories and command metadata, and it supports Cyrillic input in the Russian interface.
Practical queries:
| Query | What it finds |
|---|---|
| demo | Everything about recordings |
| voice | Voice chat |
| mouse, zoom | Controls |
| avfx | The visual layer |
| timer | Item timers |
| port | Network tools |
7. The browser's language and appearance
The browser follows the general interface localization mode. The old separate browser-language variable is kept for compatibility only and no longer has any effect:
| Variable | Accepted values | Description |
|---|---|---|
| cl_cvar_browser_lang | (legacy, no effect; see cl_console_utf8_ru) | LEGACY. The cvar browser now follows the unified Russian display-localization mode (cl_console_utf8_ru) so Russian mode -> Russian UI, English mode -> English UI coherently across console, menu hints, voice picker, and the cvar browser. This cvar is still registered so existing user configs don't error, but its value is no longer read. Use cl_console_utf8_ru instead. |
The related appearance settings:
| Variable | Accepted values | Description |
|---|---|---|
| cl_browser_font_mode | 0=legacy / 1=Iskra Cyrillic (default) | Q2PRO-X browser/UI chrome typography. 0 = legacy 8x8 conchars + q2prox_cvar_font (cvar browser). 1 = Iskra Cyrillic Regular fixed-cell (default). Wired surfaces: server browser chrome, cvar browser cell draw (12x16), demo browser cell draw (8x8 base × user zoom), demo player overlay button/popup/timeline labels, modhelp local UI (title, search prompt, badges, scroll arrows, Cancel/Execute/Confirm). Cell stride is preserved per surface so selection / copy / column math / hitboxes are unchanged. Untrusted/raw byte streams stay on the legacy raw-byte path on every surface — server names, demo filenames, demo-recorded player names, configstring-derived chat etc. are intentionally NOT routed through Iskra. If the Iskra atlas fails to register, every wired surface falls back to its legacy renderer; failure is logged once. |
| cl_cvar_browser_alpha | 0..1 (default 0.92) | Opacity of the in-game Cvar Reference Overlay window background. Independent from scr_alpha: the browser keeps its own background opacity policy. When OLED UI breathing is enabled, the final alpha is modulated only by SCR_OledGetUiAlpha(). |
| cl_cvar_browser_scale | 0.1..4.0 (default 1.0) | Browser-local text and chrome scale multiplier for the in-game Cvar Reference Overlay. Controls browser readability independently from scr_scale: higher values make the browser font, row heights, header/search bar, and text-driven button chrome larger, without scaling the whole window as one widget. |
| cl_cvar_browser_remember_tab | 0=always start on All / 1=restore last tab (default) | Restore the last opened cvar browser tab (All / Favorites / Demo / Visual / Audio / Input / Network / Gameplay / HUD/UI / Server / System) on next session. When off, the browser always starts on All. The current tab is recorded in cl_cvar_browser_last_tab whenever you switch tabs. |
| cl_cvar_browser_last_tab | all / favorites / demo / visual / audio / input / network / gameplay / ui / server / system (default "all") | Internal archived cvar that holds the last opened cvar browser tab as a stable string name ("all", "favorites", "demo", "visual", "audio", "input", "network", "gameplay", "ui", "server", "system"). Read on browser open when cl_cvar_browser_remember_tab is on, written on every tab switch. Unknown stored values fall back to "all". |
8. Short recipes
Save everything before quitting
q2prox_cfg_save
Reset the demo visuals only
q2prox_cfg_defaults_demo_visual
q2prox_cfg_save_demo_visual
Find every demo variable
Open the browser and go to the Demo tab, or type demo into the search box.
Work out why a value is not saved
1. Make sure autosave is enabled.
2. Check that you are not changing a diagnostic variable: those act for the current session only and are never written to a config.
3. Check the scope: global, local or the demo profile.
4. Run an explicit save for that scope.
9. The printed reference
The complete printed list of every variable, with descriptions and accepted values, is in a separate document — the cvar and command reference. It is generated from the same description tables as the in-game window, so the two cannot disagree.
Command and menu help in Beta 5
All client variables and console commands have Russian and English help. Entering a variable name shows its value, description and accepted values. Entering a command without arguments prints its description and syntax below the input line; the command still executes normally. Commands from binds and configuration files do not print hints. Menu-button and key-binding technical hints explain what a command does rather than merely naming it.
The Commands tab adds groups for visual effects and presets; gameplay, HUD and timers; music and voice; network tools; menus, browsers and editors; local server and play; and commands for the separate OpenTDM-X mod. The current browser catalogue contains 519 commands: 78 previous and 441 added. Each has a description, syntax and an indication of its effects. Selecting one only inserts it into the console; it does not execute it. Internal commands are hidden from the browser but retain console and menu help. OpenTDM-X help does not mean the mod or a bot menu is included in the public client.