Q2PRO-X 1.6 Final by ly
Finding settings
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
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
Appearance of specific players
Cvar Browser: complete lists and keyboard layouts
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:
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 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.
| 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.
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:
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) | 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_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 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:
| Setting | Purpose |
|---|---|
| Preset name | Optional label used to identify this slot. |
| Nicknames | One or more complete nicknames separated by commas, for example tet, Domik_v_derevne. Matching ignores case and trims spaces around each list entry. |
| Rule | Enable or temporarily disable the rule without losing its settings. |
| Model | An installed model, or Inherit to keep the ordinary model selection. |
| Skin | A skin belonging to the selected model. No independent skin replacement is applied when the model is inherited. |
| Colour | A named highlight colour, or Inherit highlights to retain ordinary colour rules. |
| Save | Apply edits. At least one nickname is required. |
| Clear preset | Remove the slot settings and stop applying its rule. |
| Cancel | Close 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 item | Variable | What Yes blocks |
|---|---|---|
| Win and Win combinations | win_block_windows_key | Windows keys and their combinations |
| Alt+Tab | win_block_alt_tab | Window switching |
| Alt+Esc | win_block_alt_esc | Cycling windows with Alt+Esc |
| Alt+F4 | win_block_alt_f4 | Closing the window with Alt+F4 |
| Alt+Enter | win_block_alt_enter | Windowed/fullscreen switching |
| Alt+Space | win_block_alt_space | The window system menu |
| Ctrl+Esc | win_block_ctrl_esc | Opening Start |
| Ctrl+Shift+Esc | win_block_ctrl_shift_esc | Opening Task Manager with the shortcut |
| Print Screen | win_block_printscreen | Print 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.
| Input | Result |
|---|---|
| q2.playground.ru | connect q2.playground.ru:27910 |
| q2.playground.ru:27915 | connect q2.playground.ru:27915 |
| 157.22.241.24 | connect 157.22.241.24:27910 |
| [::1]:27915 | connect [::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.