All guides   ·   Download DOCX

Q2PRO-X 1.6 Final by ly

Finding settings

Q2PRO-X document image

Project author: ly

Using the variable and command browser.

English edition • Q2PRO-X 1.6 Final by ly • November 7, 2026


Contents

The entries are links: click one to jump to that section.

Variables, configs and the cvar browser

Settings and command help

1. What a variable is

2. The four places settings are saved

2.1. Global settings

2.2. Local settings of the base game

2.3. Mod-dependent settings

2.4. The demo visual profile

3. Why the release ships no ready-made user config

4. Schema migration

5. Save and reset commands

5.1. Autosave

5.2. Full config write

5.3. Why not to clean configs by hand

6. The cvar browser

6.1. The browser's own settings

6.2. Tabs

6.3. What the window can do

6.4. Favourites

6.5. The Commands tab

6.6. Search

7. The browser's language and appearance

8. Short recipes

Save everything before quitting

Reset the demo visuals only

Find every demo variable

Work out why a value is not saved

9. The printed reference

Command catalog

Translator variables

Appearance of specific players

Lighting preset names

Cvar Browser: complete lists and keyboard layouts

System-key behavior

Server address and Tab

External demo playback

Personal menus

Server update rate

Outgoing command rate

Interface language


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.


Settings and command help

The reference includes health ambience, model-part and item highlights, sound-volume groups and window modes, with descriptions and allowed values in both languages. Diagnostic variables and status values are separate from saved gameplay settings.



1. What a variable is

A variable (cvar) is a named engine setting you can:

read in the console;
change in the console;
change in the menu;
save to a settings file;
use as state for the interface and for runtime logic.

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:

the menu and the interface;
language and typography;
mouse and zoom;
the video backend;
voice chat;
the server browser;
the general demo browser and player settings;
the cvar reference;
the network tools.

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 package contains no personal q2pro-x.cfg, so installing an update preserves your settings and does not import someone else's profile. A fresh installation creates its own configuration when you save settings.

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.

VariableAccepted valuesDescription
cl_q2prox_cfg_versioninternal 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

CommandWhat it does
q2prox_cfg_saveSave the global and the local profiles
q2prox_cfg_save_globalSave the global profile only
q2prox_cfg_save_localSave the local profile — or, while a recording is playing, the demo profile
q2prox_cfg_save_demo_visualSave the demo profile explicitly
q2prox_cfg_defaultsReset every Q2PRO-X setting
q2prox_cfg_defaults_globalReset the global scope only
q2prox_cfg_defaults_localReset the local scope; during playback, only the demo visual variables, with binds preserved
q2prox_cfg_defaults_demo_visualReset the demo visual variables only

5.1. Autosave

VariableAccepted valuesDescription
cl_q2prox_cfg_autosave0=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

VariableAccepted valuesDescription
cl_writeconfig_full0=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.

Delete your configuration files only if you intend to discard the saved settings and start from defaults.



6. The cvar browser

The cvar browser is the built-in window for searching, describing and editing settings.

It opens in three ways:

from the Open the cvar reference… row in the help menu;
from the toggle key you assign;
with the cvar_help console command.

6.1. The browser's own settings

Menu path: Main menu → Help / About Q2PRO-X → Cvar Browser

Cvar Browser

TypeSectionRowVariable or targetWhat it does
SliderOpacitycl_cvar_browser_alphaOpacity of the cvar browser overlay background. Applies immediately.
SliderText scalecl_cvar_browser_scaleFont / UI scale of the cvar browser overlay; 1.0 default. Applies immediately.
ToggleRemember last tabcl_cvar_browser_remember_tabRestore the last opened tab of the cvar browser on the next session. Applies immediately.
NavigationOpen cvar browser...cvar_helpOpen the modern cvar reference browser overlay.
KeyToggle keycvar_browser_toggleBind a key that opens/closes the cvar browser overlay.

6.2. Tabs

TabWhat it shows
AllEvery variable
FavoritesYour personal list of frequently used ones
CommandsThe registered console commands
DemoEverything relating to recordings
VisualVideo, renderer, effects
AudioThe sound subsystem and the volumes
InputMouse, keyboard, zoom
NetworkNetwork settings and tools
GameplayGame settings
HUD/UIThe interface and the on-screen elements
ServerServer settings
SystemSystem settings
DebugDiagnostic 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

search by name, by description and by accepted values;
Russian or English text following the interface language;
a column with the current live value;
a detail pane with the description and the accepted values;
mouse selection and copying;
resetting a value to its default;
a favourites list;
resizing, dragging and a fullscreen mode;
remembering the last tab.

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:

QueryWhat it finds
demoEverything about recordings
voiceVoice chat
mouse, zoomControls
avfxThe visual layer
timerItem timers
portNetwork 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:

VariableAccepted valuesDescription
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:

VariableAccepted valuesDescription
cl_browser_font_mode0=legacy / 1=Iskra Cyrillic (default)Font for server, cvar and demo browser controls, the demo player panel and mod help. 0 uses the classic pixel font; 1 (default) uses Iskra Cyrillic. Server names, demo filenames and player names retain their original character handling. Falls back to the classic font if needed.
cl_cvar_browser_alpha0..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_scale0.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_tab0=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_taball / 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 uses the same descriptions as the in-game reference.

Command catalog

The Commands tab includes visual effects and presets, game/HUD/timers, music and voice, networking and server browser, menus and editors, local server and gameplay. Entries have descriptions, usage and risk labels. Selecting one only inserts it into the console. Internal commands stay out of the list but retain console help.

Translator variables

The Cvar Browser and console help include cl_console_translate_auto, cl_console_translate_source, cl_console_translate_alpha, cl_console_translate_scale, cl_console_translate_fullscreen and cl_console_translate_hotkey. console_translate_toggle is present in the command catalog. All descriptions are bilingual.

Appearance of specific players

Open Skins & models → Player nickname overrides. Eight slots are arranged in two rows of four. Rules operate simultaneously, persist globally across mods, and apply both in live games and demo playback.

Open a slot to edit its fields:

SettingPurpose
Preset nameOptional label used to identify this slot.
NicknamesOne or more complete nicknames separated by commas, for example tet, Domik_v_derevne. Matching ignores case and trims spaces around each list entry.
RuleEnable or temporarily disable the rule without losing its settings.
ModelAn installed model, or Inherit to keep the ordinary model selection.
SkinA skin belonging to the selected model. No independent skin replacement is applied when the model is inherited.
ColourA named highlight colour, or Inherit highlights to retain ordinary colour rules.
SaveApply edits. At least one nickname is required.
Clear presetRemove the slot settings and stop applying its rule.
CancelClose the editor without applying edits.

For example, enter tet, Domik_v_derevne, select male and claymore, choose a named colour, then Save. Only those complete nicknames receive the selected appearance, regardless of letter case.

Nickname matching is exact, not a substring or pattern search. If lists overlap, the first enabled matching slot wins; later slots are not combined with it. Renaming a player changes the match. This is local client presentation: the server and other players do not receive appearance changes from your rule.

A named model takes precedence over general model overrides. Its attached weapon model and local sexed sounds follow the same selection. Missing model/skin files retain the existing fallback; the independent named colour still works.

An explicit named colour replaces general team, model and body-part highlights for matching players. It also works with general player highlighting disabled. Inherit highlights retains the ordinary colour policy. Clearing a slot returns its players to the existing model and highlight rules.

Lighting preset names

Presets → Lighting presets contains Super Bright followed by Bright, with different sets of 38 lighting parameters. Selecting a preset applies its values; the existence of a factory preset does not change your current settings or user slots.

The console identifiers retain their original mapping: cl_lighting_preset_load_factory bright selects Super Bright; cl_lighting_preset_load_factory super_bright selects Bright.

Cvar Browser: complete lists and keyboard layouts

Open the browser with cvar_browser or its settings menu entry. All includes variables, native console commands and quick menu commands. Commands remains a separate view. Selecting a native command prefills the console; press Enter to execute. Category tabs and Favorites retain their filters.

Search checks the original text and English key positions for installed Windows keyboard layouts. Standard Russian is also supported for pasted text after a layout switch. For example, цкшеу finds writeconfig and пд_сщдщкувдшпреьфзы finds gl_coloredlightmaps. Matching is case-insensitive. The original text is kept in the search field. This maps keyboard positions; it does not transliterate words.

Russian search still works: Конф finds /конфиг and matching descriptions. Mixed input such as cl_avfx_сщтефсе_вуигп is supported. Unknown characters are not removed from the query.

System-key behavior

Open Settings → System → System key behavior, immediately after Menu settings. Settings are global across mods; all default to No and take effect immediately.

Menu itemVariableWhat Yes blocks
Win and Win combinationswin_block_windows_keyWindows keys and their combinations
Alt+Tabwin_block_alt_tabWindow switching
Alt+Escwin_block_alt_escCycling windows with Alt+Esc
Alt+F4win_block_alt_f4Closing the window with Alt+F4
Alt+Enterwin_block_alt_enterWindowed/fullscreen switching
Alt+Spacewin_block_alt_spaceThe window system menu
Ctrl+Escwin_block_ctrl_escOpening Start
Ctrl+Shift+Escwin_block_ctrl_shift_escOpening Task Manager with the shortcut
Print Screenwin_block_printscreenPrint Screen key handling

Blocking applies only while the game window is active, with either WGL or EGL. Other foreground applications keep their keyboard behavior. Ctrl+Alt+Delete is not intercepted. If Alt+F4 is blocked, the normal game menu can still be used to quit.

Server address and Tab

Type or paste only an address into an empty console prompt and press Tab.

InputResult
q2.playground.ruconnect q2.playground.ru:27910
q2.playground.ru:27915connect q2.playground.ru:27915
157.22.241.24connect 157.22.241.24:27910
[::1]:27915connect [::1]:27915

A leading backslash may appear before connect: it is the normal console command prefix. Edit the result if needed, then press Enter. Tab itself performs no connection or DNS lookup. Ports must be 1..65535; omitted ports become 27910. Existing command, variable and alias names retain priority. Completing a command name with Tab also adds the space before its arguments.

External demo playback

Use demo with an absolute path to an existing file:

demo "O:\Demos\match.mvd2"

Quotes are needed for spaces. Far's filename-only quoting is also accepted:

demo O:\Demos\"match.mvd2"

From the Windows command line, pass the same path through +demo:

Q2PRO-X.exe +demo O:\Demos\"match.mvd2"

DM2, MVD2 and their .gz variants are supported, with Windows drive or UNC paths. The file is opened read-only and is not copied into the game directory. Required maps, models and other game resources must be available to the installed game. Missing or invalid files produce a console error.

Personal menus

Settings → Menu settings enables temporary Edit My menus mode. Click + or press Insert to add a factory row to a personal section. Settings → My menus lists sections; editing supports creation, renaming, ordering, deletion, parent pages, insertion before selected items and shared categories. Variable/command search uses RU/EN descriptions and wrong-layout matching. Choose the control, range, step and Auto/Immediately/On leaving application. Auto follows the factory control. Factory menus remain separate from personal_menus.dat. See Personal Menus Guide.

Server update rate

Open Settings → Online game settings → Server update rate. This controls how frequently the client receives the world state, not rendering FPS. Higher server update rates deliver opponent positions and events more frequently. Game speed, movement physics and weapon firing rates remain unchanged.

Adapt to server rate (cl_serverfps_adapt) defaults to off: the client requests the classic 10 world updates per second. Enabling it allows negotiation of a higher rate and an exact time scale with compatible servers that support higher update rates. Ordinary servers retain their previous mode. Changing the setting during play sends a new request without reconnecting.

Preferred rate (cl_updaterate) defaults to Server maximum (0). The other choices are 10, 20, 30, 40, 50 and 60. Servers supply divisors of their own rate: requesting 40 on a 60 Hz server yields 20 Hz; requesting 50 yields 10 Hz. With adaptation disabled, the saved preference is ignored but preserved. Both settings are global across mods.

Show connection state opens the console and runs protocol_info. Startup reports the saved client mode. Toggling adaptation immediately reports the client preference, followed by the actual connection rate after the server reply. A requested frequency is not reported as established before acknowledgement.

After connecting, the console prints one line with the endpoint and actual rate: [188.225.33.164:27912] Connection rate: 60 Hz. A standard connection shows 10 Hz. A requested higher rate is not considered active before server acknowledgement. Detailed information remains available through protocol_info; additional notices explain pending or unconfirmed changes. Startup and setting changes explicitly report whether support for server rates above 10 Hz is enabled or disabled.

Network God, LagHax, the port scanner and view smoothing use the negotiated time scale. Demo recordings retain the standard 10 Hz format and normal playback speed. Network God remains inactive during DM2 and MVD2 playback.

An unsupported server-assigned rate triggers a request for 10 Hz and holds world time until confirmation. No reply within two seconds ends the connection with an explanation. If an ordinary preference change is ignored, the console reports that the requested connection-rate change was not confirmed.

cl_serverfps_debug enables detailed negotiation diagnostics at 1 and disables them at 0. It is session-only and defaults to off. Normal mode and connection summaries do not require this diagnostic setting.

Outgoing command rate

Search includes cl_serverfps_send_adapt (“Adapt command sending”, global, default 1), cl_serverfps_adapt and cl_updaterate. The new option only operates with the adaptation master enabled and an acknowledged rate above 10 Hz. cl_maxpackets retains the saved manual cap. The protocol_info command shows saved and effective caps, timing source and actual rate. Current descriptions and allowed values are available in English and Russian.

Interface language

Choose Auto, English or Russian. Automatic language selection can be overridden. Menu language has a separate setting: inherit the general language or select one explicitly.