Q2PRO-X 1.6 Beta 5 by ly — Q2PRO-X 1.6 Beta 5 Cvar and Command Reference
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 Cvar and Command Reference
Project author: ly
Every Q2PRO-X console variable with its description and accepted values
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.
1. A map of the setting groups
1.1. Renderer, display and HDR
1.2. Post-processing and image style
1.3. AVFX: weather, sky, surfaces
1.4. AVFX presets and the generator
1.5. Highlights and visibility
1.6. Network, prediction and connection diagnostics
1.7. Item timers and statistics
3. The complete variable reference
Complete client command reference
Beta 3 reference
The following tables are generated from current menus and build metadata, including Surface Objects, category Bloom, Lighting/Visibility presets and player-state ambient. MAPGEN controls are excluded from this public client release.
How to read this reference
This is not a replacement for the cvar reference inside the client; it is its printed copy plus a map of the groups. If you know the name of a group, open this document; if you need to find an exact variable by a word, open the cvar reference in the game itself — it searches both names and descriptions.
Everything below is generated from the release's own variable description tables. It is literally the same text the client shows in the cvar browser and in the built-in console help, so the document and the game cannot disagree.
| What if a variable is not here. This reference covers variables that carry a built-in description. The complete list of every registered client variable is always available in the in-game cvar reference. |
|---|
How to change a value
The scope, and the file a value ends up in, are explained in the cvars and cvar browser guide.
1. A map of the setting groups
This map helps you know where to look when you only know the topic.
1.1. Renderer, display and HDR
| Group | What to look for | What it governs |
|---|---|---|
| Backend and display | vid_driver, display mode, resolution, render scale | WGL/EGL, window or fullscreen, the output path |
| HDR renderer | gl_hdr, the scene format, tone mapping | The internal HDR renderer and its tone mapping |
| HDR output | gl_hdr_output, the output mode, peak nits, paper white | True HDR output to the monitor |
| EGL cap | gl_hdr_egl_app_white_max | win32egl only: protects detail from being blown out |
| HDR diagnostics | gl_hdr_info | Prints backend capabilities and state |
| Screenshots | The screenshot commands, including the JPEG and HDR formats | The SDR, JPG and HDR capture paths |
1.2. Post-processing and image style
| Group | What to look for |
|---|---|
| Bloom and sharpening | gl_bloom, gl_sharpen, and their thresholds and intensities |
| Tone mapping and exposure | HDR tone mapping and exposure |
| Style modes | Pixel, CRT, Film, VHS and their parameters |
| Reset and comparison | The enable switches and the reset commands |
1.3. AVFX: weather, sky, surfaces
| Group | What to look for |
|---|---|
| Master and quality | cl_avfx, quality, the distance LOD, multiplayer and demo modes |
| Rain and storm | Density, speed, wind, splashes, lightning |
| Snow | Density, accumulation, coverage, surface style, wall smear |
| Water and puddles | Puddle density, runoff, foam, distortion, reflections |
| Sky and celestials | Real sky, Sun, Moon, Earth, stars, planets, rays, clouds, fog |
| Surface materials | Mold, brick, cracks, greenery, coverings, grass, wildlife |
| Performance | The distance LOD, particle budgets, effect density |
| Diagnostics | cl_avfx_info |
1.4. AVFX presets and the generator
| Group | What to look for |
|---|---|
| Shipped presets | The AVFX preset menu and the quick commands |
| Custom slots | Loading and saving custom sets, and their names |
| Generator | The cl_avfxgen_* selectors and the generation command |
1.5. Highlights and visibility
| Group | What to look for |
|---|---|
| Items | Per-type toggles, shell and tint, opacity, scale |
| Weapons | Per-weapon colours, pickup scale, the carried-weapon colour source |
| Players | cl_vis_players_mode, team, duel, random, model, model parts |
| Model parts | Head, arms, torso, legs, weapon, opacity, fullbright |
| Body zones | The zone boundaries and the softness of the transition |
| Diagnostics | cl_vis_items_info |
1.6. Network, prediction and connection diagnostics
| Group | What to look for |
|---|---|
| Network God | cl_network_god_*: mode, policy, overview, HUD, permissions, traffic |
| Shield, Guardian, Lab | The jitter shield, disconnect recovery, synthetic impairment |
| Ping Adaptation | cl_ping_adapt_* |
| LagHax | cl_laghax* |
| Prediction | Player prediction and weapon prediction |
| Server browser | Sources, favourites, refresh |
1.7. Item timers and statistics
| Group | What to look for |
|---|---|
| Live timers | cl_it*: the master switch, the HUD, sound, intervals, instances |
| Demo timers | The demo player's timer settings |
| Game statistics | cl_game_stats_*: collection, the period, the window and its appearance |
| Statistics in the intro | cl_game_stats_intro* |
1.8. Intro, menu and console
| Group | What to look for |
|---|---|
| Startup intro | cl_q2prox_startup_intro, the logo light and lightning |
| Menu | Profile, style, font, scale, opacity, hints, badges |
| Console | Scale, opacity, font, input behaviour |
| Configs | Saving, resetting, autosave, mod scanning |
1.9. Sound, music and voice
| Group | What to look for |
|---|---|
| Sound engine | Backend choice, sample rate, format, resampler |
| Spatial audio | HRTF, the binaural layer, reverb, doppler, the distance model |
| Volumes | Overall, weapons, players, events, AVFX sounds |
| Online music | Search, playback, the overlay, autoplay |
| Voice chat | Room, autojoin, transmission mode, device, gain |
1.10. Single player and mods
| Group | What to look for |
|---|---|
| Random items and monsters | cl_sp_mutate_*, modes, categories, the seed |
| DM map training | Count, respawn, score, HUD |
| Geometry deformation | cl_sp_geo_deform and its parameters |
| Liquid swap | Water to lava and back, the visuals and the contacts |
| Monster variants | Scale, tint, asymmetry |
| Mods | cl_q2prox_modscan, the local list, the bridge for 32-bit mods |
2. Quick commands
This section is generated from the release quick-command table ru_input.c. Every row is a real command you can type in the console or on the chat line. Commands: 146.
AVFX and weather
| Command | Russian alias | Title | Type | Executes | Description |
|---|---|---|---|---|---|
| /avfx | /avfx | AVFX | Menu | pushmenu q2prox_avfx | Open the main Advanced Visual Effects menu. |
| /avfxp | /пресеты | AVFX presets | Menu | pushmenu q2prox_avfx_presets | Open AVFX preset packs for rain, storm and snow quality modes. |
| /rain | /дождь | Rain | Menu | pushmenu q2prox_avfx_rain | Open rain settings: close raindrops, rain ripples on water, hard-surface splashes, rain-on-eyes wet lens. |
| /water | /вода | Water | Menu | pushmenu q2prox_avfx_water | Open water surface settings: enhanced water, quality, color, ripples, foam, celestial response. |
| /puddles | /лужи | Puddles | Menu | pushmenu q2prox_avfx_puddles | Open puddle settings: life cycle, rings, runoff, dust, water contact, step splashes, specular. |
| /snow | /снег | Snow | Menu | pushmenu q2prox_avfx_snow | Open general snow settings. |
| /snowflakes | /снежинки | Snowflakes | Menu | pushmenu q2prox_avfx_snowflakes | Open snowflake density, 3D flakes, shape, size and tumble settings. |
| /snowcover | /покров | Snow cover | Menu | pushmenu q2prox_avfx_snow_cover | Open accumulation, snowdrift, footprint and soft-edge settings. |
| /sky | /небо | Sky & clouds | Menu | pushmenu q2prox_avfx_storm_sky | Open weather sky, cloud overlay and fog settings. |
| /storm | /гроза | Storm | Menu | pushmenu q2prox_avfx_storm_settings | Open thunderstorm, lightning, surface arcs, water reactions, monster wraps, and lightning damage settings. |
| /avfxs | /звукиavfx | AVFX sounds | Menu | pushmenu q2prox_avfxvol | Open AVFX sound volume layers: ambience, rain, snow, water, steam, thunder, meteor and surface-step sounds. |
| /steam | /пар | Steam / other effects | Menu | pushmenu q2prox_avfx_other | Open visual steam, ash ember lights and other AVFX effects. |
| /avfxr | /сбросavfx | AVFX runtime reset | Command | avfx_reset | Clear already generated AVFX runtime state: puddles, snow fields, particles and transient marks. |
| /avfxi | /инфоavfx | AVFX diagnostics | Command | cl_avfx_info | Print current AVFX state, renderer gates and diagnostic counters to the console. |
| /basicpresets | /базовыепресеты | Basic presets | Menu | pushmenu q2prox_avfx_presets_basic | Open the basic AVFX preset folder. |
| /spacepresets | /космос | Space presets | Menu | pushmenu q2prox_avfx_presets_space | Open the space-themed AVFX preset folder. |
| /miscpresets | /разныепресеты | Misc presets | Menu | pushmenu q2prox_avfx_presets_misc | Open the miscellaneous AVFX preset folder. |
| /musicpresets | /музыкальные | Music presets | Menu | pushmenu q2prox_avfx_presets_music | Open the music-themed AVFX preset folder. |
| /extrapresets | /экстра | Extra presets | Menu | pushmenu q2prox_avfx_presets_extra | Open the extra AVFX preset folder. |
| /canrunpresets | /тестпк | Can-run presets | Menu | pushmenu q2prox_avfx_presets_can_run | Open presets tuned to test what your PC can run. |
| /hdrpresets | /хдрпресеты | HDR presets | Menu | pushmenu q2prox_avfx_presets_hdr | Open AVFX presets tuned for HDR rendering. |
| /custompresets | /пользовательские | Custom presets | Menu | pushmenu q2prox_avfx_presets_custom | Open your saved custom AVFX presets. |
| /avfxdetails | /деталиavfx | AVFX details | Menu | pushmenu q2prox_avfx_details | Open the detailed AVFX tuning menu. |
| /avfxenhanced | /расширенныеavfx | Enhanced AVFX | Menu | pushmenu q2prox_avfx_enhanced | Open enhanced AVFX effect settings. |
| /ashdustmist | /пепел | Ash, dust, mist | Menu | pushmenu q2prox_avfx_ash_dust_mist | Open ash, dust and mist air-effect settings. |
| /weaponimpacts | /попаданияоружия | Weapon impacts | Menu | pushmenu q2prox_avfx_weapon_impacts | Open weapon impact effect settings. |
| /snowimpacts | /попаданиявснег | Weapon snow impacts | Menu | pushmenu q2prox_avfx_weapon_snow_impacts | Open weapon-on-snow impact settings. |
| /lightning | /молния | Lightning | Menu | pushmenu q2prox_avfx_lightning_settings | Open lightning and thunderstorm settings. |
| /discharges | /разряды | Lightning discharges | Menu | pushmenu q2prox_avfx_lightning_discharges | Open surface arc and discharge settings. |
| /watersurface | /поверхностьводы | Water surface | Menu | pushmenu q2prox_avfx_water_realistic_surface | Open realistic water surface settings. |
| /realwater | /реалвода | Realistic water | Menu | pushmenu q2prox_avfx_water_realistic_reflect | Open realistic water reflection settings. |
| /watercolor | /цветводы | Water color & depth | Menu | pushmenu q2prox_avfx_water_color_depth | Open water color and depth settings. |
| /waterfoam | /пенаводы | Water foam & shore | Menu | pushmenu q2prox_avfx_water_foam_shore | Open water foam and shoreline settings. |
| /waterreflections | /отраженияводы | Water reflections | Menu | pushmenu q2prox_avfx_water_reflections | Open water reflection settings. |
| /puddledetail | /деталилуж | Puddle detail | Menu | pushmenu q2prox_avfx_puddle_detail | Open detailed puddle settings. |
| /puddlereflections | /отражениялуж | Puddle reflections | Menu | pushmenu q2prox_avfx_puddle_reflections | Open puddle reflection settings. |
| /fractalsnow | /снежинкиформа | Fractal snowflakes | Menu | pushmenu q2prox_avfx_snowflakes_fractal | Open fractal snowflake shape settings. |
| /snowshape | /краяснега | Snow cover shape | Menu | pushmenu q2prox_avfx_snow_cover_shape | Open snow cover edge and shape settings. |
| /snowvolume | /сугробы | Snowdrifts | Menu | pushmenu q2prox_avfx_snow_cover_volume | Open snowdrift volume settings. |
| /snowlight | /светснега | Snow lighting | Menu | pushmenu q2prox_avfx_snow_cover_lighting | Open snow cover lighting settings. |
| /sun | /солнце | Sun | Menu | pushmenu q2prox_avfx_sun | Open sun disk, lighting and ray settings. |
| /sunbeams | /лучисолнца | Sun beams | Menu | pushmenu q2prox_avfx_sun_cloud_beams | Open sun cloud-beam settings. |
| /moon | /луна | Moon | Menu | pushmenu q2prox_avfx_moon | Open moon disk and moonlight settings. |
| /stars | /звёзды | Stars | Menu | pushmenu q2prox_avfx_stars | Open star field settings. |
| /earth | /земля | Earth | Menu | pushmenu q2prox_avfx_earth | Open the AVFX Earth body settings. |
| /blackhole | /чёрнаядыра | Black hole | Menu | pushmenu q2prox_avfx_blackhole | Open the AVFX Black Hole settings. |
| /surfacematerials | /материалыповерхностей | Surface materials | Menu | pushmenu q2prox_avfx_surface_materials | Open the AVFX Surface Materials settings. |
| /spaceships | /корабли | Spaceships | Menu | pushmenu q2prox_avfx_spaceships | Open the AVFX sky spaceship settings. |
| /grass | /трава | Grass | Menu | pushmenu q2prox_avfx_surface_objects | Open the AVFX surface objects (grass) settings. |
| /mirrors | /зеркала | Mirrors | Menu | pushmenu q2prox_avfx_mirror_surfaces | Open the AVFX mirror surfaces settings. |
| /starvisibility | /видимостьзвезд | Star visibility | Menu | pushmenu q2prox_avfx_stars_visibility | Open star visibility settings. |
| /starcatalog | /каталогзвезд | Star catalog | Menu | pushmenu q2prox_avfx_stars_catalog | Open the star catalog settings. |
| /starcolors | /цветазвезд | Star colors | Menu | pushmenu q2prox_avfx_stars_color | Open star color settings. |
| /skyobjects | /объектынеба | Sky objects | Menu | pushmenu q2prox_avfx_stars_objects | Open extra sky object settings. |
| /milkyway | /млечныйпуть | Milky Way | Menu | pushmenu q2prox_avfx_stars_milky_way | Open Milky Way settings. |
| /planets | /планеты | Planets | Menu | pushmenu q2prox_avfx_stars_planets | Open planet settings. |
| /constellations | /созвездия | Constellations | Menu | pushmenu q2prox_avfx_stars_constellations | Open constellation settings. |
| /meteors | /метеоры | Meteors | Menu | pushmenu q2prox_avfx_meteors | Open meteor shower settings. |
| /comets | /кометы | Comets | Menu | pushmenu q2prox_avfx_comets | Open comet settings. |
| /impactmeteors | /падающиеметеоры | Impact meteors | Menu | pushmenu q2prox_avfx_meteor_impact | Open falling/impact meteor settings. |
| /meteordamage | /уронметеоров | Meteor damage | Menu | pushmenu q2prox_avfx_meteor_impact_damage | Open meteor impact damage settings. |
| /volfog | /туман | Volumetric fog | Menu | pushmenu q2prox_avfx_volfog | Open volumetric fog settings. |
| /fogshape | /форматумана | Fog shape | Menu | pushmenu q2prox_avfx_volfog_shape | Open fog shape settings. |
| /foglook | /видтумана | Fog look | Menu | pushmenu q2prox_avfx_volfog_look | Open fog appearance settings. |
| /foglighting | /светтумана | Fog lighting | Menu | pushmenu q2prox_avfx_volfog_lighting | Open fog lighting settings. |
| /volclouds | /облака | Volumetric clouds | Menu | pushmenu q2prox_avfx_volclouds | Open volumetric cloud settings. |
| /cloudshape | /формаоблаков | Cloud shape | Menu | pushmenu q2prox_avfx_volclouds_shape | Open cloud shape settings. |
| /clouddetail | /деталиоблаков | Cloud detail | Menu | pushmenu q2prox_avfx_volclouds_detail | Open cloud detail settings. |
| /cloudlighting | /светоблаков | Cloud lighting | Menu | pushmenu q2prox_avfx_volclouds_lighting | Open cloud lighting settings. |
| /cloudlayers | /слоиоблаков | Cloud layers | Menu | pushmenu q2prox_avfx_volclouds_layers | Open cloud layer settings. |
| /cloudlayer1 | /слойоблаков1 | Cloud layer 1 | Menu | pushmenu q2prox_avfx_volclouds_layer1 | Open cloud layer 1 settings. |
| /cloudlayer2 | /слойоблаков2 | Cloud layer 2 | Menu | pushmenu q2prox_avfx_volclouds_layer2 | Open cloud layer 2 settings. |
| /cloudlayer3 | /слойоблаков3 | Cloud layer 3 | Menu | pushmenu q2prox_avfx_volclouds_layer3 | Open cloud layer 3 settings. |
| /flashlight | /фонарик | Flashlight | Menu | pushmenu q2prox_avfx_flashlight | Open flashlight settings. |
| /flashlightshadows | /тенифонарика | Flashlight shadows | Menu | pushmenu q2prox_avfx_flashlight_shadows | Open flashlight shadow settings. |
| /monstercontacts | /контактымонстров | Monster contacts | Menu | pushmenu q2prox_avfx_monster_contacts | Open monster-environment contact settings. |
Browsers and tools
| Command | Russian alias | Title | Type | Executes | Description |
|---|---|---|---|---|---|
| /servers | /серверы | Server browser | Overlay | serverbrowser_open | Open the modern server browser. |
| /demos | /демки | Demo browser | Overlay | demo_browser_open | Open the modern demo browser. |
| /cvars | /квары | Cvar browser | No action | cvar_browser_toggle | Toggle the cvar reference browser. |
| /serverbrowser | /браузерсерверов | Server browser settings | Menu | pushmenu q2prox_serverbrowser | Settings page for the server browser overlay. |
| /demobrowser | /браузердемок | Demo browser settings | Menu | pushmenu q2prox_demobrowser | Settings page for the demo browser overlay. |
| /cvarbrowser | /справочник | Cvar browser settings | Menu | pushmenu q2prox_cvarbrowser | Settings page for the cvar reference overlay. |
Controls
| Command | Russian alias | Title | Type | Executes | Description |
|---|---|---|---|---|---|
| /controls | /управление | Controls | Menu | pushmenu g_controls | Open general controls / input settings. |
| /input | /ввод | Input | Menu | pushmenu g_input | Open input settings page. |
| /keys | /клавиши | Key bindings | Menu | pushmenu g_keys | Open key-binding settings. |
| /weaponbinds | /биндыоружия | Weapon binds | Menu | pushmenu g_weapons | Open weapon-bind settings. |
| /weaponview | /видоружия | Weapon view | Menu | pushmenu g_weapon_view | Open weapon-view (model) settings. |
| /mouse | /мышь | Mouse / zoom | Menu | pushmenu q2prox_mouse | Open mouse and zoom settings. |
| /crosshair | /прицел | Crosshair | Menu | pushmenu g_interface_crosshair | Open crosshair settings. |
Demos
| Command | Russian alias | Title | Type | Executes | Description |
|---|---|---|---|---|---|
| /gamestats | /статистикаигры | Game statistics | Overlay | game_stats_toggle | Open the Game Statistics overlay built from the demo library. |
| /demoplayer | /плеердемо | Demo player | Menu | pushmenu q2prox_demoplayer | Modern demo player overlay settings. |
| /demoanalytics | /аналитикадемо | Demo analytics | Menu | pushmenu q2prox_demoanalytics | Demo analytics / heatmap settings. |
| /analyticscolors | /цветааналитики | Analytics colors | Menu | pushmenu q2prox_demoanalytics_colors | Demo analytics palette. |
| /itemtimers | /таймеры | Item timers | Menu | pushmenu q2prox_demoitemtimers | Demo-only item respawn timers. |
| /itemtimercolors | /цветатаймеров | Item timer colors | Menu | pushmenu q2prox_demoitemtimers_colors | Per-item timer colour overrides. |
Gameplay and prediction
| Command | Russian alias | Title | Type | Executes | Description |
|---|---|---|---|---|---|
| /laghax | /лагхакс | Laghax | Menu | pushmenu q2prox_laghax | Adaptive prediction-error smoothing tuning. |
| /predict | /предикт | Weapon predicts | Menu | pushmenu q2prox_predict | Ghost weapon prediction toggles + debug. |
| /weaponfx | /частиоружия | Weapon parts | Menu | pushmenu q2prox_weaponfx | Predict-aware muzzle/projectile/impact filter. |
| /movement | /движение | Movement | Menu | pushmenu q2prox_movement | FPS-independent movement and player predict. |
| /movementbasics | /физика | Movement basics | Menu | pushmenu g_movement_basics | Q2PRO movement-basics page (fixedmove etc.). |
| /experiments | /эксперименты | SP experiments | Menu | pushmenu q2prox_sp_experiments | Open the single-player experiments menu. |
| /training | /тренировка | Training | Menu | pushmenu q2prox_sp_training_root | Open the training menu. |
| /dmtraining | /дмтренировка | DM training | Menu | pushmenu q2prox_sp_dm_training | Open the deathmatch training menu. |
| /mutator | /мутатор | Mutator | Menu | pushmenu q2prox_sp_mutator | Open the single-player mutator menu. |
| /geometry | /геометрия | Geometry deform | Menu | pushmenu q2prox_sp_geo_deform | Open the geometry deformation menu. |
| /monstervariants | /монстрывнешность | Monster variants | Menu | pushmenu q2prox_sp_monster_variants | Open the monster appearance variants menu. |
| /liquidswap | /подменажидкостей | Liquid swap | Menu | pushmenu q2prox_sp_liquid_swap | Open the liquid swap menu. |
| /liveitemtimers | /\xeb\xe0\xe9\xe2\xf2\xe0\xe9\xec\xe5\xf0\xfb | Live item timers | Menu | pushmenu q2prox_live_item_timers | Live multiplayer item respawn timers. |
Interface, mods and HUD
| Command | Russian alias | Title | Type | Executes | Description |
|---|---|---|---|---|---|
| /masters | /мастеры | Primary masters | Menu | pushmenu q2prox_primary_masters | Open the primary settings masters page. |
| /interface | /интерфейс | Interface / HUD | Menu | pushmenu g_interface | Open interface / HUD settings. |
| /layout | /размер | Interface size | Menu | pushmenu g_interface_size | HUD size / layout sub-page. |
| /alpha | /прозрачность | Interface alpha | Menu | pushmenu g_interface_alpha | HUD alpha / transparency sub-page. |
| /modhelp | /оверлеймода | Mod overlay | Menu | pushmenu q2prox_modhelp | Mod help / overlay settings (OpenTDM, OpenFFA). |
| /teamhud | /командныйhud | OpenTDM team HUD | Menu | pushmenu q2prox_opentdm_teamhud | Passive same-team HUD for OpenTDM matches. |
| /scripts | /скрипты | Scripts / binds | Menu | pushmenu q2prox_scripts | Q2PRO-X command-bind macros and scripts. |
System and audio
| Command | Russian alias | Title | Type | Executes | Description |
|---|---|---|---|---|---|
| /video | /видео | Video menu | Menu | pushmenu q2prox_video | Open video / display settings. |
| /HDR | /хдр | HDR settings | Menu | pushmenu q2prox_hdr | Open HDR rendering and HDR output settings. |
| /sound | /звук | Sound menu | Menu | pushmenu q2prox_sound | Open sound / acoustics settings. |
| /soundactive | /активныйзвук | Active sound channels | Command | soundactive | Print currently reserved AVFX ambient channels, audible one-shot sounds, autosounds and the last submitted AVFX ambient loops. Useful for diagnosing stuck rain/wind/snow ambience. |
| /binaural | /бинаурал | Binaural / 3D | Menu | pushmenu q2prox_binaural | Headphone binaural 3D sound + HRTF tuning. |
| /volumes | /громкость | Sound volumes | Menu | pushmenu q2prox_sound_vol | Open sound volume controls: weapons, other sound categories, AVFX sounds. |
| /weaponvol | /громкостьоружия | Weapon volumes | Menu | pushmenu q2prox_weaponvol | Open per-weapon volume sliders (blaster, shotgun, machinegun, etc.). |
| /othervol | /прочиезвуки | Other sound volumes | Menu | pushmenu q2prox_othervol | Open non-weapon category volumes (player, voice, environment, demo player, ambient, etc.). |
| /avfxvol | /громкостьavfx | AVFX sound volumes | Menu | pushmenu q2prox_avfxvol | Open AVFX sound layer settings (rain, snow, wind, water, steam, thunder, meteor, surface steps). |
| /voice | /голос | Voice chat | Menu | pushmenu q2prox_voice | Open voice chat settings. |
| /mic | /микрофон | Microphone | Menu | pushmenu q2prox_voice_mic_pick | Pick voice chat microphone. |
| /onlinemusic | /музыка | Online music player | Command | music_online_open | Open the online music (PROMODJ) overlay player: search, play, queue. |
| /onlinemusicmenu | /музыкаменю | Online music settings | Menu | pushmenu q2prox_online_music | Open the online music settings menu (provider, genres, queue, overlay). |
| /musiclucky | /повезёт | Online music: lucky | Command | music_online_lucky | Pick and play a random online track by the current lucky scope. |
| /oled | /олед | OLED protection | Menu | pushmenu q2prox_oled | Open OLED protection / idle dim settings. |
| /config | /конфиг | Config | Menu | pushmenu g_config | Open Q2PRO-X config / save / reset menu. |
| /network | /сеть | Network | Menu | pushmenu q2prox_advanced_network | Open advanced network settings. |
Visuals and highlights
| Command | Russian alias | Title | Type | Executes | Description |
|---|---|---|---|---|---|
| /tessellation | /тесселяция | Tessellation | Menu | pushmenu q2prox_bsp_tessellation | Open the WGL BSP hardware tessellation settings. |
| /visibility | /подсветка | Visibility | Menu | pushmenu q2prox_vis | Item and player highlights with colors. |
| /itemtoggles | /предметы | Item toggles | Menu | pushmenu q2prox_vis_toggles | Per-item highlight on/off toggles. |
| /itemcolors | /цветапредметов | Item colors | Menu | pushmenu q2prox_vis_colors | Per-item highlight colors. |
| /weapontoggles | /подсветкаоружия | Weapon toggles | Menu | pushmenu q2prox_vis_weapon_toggles | Per-weapon highlight on/off toggles. |
| /weaponcolors | /цветаоружия | Weapon colors | Menu | pushmenu q2prox_vis_weapon_colors | Per-weapon highlight colors. |
| /playermodelcolors | /цветамоделей | Player model colors | Menu | pushmenu q2prox_vis_player_model_colors | Per-model color overrides for player visibility. |
| /vfx | /эффекты | Visual FX | Menu | pushmenu q2prox_vfx | Bloom / fog / sharpen / colour grading. |
| /particles | /частицы | Particles | Menu | pushmenu g_particles | Particle effects settings. |
| /railtrail | /рейлтрейл | Rail trail | Menu | pushmenu g_railtrail | Rail trail visual settings. |
| /skins | /скины | Skins | Menu | pushmenu g_skins | Player/enemy skin overrides. |
| /downloads | /загрузки | Downloads | Menu | pushmenu g_downloads | Auto-download / paks settings. |
| /shadercacheinfo | /кешшейдеров | Shader cache info | Command | shader_cache_info | Print persistent shader binary cache status: supported, formats, enabled, hits, misses, loaded_from_binary, compiled_from_source, saved, last_error. Diagnostic only. |
| /shadercacheclear | /очиститькешшейдеров | Clear shader cache | Command | shader_cache_clear | Delete cached shader binary FILES under baseq2/q2pro-x/shcache. GL programs already loaded this renderer session stay active; the cache refills from source after a renderer/game restart or when a program is created again. |
3. The complete variable reference
This section is generated from the release description tables q2prox_cvar_info_q2prox.c and q2prox_cvar_info_q2pro.c. It is the same text the client shows in the cvar browser and in the built-in console help. Variables carrying a description: 3719.
AVFX: weather, sky, water, surfaces
Variables in this section: 1656.
| Variable | Accepted values | Description |
|---|---|---|
| cl_avfx | 0=off (default) / 1=on | Master toggle for the Q2PRO-X Advanced Visual Effects atmospheric layer (rain, snow, ash, dust, mist + optional storm/lightning/thunder). Visual-only client-side feature; does not change server gameplay, prediction, or hit detection. Saved to mod-local Q2PRO-X config during normal play and to demo_visual config during demo playback. Default off. |
| cl_avfx_air_alpha_scale | 0.00..2.00 (1.0 = default) | Alpha multiplier for the secondary air profile only (cl_avfx_air_profile). Multiplies the effective air-layer alpha; does not change the primary weather. Range 0.00..2.00. |
| cl_avfx_air_density_scale | 0.00..2.00 (1.0 = default) | Density multiplier for the secondary air profile only (cl_avfx_air_profile). Multiplies the effective air-layer density; does not change the primary weather. Range 0.00..2.00. |
| cl_avfx_air_profile | 0=off / 1=ash / 2=dust / 3=mist | Optional air-only profile layered OVER the primary cl_avfx_preset. 0=off, 1=ash, 2=dust, 3=mist. Air-only: it never spawns rain/snow surface effects (puddles, rings, runoff, snow material/accumulation/footprints). Has no effect when cl_avfx_preset is 0, or when it equals the primary preset (skipped to avoid double-emit). Underwater it is skipped like other local weather particles. |
| cl_avfx_alpha | 0.05..1.0 (default 0.35) | Master alpha for AVFX visuals. Competitive limit clamps to 0.30 in multiplayer to keep targets readable. |
| cl_avfx_ash_dlight_brightness | 0..4 multiplier (default 1.0) | Base brightness of warm ash-ember world light. The actual RGB strength is this value multiplied by that ember's final visual size, so small motes produce dim light and large coals produce stronger light. Independent from the radius control and still respects the global dynamic-light alpha/darkness settings. Live control. |
| cl_avfx_ash_dlight_radius | 0..5120 world units (default 256) | Base radius of the warm light spot cast by one ash ember. The actual radius is this value multiplied by that particle's final visual scale after cl_avfx_size and per-ember size variation; the result is capped at 5120 world units. Live control. 0 removes the world-light reach without hiding the ember sprite. Very large values can light distant floors but cost more BSP lighting work. |
| cl_avfx_ash_dlights | 0=no ember dlights / 1=ember dlights (default) | Master toggle for local warm world lights cast by bright ash ember particles. 1 (default) uses up to 12 stable world-space carrier embers in the active particle field. Every light follows its exact flying particle; observer position never selects or reassigns it. Radius and brightness are controlled separately and both follow each ember's final visual size. Expansion above gl_dynamic_radius 1 is compensated for these procedural micro-lights to prevent map-wide flicker; values below 1 can still shrink them. 0 keeps the ember particles themselves but skips their world light. |
| cl_avfx_ash_ember_fraction | 0..1 (menu step 0.05, default 0.4) | Fraction of ash particles that are warm glowing embers vs dark motes. Requires cl_avfx 1 and the ash preset (cl_avfx_preset 3). |
| cl_avfx_ash_ember_glow | 0=Off / 1=On (default 1) | Brightest embers glow like hot coals (sprite self-glow; does not light the level). Requires cl_avfx 1 and the ash preset (cl_avfx_preset 3). |
| cl_avfx_ash_sprites | 0=round ash / 1=varied fragments (default) | Ash particle silhouette variety. 0 renders the legacy round ash dots. 1 gives ash particles procedural non-round masks (rectangles, triangles and fragments) so ash reads as small debris instead of identical circles. |
| cl_avfx_audio | 0=off (default) / 1=on | Master toggle for AVFX sounds. Drives thunder, raindrop ticks, lightning impact bang, lava evaporation hiss, water-ripple plips, surface-contact step samples, and ambient loop beds (rain / wind / dust / snow / water) when matching WAV assets are present. Respects s_ambient — when global ambient sounds are off, AVFX sounds are also silent. Individual sublayers can still be gated via cl_avfx_audio_wind / _rain / _snow / _water / _thunder / _impact / _lava_steam / _rain_drops. If a WAV is absent or fails to load, that layer stays silent (no console spam). |
| cl_avfx_audio_impact | 0=no impact bang / 1=allow impact bang (default) | Allow the explosion-style bang at the lightning strike point. Plays at the impact world position with normal attenuation, so distant strikes are quieter than nearby ones. Uses the standard rocket-explosion sound (weapons/rocklx1a.wav) bundled with the game — exactly the bang players hear when a rocket explodes against a surface. Gated by cl_avfx_audio master and cl_avfx_lightning_impact_scale > 0 — same conditions that decide whether the rocket-style impact visual runs. |
| cl_avfx_audio_lava_steam | 0=no evaporation hiss / 1=allow hiss (default) | Allow short evaporation hiss one-shots when real rain/snow impact samples contact lava. The sound is throttled and probabilistic, so not every drop or flake is voiced. Uses q2prox/avfx/steam_hiss1..3.wav if present; missing files stay silent. This is not water audio and never uses water_murmur/water_lap samples. Visual steam is controlled separately by cl_avfx_lava_steam. |
| cl_avfx_audio_lava_surface_steam | 0=no surface melt hiss / 1=allow surface melt hiss (default) | Allow softer positional hiss from surface snow/water mass melting near lava edges. Uses q2prox/avfx/steam_surface_hiss1..3.wav if present; missing files stay silent. This is separate from cl_avfx_audio_lava_steam, which is for sharp individual rain/snow particle contacts. Surface steam sound is spawned at the same world point as the soft surface steam puff. |
| cl_avfx_audio_meteor | default 1 / 0 or 1 | Audio for sky meteors / shooting stars (M1) — burnup crack when bolide disintegrates. Global low-volume oneshot (no spatial cue since meteor is at sky distance). Missing WAV silent. Default ON. |
| cl_avfx_audio_meteor_impact | default 1 / 0 or 1 | Audio for falling impact meteors (M2) — entry hiss during descent, flyby whoosh when passing near the listener, ground/water/lava boom on impact (distant variant when far), debris layer. Missing WAVs silent. Default ON. |
| cl_avfx_audio_puddle_steps | 0=no puddle steps / 1=allow puddle steps (default) | Allow wet footstep sounds when the local player walks/runs through visible AVFX puddles. Requires cl_avfx_audio and cl_avfx_audio_surface_steps. Landing splash audio also uses this gate. |
| cl_avfx_audio_rain | 0=no rain layer / 1=allow rain layer (default) | Gate for the main rain ambience bed. Drives rain_light_loop / rain_loop / rain_heavy_loop and the underwater rain loop selection when matching WAV assets are present. Drop one-shot ticks and water-ripple plips run through cl_avfx_audio_rain_drops / cl_avfx_audio_water — those are independent gates. If a WAV is absent or fails to load, that layer stays silent. |
| cl_avfx_audio_rain_drops | 0=no drop ticks / 1=allow drop ticks (default) | Allow close raindrop ticks (q2prox/avfx/rain_drop1..3.wav) while the rain preset and cl_avfx_rain_drops are active. Wired and active — fires sparse positional one-shots near the camera with ATTN_NORM falloff. Gated by §6.4 underwater check (camera in liquid → no drop ticks). Drop sounds never play when the rain preset is inactive. |
| cl_avfx_audio_snow | 0=no snow ambience / 1=allow snow ambience (default) | Gate for the subtle winter wind ambience (snow_wind_loop.wav) at snow preset. Snow audio is intentionally soft wind under the visual layer, never loud snow noise. If the WAV is absent or fails to load, the layer stays silent. |
| cl_avfx_audio_snow_steps | 0=no snow steps / 1=allow snow steps (default) | Allow snow footstep sounds on visible AVFX snow cover. Requires cl_avfx_audio and cl_avfx_audio_surface_steps. Volume starts only once snow is visibly present and grows with visible coverage; when snowdrift growth is enabled, step depth follows the grown snowdrift volume. |
| cl_avfx_audio_surface_steps | 0=no AVFX surface steps / 1=allow surface steps (default) | Master gate for AVFX surface-contact step audio. Enables snow, wet-floor and puddle step layers when their own sub-gates and WAV assets are present. Visual effects such as footprints or puddle splashes are controlled by separate cvars. |
| cl_avfx_audio_thunder | 0=no thunder / 1=allow thunder (default) | Allow thunder one-shots tied to storm/lightning events. When storm + lightning fire a visual flash, a thunder sample plays after a randomized 0.3..2.5 s delay. Thunder never plays without an originating lightning event. |
| cl_avfx_audio_volume | 0.0..1.0 (default 0.35) | AVFX-local sound volume multiplier. Effective volume = s_volume * s_ambient_volume * cl_avfx_audio_volume * preset/level/intensity factors. Default is intentionally subtle. |
| cl_avfx_audio_water | 0=no water audio / 1=allow water audio (default) | Gate for water-related AVFX audio. Drives the rain-on-water ripple plip one-shots (q2prox/avfx/water_ripple1..3.wav) when rings spawn on visible water surfaces, and the proximity-gated water_murmur_loop ambient bed near visible water. Set to 0 to silence both paths regardless of preset. If a WAV is absent or fails to load, that layer stays silent. |
| cl_avfx_audio_wind | 0=no wind layer / 1=allow wind layer (default) | Gate for the wind ambience layer. Drives wind / dust / ash / mist ambient loops, the storm wind variant loop and gust one-shots when matching WAV assets are present. If a WAV is absent or fails to load, that layer stays silent. |
| cl_avfx_backend | 0=Classic / 1=Accelerated (default 0) | AVFX surface/state backend. Classic keeps the legacy behaviour. Accelerated enables the modern dirty-tile/reservoir paths used by accelerated weather rendering. Requires cl_avfx 1. Accelerated is what enables the dirty-tile / reservoir data paths that cl_avfx_weather_renderer and the optimized coverage/sky caches build on. |
| cl_avfx_blackhole | 0=off (default) / 1=on | Master switch for the AVFX black hole: a configurable background body with gravitational lensing, an event-horizon shadow, a photon ring, an animated accretion disk, procedural flow strands and optional polar jets. The black hole is BEHIND the Sun, Earth, Moon and other ordinary celestial bodies, and IN FRONT OF the stars: it lenses and hides only the star background, and clouds pass in front of it. Default OFF (opt-in); at 0 the feature performs no simulation, no shader compile and no render pass at all. |
| cl_avfx_blackhole_animation_speed | default 1.0 / range 0..4 / step 0.05 | Global animation multiplier for the disk, strands and jets. 0 is a real freeze, not a slow crawl: the object stops completely and the renderer reuses its cached field, so a frozen black hole costs no per-frame GPU work. |
| cl_avfx_blackhole_antialiasing | 0=Off / 1=Analytic / 2=2x (default) / 3=4x | Edge antialiasing and reconstruction quality. It uses analytic edge coverage and bounded reconstruction: it does not multiply the integration budget per output sample and cannot grow the disk or the strands. |
| cl_avfx_blackhole_azimuth | default 225 / range 0..359 / step 1 | Initial / manual azimuth in degrees. In auto-drift mode this stays the archived starting point and is never rewritten by the drift. |
| cl_avfx_blackhole_bloom | 0=off / 1=on (default) | Use the black hole's emission as a bloom source. Only the emission blooms — never the lensed star background behind it, and never the event horizon, which emits nothing. |
| cl_avfx_blackhole_bloom_strength | default 1.0 / range 0..4 / step 0.05 | Scale of the black-hole bloom source. |
| cl_avfx_blackhole_brightness | default 1.0 / range 0..5 / step 0.05 | Brightness of ALL black-hole emission (disk, photon ring, strands, jets). The gravitational lensing and the event-horizon shadow are not emission and remain at 0. |
| cl_avfx_blackhole_capture_comets | 0=off (default) / 1=on | Capture comets into the Black Hole. Needs the object-capture master (and its parents) on plus comets enabled. A captured comet's nucleus/coma follows the curved path while its single continuous streak bends after it; the whole comet contracts and fades into the core. Off by default. No effect when there are no comets on screen. |
| cl_avfx_blackhole_capture_debug | default 0 (off) / 0=off, >0=diagnostic (diagnostic, current session only) | Developer-only diagnostic for Black-Hole object capture. When non-zero it prints per-event capture state (latch, trajectory phase, dissolve) and draws capture-path debug markers. Not archived, no menu row; costs nothing at 0. |
| cl_avfx_blackhole_capture_dissolve | default 1.0 / range 0.25..3 / step 0.05 | Core dissolve envelope: how early and how wide the near-core shrink/fade begins. Higher values make objects shrink and fade out sooner and more gradually as they approach the dark core; lower values keep them intact until they are very close. |
| cl_avfx_blackhole_capture_impact_meteors | 0=off (default) / 1=on | Capture FALLING impact meteors into the Black Hole. Capture is legal only while an event is still PRE-TERMINAL: a meteor that has already struck, that collides with a real wall this frame, or whose descent completes this frame is never taken retroactively and always performs its normal impact. A captured meteor is pulled off its impact route, curves and tumbles into the dark core with its tail bending after it, dissolves at the centre and retires exactly once - leaving no impact, no camera shake, no gameplay/damage bridge, no crater, steam, evaporation or afterglow, and no ordinary meteor sound. Concurrent uncaptured meteors keep their full normal behaviour. Requires the object-capture master (plus global AVFX, the matter-consumption master and a present Black Hole) and the falling-meteor system enabled; the celestial-matter parent is NOT a dependency. Off by default; while off the impact path is byte-identical to the accepted one. |
| cl_avfx_blackhole_capture_meteors | 0=off (default) / 1=on | Capture ordinary flying sky meteors into the Black Hole. Needs the object-capture master (and its parents) on plus flying meteors enabled. A captured meteor stops burning up on its own — it follows the curved path into the core and dissolves there. Off by default. No effect when there are no flying meteors on screen. |
| cl_avfx_blackhole_capture_objects | 0=off (default) / 1=on | Object-capture master. When on, ordinary flying sky objects that pass near the Black Hole are pulled in: they bend and spiral toward it, accelerate, shrink and fade into the dark core and dissolve once. Off by default; while off every meteor and comet keeps its exact baseline flight. Enabling it alone draws nothing extra: the matter-consumption master must also be on, at least one object child (meteors or comets) enabled, and a Black Hole must be present. The separate celestial-matter parent is not required. Falling/impact meteors are never captured. |
| cl_avfx_blackhole_capture_radius | default 1.0 / range 0.25..3 / step 0.05 | Attraction-zone reach multiplier: how close to the Black Hole an object must pass before it latches on. Larger values capture objects from farther away. Appearance/behaviour control only; it never moves the Black Hole or the objects' spawn points. |
| cl_avfx_blackhole_capture_spaceships | 0=off (default) / 1=on | Capture the local AVFX sky spaceships into the Black Hole. A ship flying its normal route latches once without any position, heading, scale, alpha or roll snap, bends into the same shared curved path, keeps its nose aligned with its true transformed motion, then contracts and fades into the dark core and is gone exactly once. The whole ship model is captured - not particles or a sprite - and its model, skin, tint, seed and aerobatic roll are never re-rolled. Requires the object-capture master (plus global AVFX, the matter-consumption master and a present Black Hole) and sky spaceships enabled; the celestial-matter parent is NOT a dependency. Off by default; no capture work happens while off. |
| cl_avfx_blackhole_capture_speed | default 1.0 / range 0.25..4 / step 0.05 | Capture speed: how fast a latched object is drawn into the core. Higher values shorten the spiral-in; lower values let it curve in slowly. Bounded so a moving Black Hole can never make an object immortal. |
| cl_avfx_blackhole_capture_spiral | default 0.65 / range 0..2 / step 0.05 | Spiral amount: how much a captured object curls tangentially around the Black Hole instead of falling straight in. 0 = a straight bend toward the core; higher values add a visible orbital swirl before it dissolves. |
| cl_avfx_blackhole_cloud_occlusion | default 1.0 / range 0..1 / step 0.01 | How strongly foreground clouds attenuate the black hole. Clouds are nearer than the hole, so they pass in front of it through the same transmittance the Sun/Moon disks use. 0 means clouds never hide it. |
| cl_avfx_blackhole_consume_celestials | 0=off (default) / 1=on | Celestial parent switch: enables the celestial-body consumers (Moon dust, Earth matter and Sun plasma). Off by default; with it off no celestial matter is drawn regardless of the individual body masters. |
| cl_avfx_blackhole_consume_earth | 0=off (default) / 1=on | Earth matter master. Tears three distinct kinds of Earth matter into the black hole — soft blue-white atmosphere/cloud wisps, compact blue-cyan water droplets and mist, and sparse brown/gray soil and rock fragments — each with its own shape, size, opacity and motion. Needs the matter-consumption master and the celestial parent on, plus a visible Earth and Black Hole. Off by default; absent/off Earth is a safe no-op. |
| cl_avfx_blackhole_consume_earth_strength | default 1.0 / range 0..3 / step 0.05 | Earth contribution to consumption strength. Scales the Earth matter independently of the global intensity and of the Moon. |
| cl_avfx_blackhole_consume_moon | 0=off (default) / 1=on | Moon dust master. Draws pale-gray dust peeling from the Moon limb into the black hole. Needs the matter-consumption master and the celestial parent on, plus a visible Moon and Black Hole. Off by default. If the Moon is absent or off there is no effect and no work — a safe no-op. |
| cl_avfx_blackhole_consume_moon_strength | default 1.0 / range 0..3 / step 0.05 | Moon contribution to consumption strength. Scales the Moon dust independently of the global intensity. |
| cl_avfx_blackhole_consume_reflect_mirrors | 0=off (default) / 1=on | Additional opt-in for reflecting Black-Hole ingestion particles in mirror surfaces. Requires the mirror model-reflection parent, its Celestial bodies category, the matter-consumption master and at least one enabled ingestion body (Moon dust or Earth matter). Uses the same finished particle stream; it never runs a private simulation. Off by default. |
| cl_avfx_blackhole_consume_reflect_puddles | 0=off (default) / 1=on | Additional opt-in for reflecting Black-Hole ingestion particles in puddles. Requires the puddle model-reflection parent, its Celestial bodies category, the matter-consumption master and at least one enabled ingestion body (Moon dust or Earth matter). Uses the finished per-body direction maps (each gated by its own line-of-sight) and the puddle's real reflected ray. Off by default. |
| cl_avfx_blackhole_consume_reflect_water | 0=off (default) / 1=on | Additional opt-in for reflecting Black-Hole ingestion particles in BSP water. Requires the water model-reflection parent, its Celestial bodies category, the matter-consumption master and at least one enabled ingestion body (Moon dust or Earth matter). Uses the finished per-body direction maps (each gated by its own line-of-sight) and the water surface's real reflected ray. Off by default. |
| cl_avfx_blackhole_consume_stream_density | default 1.0 / range 0.10..2 / step 0.05 | How many matter streams are submitted per body, as a fraction of the quality budget. Appearance control only; it does not change the body or Black-Hole geometry. |
| cl_avfx_blackhole_consume_stream_speed | default 1.0 / range 0.10..4 / step 0.05 | Matter travel speed toward the black hole. Appearance/animation control only; anchors stay put when the camera moves. |
| cl_avfx_blackhole_consume_stream_turbulence | default 1.0 / range 0..3 / step 0.05 | Stable curl and breakup of the matter streams. Deterministic; it does not teleport anchors. |
| cl_avfx_blackhole_consume_stream_width | default 1.0 / range 0.25..3 / step 0.05 | Particle/grain width for all consumed matter. Appearance control only. |
| cl_avfx_blackhole_consume_sun | 0=off (default) / 1=on | Sun plasma master. Sheds luminous plasma from the Sun into the black hole — curled hot white-yellow filaments, compact very bright knots and soft translucent orange coronal wisps, each with its own shape, size, opacity and motion, blooming in darkness. Needs the matter-consumption master and the celestial parent on, plus a visible Sun and Black Hole. Off by default; absent/off Sun is a safe no-op. |
| cl_avfx_blackhole_consume_sun_strength | default 1.0 / range 0..3 / step 0.05 | Sun contribution to consumption strength. Scales the Sun plasma independently of the global intensity and of the Moon and Earth. |
| cl_avfx_blackhole_consumption | 0=off (default) / 1=on | Matter-consumption master switch. Off by default; while off it does zero simulation, draw, shader and allocation work. Enabling it alone draws nothing: the celestial parent and at least one body master (Moon dust or Earth matter) must also be on, and the Black Hole itself must be present. |
| cl_avfx_blackhole_consumption_audio | 0=off (default) / 1=on | Black Hole presence audio master. Two beds: a deep gravitational bed whose weight follows the hole's APPARENT angular size (not a fabricated world distance), and a shear/tearing layer placed as a real positional sound toward the hole, so it moves across the stereo field with azimuth and elevation as you turn. The deep bed stays non-directional on purpose - sub-bass is not localizable and its weight must not drop when you look away. Off by default; requires AVFX audio and a visible Black Hole. It is independent of the optional matter-consumption master; only capture, shear and fracture event sounds require that master. Missing WAVs are a silent no-op. |
| cl_avfx_blackhole_consumption_audio_events | 0=off (default) / 1=on | Bounded Black Hole events: per-object capture in-draw, celestial matter shear, and three positional rock-fracture variants emitted at the actual Surface Lift detachment point. Large surface breaks aggregate through a cooldown; dust never starts a sound and the channel pool cannot be exhausted. Off by default. |
| cl_avfx_blackhole_consumption_audio_events_volume | default 0.80 / range 0..1 / step 0.05 | Volume of the Black Hole event sounds (the per-object in-draw and the celestial shear), applied before the global AVFX gain and independent of the presence-bed volume, so the events can be balanced against the bed. Each captured object gets its own in-draw voice that starts when it latches and travels with it, so simultaneous captures overlap instead of cutting each other off; the voice pool is small and fixed, which bounds a burst without exhausting sound channels. |
| cl_avfx_blackhole_consumption_audio_focus | default 0.30 / range 0..1 / step 0.05 | How strongly looking at the hole lifts the shear layer. The Black Hole remains audible behind the camera: view direction shapes the mix but can never mute it. 0 = view direction is ignored entirely. |
| cl_avfx_blackhole_consumption_audio_volume | default 0.70 / range 0..1 / step 0.05 | Black Hole presence volume, applied before the global AVFX gain. The final level is cl_avfx_audio_volume x this x the smoothed presence x the layer mix, clamped once. |
| cl_avfx_blackhole_consumption_intensity | default 1.0 / range 0..3 / step 0.05 | Overall consumption strength multiplier. Strength also scales continuously with the APPARENT angular size of the bodies and their angular gap — not with fake world meters — so closer/larger bodies pull harder. |
| cl_avfx_blackhole_consumption_quality | 0=Low / 1=Balanced / 2=High (default) / 3=Ultra | Consumption quality: it changes the matter stream/grain BUDGETS only (Low 8 / Balanced 16 / High 24 / Ultra 40 streams per body). It never changes geometry, strength, colour or speed. All variants are real-draw prewarmed, so changing it never compiles at draw time. |
| cl_avfx_blackhole_consumption_reach | default 1.0 / range 0.25..3 / step 0.05 | Angular interaction reach: how large the body/Black-Hole angular gap can be and still produce matter. Larger values let the effect persist when the bodies are farther apart on the sky. |
| cl_avfx_blackhole_debug | default 0 (off) / bit flags (diagnostic, current session only) | Developer-only black-hole diagnostics: visualization flags (patch bounds, lens vectors, depth layers) AND the field readback probes that cl_avfx_info reports (disk aspect/r95/edge, probe object identity). The probes stall the frame on a GPU readback, so they are OFF unless you set this — leave it at 0 unless you are diagnosing. Not archived, not preset-owned, absent from the normal menus. |
| cl_avfx_blackhole_disk | 0=off / 1=on (default) | Accretion-disk master. Both the direct disk and its gravitationally lensed far-side image around the shadow are shown. |
| cl_avfx_blackhole_disk_brightness | default 1.0 / range 0..8 / step 0.05 | Disk emission in linear HDR, before the normal output transform. |
| cl_avfx_blackhole_disk_density | default 1.0 / range 0..4 / step 0.05 | Density / coverage of the disk material. |
| cl_avfx_blackhole_disk_detail | default 1.0 / range 0..2 / step 0.05 | Detail AMPLITUDE of the turbulence. It is not a loop count and does not change the render cost: the octave budget is selected by the quality setting. |
| cl_avfx_blackhole_disk_inner_radius | default 1.25 / range 1.01..8 shadow radii / step 0.01 | Inner radius of the accretion disk, in shadow radii. |
| cl_avfx_blackhole_disk_noise_scale | default 1.0 / range 0.05..10 / step 0.05 | Scale of the procedural noise pattern in the disk. |
| cl_avfx_blackhole_disk_opacity | default 0.95 / range 0..1 / step 0.01 | Opacity of the disk material. |
| cl_avfx_blackhole_disk_outer_radius | default 5.0 / range 1.1..16 shadow radii / step 0.1 | Outer radius of the accretion disk, in shadow radii. If an archived value ends up at or below the inner radius the runtime corrects it effectively without rewriting your cfg text. |
| cl_avfx_blackhole_disk_pitch | default 68 / range -90..90 deg / step 1 | Accretion-disk orientation: tilt in degrees. 0 is face-on; the default 68 gives the classic inclined view where the lensed far side of the disk arcs over the shadow. |
| cl_avfx_blackhole_disk_radial_falloff | default 1.4 / range 0.1..6 / step 0.05 | Fade curve toward the outer edge of the disk. Higher values fade earlier. |
| cl_avfx_blackhole_disk_roll | default 0 / range -180..180 deg / step 1 | Accretion-disk orientation: lean about the viewing axis, in degrees — which way the disk tips. |
| cl_avfx_blackhole_disk_rotation_speed | default 0.35 / range -4..4 / step 0.05 | Signed orbital speed of the disk. Negative rotates the opposite way. |
| cl_avfx_blackhole_disk_speed_variation | default 0.25 / range 0..1 / step 0.01 | Stable radial spread of the orbital speed: inner material orbits faster, like a real Keplerian disk. The spread is a stable function of radius, never random per frame. |
| cl_avfx_blackhole_disk_thickness | default 0.22 / range 0.01..2 / step 0.01 | Vertical thickness of the accretion disk. |
| cl_avfx_blackhole_disk_turbulence | default 1.0 / range 0..4 / step 0.05 | Amount of procedural flow distortion in the disk. |
| cl_avfx_blackhole_disk_yaw | default 0 / range -180..180 deg / step 1 | Accretion-disk orientation: spin within the disk's own plane, in degrees — it sets where the flow strands start, not which way the disk faces. Orientation is world/sky-owned, so camera motion cannot change it. |
| cl_avfx_blackhole_doppler | 0=off / 1=on (default) | Relativistic-style directional beaming: at inclined views the side of the disk approaching the observer brightens and the receding side dims. An artistic control, not a physical solver. |
| cl_avfx_blackhole_doppler_strength | default 0.65 / range 0..2 / step 0.05 | Contrast of the directional beaming. |
| cl_avfx_blackhole_drift_azimuth_speed | default 0.10 / range -10..10 deg/s / step 0.01 | Auto-drift mode only: horizontal drift speed in degrees per second. Negative drifts the opposite way. |
| cl_avfx_blackhole_drift_elevation_amplitude | default 8.0 / range 0..45 deg / step 0.5 | Auto-drift mode only: amplitude of the vertical oscillation in degrees. 0 keeps the elevation fixed. |
| cl_avfx_blackhole_drift_elevation_speed | default 0.05 / range 0..4 Hz / step 0.01 | Auto-drift mode only: speed of the vertical oscillation in Hz. |
| cl_avfx_blackhole_elevation | default 35 / range -90..90 / step 1 | Initial / manual elevation above the horizon in degrees. In auto-drift mode this stays the archived starting point and is never rewritten by the drift. |
| cl_avfx_blackhole_emissive_peak | default 1.0 / range 0..4 / step 0.05 | Multiplier applied on top of the global gl_hdr_celestial_peak_scale for black-hole emission. It does not replace the global control. |
| cl_avfx_blackhole_godrays | 0=off (default) / 1=on | Optional god rays radiating from the black hole itself, sourced from its own emission. Default OFF. It is an emission source only: the event horizon never cuts the sun's accepted radial god-ray field. |
| cl_avfx_blackhole_godrays_strength | default 0.50 / range 0..3 / step 0.05 | Scale of the black-hole god-ray source. |
| cl_avfx_blackhole_inner_color_b | default 0.78 / range 0..2 / step 0.01 | Blue channel of the hot inner accretion disk. 1.00 is shader identity. Authored in linear HDR before the normal output transform, so SDR and HDR show the same colour. |
| cl_avfx_blackhole_inner_color_g | default 0.95 / range 0..2 / step 0.01 | Green channel of the hot inner accretion disk. 1.00 is shader identity. Authored in linear HDR before the normal output transform, so SDR and HDR show the same colour. |
| cl_avfx_blackhole_inner_color_r | default 1.00 / range 0..2 / step 0.01 | Red channel of the hot inner accretion disk. 1.00 is shader identity. Authored in linear HDR before the normal output transform, so SDR and HDR show the same colour. |
| cl_avfx_blackhole_jet_brightness | default 1.0 / range 0..8 / step 0.05 | Jet emission in linear HDR, before the normal output transform. |
| cl_avfx_blackhole_jet_color_b | default 1.00 / range 0..2 / step 0.01 | Blue channel of the polar jets. 1.00 is shader identity. Authored in linear HDR before the normal output transform, so SDR and HDR show the same colour. |
| cl_avfx_blackhole_jet_color_g | default 0.62 / range 0..2 / step 0.01 | Green channel of the polar jets. 1.00 is shader identity. Authored in linear HDR before the normal output transform, so SDR and HDR show the same colour. |
| cl_avfx_blackhole_jet_color_r | default 0.32 / range 0..2 / step 0.01 | Red channel of the polar jets. 1.00 is shader identity. Authored in linear HDR before the normal output transform, so SDR and HDR show the same colour. |
| cl_avfx_blackhole_jet_density | default 0.70 / range 0..4 / step 0.05 | Optical density of the jet column: how solid the plasma reads before it fades out along its length. Low values give a thin transparent streak, high values a dense opaque beam. Brightness is a separate control. |
| cl_avfx_blackhole_jet_length | default 5.0 / range 0.5..20 shadow radii / step 0.1 | Jet length, in shadow radii. |
| cl_avfx_blackhole_jet_pulse | default 0.15 / range 0..1 / step 0.01 | Amount of jet pulsation along its length. |
| cl_avfx_blackhole_jet_speed | default 1.0 / range 0..4 / step 0.05 | Speed at which the jet's turbulence pattern travels along the axis, i.e. how fast the plasma appears to stream outward. 0 freezes the pattern into a static beam. |
| cl_avfx_blackhole_jet_turbulence | default 0.35 / range 0..2 / step 0.05 | Turbulence of the jet shape. |
| cl_avfx_blackhole_jet_width | default 0.16 / range 0.02..2 / step 0.01 | Jet width / opening angle. |
| cl_avfx_blackhole_jets | 0=off (default) / 1=on | Optional polar jets along the disk axis. Default OFF. Jets obey the same foreground-body and cloud cover as the rest of the object and create no dynamic lights or gameplay effects. |
| cl_avfx_blackhole_lens_falloff | default 1.5 / range 0.25..4 / step 0.05 | Radial falloff curve of the lens influence. Higher values concentrate the bend near the shadow. |
| cl_avfx_blackhole_lens_radius | default 3.5 / range 1..12 shadow radii / step 0.1 | Radius of the lens field, measured in shadow radii. Beyond it the bend converges to zero, so the patch cannot show a warp discontinuity at its edge. |
| cl_avfx_blackhole_lens_strength | default 1.0 / range 0..3 / step 0.05 | Strength of the background ray bend. Higher values widen the Einstein-ring-style warp around the shadow. |
| cl_avfx_blackhole_lensing | 0=off / 1=on (default) | Gravitational lensing of the deep background. Only stars, the Milky Way, constellations, distant planets and the astronomical sky texture are bent. Sun/Earth/Moon, meteors, comets and sky ships are nearer and are never lensed. |
| cl_avfx_blackhole_outer_color_b | default 0.04 / range 0..2 / step 0.01 | Blue channel of the cooler outer accretion disk. 1.00 is shader identity. Authored in linear HDR before the normal output transform, so SDR and HDR show the same colour. |
| cl_avfx_blackhole_outer_color_g | default 0.26 / range 0..2 / step 0.01 | Green channel of the cooler outer accretion disk. 1.00 is shader identity. Authored in linear HDR before the normal output transform, so SDR and HDR show the same colour. |
| cl_avfx_blackhole_outer_color_r | default 1.00 / range 0..2 / step 0.01 | Red channel of the cooler outer accretion disk. 1.00 is shader identity. Authored in linear HDR before the normal output transform, so SDR and HDR show the same colour. |
| cl_avfx_blackhole_photon_color_b | default 0.55 / range 0..2 / step 0.01 | Blue channel of the photon ring. 1.00 is shader identity. Authored in linear HDR before the normal output transform, so SDR and HDR show the same colour. |
| cl_avfx_blackhole_photon_color_g | default 0.82 / range 0..2 / step 0.01 | Green channel of the photon ring. 1.00 is shader identity. Authored in linear HDR before the normal output transform, so SDR and HDR show the same colour. |
| cl_avfx_blackhole_photon_color_r | default 1.00 / range 0..2 / step 0.01 | Red channel of the photon ring. 1.00 is shader identity. Authored in linear HDR before the normal output transform, so SDR and HDR show the same colour. |
| cl_avfx_blackhole_photon_ring | 0=off / 1=on (default) | Thin bright photon ring at the edge of the shadow, formed by strongly distorted disk images. It is emissive and participates in the configured HDR peak and bloom. |
| cl_avfx_blackhole_photon_ring_brightness | default 1.8 / range 0..8 / step 0.05 | Photon-ring emission in linear HDR, before the normal output transform. |
| cl_avfx_blackhole_photon_ring_radius | default 1.12 / range 1.0..2.5 shadow radii / step 0.01 | Photon-ring radius, measured in shadow radii. The default 1.12 places it just outside the shadow edge. |
| cl_avfx_blackhole_photon_ring_width | default 0.035 / range 0.005..0.25 / step 0.005 | Thickness of the photon ring: the half-width of its glow band, in the same shadow-radius units as the ring radius. Narrow values give a sharp thread of light at the shadow edge, wide values a soft halo. |
| cl_avfx_blackhole_position_mode | 0=manual (default) / 1=star sphere / 2=auto drift | Position policy. Manual keeps the archived azimuth/elevation fixed in the sky. Star sphere applies the same celestial-sphere orientation transform the stars use, and works even when the stars master is off. Auto drift adds a realtime offset on top of the archived azimuth/elevation without ever rewriting them. |
| cl_avfx_blackhole_precession_speed | default 0 / range -10..10 deg/s / step 0.01 | Optional precession of the disk orientation in degrees per second. It is a runtime layer only: the yaw/pitch/roll cvars keep their archived values. 0 disables precession. |
| cl_avfx_blackhole_quality | 0=Low / 1=Balanced / 2=High (default) / 3=Ultra | Fixed render-quality variant. It selects a compile-time bounded field resolution, integration-step budget and noise-octave budget: Low 192x192 analytic (no march), Balanced 320x320 / 24 steps, High 512x512 / 40 steps, Ultra 768x768 / 64 steps. Changing it never compiles a shader at draw time (all four variants are prewarmed) and never changes the object's size, thickness or average brightness. High is the recommended default; Ultra is expensive. |
| cl_avfx_blackhole_render_scale | 0=Auto (default) / 1=0.50x / 2=0.75x / 3=1.00x | Advanced override of the field texture resolution selected by the quality setting. It scales the internal field only and never changes the object's physical or angular geometry. |
| cl_avfx_blackhole_seed | default 137 / range 0..9999 integer | Stable procedural seed for the turbulence and flow structure. Changing it reshapes the pattern; it never changes size, brightness or geometry, and it never reseeds per frame. |
| cl_avfx_blackhole_shadow_color_b | default 0.00 / range 0..2 / step 0.01 | Blue channel of the event-horizon shadow tint. The default 0.00/0.00/0.00 is a pure black shadow. The shadow emits nothing: tinting it adds no bloom and no god-ray energy. Authored in linear HDR before the normal output transform, so SDR and HDR show the same colour. |
| cl_avfx_blackhole_shadow_color_g | default 0.00 / range 0..2 / step 0.01 | Green channel of the event-horizon shadow tint. The default 0.00/0.00/0.00 is a pure black shadow. The shadow emits nothing: tinting it adds no bloom and no god-ray energy. Authored in linear HDR before the normal output transform, so SDR and HDR show the same colour. |
| cl_avfx_blackhole_shadow_color_r | default 0.00 / range 0..2 / step 0.01 | Red channel of the event-horizon shadow tint. The default 0.00/0.00/0.00 is a pure black shadow. The shadow emits nothing: tinting it adds no bloom and no god-ray energy. Authored in linear HDR before the normal output transform, so SDR and HDR show the same colour. |
| cl_avfx_blackhole_shadow_radius | default 1.0 / range 0.25..3 / step 0.05 | Radius of the central event-horizon shadow, in shadow radii. The shadow blocks the deep background behind it; it emits nothing, so it produces no bloom, no god-ray energy and no scene light. |
| cl_avfx_blackhole_shadow_softness | default 0.02 / range 0..0.20 / step 0.005 | Analytic softness of the shadow limb. It is edge antialiasing only: it does not change the shadow's physical size and does not add a halo. |
| cl_avfx_blackhole_size | default 8.0 / engine range 0.1..3000.0 / menu 0.1..100.0 step 0.1 | Angular size multiplier of the event-horizon shadow. The menu slider goes to 100.0, while console/cfg still accept the engine range up to 3000.0 for an extreme cinematic hole. Zoom and FOV change only the projected pixel size, never the angular size. |
| cl_avfx_blackhole_stream_color_b | default 0.12 / range 0..2 / step 0.01 | Blue channel of the particle / flow strands. 1.00 is shader identity. Authored in linear HDR before the normal output transform, so SDR and HDR show the same colour. |
| cl_avfx_blackhole_stream_color_g | default 0.45 / range 0..2 / step 0.01 | Green channel of the particle / flow strands. 1.00 is shader identity. Authored in linear HDR before the normal output transform, so SDR and HDR show the same colour. |
| cl_avfx_blackhole_stream_color_r | default 1.00 / range 0..2 / step 0.01 | Red channel of the particle / flow strands. 1.00 is shader identity. Authored in linear HDR before the normal output transform, so SDR and HDR show the same colour. |
| cl_avfx_blackhole_stream_contrast | default 1.0 / range 0..4 / step 0.05 | Contrast between the strands and the surrounding disk material. |
| cl_avfx_blackhole_stream_density | default 1.0 / range 0..4 / step 0.05 | Visible strand density. |
| cl_avfx_blackhole_stream_length | default 0.85 / range 0.05..2 / step 0.01 | Tangential elongation of the strands. |
| cl_avfx_blackhole_stream_speed | default 1.0 / range 0..4 / step 0.05 | Stream animation speed. |
| cl_avfx_blackhole_stream_speed_variation | default 0.35 / range 0..1 / step 0.01 | Stable spread of the stream speeds across the disk radius. Deterministic, never random per frame. |
| cl_avfx_blackhole_stream_width | default 0.12 / range 0.01..1 / step 0.01 | Thickness of the accretion strands that spiral into the hole. Thin strands read as separate threads, thick ones merge into a continuous sheet of infalling matter. |
| cl_avfx_blackhole_streams | 0=off / 1=on (default) | Visible flow strands inside the accretion disk. They are a procedural GPU density structure, not game particles: they create no dynamic lights and have no gameplay effect. |
| cl_avfx_blackhole_surface_clumps | 0=off (default) / 1=on | Lift small soil clumps that break up after they tear loose. Needs the surface-matter master. Off by default. |
| cl_avfx_blackhole_surface_density | default 1.0 / range 0.10..2 / step 0.05 | How much matter is torn loose. Appearance/rate control only; bounded by the shared hard pool. |
| cl_avfx_blackhole_surface_dust | 0=off (default) / 1=on | Lift dust and soil grains: many separate specks and loose puffs, not one ribbon. Needs the surface-matter master. Off by default. |
| cl_avfx_blackhole_surface_lift | 0=off (default) / 1=on | Surface-matter master for tearing matter off the game level. When the Black Hole is huge and nearly overhead and open sky is visible, it lifts dust/soil, clumps and rocks from valid open world surfaces, carries them up and away toward the hole, where they shrink to a point and vanish. Off by default; while off there is zero source scan, spawn, upload or draw. Needs global AVFX, the matter-consumption master and a present Black Hole; the celestial-matter parent is not required. |
| cl_avfx_blackhole_surface_min_core_degrees | default 6.0 / range 1..40 / step 0.5 / degrees | Minimum apparent core size, in degrees, before the hole is big enough to tear surface matter loose. Below it there is no source at all. |
| cl_avfx_blackhole_surface_overhead_cone | default 35 / range 5..89 / step 1 / degrees | How far from straight overhead (world up) the Black Hole may be and still lift matter, in degrees. A side or horizon hole lifts nothing. |
| cl_avfx_blackhole_surface_rock_size | default 1.0 / range 0.25..3 / step 0.05 | Rock fragment size multiplier. Appearance only. |
| cl_avfx_blackhole_surface_rocks | 0=off (default) / 1=on | Lift rare tumbling rock fragments of varied size. No collision or damage; they are visual only. Needs the surface-matter master. Off by default. |
| cl_avfx_blackhole_surface_speed | default 1.0 / range 0.25..4 / step 0.05 | Travel speed of the lifted matter toward the hole. The duration is bounded (12..120 s inherited from the accepted long-distance capture), so a moving hole can never make a grain immortal. |
| cl_avfx_blackhole_surface_turbulence | default 1.0 / range 0..3 / step 0.05 | Stable curl and scatter of the lifted stream, so it reads as many separate grains and fragments rather than straight strings. |
| cl_avfx_blackhole_temporal_stability | 0=off / 1=on (default) | Stable history / reprojection between frames. Reduces shimmer on a stationary camera. |
| cl_avfx_comet_brightness | default 2.65 / range 0.0..5.0 / step 0.05 | Comet coma and tails brightness multiplier. 2.65 (default) bright cinematic; 1.0 = baseline; up to 5.0 cinematic-bright. |
| cl_avfx_comet_cloud_occlusion | default 0.30 / range 0.0..1.0 / step 0.05 | Cloud occlusion strength for comets and their tails. 0.30 (default) — light dimming behind cloud cells; 0 = comets ignore clouds; 1 = fully hidden. |
| cl_avfx_comet_color_b | default 1.00 / range 0.00..1.00 / menu step 0.02 | Blue channel of the manual AVFX comet base tint. Used for newly spawned comets only when cl_avfx_comet_color_custom is 1. Stock reference 1.00. |
| cl_avfx_comet_color_custom | default 0 / 0=stock palette / 1=custom RGB | Use cl_avfx_comet_color_r/g/b as the base tint for newly spawned AVFX comets: nucleus, coma and both components of the continuous tail. Their relative brightness, opacity and profiles remain intact. Existing comets retain their spawn colours. 0 (default) preserves the stock comet palette exactly. Full Chaos sets this to 1 when comets are selected; Reasonable leaves it unchanged. This does not enable the effect; cl_avfx_comets remains its enable toggle. |
| cl_avfx_comet_color_g | default 0.85 / range 0.00..1.00 / menu step 0.02 | Green channel of the manual AVFX comet base tint. Used for newly spawned comets only when cl_avfx_comet_color_custom is 1. Stock reference 0.85. |
| cl_avfx_comet_color_r | default 0.45 / range 0.00..1.00 / menu step 0.02 | Red channel of the manual AVFX comet base tint. Used for newly spawned comets only when cl_avfx_comet_color_custom is 1. Stock reference 0.45. |
| cl_avfx_comet_color_variation | default 0.00 / range 0.00..1.00 / menu step 0.02 | Seeded colour variation between individual newly spawned AVFX comets when custom colour is enabled. 0 (default) uses the exact base RGB; 1 gives the strongest deterministic vivid variation while retaining influence from that RGB. Full Chaos sets it to 1 when comets are selected. Existing comets are not recoloured mid-flight. |
| cl_avfx_comet_dust_tail | default 1 / 0 or 1 | Render the smooth wispy body of the single continuous comet streak. The glowing nucleus/coma remains even when this component is off. Custom RGB recolours it together with the rest of the comet. Default ON. |
| cl_avfx_comet_force_bloom | default 1 / 0 or 1 | Forced bloom for the comet coma. Works even when gl_bloom=0. Comet-pixel-only — does NOT enable whole-scene bloom. |
| cl_avfx_comet_ion_tail | default 1 / 0 or 1 | Render the energetic sparks and filaments inside the single continuous comet streak. The glowing nucleus/coma remains even when this component is off. Custom RGB recolours it together with the rest of the comet. Default ON. |
| cl_avfx_comet_rate | default 2.0 / range 0.0..2.0 / step 0.01 | Average comet spawn rate in events per minute. 2.0 (default) = one every 30 seconds — cinematic comet show. 0.03 = realistic naked-eye rarity (~one every 30 minutes). Each comet lingers 30 s..10 min depending on the speed cvar. |
| cl_avfx_comet_size | default 1.75 / range 0.1..5.0 / step 0.05 | Comet coma angular size. 1.75 (default); 1.0 = baseline; 0.5 = compact bright spot; 3.0 = large diffuse glow. |
| cl_avfx_comet_speed | default 1.0 / range 0.05..5.0 / step 0.05 | Comet angular speed across the sky. 1.0 (default) ≈ 2 min visible arc; 0.5 = 4 min slow drift; 2.0 = 1 min fast pass. |
| cl_avfx_comet_tail_length | default 3.0 / range 0.0..5.0 / step 0.05 | Length multiplier for the single continuous comet streak; scales its smooth body and energetic detail together. 3.0 (default) cinematic; 1.0 = baseline ≈ 10–13 degrees of arc; up to 5.0 for spectacular comet shows. |
| cl_avfx_comet_tail_width | default 2.35 / range 0.1..5.0 / step 0.05 | Width multiplier for the single continuous comet streak; scales its smooth body and energetic detail together. 2.35 (default) cinematic broad; 1.0 = baseline. |
| cl_avfx_comets | default 0 / 0 or 1 | Master toggle for AVFX celestial comets. Slow, rare, non-impact sky bodies with a glowing nucleus/coma and one continuous anti-sun streak composed of independently switchable smooth and energetic components. Independent of stars and weather preset. Default OFF (opt-in). |
| cl_avfx_competitive_limit | 0=no clamp / 1=clamp during multiplayer (default) | When cl.maxclients > 1 and demo_visual is not active, clamps effective alpha (≤0.30), density (≤0.50), rain beams (≤64) and particles (≤96) so atmospheric effects can't compromise target visibility in real matches. Demo playback ignores this clamp. |
| cl_avfx_constellation_alpha | default 0.05 / range 0.0..1.0 / step 0.05 | Constellation line alpha. 0.05 (default) gives a very subtle guide — barely visible at night, never overpowers the actual stars. 0 hides them entirely; 1.0 paints them at full strength. Multiplied by the same day/moon/cloud fade as the stars so lines disappear during day or under thick clouds. |
| cl_avfx_constellation_lines | default 1 / 0 or 1 | Master toggle for the constellation line overlay. Draws subtle blue-white lines connecting the named anchor stars of Big Dipper / Orion / Cassiopeia / Cygnus / Lyra / Aquila. Rendered via sky-shader angular-distance check, NOT world-space RF_BEAM — lines live on the celestial sphere with the stars. Visible only when cl_avfx_stars 1. Default ON. |
| cl_avfx_constellations_real | default 1 / 0 or 1 | Master toggle for the real Hipparcos-ID-resolved constellation line overlay (674-segment Stellarium Western skyculture data joined through HIP IDs into unit-vector endpoints). ON (default) replaces the classic 27-segment hand-curated table with real Stellarium lines. Visible only when cl_avfx_stars 1. |
| cl_avfx_constellations_real_alpha | default 0.15 / range 0.0..1.0 / step 0.05 | Real constellation line alpha. 0.15 (default) — subtle blue-white guide; 0 = invisible; 1.0 = full strength. Multiplied by the same day/moon/cloud fade as stars so lines disappear during daylight or under dense clouds. |
| cl_avfx_constellations_real_count | default 256 / range 13..674 / step 16 | Active real constellation segment count cap. Only applies when cl_avfx_constellations_real_mode 2 (all Western); in mode 1 (major) the count is fixed to the leading 158 segments. Default 256 covers major + some additional. Max 674 (all uploaded segments). |
| cl_avfx_constellations_real_mode | default 2 / 0 classic / 1 major / 2 all | Real-lines mode selector. 0 — classic fallback: hand-curated 27-segment table (6 named groups). 1 — major constellations only (13: Orion / Ursa Major / Ursa Minor / Cassiopeia / Cygnus / Lyra / Scorpius / Sagittarius / Leo / Gemini / Taurus / Pegasus / Andromeda, 158 segments). 2 (default) — all 88 Western constellations up to cl_avfx_constellations_real_count cap. |
| cl_avfx_contact | 0=off / 1=on (default) | Master switch for the whole Player Contact layer: blood on living opponents, sprays and fountains, stains and pools on the world, corpse leakage, BFG vaporization and weapon-specific impact marks. It is a child of the AVFX master, so cl_avfx 0 switches everything here off as well. Off means exactly zero work: no queueing, no attribution, no traces, no ticks, no particles, no marks and no shader submits. |
| cl_avfx_contact_blood | 0=off / 1=on (default) | Family switch for every blood visual: model wounds, airborne spray, world stains, water response and corpse pools. Off keeps the stock Quake II blood; it does not hide flesh hits. |
| cl_avfx_contact_blood_alpha | 0.00..1.00 / 0.92 default | Base opacity of every blood visual before age and lighting are applied. |
| cl_avfx_contact_blood_amount | 0.00..3.00 / 1.00 default | Global multiplier on how much blood a contact produces. It scales the emission, not the size of a single droplet. |
| cl_avfx_contact_blood_b | 0.00..1.00 | Blue channel of the blood colour. The same colour is used for model wounds, airborne blood and world stains; lighting may darken it but never replaces it. |
| cl_avfx_contact_blood_corpse | 0=off / 1=on (default) | Wound-fed leakage and a growing pool under a body, released only when death is actually proven. A disappearance on its own is never treated as a death, so no phantom pool appears. |
| cl_avfx_contact_blood_corpse_flow | 0.00..3.00 / 1.00 default | How fast the stored blood leaves a proven corpse and feeds its pool. |
| cl_avfx_contact_blood_corpse_lifetime | 0..600 seconds / 120 default | How long a corpse pool and its leak stay. 0 disables corpse pools entirely. |
| cl_avfx_contact_blood_drag | 0.10..3.00 / 1.00 default | How quickly airborne blood loses speed. Higher values make short, heavy spatter; lower values make long filaments. |
| cl_avfx_contact_blood_g | 0.00..1.00 | Green channel of the blood colour. The same colour is used for model wounds, airborne blood and world stains; lighting may darken it but never replaces it. |
| cl_avfx_contact_blood_gravity | 0.00..3.00 / 1.00 default | How strongly airborne blood falls. 0.00 leaves it floating along its initial direction. |
| cl_avfx_contact_blood_model | 0=off / 1=on (default) | Irregular wounds projected onto the opponent's model at the real hit point. They follow the animation instead of sliding, and expire on their own lifetime or when the model changes. |
| cl_avfx_contact_blood_model_lifetime | 0..600 seconds / 45 default | How long a wound stays on a living model. 0 disables model wounds entirely and purges the ones already there. |
| cl_avfx_contact_blood_model_reflection | 0=off (default) / 1=on | Coloured local model reflections clipped to actual horizontal blood footprints. At least one category below must be enabled. |
| cl_avfx_contact_blood_model_reflection_actors | 0=off (default) / 1=on | Allow players and monsters to reflect in blood pools. |
| cl_avfx_contact_blood_model_reflection_armor | 0=off (default) / 1=on | Allow armor to reflect in blood pools. |
| cl_avfx_contact_blood_model_reflection_items | 0=off (default) / 1=on | Allow items to reflect in blood pools. |
| cl_avfx_contact_blood_model_reflection_projectiles | 0=off (default) / 1=on | Allow projectiles and rail beam to reflect in blood pools. |
| cl_avfx_contact_blood_model_reflection_quality | 0=Performance / 1=Medium / 2=Quality (default) / 3=Ultra / 4=Extra | Controls receiver population and distance before model replay work. |
| cl_avfx_contact_blood_model_reflection_strength | 0.00..1.00 / 0.65 default | Opacity of coloured model reflections in blood. |
| cl_avfx_contact_blood_model_reflection_weapons | 0=off (default) / 1=on | Allow pickup weapons to reflect in blood pools. |
| cl_avfx_contact_blood_r | 0.00..1.00 | Red channel of the blood colour. The same colour is used for model wounds, airborne blood and world stains; lighting may darken it but never replaces it. |
| cl_avfx_contact_blood_reflection_distort | 0.00..1.00 / 0.00 default | Optional moving-liquid distortion shared by blood SSR and model reflection. |
| cl_avfx_contact_blood_reflection_distort_speed | 0.00..5.00 / 1.00 default | Travel speed of reflection ripples; 0 freezes their animation. |
| cl_avfx_contact_blood_scene_reflection | 0=off (default) / 1=on | Real screen-space reflection in horizontal blood sheets. Blood owns one SSR layer on BSP and Surface Materials; on AVFX puddles or water it inherits the existing liquid reflection to prevent a duplicate pass. |
| cl_avfx_contact_blood_scene_reflection_quality | 0=Low / 1=Medium (default) / 2=High / 3=Ultra | SSR march precision. Higher values are crisper and cost more GPU time. |
| cl_avfx_contact_blood_scene_reflection_strength | 0.00..1.00 / 0.55 default | Strength of the world/static SSR contribution in blood. |
| cl_avfx_contact_blood_size | 0.25..3.00 / 1.00 default | Scales droplets, wounds and stains together. |
| cl_avfx_contact_blood_spray | 0=off / 1=on (default) | Ballistic blood in the air: droplets, filaments and mist thrown from the wound. Sustained fire builds a repeated fountain and it decays naturally after you release the trigger. |
| cl_avfx_contact_blood_spread | 0.10..3.00 / 1.00 default | Angular width of the spray around the impact direction. |
| cl_avfx_contact_blood_surface | 0=off / 1=on (default) | Splashes, stains and running drips on real floors and walls, clipped to the actual surface so nothing hangs over an edge or runs through a wall. |
| cl_avfx_contact_blood_surface_lifetime | 0..600 seconds / 90 default | How long a blood stain stays on the world. 0 disables persistent stains and purges the ones already there. |
| cl_avfx_contact_blood_sustained | 0.00..3.00 / 1.00 default | How much continuous fire on the same target builds the fountain. 0.00 makes every hit independent. |
| cl_avfx_contact_blood_velocity | 0.25..3.00 / 1.00 default | Initial speed of the blood leaving the wound. Higher values throw it farther before gravity and drag take over. |
| cl_avfx_contact_blood_viscosity | 0.10..3.00 / 1.00 default | How thickly blood spreads and runs on a surface. Higher values keep it tight and slow; lower values let it spread wide and thin. |
| cl_avfx_contact_blood_water | 0=off / 1=on (default) | Blood reaching real BSP water spreads as a short-lived dye film on the animated liquid surface; blood reaching an existing AVFX puddle stays inside its real boundary and ripples it. |
| cl_avfx_contact_debris | 0=off / 1=on (default) | Physical chips and fragments thrown from the real impact surface. The amount and size remain weapon-specific below. |
| cl_avfx_contact_debris_amount | 0.00..3.00 / 1.00 default | Global multiplier for every weapon's debris count. |
| cl_avfx_contact_debris_gravity | 0.00..3.00 / 1.00 default | Gravity multiplier for surface fragments. |
| cl_avfx_contact_debris_lifetime | 0.10..5.00 seconds / 1.20 default | How long airborne surface fragments remain visible. |
| cl_avfx_contact_debris_size | 0.25..3.00 / 1.00 default | Global multiplier for fragment size, independent from count. |
| cl_avfx_contact_debug | 0=off (default) / 1=on for this session / 2=verbose / 3=+surface pass without depth test / 4=+pass tint: magenta=reflection lift, green=pigment, cyan=wounds | Session-only Player Contact tracing. Costs exactly zero while off: no probe, counter, timer or print runs. Never written to any cfg or preset, so it is off again after a restart. |
| cl_avfx_contact_decal_alpha | 0.00..1.00 / 0.95 default | Base opacity of every weapon impact mark. |
| cl_avfx_contact_decal_lifetime | 0..900 seconds / 120 default | How long a weapon impact mark stays. 0 disables persistent marks and purges the ones already there; the transient stock impact feedback is kept either way. |
| cl_avfx_contact_decal_roughness | 0.00..2.00 / 1.00 default | How strongly a mark takes on the surface it landed on. Higher values deepen the difference between a dry wall, wet stone and metal. |
| cl_avfx_contact_decal_size | 0.25..3.00 / 1.00 default | Global multiplier on the size of every weapon impact mark. |
| cl_avfx_contact_decals | 0=off / 1=on (default) | Weapon- and material-specific impact marks on world surfaces: punctures, pellet clusters, plasma char, rail grooves and blast soot. Each mark is clipped to the real surface and never crosses an edge or a wall. |
| cl_avfx_contact_distance | 256..8192 world units / 2048 default | Contacts farther than this from the camera are not submitted for drawing. Lower values keep a busy fight cheap without changing what actually happened. |
| cl_avfx_contact_lod | 0.25..2.00 / 1.00 default | Scales the AMOUNT of everything the layer emits, inside the hard caps. Below 1.00 it thins satellites, smoke lobes and collision probes first, and the immediate hit feedback last. |
| cl_avfx_contact_max_collision_probes | 0..512 / 192 default | How many representative droplet trajectories may be traced against the world each frame. Untraced droplets render as satellites of a traced one. |
| cl_avfx_contact_max_debris | 0..1024 / 512 default | Hard cap on airborne surface fragments across all weapon impacts. |
| cl_avfx_contact_max_decals | 0..1536 / 512 default | Hard cap on weapon impact marks present in the world. |
| cl_avfx_contact_max_droplets | 0..2048 / 768 default | Hard cap on visible blood droplets. The active quality tier may lower it further; it can never raise it. |
| cl_avfx_contact_max_model_marks | 0..256 / 96 default | Hard cap on animated wounds across every target at once. |
| cl_avfx_contact_max_surface_blood | 0..1024 / 384 default | Hard cap on blood stains, drips and pools present in the world. |
| cl_avfx_contact_max_targets | 1..64 / 32 default | How many opponents keep their own wound, burst and reservoir state at once. The least recently hit target is dropped first. |
| cl_avfx_contact_max_vapor | 0..512 / 128 default | Hard cap on vaporization residue, smoke and shimmer records. |
| cl_avfx_contact_profile | 0=off (default) / 1=on for this session | Session-only Player Contact timing. Measures the simulation and submission cost of this layer. Costs exactly zero while off and is never written to any cfg or preset. |
| cl_avfx_contact_quality | 0=Low / 1=Basic / 2=High (default) / 3=Extra | Detail and per-frame budget of the contact layer. Each tier carries its own immutable ceilings on droplets, collision probes, model marks, world blood, impact marks and vapor; your own caps below can only lower them, never raise them. |
| cl_avfx_contact_vapor_heat_haze | 0=off / 1=on (default) | Short-lived air distortion over a vaporized body. It is optional by backend capability: where the renderer cannot provide it, the rest of the vaporization is unchanged and nothing is substituted. |
| cl_avfx_contact_vapor_residue | 0.00..3.00 / 1.00 default | How much scorched residue a vaporizing hit leaves on the target and the nearest valid surface. |
| cl_avfx_contact_vapor_residue_lifetime | 0..600 seconds / 6 default | How long vaporization residue stays. 0 disables it. |
| cl_avfx_contact_vapor_smoke | 0.00..3.00 / 1.00 default | How many smoke lobes rise from a vaporized target. |
| cl_avfx_contact_vapor_smoke_height | 0.25..3.00 / 1.00 default | How high the smoke climbs above the body volume. |
| cl_avfx_contact_vapor_smoke_lifetime | 0..60 seconds / 2 default | How long each smoke lobe lives. 0 disables the smoke. |
| cl_avfx_contact_vaporize | 0=off / 1=on (default) | Family switch for weapon-configured vaporization: a confident hit leaves scorched residue, layered smoke and heat. This is an additional visual family and never disables blood; each weapon's live and corpse blood coefficients decide that independently. The body-shaped vapor release needs proven death. |
| cl_avfx_contact_weapon_bfg_corpse_blood | 0.00..4.00 / 0 = no corpse pool for this weapon | How much blood a BFG10K kill stores for the corpse: the leak from the wounds and the pool that grows under the body once death is proven. |
| cl_avfx_contact_weapon_bfg_debris | 0.00..4.00 / 0 = no surface debris | Amount of physical surface fragments thrown by a BFG10K impact. 0 disables only debris for this weapon; the impact mark is independent. |
| cl_avfx_contact_weapon_bfg_debris_size | 0.25..4.00 | Size multiplier for surface fragments thrown by a BFG10K impact. |
| cl_avfx_contact_weapon_bfg_decal | 0.00..4.00 / 0 = no surface mark for this weapon | Size and weight of the mark a BFG10K impact leaves on a wall, a floor or another world surface. |
| cl_avfx_contact_weapon_bfg_enable | 0=off / 1=on (default) | Master switch for every Player Contact effect caused by the BFG10K. Off leaves the stock Quake II effect for that weapon untouched. |
| cl_avfx_contact_weapon_bfg_live_blood | 0.00..4.00 / 0 = no live blood for this weapon | How much blood a BFG10K hit puts on a LIVING opponent: the spray, the wound on the model and the stain it leaves on the world. 0 disables only the blood for this weapon. |
| cl_avfx_contact_weapon_bfg_vaporize | 0=off / 1=add vaporization | Add vaporization for the BFG10K: scorched residue, layered smoke and heat alongside any blood configured for this weapon. Only the BFG uses vaporization by default. |
| cl_avfx_contact_weapon_blaster_corpse_blood | 0.00..4.00 / 0 = no corpse pool for this weapon | How much blood a Blaster kill stores for the corpse: the leak from the wounds and the pool that grows under the body once death is proven. |
| cl_avfx_contact_weapon_blaster_debris | 0.00..4.00 / 0 = no surface debris | Amount of physical surface fragments thrown by a Blaster impact. 0 disables only debris for this weapon; the impact mark is independent. |
| cl_avfx_contact_weapon_blaster_debris_size | 0.25..4.00 | Size multiplier for surface fragments thrown by a Blaster impact. |
| cl_avfx_contact_weapon_blaster_decal | 0.00..4.00 / 0 = no surface mark for this weapon | Size and weight of the mark a Blaster impact leaves on a wall, a floor or another world surface. |
| cl_avfx_contact_weapon_blaster_enable | 0=off / 1=on (default) | Master switch for every Player Contact effect caused by the Blaster. Off leaves the stock Quake II effect for that weapon untouched. |
| cl_avfx_contact_weapon_blaster_live_blood | 0.00..4.00 / 0 = no live blood for this weapon | How much blood a Blaster hit puts on a LIVING opponent: the spray, the wound on the model and the stain it leaves on the world. 0 disables only the blood for this weapon. |
| cl_avfx_contact_weapon_blaster_vaporize | 0=off / 1=add vaporization | Add vaporization for the Blaster: scorched residue, layered smoke and heat alongside any blood configured for this weapon. Only the BFG uses vaporization by default. |
| cl_avfx_contact_weapon_chaingun_corpse_blood | 0.00..4.00 / 0 = no corpse pool for this weapon | How much blood a Chaingun kill stores for the corpse: the leak from the wounds and the pool that grows under the body once death is proven. |
| cl_avfx_contact_weapon_chaingun_debris | 0.00..4.00 / 0 = no surface debris | Amount of physical surface fragments thrown by a Chaingun impact. 0 disables only debris for this weapon; the impact mark is independent. |
| cl_avfx_contact_weapon_chaingun_debris_size | 0.25..4.00 | Size multiplier for surface fragments thrown by a Chaingun impact. |
| cl_avfx_contact_weapon_chaingun_decal | 0.00..4.00 / 0 = no surface mark for this weapon | Size and weight of the mark a Chaingun impact leaves on a wall, a floor or another world surface. |
| cl_avfx_contact_weapon_chaingun_enable | 0=off / 1=on (default) | Master switch for every Player Contact effect caused by the Chaingun. Off leaves the stock Quake II effect for that weapon untouched. |
| cl_avfx_contact_weapon_chaingun_live_blood | 0.00..4.00 / 0 = no live blood for this weapon | How much blood a Chaingun hit puts on a LIVING opponent: the spray, the wound on the model and the stain it leaves on the world. 0 disables only the blood for this weapon. |
| cl_avfx_contact_weapon_chaingun_vaporize | 0=off / 1=add vaporization | Add vaporization for the Chaingun: scorched residue, layered smoke and heat alongside any blood configured for this weapon. Only the BFG uses vaporization by default. |
| cl_avfx_contact_weapon_generic_corpse_blood | 0.00..4.00 / 0 = no corpse pool for this weapon | How much blood a Generic / fallback kill stores for the corpse: the leak from the wounds and the pool that grows under the body once death is proven. |
| cl_avfx_contact_weapon_generic_debris | 0.00..4.00 / 0 = no surface debris | Amount of physical surface fragments thrown by a Generic / fallback impact. 0 disables only debris for this weapon; the impact mark is independent. |
| cl_avfx_contact_weapon_generic_debris_size | 0.25..4.00 | Size multiplier for surface fragments thrown by a Generic / fallback impact. |
| cl_avfx_contact_weapon_generic_decal | 0.00..4.00 / 0 = no surface mark for this weapon | Size and weight of the mark a Generic / fallback impact leaves on a wall, a floor or another world surface. |
| cl_avfx_contact_weapon_generic_enable | 0=off / 1=on (default) | Master switch for every Player Contact effect caused by the Generic / fallback. Off leaves the stock Quake II effect for that weapon untouched. |
| cl_avfx_contact_weapon_generic_live_blood | 0.00..4.00 / 0 = no live blood for this weapon | How much blood a Generic / fallback hit puts on a LIVING opponent: the spray, the wound on the model and the stain it leaves on the world. 0 disables only the blood for this weapon. |
| cl_avfx_contact_weapon_generic_vaporize | 0=off / 1=add vaporization | Add vaporization for the Generic / fallback: scorched residue, layered smoke and heat alongside any blood configured for this weapon. Only the BFG uses vaporization by default. |
| cl_avfx_contact_weapon_grenadelauncher_corpse_blood | 0.00..4.00 / 0 = no corpse pool for this weapon | How much blood a Grenade Launcher kill stores for the corpse: the leak from the wounds and the pool that grows under the body once death is proven. |
| cl_avfx_contact_weapon_grenadelauncher_debris | 0.00..4.00 / 0 = no surface debris | Amount of physical surface fragments thrown by a Grenade Launcher impact. 0 disables only debris for this weapon; the impact mark is independent. |
| cl_avfx_contact_weapon_grenadelauncher_debris_size | 0.25..4.00 | Size multiplier for surface fragments thrown by a Grenade Launcher impact. |
| cl_avfx_contact_weapon_grenadelauncher_decal | 0.00..4.00 / 0 = no surface mark for this weapon | Size and weight of the mark a Grenade Launcher impact leaves on a wall, a floor or another world surface. |
| cl_avfx_contact_weapon_grenadelauncher_enable | 0=off / 1=on (default) | Master switch for every Player Contact effect caused by the Grenade Launcher. Off leaves the stock Quake II effect for that weapon untouched. |
| cl_avfx_contact_weapon_grenadelauncher_live_blood | 0.00..4.00 / 0 = no live blood for this weapon | How much blood a Grenade Launcher hit puts on a LIVING opponent: the spray, the wound on the model and the stain it leaves on the world. 0 disables only the blood for this weapon. |
| cl_avfx_contact_weapon_grenadelauncher_vaporize | 0=off / 1=add vaporization | Add vaporization for the Grenade Launcher: scorched residue, layered smoke and heat alongside any blood configured for this weapon. Only the BFG uses vaporization by default. |
| cl_avfx_contact_weapon_handgrenade_corpse_blood | 0.00..4.00 / 0 = no corpse pool for this weapon | How much blood a Hand Grenade kill stores for the corpse: the leak from the wounds and the pool that grows under the body once death is proven. |
| cl_avfx_contact_weapon_handgrenade_debris | 0.00..4.00 / 0 = no surface debris | Amount of physical surface fragments thrown by a Hand Grenade impact. 0 disables only debris for this weapon; the impact mark is independent. |
| cl_avfx_contact_weapon_handgrenade_debris_size | 0.25..4.00 | Size multiplier for surface fragments thrown by a Hand Grenade impact. |
| cl_avfx_contact_weapon_handgrenade_decal | 0.00..4.00 / 0 = no surface mark for this weapon | Size and weight of the mark a Hand Grenade impact leaves on a wall, a floor or another world surface. |
| cl_avfx_contact_weapon_handgrenade_enable | 0=off / 1=on (default) | Master switch for every Player Contact effect caused by the Hand Grenade. Off leaves the stock Quake II effect for that weapon untouched. |
| cl_avfx_contact_weapon_handgrenade_live_blood | 0.00..4.00 / 0 = no live blood for this weapon | How much blood a Hand Grenade hit puts on a LIVING opponent: the spray, the wound on the model and the stain it leaves on the world. 0 disables only the blood for this weapon. |
| cl_avfx_contact_weapon_handgrenade_vaporize | 0=off / 1=add vaporization | Add vaporization for the Hand Grenade: scorched residue, layered smoke and heat alongside any blood configured for this weapon. Only the BFG uses vaporization by default. |
| cl_avfx_contact_weapon_hyperblaster_corpse_blood | 0.00..4.00 / 0 = no corpse pool for this weapon | How much blood a Hyperblaster kill stores for the corpse: the leak from the wounds and the pool that grows under the body once death is proven. |
| cl_avfx_contact_weapon_hyperblaster_debris | 0.00..4.00 / 0 = no surface debris | Amount of physical surface fragments thrown by a Hyperblaster impact. 0 disables only debris for this weapon; the impact mark is independent. |
| cl_avfx_contact_weapon_hyperblaster_debris_size | 0.25..4.00 | Size multiplier for surface fragments thrown by a Hyperblaster impact. |
| cl_avfx_contact_weapon_hyperblaster_decal | 0.00..4.00 / 0 = no surface mark for this weapon | Size and weight of the mark a Hyperblaster impact leaves on a wall, a floor or another world surface. |
| cl_avfx_contact_weapon_hyperblaster_enable | 0=off / 1=on (default) | Master switch for every Player Contact effect caused by the Hyperblaster. Off leaves the stock Quake II effect for that weapon untouched. |
| cl_avfx_contact_weapon_hyperblaster_live_blood | 0.00..4.00 / 0 = no live blood for this weapon | How much blood a Hyperblaster hit puts on a LIVING opponent: the spray, the wound on the model and the stain it leaves on the world. 0 disables only the blood for this weapon. |
| cl_avfx_contact_weapon_hyperblaster_vaporize | 0=off / 1=add vaporization | Add vaporization for the Hyperblaster: scorched residue, layered smoke and heat alongside any blood configured for this weapon. Only the BFG uses vaporization by default. |
| cl_avfx_contact_weapon_machinegun_corpse_blood | 0.00..4.00 / 0 = no corpse pool for this weapon | How much blood a Machinegun kill stores for the corpse: the leak from the wounds and the pool that grows under the body once death is proven. |
| cl_avfx_contact_weapon_machinegun_debris | 0.00..4.00 / 0 = no surface debris | Amount of physical surface fragments thrown by a Machinegun impact. 0 disables only debris for this weapon; the impact mark is independent. |
| cl_avfx_contact_weapon_machinegun_debris_size | 0.25..4.00 | Size multiplier for surface fragments thrown by a Machinegun impact. |
| cl_avfx_contact_weapon_machinegun_decal | 0.00..4.00 / 0 = no surface mark for this weapon | Size and weight of the mark a Machinegun impact leaves on a wall, a floor or another world surface. |
| cl_avfx_contact_weapon_machinegun_enable | 0=off / 1=on (default) | Master switch for every Player Contact effect caused by the Machinegun. Off leaves the stock Quake II effect for that weapon untouched. |
| cl_avfx_contact_weapon_machinegun_live_blood | 0.00..4.00 / 0 = no live blood for this weapon | How much blood a Machinegun hit puts on a LIVING opponent: the spray, the wound on the model and the stain it leaves on the world. 0 disables only the blood for this weapon. |
| cl_avfx_contact_weapon_machinegun_vaporize | 0=off / 1=add vaporization | Add vaporization for the Machinegun: scorched residue, layered smoke and heat alongside any blood configured for this weapon. Only the BFG uses vaporization by default. |
| cl_avfx_contact_weapon_railgun_corpse_blood | 0.00..4.00 / 0 = no corpse pool for this weapon | How much blood a Railgun kill stores for the corpse: the leak from the wounds and the pool that grows under the body once death is proven. |
| cl_avfx_contact_weapon_railgun_debris | 0.00..4.00 / 0 = no surface debris | Amount of physical surface fragments thrown by a Railgun impact. 0 disables only debris for this weapon; the impact mark is independent. |
| cl_avfx_contact_weapon_railgun_debris_size | 0.25..4.00 | Size multiplier for surface fragments thrown by a Railgun impact. |
| cl_avfx_contact_weapon_railgun_decal | 0.00..4.00 / 0 = no surface mark for this weapon | Size and weight of the mark a Railgun impact leaves on a wall, a floor or another world surface. |
| cl_avfx_contact_weapon_railgun_enable | 0=off / 1=on (default) | Master switch for every Player Contact effect caused by the Railgun. Off leaves the stock Quake II effect for that weapon untouched. |
| cl_avfx_contact_weapon_railgun_live_blood | 0.00..4.00 / 0 = no live blood for this weapon | How much blood a Railgun hit puts on a LIVING opponent: the spray, the wound on the model and the stain it leaves on the world. 0 disables only the blood for this weapon. |
| cl_avfx_contact_weapon_railgun_vaporize | 0=off / 1=add vaporization | Add vaporization for the Railgun: scorched residue, layered smoke and heat alongside any blood configured for this weapon. Only the BFG uses vaporization by default. |
| cl_avfx_contact_weapon_rocketlauncher_corpse_blood | 0.00..4.00 / 0 = no corpse pool for this weapon | How much blood a Rocket Launcher kill stores for the corpse: the leak from the wounds and the pool that grows under the body once death is proven. |
| cl_avfx_contact_weapon_rocketlauncher_debris | 0.00..4.00 / 0 = no surface debris | Amount of physical surface fragments thrown by a Rocket Launcher impact. 0 disables only debris for this weapon; the impact mark is independent. |
| cl_avfx_contact_weapon_rocketlauncher_debris_size | 0.25..4.00 | Size multiplier for surface fragments thrown by a Rocket Launcher impact. |
| cl_avfx_contact_weapon_rocketlauncher_decal | 0.00..4.00 / 0 = no surface mark for this weapon | Size and weight of the mark a Rocket Launcher impact leaves on a wall, a floor or another world surface. |
| cl_avfx_contact_weapon_rocketlauncher_enable | 0=off / 1=on (default) | Master switch for every Player Contact effect caused by the Rocket Launcher. Off leaves the stock Quake II effect for that weapon untouched. |
| cl_avfx_contact_weapon_rocketlauncher_live_blood | 0.00..4.00 / 0 = no live blood for this weapon | How much blood a Rocket Launcher hit puts on a LIVING opponent: the spray, the wound on the model and the stain it leaves on the world. 0 disables only the blood for this weapon. |
| cl_avfx_contact_weapon_rocketlauncher_vaporize | 0=off / 1=add vaporization | Add vaporization for the Rocket Launcher: scorched residue, layered smoke and heat alongside any blood configured for this weapon. Only the BFG uses vaporization by default. |
| cl_avfx_contact_weapon_shotgun_corpse_blood | 0.00..4.00 / 0 = no corpse pool for this weapon | How much blood a Shotgun kill stores for the corpse: the leak from the wounds and the pool that grows under the body once death is proven. |
| cl_avfx_contact_weapon_shotgun_debris | 0.00..4.00 / 0 = no surface debris | Amount of physical surface fragments thrown by a Shotgun impact. 0 disables only debris for this weapon; the impact mark is independent. |
| cl_avfx_contact_weapon_shotgun_debris_size | 0.25..4.00 | Size multiplier for surface fragments thrown by a Shotgun impact. |
| cl_avfx_contact_weapon_shotgun_decal | 0.00..4.00 / 0 = no surface mark for this weapon | Size and weight of the mark a Shotgun impact leaves on a wall, a floor or another world surface. |
| cl_avfx_contact_weapon_shotgun_enable | 0=off / 1=on (default) | Master switch for every Player Contact effect caused by the Shotgun. Off leaves the stock Quake II effect for that weapon untouched. |
| cl_avfx_contact_weapon_shotgun_live_blood | 0.00..4.00 / 0 = no live blood for this weapon | How much blood a Shotgun hit puts on a LIVING opponent: the spray, the wound on the model and the stain it leaves on the world. 0 disables only the blood for this weapon. |
| cl_avfx_contact_weapon_shotgun_vaporize | 0=off / 1=add vaporization | Add vaporization for the Shotgun: scorched residue, layered smoke and heat alongside any blood configured for this weapon. Only the BFG uses vaporization by default. |
| cl_avfx_contact_weapon_supershotgun_corpse_blood | 0.00..4.00 / 0 = no corpse pool for this weapon | How much blood a Super Shotgun kill stores for the corpse: the leak from the wounds and the pool that grows under the body once death is proven. |
| cl_avfx_contact_weapon_supershotgun_debris | 0.00..4.00 / 0 = no surface debris | Amount of physical surface fragments thrown by a Super Shotgun impact. 0 disables only debris for this weapon; the impact mark is independent. |
| cl_avfx_contact_weapon_supershotgun_debris_size | 0.25..4.00 | Size multiplier for surface fragments thrown by a Super Shotgun impact. |
| cl_avfx_contact_weapon_supershotgun_decal | 0.00..4.00 / 0 = no surface mark for this weapon | Size and weight of the mark a Super Shotgun impact leaves on a wall, a floor or another world surface. |
| cl_avfx_contact_weapon_supershotgun_enable | 0=off / 1=on (default) | Master switch for every Player Contact effect caused by the Super Shotgun. Off leaves the stock Quake II effect for that weapon untouched. |
| cl_avfx_contact_weapon_supershotgun_live_blood | 0.00..4.00 / 0 = no live blood for this weapon | How much blood a Super Shotgun hit puts on a LIVING opponent: the spray, the wound on the model and the stain it leaves on the world. 0 disables only the blood for this weapon. |
| cl_avfx_contact_weapon_supershotgun_vaporize | 0=off / 1=add vaporization | Add vaporization for the Super Shotgun: scorched residue, layered smoke and heat alongside any blood configured for this weapon. Only the BFG uses vaporization by default. |
| cl_avfx_coverage_update_hz | 5..120 Hz (default 30) | How often the accelerated backend rebuilds the dirty regions of the snow coverage atlas, in rebuilds per second. Lower values spend less CPU on atlas maintenance at the cost of slower reaction to changes; the animated fill ramp in the shader keeps the result visually smooth between rebuilds. Forced rebuilds (cvar change, preset, map load, backend switch) bypass the cadence entirely. Accelerated backend only (cl_avfx_backend 1); the Classic backend ignores this cvar entirely. |
| cl_avfx_cpu_affinity | 0=leave placement to the OS / 1=pin workers to cores (default) | Pin AVFX worker threads to specific CPU cores instead of leaving placement to the OS scheduler. Latched: the value is applied when the worker pool is created, so a change takes effect on the next pool re-initialisation (map change or restart), not immediately. |
| cl_avfx_cpu_ecores | 0=performance cores only / 1=efficiency cores allowed (default) | Allow AVFX worker threads to be placed on efficiency cores on hybrid CPUs. Turning this off keeps AVFX work on performance cores only, which raises throughput per worker but leaves fewer cores for the rest of the client. Latched together with cl_avfx_cpu_affinity. |
| cl_avfx_cpu_workers | -1=auto from core layout (default) / 0=no pool, inline / 1..N=explicit worker count | Size of the AVFX background worker pool that runs particle, field and receiver jobs off the main thread. -1 lets Q2PRO-X pick a size from the detected core layout; 0 disables the pool and runs every AVFX job inline on the client thread, which is the slowest but most predictable setting. The pool is re-initialised on the next frame after the value changes, so it can be tuned live without a restart. |
| cl_avfx_demo | 0=disable during demos / 1=allow during demos (default) | Allow AVFX during .dm2 / .mvd2 demo playback. When enabled, the cvars are saved to baseq2/q2pro-x/demo_visual/q2pro-x.demo.cfg and restored from there on next playback. |
| cl_avfx_density | 0.0..1.0 (default 0.35) | Manual density slider for the active preset. Combined with cl_avfx_weather_level to compute effective density. Higher values use more of the per-quality budget; competitive limit caps the effective value at 0.50 in multiplayer. |
| cl_avfx_dust_color_b | 0..1 (menu step 0.02, default 0.68) | Dust base color, blue channel. Requires cl_avfx 1 and the dust preset (cl_avfx_preset 4). |
| cl_avfx_dust_color_g | 0..1 (menu step 0.02, default 0.7) | Dust base color, green channel. Requires cl_avfx 1 and the dust preset (cl_avfx_preset 4). |
| cl_avfx_dust_color_r | 0..1 (menu step 0.02, default 0.7) | Dust base color, red channel. Requires cl_avfx 1 and the dust preset (cl_avfx_preset 4). |
| cl_avfx_dust_color_variation | 0..1 (menu step 0.05, default 0.25) | Per-particle color spread around the dust base color. Requires cl_avfx 1 and the dust preset (cl_avfx_preset 4). |
| cl_avfx_dust_shapes | 0=Off / 1=On (default 1) | Give dust varied speck/crumb/mote silhouettes instead of round dots. Requires cl_avfx 1 and the dust preset (cl_avfx_preset 4). |
| cl_avfx_dust_size_variation | 0..1 (menu step 0.05, default 0.6) | How much dust particle size varies around the base size. Requires cl_avfx 1 and the dust preset (cl_avfx_preset 4). |
| cl_avfx_earth | 0=off (default) / 1=on | Master toggle for the AVFX Earth disk in the sky. Independent from the sun and moon. Earth is rendered in the sky shader as a cloud-aware blue-marble planet with horizon fade and day/night phase shading, drawn alongside the Moon / Sun / Stars. Default OFF (opt-in). When master is 0, the disk is fully suppressed. |
| cl_avfx_earth_azimuth | default 205 / range 0..359 / step 1 / degrees | Earth azimuth in degrees (manual mode only). Same convention as sun: 0 = north, 90 = east, 180 = south, 270 = west. Default 205 ~ south-southwest. |
| cl_avfx_earth_brightness | default 0.85 / range 0.0..5.0 / step 0.05 | Earth disk brightness multiplier. 0.85 (default) keeps the tuned Earth visible in dark AVFX scenes. Up to 5.0 for a cinematic super-bright Earth. 0 disables disk emission. |
| cl_avfx_earth_cloud_occlusion | default 0.75 / range 0.0..1.0 / step 0.05 | Cloud occlusion strength on the Earth disk. 0 = Earth ignores clouds; 0.75 (default) = the sky's clouds pass in front of Earth according to the AVFX cloud field while preserving tuned visibility. |
| cl_avfx_earth_color_b | default 1.00 / range 0.0..2.0 / step 0.01 | Earth color: blue channel. 1.00 (default). See cl_avfx_earth_color_r. |
| cl_avfx_earth_color_g | default 1.00 / range 0.0..2.0 / step 0.01 | Earth color: green channel. 1.00 (default). See cl_avfx_earth_color_r. |
| cl_avfx_earth_color_r | default 1.00 / range 0.0..2.0 / step 0.01 | Earth color: red channel. 1.00 (default = shader identity). Parallel to the sun and moon color controls. Tints the visible Earth disk and its local halo. 1.00/1.00/1.00 leaves the blue-marble texture unshifted. |
| cl_avfx_earth_dark_side_visibility | default 1.0 / range 0.0..1.0 / step 0.01 | Visibility of the Earth body on the unlit night side of the phase. Uses a smooth nonlinear curve: 1.0 (default) keeps the accepted dark disk and faint surface texture; 0.0 fully removes the unlit body, including its star mask. Low values grow gently instead of popping in. |
| cl_avfx_earth_edge_smooth_inset | default 0.00 / range 0.00..0.30 / step 0.01 / applies live | Optional smoothing inset from the Earth limb, as a fraction of Earth radius. 0 (default) disables smoothing and keeps a sharp edge with crisp surface detail. Higher values create a wider clean soft band and can intentionally blur edge details. |
| cl_avfx_earth_elevation | default 36 / range -90..90 / step 1 / degrees | Earth elevation above horizon in degrees (manual mode only). Default 36 ~ moderately high in the sky. Near the horizon Earth fades out via the horizon envelope. |
| cl_avfx_earth_halo_alpha | default 1.0 / range 0.0..1.0 / step 0.05 | Earth local sky-shader halo opacity multiplier. 1.0 keeps the previous tuned halo visibility. 0 makes the halo fully transparent. This multiplies halo brightness and does not affect the Earth disk. |
| cl_avfx_earth_halo_brightness | default 1.0 / range 0.0..5.0 / step 0.05 | Earth local sky-shader halo brightness multiplier. 1.0 keeps the previous tuned halo intensity. 0 removes halo light. Values above 1.0 strengthen the glow. |
| cl_avfx_earth_halo_phase_shape | 0=legacy round halo / 1=phase-shaped halo (default) | Mask the local Earth halo by the Earth phase shape. 1 (default) makes partial-phase halos follow the same curved day/night terminator as the visible Earth disk. 0 restores the legacy round halo. |
| cl_avfx_earth_halo_size | default 1.0 / range 0.0..4.0 / step 0.01 | Earth local sky-shader halo radius multiplier (atmosphere glow). 1.0 keeps the previous tuned halo around the Earth disk. 0 fully removes the local halo. Values above 1.0 broaden the glow without changing the Earth disk size. |
| cl_avfx_earth_hd_texture | 0=4K (default) / 1=8K / 2=16K / applies live | Earth surface texture resolution for the AVFX Earth disk. 0 (default) uses the 4K blue-marble texture; 1 switches the same spherical/equirectangular Earth mapping to 8K; 2 uses 16K. 16K needs a native (non-ANGLE) GL backend; unsupported levels fall back 16K->8K->4K. Applies live on a loaded map and preserves the current Earth orientation, phase, halo and clouds. |
| cl_avfx_earth_mode | default 0 (manual) / range 0..2 / 0=manual 1=opposite_sun 2=cycle/clock | Earth position mode. 0 (default) = manual — use cl_avfx_earth_azimuth / cl_avfx_earth_elevation. 1 = opposite sun — Earth mirrors the sun's direction. 2 = cycle/clock — follow the sun's time mode but offset by 12 hours so Earth rises as the sun sets. |
| cl_avfx_earth_phase | default 1.00 / range 0.0..1.0 / step 0.05 | Earth phase 0..1 (day/night terminator). 0 = night side facing you (lit part invisible; dark body visibility is controlled by cl_avfx_earth_dark_side_visibility); 0.5 = half lit; 1.0 (default) = fully lit day side of the disk. The sky shader lights a virtual Earth sphere, so partial phases use a curved terminator instead of a straight cut. |
| cl_avfx_earth_rotation_mode | default 0 (manual) / range 0..1 / 0=manual 1=realtime_auto | Earth body rotation mode. 0 (default) = manual — fixed yaw/pitch/roll offsets from the sliders below. 1 = realtime auto — the yaw/pitch/roll speeds below are integrated over time (never writes the cvars). Default rotation is identity, so the accepted Earth look is unchanged. |
| cl_avfx_earth_rotation_pitch | default 0 / range -180..180 / step 1 / degrees | Earth pitch (poles up/down) in degrees. Lets you inspect the top/bottom of the disk. 0 (default) keeps the accepted orientation. |
| cl_avfx_earth_rotation_pitch_speed | default 0.00 / range -10.0..10.0 / step 0.01 / deg/s | Earth auto pitch speed in degrees per second (realtime auto mode). 0.00 (default) = no pitch drift; negative tilts the opposite direction. |
| cl_avfx_earth_rotation_roll | default 0 / range -180..180 / step 1 / degrees | Earth roll (disk rolls on screen) in degrees. 0 (default) keeps the accepted orientation. |
| cl_avfx_earth_rotation_roll_speed | default 0.00 / range -10.0..10.0 / step 0.01 / deg/s | Earth auto roll speed in degrees per second (realtime auto mode). 0.00 (default) = no roll drift; negative rolls the opposite direction. |
| cl_avfx_earth_rotation_yaw | default 0 / range -360..360 / step 1 / degrees | Earth yaw (longitude spin) in degrees. Manual-mode fixed offset; also the starting angle in realtime auto. 0 (default) keeps the accepted orientation. |
| cl_avfx_earth_rotation_yaw_speed | default 0.05 / range -10.0..10.0 / step 0.01 / deg/s | Earth auto yaw speed in degrees per second (realtime auto mode). 0.05 (default) is a slow drift; negative spins the opposite direction; 0 freezes yaw. |
| cl_avfx_earth_size | default 1.95 / engine range 0.1..3000.0 / menu 0.1..100.0 step 0.15 | Earth disk angular size multiplier. 1.95 (default) gives a prominent in-game blue-marble; the menu slider goes up to 100.0, while console/cfg still accept the engine range up to 3000.0 for an extreme cinematic enlarged Earth. |
| cl_avfx_earth_sky_brightness | default 1.0 / range 0.0..1.0 / step 0.01 | How strongly Earth brightness lifts the surrounding sky. 1.0 (default) preserves the accepted look. 0.0 keeps the Earth disk bright but leaves the sky much darker, which is useful for a bright Earth + dark sky + visible stars. Does NOT change Earth disk brightness or the local Earth halo. |
| cl_avfx_earth_smooth | 1=smooth mip/aniso (default) / 0=sharp GL_LINEAR / applies live | Smooth the AVFX Earth disk texture with mipmap / trilinear / anisotropic filtering. 1 (default) keeps the Earth smooth with no shimmer while it rotates. 0 disables smoothing and samples the texture at plain GL_LINEAR (no mipmaps, no anisotropy), so a non-rotating Earth looks crisp and sharp. Applies live and does not reload the Earth texture. |
| cl_avfx_flashlight | 0=off (default) / 1=on | Master toggle for the AVFX player flashlight. When ON, the active local view casts a directional cone light that brightens nearby BSP/entity surfaces (engine dlight) and AVFX celestial-aware materials (snow, water, puddles, instanced snowflakes, snow material stamps, secondary CPU emitters) within the configured range and cone. Combines with lightning local surface illumination via max() — the stronger local light wins; no over-saturation. Off by default (opt-in). Visual-only — no protocol/server/gameplay changes; in multiplayer the flashlight is local-render only. Works in deathmatch 0/1, coop and demo playback. |
| cl_avfx_flashlight_angle | default 79 / range 5..90 / step 1 / deg | Full cone angle in degrees. 79 (default) is the accepted tuned wide flashlight cone; lower values produce a tight spotlight; higher values up to 90 give a flood light. Acts together with softness to control how sharply the cone edge falls off. |
| cl_avfx_flashlight_battery | 0=off (default) / 1=on | Visual battery simulation toggle. When OFF (default) the flashlight runs indefinitely. When ON, the intensity envelope drains over the configured cl_avfx_flashlight_battery_minutes and the final 20% dims toward zero so the player gets a visible warning. Re-enabling the flashlight after drain resets the timer. Visual only — no item pickup / no gameplay resource / no server state. |
| cl_avfx_flashlight_battery_minutes | default 10 / range 1..60 / step 1 / min | Battery life in minutes when cl_avfx_flashlight_battery is on. 10 (default) is a reasonable single-section duration. Lower for arcade tension; higher for chill ambience. |
| cl_avfx_flashlight_beam | default 0 / reserved / v2 | RESERVED v2 — beam haze visuals are not implemented in this landing (Codex Q-FL4 binding answer 2026-05-24). When the visible volumetric / haze beam is added in a future landing it will be gated on this cvar; for now the cvar is exposed for preset/tuning completeness and has no visible effect. |
| cl_avfx_flashlight_color_b | default 0.4 / range 0..2 / step 0.05 | Blue component of the flashlight tint. See cl_avfx_flashlight_color_r for usage. Lower B + higher R/G = warmer; higher B = cooler. |
| cl_avfx_flashlight_color_g | default 0.45 / range 0..2 / step 0.05 | Green component of the flashlight tint. See cl_avfx_flashlight_color_r for usage. |
| cl_avfx_flashlight_color_r | default 0.45 / range 0..2 / step 0.05 | Red component of the flashlight tint. 0.45 (default) with G=0.45 / B=0.40 is the accepted neutral-warm tuned color. |
| cl_avfx_flashlight_dlight | 0=off / 1=on (default) | Sub-toggle for the engine dlight component of the flashlight. When ON (default) the engine adds a local dynamic light anchored slightly forward from the camera so nearby BSP/entity surfaces and lit-by-engine props receive direct illumination. When OFF, only the shader cone boost on AVFX celestial-aware materials runs — far AVFX snow/water still brightens, but ordinary walls do not. |
| cl_avfx_flashlight_flicker | default 0.05 / range 0..1 / step 0.01 | Brightness flicker amount. 0.05 (default) = very subtle living light. 0 = perfectly stable beam. Up to 1.0 = strong horror-movie flicker driven by deterministic time-based noise (no per-client RNG differences). Cosmetic; intended for ambience scenes. |
| cl_avfx_flashlight_intensity | default 1.5 / range 0..5 / step 0.05 | Flashlight final intensity envelope. 1.5 (default) is the PO-accepted tuned brightness for night AVFX scenes. 0.0 = off. Up to 5.0 widens the effective hotspot but the per-fragment boost is still clamped to 1.0 (no material overbright). Combined with surface alpha, battery and flicker envelopes. |
| cl_avfx_flashlight_range | default 960 / range 64..2048 / step 32 / wu | Maximum range of the flashlight cone in world units. 960 (default) is the accepted tuned indoor/outdoor compromise. Lower values shrink to a close-range work-light; higher values up to 2048 wu cover open outdoor scenes. Engine dlight radius scales with this cvar so the near-surface bright pool also grows. |
| cl_avfx_flashlight_shadow_bias | default 0.009 / range 0..0.05 / step 0.001 | Depth compare bias. Subtracted from receiver depth before comparing against the stored caster depth (Codex Q-FLS8: lit when receiver_depth - bias <= stored_caster_depth). Too low → self-shadow acne. Too high → peter-panning. Default 0.009 is the accepted tuned value for current flashlight shadows. Constant bias for v1; slope-aware bias deferred. |
| cl_avfx_flashlight_shadow_debug | default 0 / 0=off / 1=map / 2=visibility / 3=projection (diagnostic, current session only) | Flashlight shadow diagnostic mode. 0=off. 1 prints / reports shadow-map stats. 2 overlays red/green visibility so occluded and lit fragments are obvious. 3 shows projection diagnosis colors. Tuning / debugging only; keep 0 for normal play. |
| cl_avfx_flashlight_shadow_focus_down | default 4 / range 0..192 / step 4 / wu | Optional downward aim offset for the shadow-map light only. 4 (default) is the accepted subtle floor-bias. 0 aims the shadow map at the same crosshair target as the visible cone. Higher values pull the shadow projection downward, which can help tune floor-cast silhouettes without changing the visible flashlight spot. |
| cl_avfx_flashlight_shadow_items | default 1 / 0=item shadows off / 1=item shadows on (default) | Allow item / pickup model entities to cast flashlight shadows. When OFF, weapon pickups, ammo, health and armor packs in the flashlight cone do not contribute to the shadow map (other classes — monsters, players — still cast per their own toggles). Default ON. |
| cl_avfx_flashlight_shadow_max_casters | default 61 / range 0..64 / step 1 | Maximum number of entities that can cast a flashlight shadow per frame. Caster pool is bounded — the renderer collects all visible candidates inside the flashlight cone, sorts by priority (beam distance, viewer distance, bounding size, entity index tie-breaker), then truncates to this cap. Lower values = lower GPU cost; higher values = more entities can cast shadows simultaneously. Hard limit 64. |
| cl_avfx_flashlight_shadow_monsters | default 1 / 0=monster shadows off / 1=monster shadows on (default) | Allow monster entities (NPCs) to cast flashlight shadows. When OFF, monsters in the flashlight cone do not contribute to the shadow map. Default ON — monster shadows are typically the most visually rewarding part of the feature. |
| cl_avfx_flashlight_shadow_offset_forward | default -4 / range -64..64 / step 1 / wu | Forward/back offset of the flashlight shadow-map light source from the camera, in world units. Negative values put the shadow source slightly behind the eye, approximating a shoulder/weapon-mounted flashlight; positive values push it forward. |
| cl_avfx_flashlight_shadow_offset_right | default 16 / range -64..64 / step 1 / wu | Horizontal offset of the flashlight shadow-map light source from the camera, in world units. Positive values move the shadow source to the player's right while the visible flashlight cone still follows the crosshair. This separates the shadow caster light from the eye and helps produce readable silhouettes instead of eye-aligned flat shadows. |
| cl_avfx_flashlight_shadow_offset_up | default 10 / range -64..64 / step 1 / wu | Vertical offset of the flashlight shadow-map light source from the camera, in world units. Positive values lift the shadow source above the eye, which usually gives more natural floor/wall silhouettes for weapon and item models. |
| cl_avfx_flashlight_shadow_players | default 1 / 0=player shadows off / 1=player shadows on (default) | Allow other player entities to cast flashlight shadows. When OFF, remote players (DM/coop) do not contribute to the shadow map even if inside the flashlight cone. The LOCAL player camera-space model (first-person view weapon) is always excluded — that's not the same as another player's third-person model. Default ON. |
| cl_avfx_flashlight_shadow_quality | default 2 / 0..3 / Low/Medium/High/Ultra | Shadow map quality / resolution tier. 0=Low 512×512 (cheapest, blocky edges). 1=Medium 1024×1024. 2=High 1536×1536 (default; accepted tuned quality). 3=Ultra 2048×2048. Backend caps the tier at GL_MAX_TEXTURE_SIZE; on backends where 2048 FBO is incomplete the renderer falls back one step and reports the effective resolution in cl_avfx_info. |
| cl_avfx_flashlight_shadow_softness | default 0.4 / range 0..1 / step 0.05 | PCF (Percentage Closer Filtering) kernel width scale, in shadow-map texels. 0.0 = hardest edges. 0.4 (default) = accepted soft but still readable edges. 1.0 = widest soft edges. Actual sample count follows cl_avfx_flashlight_shadow_quality: Low=4 taps, Medium=9 taps, High/Ultra=16 taps. Cosmetic — does not change the shadow silhouette, only edge softness. |
| cl_avfx_flashlight_shadow_strength | default 0.85 / range 0..1 / step 0.05 | Visibility scalar — controls how dark fully-occluded fragments get. 0.0 = shadows fully transparent (effectively disabled). 0.85 (default) = accepted strong but still readable shadows. 1.0 = maximum visibility — fully shadowed fragments lose the entire flashlight contribution. Never affects the base scene brightness; only the flashlight boost is multiplied by visibility. |
| cl_avfx_flashlight_shadows | default 1 / 0=off / 1=on (default) | Master toggle for AVFX player flashlight dynamic GPU shadows. When ON, the renderer builds an RGBA8 packed-depth shadow map from the flashlight POV every frame and the common BSP world fragment shader samples it to darken the flashlight contribution on shadowed walls/floors/ceilings. Default ON as part of the accepted flashlight preset, but it has no cost or visible effect while the master cl_avfx_flashlight remains OFF by default. Shadows modulate ONLY the flashlight boost; the base scene brightness is never darkened. |
| cl_avfx_flashlight_softness | default 0 / range 0..1 / step 0.05 | Softness of the cone edge. 0 (default) = crisp tuned cone; higher values soften the edge, and 1.0 makes the whole cone smoothly fade from center to edge. Cosmetic — does not affect cone angle or range. |
| cl_avfx_flashlight_surface_alpha | default 0.22 / range 0..1 / step 0.01 | Surface light alpha / opacity for the flashlight contribution. Applied after cone shape, range falloff, battery and flicker are evaluated, so lowering it softens the final material blend without changing cone size or hotspot shape. Use this when the flashlight washes out nearby walls or models while cl_avfx_flashlight_intensity is already tuned for range. |
| cl_avfx_freeze_trace | default 0 / 0=off, >0=trace (diagnostic, current session only) | Developer-only: traces/holds an AVFX frame for inspection. 0=off. Not archived, no menu; zero cost at 0. |
| cl_avfx_global_disable | 0=respect per-mod AVFX settings (default) / 1=force AVFX effectively off in every mod | Global master override that forces the Q2PRO-X Advanced Visual Effects layer effectively off in every mod. Unlike the per-mod cl_avfx master (mod-local / demo_visual scope), this is a single global switch saved to the global Q2PRO-X config (baseq2/q2pro-x/q2pro-x.cfg). 0 (default) leaves AVFX to each mod's local cl_avfx value and presets. 1 makes AVFX effectively off everywhere (emit, update, render, audio, sky/stars/celestial, water/snow/reflection) regardless of the local cl_avfx value. It never rewrites any local cl_avfx or preset value — set it back to 0 and each mod's existing AVFX settings return unchanged. Effective AVFX state = cl_avfx on AND this override off; cl_avfx_info reports raw cl_avfx, this override, and the resulting effective state. |
| cl_avfx_height | 128..2048 (default 512) | Vertical height (in world units) of the camera-local weather volume. Effects spawn above and cycle through this column. |
| cl_avfx_lava_steam | 0=off / 1=visual contact steam on lava (default) | Visual steam puffs when real rain/snow impact samples hit lava and soft surface-melt puffs where snow mass evaporates near lava edges. 1 (default) keeps steam contact-driven and capped so the screen is not flooded. Skipped while the camera is inside water/lava/slime. Requires cl_avfx_world 1 and the rain or snow AVFX preset. Sharp particle-contact audio is controlled by cl_avfx_audio_lava_steam; soft surface-melt audio is controlled by cl_avfx_audio_lava_surface_steam. |
| cl_avfx_lava_steam_alpha | 0..1 (menu step 0.05, default 1) | Steam opacity (0 = invisible, 1 = normal); applies immediately to all puffs. --live. Requires cl_avfx 1 + cl_avfx_lava_steam 1. |
| cl_avfx_lava_steam_density | 0..2 (default 0.5) | Spawn density multiplier for rain/snow contact steam on lava, 0..2. 0 disables spawning without clearing existing short-lived puffs; 0.5 is subtle default, 1.0+ is denser cinematic steam. Effective spawn rate also follows AVFX weather density. |
| cl_avfx_lava_steam_edge_radius | 0..96 wu (default 60) | Small edge-catch radius for lava steam in world units, 0..96. When a real sky-exposed rain/snow impact lands near lava but the exact trace point misses the lava surface, nearby lava within this radius may still emit throttled steam/hiss. This preserves rim realism at sky holes without restoring autonomous lava scanning. 0 disables the edge catch. |
| cl_avfx_lava_steam_height | 8..256 wu (default 64) | Maximum visual rise height for lava steam puffs in world units, 8..256. Higher values let puffs climb farther before fading. |
| cl_avfx_lava_steam_size | 0.1..2 (menu step 0.05, default 0.4) | Steam puff diameter multiplier; applies to newly spawned puffs, not ones already floating. --live. Requires cl_avfx 1 + cl_avfx_lava_steam 1. |
| cl_avfx_lava_steam_speed | 8..160 wu/sec (default 40) | Upward movement speed for lava steam puffs in world units per second, 8..160. Visual-only; does not affect gameplay or physics. |
| cl_avfx_lightning | 0=no flashes / 1=allow flashes (default) | Allow visual lightning events when storm is enabled. The first safe implementation uses a brief bright dlight (~110 ms flash) near the view origin so combat visibility is not disturbed. Disable to keep storm audio behaviour without on-screen flashes. |
| cl_avfx_lightning_bloom | 0=off / 1=on (default) | Master toggle for lightning bloom halo around the realistic bolt: broad halo / overexposed light mass. Implementation uses priority-banded additive halo layers (Codex Q2 Option B); inner layers are priority 3, outer layers priority 4 — outer layers skip first under RF_BEAM budget pressure. Halo intensity follows the bolt brightness envelope (rises with leader, peaks at peak_ratio, decays with the bolt) plus a continuous smoothstep afterglow tail when cl_avfx_lightning_bloom_afterglow > 0. With cl_avfx_lightning_bloom_force_post enabled, AVFX lightning halo can use its own post-bloom path (downsample/blur/composite) even when global gl_bloom is disabled — RF_AVFX_FORCE_BLOOM beam batches keep the bloom MRT attachment alive via the AVFX keep-alive signal. When this master is 0, the accepted core + cl_avfx_lightning_glow corona remain intact. |
| cl_avfx_lightning_bloom_afterglow | default 0.55 / range 0.00..1.00 / step 0.05 | Afterglow tail as a fraction of bolt duration. 0 = no tail (bloom dies with the bolt); 0.55 (default) ≈ 20% extra tail; up to 1.0 = a luminous afterimage of the same length as the bolt itself. The tail uses a smoothstep continuous envelope — no visual discontinuity at duration_ms (Codex Q7 continuous binding). During the tail the halo is capped at 40% of peak intensity so it reads as fading afterimage rather than a second flash. The slot stays alive for max(arc_tail_ms, duration_ms × bloom_afterglow) so halos can survive past the bolt. |
| cl_avfx_lightning_bloom_force_post | 0=off (legacy additive halo) / 1=on (default — true post-bloom when gl_bloom 0) | Renderer-forced lightning bloom post-pass. When 1 (default) AND global gl_bloom is 0 AND lightning visual system is active, the bloom MRT attachment + downsample/blur/composite stay alive even though gl_bloom is off, and RF_AVFX_FORCE_BLOOM-flagged halo beam batches write into the MRT so AVFX lightning halo gets true post-process glow independent of global bloom. When gl_bloom is already 1 this is a no-op increment (existing global bloom path handles lightning halo as before; no double-bloom). When 0, behavior reverts to legacy additive halo only (the halo reads as bloom only with gl_bloom 1). Does NOT mutate gl_bloom; does NOT make non-AVFX-lightning geometry bloom; keep-alive is per cvar state (toggling cvar/preset triggers FBO rebuild) not per strike (no rebuild flicker between strikes). |
| cl_avfx_lightning_bloom_intensity | default 5 / range 0.00..5.00 / step 0.05 | Bloom halo overall intensity multiplier. 0 disables the halo (master still on; useful to A/B with cl_avfx_lightning_bloom 0). 5 (default) baseline visible halo. Up to 5.0 for cinematic overexposed storms. Intensity is multiplied per layer by the layer falloff so outer layers stay subordinate to inner ones. |
| cl_avfx_lightning_bloom_layers | default 4 / range 1..5 / step 1 | Number of additive halo layers around the bolt. 1 = single thin halo; 4 (default) = three concentric layers (good readable bloom mass); up to 5 for rich overexposed glow. Each additional layer increases visual richness but also RF_BEAM consumption against the per-frame budget (Q2PROX_LIGHTNING_BEAM_BUDGET = 256). Inner half of the layers are priority 3; outer half priority 4 — outer layers are skipped first under budget pressure to keep the bolt readable. |
| cl_avfx_lightning_bloom_radius | default 2.9 / range 0.25..4.00 / step 0.05 | Bloom halo radius / width multiplier. 0.25 = thin halo close to the bolt; 2.9 (default) baseline broad halo; up to 4.0 = wide overexposed mass that bleeds far from the bolt. The accepted glow corona (cl_avfx_lightning_glow) is unaffected — bloom layers sit OUTSIDE the glow corona. Halo width also scales with the bolt width envelope so leader-phase halos are narrower than peak-phase halos. |
| cl_avfx_lightning_branch_decay | default 0.62 / range 0.35..0.85 / step 0.01 | Per-level decay of width, brightness, length, and fork count. Applied multiplicatively: at each child level the parent's parameters are multiplied by this value. 0.35 = rapid attenuation (deep levels barely visible); 0.62 (default) baseline; 0.85 = slow attenuation (deep levels nearly as bright as their parent). The same decay value gates the per-parent fork count formula via pow(decay, level-1), so deeper levels naturally produce fewer forks with no extra cvar. |
| cl_avfx_lightning_branch_density | default 1 / range 0.00..3.00 / step 0.05 | Branch arc density. The strike generator picks 0-2 branch arcs per strike randomly; this cvar scales how many of those generated branches are emitted as visible beams. 0 disables branches entirely. 1 (default) emits all generated branches. Higher values clamp to the generated count. Branches appear later in the leader phase (life >= leader_ratio) and fade faster than the main bolt during decay (Codex Q7). |
| cl_avfx_lightning_branch_forking | default 1 / range 0.00..3.00 / step 0.05 | Child fork amount multiplier for level 2+ branches. Codex Q5 separated semantics — this knob does NOT replace cl_avfx_lightning_branch_density (which still controls level-1 branch emission count). 0 disables child forks entirely (level-1 branches only, even if branch_levels >= 2). 1 (default) baseline tree; up to 3.0 = many child forks. Per-parent fork count = clamp(round(2.0 × forking × decay^(level-1)), 0, 5). Combined with high branch_levels values, this drives the visual richness of the multi-level tree. |
| cl_avfx_lightning_branch_levels | default 3 / range 0..4 / step 1 | Maximum branch hierarchy depth. 0 = trunk only, no branches at all (even if cl_avfx_lightning_branch_density > 0). 3 (default) = level-1 branches only (foundation primary branches controlled by branch_density; tree-from-trunk topology with per-branch width/brightness decay — close to reference lightning look). 2..4 = recursive child branches up to that depth. Deeper levels are short-lived and dimmer per cl_avfx_lightning_branch_decay. Child branches are generated stateless deterministic per-frame from (strike.seed, level, parent_idx, fork_idx) — no per-strike storage. Hard cap 64 branches per strike (Q2PROX_LIGHTNING_BRANCH_HARD_CAP). NOTE: setting this above 1 produces a busier visual that may not match the reference photo; PO smoke 2026-05-22 lowered the default to 1 for clean reference-matching look. |
| cl_avfx_lightning_branch_spread | default 1.95 / range 0.25..3.00 / step 0.05 | Lateral spread / length multiplier for child branches. Modulates how far each child travels away from its parent. 0.25 = tight tree near the trunk (child branches stay close to parent); 1.95 (default) baseline; up to 3.0 = wide far-reaching branches that extend significantly past the bolt's main visible reach. Combined with high branch_levels and branch_forking this creates dramatic stormy spread; at low values the tree stays compact and electric-arc-like. |
| cl_avfx_lightning_cloud_illum | 0=off / 1=on (default) | Master toggle for AVFX lightning localized cloud illumination. When an active realistic lightning strike fires, the cloud layer near the bolt's sky-side anchor (s->verts[0][0]) brightens unevenly via a central glow blob + N-1 irregular satellite blobs. Positions seeded per-strike (constant across the strike's lifetime); only intensity changes over time. Implementation uses a dedicated AVFX_OVERLAY_CLOUD_ILLUM overlay kind (additive blend, no cull, no puddle/snow shader bits) — NOT a renderer sky-shader rewrite. Per-strike viewer visibility trace (cl.refdef.vieworg → anchor against MASK_SOLID) skips strikes occluded by ceiling/walls so closed rooms do not show cloud glow through solid geometry. Bloom MRT participation: when global gl_bloom is enabled OR AVFX force-post keep-alive holds the bloom attachment alive, cloud blobs write to the MRT and get post-process amplification (same condition the bolt halo + beam batches use). When master is 0 OR cl_avfx OR storm/lightning effective state is off OR cl_avfx_lightning_realistic is 0, cloud illumination is fully suppressed. Visual-only — never affects gameplay damage, scoring, or protocol. |
| cl_avfx_lightning_cloud_illum_afterglow | default 1 / range 0.00..1.00 / step 0.05 | Cloud illumination afterglow tail as a fraction of bolt duration. 0 = no tail (glow dies with the bolt); 1 (default) ≈ 30% extra restrained tail; up to 1.0 = full bolt-length luminous afterimage on the cloud layer. The tail uses the bloom-factor smoothstep envelope scaled by this cvar — when 0 the tail is fully suppressed even if the bloom afterglow itself is non-zero. Default 0.3 is intentionally restrained so cloud glow does not linger too long. |
| cl_avfx_lightning_cloud_illum_blobs | default 7 / range 1..9 / step 1 | Number of cloud illumination blobs per active strike. 1 = single central glow (clean simple look); 7 (default) = central + 4 irregular satellites (matches reference storm photos); up to 9 for rich uneven illumination. Bounded by per-frame Q2PROX_LIGHTNING_CLOUD_ILLUM_BUDGET = 48 blobs/frame; with 8 concurrent strikes × 9 blobs the budget caps at 48 — diagnostic skipped_budget counter shows when this triggers. |
| cl_avfx_lightning_cloud_illum_intensity | default 5 / range 0.00..5.00 / step 0.05 | Cloud illumination overall intensity multiplier. 0 disables (master still on; useful to A/B with cl_avfx_lightning_cloud_illum 0). 5 (default) baseline visible glow. Up to 5.0 for cinematic overexposed storms. Intensity is multiplied per blob by its satellite-index alpha falloff so deeper satellites stay subordinate to the central blob. |
| cl_avfx_lightning_cloud_illum_radius | default 1.55 / range 0.25..4.00 / step 0.05 | Cloud illumination radius / blob size multiplier. 0.25 = compact glow tight near the bolt source; 1.55 (default) baseline visible cloud light; up to 4.0 = wide diffuse glow that bleeds across the sky. Affects both central blob diameter (320..420 wu base) and satellite blob diameters (120..260 wu base) and satellite XY offset distance (120..360 wu base). Larger radius = wider spread + larger individual blobs. |
| cl_avfx_lightning_duration | 0.1..10.0 (default 1.8) | Bolt visible duration multiplier. 1.8 (default) keeps the baseline ~180 ms flash window; 10.0 holds the bolt on screen up to ~1.8 s; 0.1 collapses it to a quick ~30 ms flicker. The screen-flash envelope (fade-in / sustain / fade-out) scales proportionally so short bolts feel sharp and long bolts feel like sustained discharge. |
| cl_avfx_lightning_frequency | 0.1..100.0 (default 8.1; effective cadence floors at ~0.30 s) | Lightning rate multiplier independent from cl_avfx_storm_density. 8.1 (default) keeps the baseline cadence; 0.1 stretches the mean interval ~10× (rare distant flickers). Higher values make storms denser, but the effective mean interval is FLOORED at ~0.30 s (~3.3 strikes/s) — values 4..100 all produce roughly the same maximum cadence at the floor. The 4..100 headroom is for combining with low storm_density / future tuning, not literal Nx baseline. Strikes that fail visibility / sky-cell checks reschedule on the same frequency-scaled retry curve. |
| cl_avfx_lightning_glow | default 5 / range 0.00..5.00 / step 0.05 | Outer-glow intensity around the inner core. The glow is rendered as a wider blue/violet beam underneath the white core for an electric-corona look. 0 disables the glow pass entirely (saves ~half the per-strike RF_BEAM count). 5 (default) gives a strong visible halo. Higher values exaggerate the bloom contribution. |
| cl_avfx_lightning_impact_dlight | 0=no impact dlight / 1=impact dlight (default) | Toggle for the warm dlight added at the lightning impact point. 1 (default) keeps the rocket-style warm orange dlight (auto-halved on SURF_WARP surfaces). 0 disables the impact dlight entirely — useful on maps where lots of bright impacts wash out water / glass / metal hue. Bolt geometry, per-vertex bolt dlights, explosion particles, smoke flash and screen flash are unaffected. |
| cl_avfx_lightning_impact_scale | 0..5 (default 5) | Lightning impact size multiplier. 5 (default) reproduces the rocket-impact baseline (2 explosion bursts at the strike point + smoke flash + 600-intensity warm dlight). 5.0 maxes the strike out to 10 explosion bursts spread across a ~160-unit radius, multiple smoke flashes and a 3000-intensity dlight — the bolt feels like it tore a crater. 0 disables the impact effect entirely (bolt geometry + screen flash still fire normally). Reuses the existing rocket gameplay visuals (CL_ExplosionParticles + CL_SmokeAndFlash) so it always matches the engine's rocket explosion look. Strikes that land on SURF_WARP surfaces (water / lava / slime) automatically get a halved burst count and dlight intensity to avoid tinting nearby water. |
| cl_avfx_lightning_leader_ratio | default 0.31 / range 0.05..0.60 / step 0.01 | Leader-phase fraction of total strike duration (cl_avfx_lightning_duration). Until life > leader_ratio the bolt is thin and dim, propagating top-to-bottom from the sky. Smaller values feel near-instantaneous; larger values stretch the visible descent. Clamped to 0.05..0.60. Must be less than cl_avfx_lightning_peak_ratio - 0.05; if not, the engine clamps internally. |
| cl_avfx_lightning_local_surface_falloff | default 1 / range 0.25..4 / step 0.05 | Curve shape control for how the boost falls off with distance from the strike impact. 1 (default) gives a standard smoothstep falloff (soft hotspot ramp to zero at radius edge). Lower values (e.g. 0.5) widen / soften the hotspot so a larger area brightens uniformly. Higher values (e.g. 2.0) tighten the hotspot to a sharp contact glow that fades quickly with distance. Cosmetic tuning — does not affect strike timing or damage. |
| cl_avfx_lightning_local_surface_light | 0=off / 1=on (default) | Master toggle for the local lightning surface illumination effect. When ON (default), areas around realistic AVFX lightning strikes brighten celestial-dimmed AVFX materials/effects (snow, water, puddles, rings, foam, runoff, dust, splashes) toward zenith daylight. Built on the accepted P1i realistic strike state (impact origin + brightness envelope) so the boost follows the bolt's natural rise/peak/decay. Spatial and bounded — far materials remain at their celestial night value, only the area within cl_avfx_lightning_local_surface_radius reacts. VISUAL-ONLY: does not change lightning damage / damage radius / monster wraps / breakable damage. Requires cl_avfx 1 + realistic lightning + active storm. |
| cl_avfx_lightning_local_surface_radius | default 800 / range 64..4096 / step 64 | Radius in world units around each lightning strike impact within which celestial-dimmed AVFX materials brighten toward daylight. 800 (default) roughly matches the accepted lightning damage-radius scale but is independent — this is purely visual. At the strike center the boost reaches 1.0 (max daylight); with distance from the impact the boost falls off smoothly back to the normal celestial night value. |
| cl_avfx_lightning_local_surface_strength | default 1 / range 0..2 / step 0.05 | How strongly the local lightning boost pushes celestial-dimmed materials toward maximum daylight. 1 (default) means a peak-brightness strike CENTER reaches the accepted daytime / zenith look on snow + water + secondary effects; the per-fragment boost is clamped to 1.0 so the strength cvar widens the effective hotspot but does NOT create material overbright. 0 = no boost (off equivalent via strength). Up to 2.0 = wider hotspot reaches max boost over a larger area. |
| cl_avfx_lightning_monster_arc_intensity | default 2 / range 0.00..3.00 / step 0.05 | Brightness / dlight intensity multiplier for the monster wrap arcs. 2 (default); higher brightens both the arcs and the cool blue glow dlight. 0 disables visual emission even when the master is on. |
| cl_avfx_lightning_monster_arcs | 0=off / 1=on (default) | Master toggle for monster electric wraps. When a monster is damaged by AVFX lightning (cl_sp_avfx_lightning_damage 1 + lightning hits in radius), the client renders short-lived electric arcs orbiting the monster's bbox center for 1.5..3.5 s + a cool blue-white dlight on the monster (glow). Visual-only — never adds damage, never alters scoring. Requires cl_avfx_lightning_realistic 1 and local SP / DM-training (game-side cue gated to local SP). |
| cl_avfx_lightning_monster_corpse_fx | 0=no corpse fx / 1=corpse fx (default) | When a monster dies FROM lightning damage, emit a brief warm fire-flash dlight at the corpse + a small dim cool dlight fading over ~6 s as a 'scorch mark' cue. Visual only — never adds damage. Default on. Set to 0 to skip the corpse FX (wrap arcs during the hit still fire). |
| cl_avfx_lightning_peak_ratio | default 0.8 / range 0.10..0.80 / step 0.01 | Peak-timing fraction of total strike duration. Bolt brightness/thickness reach maximum at this point; screen flash alpha peaks at the same moment (Codex binding). After peak, the bolt fades and thins until total lifetime expires. Clamped to 0.10..0.80 and to >= leader_ratio + 0.05. |
| cl_avfx_lightning_realistic | 0=legacy constant-brightness / 1=realistic envelope (default) | Master toggle for the realistic lightning lifecycle: dim/thin leader from sky, brightness/thickness peak in sync with the screen flash, smooth fade-out. Default 1 (realistic on). Set to 0 to restore the old constant-brightness visual behavior for comparison; gameplay damage path (cl_sp_avfx_lightning_damage*) is unaffected. Total lifetime remains controlled by cl_avfx_lightning_duration. Per-strike envelope uses cl_avfx_lightning_leader_ratio + cl_avfx_lightning_peak_ratio. Performance is bounded by an internal RF_BEAM/frame cap (96 entities across all active lightning visuals). |
| cl_avfx_lightning_screen_flash | 0=tint off / 1=tint on (default) | Toggle for the fullscreen blue-white tint that paints over the screen during a lightning strike. 0 (default) shows the tint when the player has open sky overhead AND the bolt is in line-of-sight; 0 keeps the bolt and impact effect but skips the tint entirely — useful for users who find the per-strike screen wash distracting. Bolt geometry, the per-vertex dlights along the bolt path and the rocket-style impact at the strike point are all unaffected. |
| cl_avfx_lightning_sky_flash | 0=off / 1=on (default) | Master toggle for AVFX lightning broad sky flash / sheet lightning. Brightens the WHOLE visible sky during a lightning strike — sheet-lightning style — separate from cl_avfx_lightning_screen_flash (fullscreen camera tint) and from cl_avfx_lightning_cloud_illum (localized blobs at strike source). When cl_avfx_lightning_realistic 1, the flash scalar comes from the strongest active strike's brightness envelope (q2prox_strike_brightness during bolt lifetime + restrained bloom-factor tail scaled by cl_avfx_lightning_sky_flash_afterglow). When realistic 0, fallback uses the legacy 30/60 ms window driven by avfx_lightning_flash_ms / _peak. Sky-pixel only — applied inside GLS_AVFX_SKY shader path, so closed indoor rooms without visible sky do not receive the flash (no fullscreen rectangle over walls/items/weapons). When this master is 0, the scalar is 0 regardless of envelope source. Effective gate: master AND cl_avfx AND avfx_should_emit AND storm/lightning effective state. |
| cl_avfx_lightning_sky_flash_afterglow | default 0.25 / range 0.00..1.00 / step 0.05 | Sky flash afterglow tail as a fraction of bolt duration. 0 = no tail (sky flash dies with the bolt); 0.25 (default) ≈ 25% extra restrained tail; up to 1.0 = bolt-length sky afterglow. The tail uses the bloom-factor smoothstep envelope scaled by this cvar — when 0 the tail is fully suppressed even if the bolt's bloom afterglow itself is non-zero. Default 0.25 is intentionally restrained so sky brightening does not linger long after the bolt fades; sky flash is meant to read as a momentary sheet-lightning pulse, not a slow sustained glow. |
| cl_avfx_lightning_sky_flash_coverage | default 1.15 / range 0.25..4.00 / step 0.05 | Sky flash coverage / spatial spread. Controls how broadly the flash spreads across the sky dome (separate from intensity which controls brightness). 0.25 = tight bright zone clustered toward zenith (compact dramatic flash); 1.15 (default) baseline; up to 4.0 = wide flat brightening across the whole sky dome (uniform sheet of light). Internally maps to the shader's spread exponent pow(zen, 1/coverage). At low coverage the brightest zone is near the top of the sky; at high coverage even horizon-low pixels brighten significantly. |
| cl_avfx_lightning_sky_flash_intensity | default 2 / range 0.00..5.00 / step 0.05 | Sky flash intensity multiplier — controls BRIGHTNESS of the broad sky flash. 0 disables the flash (master still on; useful to A/B with cl_avfx_lightning_sky_flash 0). 2 (default) baseline visible sheet-lightning brightening. Up to 5.0 for cinematic overexposed storm flashes. Final scalar is intensity × envelope, clamped to 1.0 — diagnostic cl_avfx_info shows clamped=N counter when the cap triggers under heavy lightning cadence. |
| cl_avfx_lightning_sky_flash_tint | default 0.65 / range 0.00..1.00 / step 0.05 | Sky flash color tint — shifts the additive flash color from cool white-blue (0.0) toward violet-blue (1.0). 0.0 = (0.65, 0.72, 0.85) — neutral storm white with slight blue bias; 1.0 = (0.55, 0.45, 0.95) — cinematic violet-blue. 0.65 (default) is a gentle storm-blue bias. Affects only the sky flash's tint; does NOT affect cloud illumination or screen flash colors. |
| cl_avfx_lightning_surface_arc_density | default 1.65 / range 0.00..3.00 / step 0.05 | Arc count / branch density multiplier. Base is 5 arcs per strike at 1.0; the engine clamps the effective count to 1..8 arcs per strike so the per-frame RF_BEAM budget is not exhausted by a single very dense strike. 0 disables surface arcs entirely. Higher values up to 3.0 are clamped to the per-strike cap. Combined with the master toggle and arc_intensity. |
| cl_avfx_lightning_surface_arc_intensity | default 2.6 / range 0.00..3.00 / step 0.05 | Arc brightness / alpha multiplier on top of the bolt brightness envelope. The final arc alpha is strike_brightness * intensity * 0.85. Default 1.0 gives baseline visibility; values up to 3.0 brighten arcs (clamped to RF_BEAM alpha 1.0); 0 disables arcs even when the master is on. |
| cl_avfx_lightning_surface_arc_radius | default 160 / range 16..256 / step 8 / wu | Maximum crawl radius of surface arcs around the impact point, in world units. Arcs start at the impact and grow outward to this radius during the strike's leader/peak phase, then retract during decay. Default 96 wu is a comfortable room-corner spread. Lower values keep arcs tight around the strike; higher values spread them further across floors/walls/ceilings. |
| cl_avfx_lightning_surface_arc_width | default 0.35 / range 0.25..4.00 / step 0.05 | Arc width multiplier (per segment). 0.35 (default) baseline ~3 pixels equivalent; up to 4.0 thickens the arcs. Internally clamped to 1..12 pixels per segment. Combined with the bolt brightness envelope this determines how prominent the arcs read against the impacted surface. |
| cl_avfx_lightning_surface_arcs | 0=off / 1=on (default) | Master toggle for decorative crawling electric arcs at the lightning impact point. When enabled, every committed AVFX strike with a real surface impact spawns short-lived electric arcs that radiate outward from the impact along the struck surface. Synchronized with the bolt brightness envelope (strongest at strike peak, fade with decay). Visual-only — never adds damage, never alters scoring, never triggers the P1h gameplay damage bridge. Requires cl_avfx_lightning_realistic 1; when realistic mode is off, surface arcs are also suppressed (legacy fallback). |
| cl_avfx_lightning_water_react | 0=off / 1=on (default) | Master toggle for AVFX lightning water reactions. When lightning strikes real BSP water (CONTENTS_WATER), transparent water, or a visible AVFX puddle, spawn steam plumes, splash particles, and concentric rings at the impact point. Secondary smaller bursts also fire wherever the surface arcs crawl over wet samples. Visual / audio only — never adds gameplay damage. Off-surface (dry floor/wall) strikes are no-ops. |
| cl_avfx_lightning_water_react_amount | default 2.7 / range 0.00..3.00 / step 0.05 | Overall intensity multiplier for the lightning water reaction effects. Default 1.0; 0 effectively disables emission even when the master is on. Values above 1.0 spawn more steam puffs, larger splash bursts, and brighter rings. Range 0..3. |
| cl_avfx_lightning_water_react_radius | default 152 / range 16..256 / step 1 / wu | Effect radius in world units for the water rings (and visual spread). Default 96 = baseline; 16..256. Wet detection itself is point-based and delegated to the existing weapon-impact-on-water helper, so this knob controls how far rings spread on the visible surface, not the probe range. Note: real BSP-water rings inherit this size via avfx_spawn_ripple_burst_fx; puddle-ring scaling matches. |
| cl_avfx_lightning_water_rings | 0=off / 1=on (default) | Sub-toggle for the water rings (ripples) effect within lightning water reactions. Default on. Real BSP water uses the avfx_spawn_ripple_burst_fx path (matches rain/weapon ripples); visible AVFX puddles use the shared puddle-ring overlay pool. |
| cl_avfx_lightning_water_splashes | 0=off / 1=on (default) | Sub-toggle for the splash-particle effect within lightning water reactions. Default on. The splash particles are spawned via CL_ParticleEffect using the same water palette byte as weapon-impact splashes so they read consistently with the rest of AVFX water effects. |
| cl_avfx_lightning_water_steam | 0=off / 1=on (default) | Sub-toggle for the steam / vapor plume effect within lightning water reactions. When master cl_avfx_lightning_water_react is on, this controls whether the steam family fires; the other water effects (splashes, rings) are independent. Default on. |
| cl_avfx_lightning_width | default 0.15 / range 0.01..1.50 / step 0.01 | Bolt width multiplier — single user knob controlling thickness of ALL lightning structures: trunk core, glow corona, L1 branches (with per-index taper), surface electric arcs, bloom halo layers. Default 0.15 gives a thin photo-realistic bolt (PO follow-up 2026-05-22 lowered from 1.0). Range 0.01..1.5 — minimum is a barely-visible filament; maximum is significantly thicker than baseline. Step 0.01 for fine tuning at the low end. Has no effect when cl_avfx_lightning_realistic 0. |
| cl_avfx_meteor_brightness | default 5.0 / range 0.0..5.0 / step 0.05 | Meteor head brightness multiplier. 5.0 (default) bright cinematic streaks; 1.0 = classic dim shooting star; 0 = invisible. |
| cl_avfx_meteor_burnup_chance | default 1.0 / range 0.0..1.0 / step 0.05 | Probability that a meteor burns up before reaching the horizon (early extinction). 0 = every meteor crosses the full sky; 1.0 (default) = all extinguish before horizon. |
| cl_avfx_meteor_cloud_occlusion | default 0.8 / range 0.0..1.0 / step 0.05 | Cloud occlusion strength. 0 = meteors ignore clouds; 0.8 (default) meteors dim significantly behind cloud cells; 1.0 = fully hidden by clouds. |
| cl_avfx_meteor_color_b | default 0.45 / range 0.00..1.00 / menu step 0.02 | Blue channel of the manual AVFX sky-meteor base tint. Used for newly spawned sky meteors only when cl_avfx_meteor_color_custom is 1. Stock reference 0.45. |
| cl_avfx_meteor_color_custom | default 0 / 0=stock palette / 1=custom RGB | Use cl_avfx_meteor_color_r/g/b as the base tint for newly spawned AVFX sky meteors / shooting stars, including their luminous heads, streaks, persistent trains and fragmentation. Meteors already in flight retain their spawn colour. 0 (default) preserves the stock warm-gold palette exactly. Full Chaos sets this to 1 when sky meteors are selected; Reasonable leaves it unchanged. This does not enable the effect; cl_avfx_meteors remains its enable toggle. |
| cl_avfx_meteor_color_g | default 0.82 / range 0.00..1.00 / menu step 0.02 | Green channel of the manual AVFX sky-meteor base tint. Used for newly spawned sky meteors only when cl_avfx_meteor_color_custom is 1. Stock reference 0.82. |
| cl_avfx_meteor_color_r | default 1.00 / range 0.00..1.00 / menu step 0.02 | Red channel of the manual AVFX sky-meteor base tint. Used for newly spawned sky meteors only when cl_avfx_meteor_color_custom is 1. Stock reference 1.00. |
| cl_avfx_meteor_color_variation | default 0.00 / range 0.00..1.00 / menu step 0.02 | Seeded colour variation between individual newly spawned AVFX sky meteors when custom colour is enabled. 0 (default) uses the exact base RGB; 1 gives the strongest deterministic vivid variation while retaining influence from that RGB. Full Chaos sets it to 1 when sky meteors are selected. Existing meteors are not recoloured mid-flight. |
| cl_avfx_meteor_force_bloom | default 1 / 0 or 1 | Forced bloom for meteor heads. Works even when gl_bloom=0. Meteor-pixel-only: does NOT enable whole-scene bloom. |
| cl_avfx_meteor_fragmentation | default 0.2 / range 0.0..1.0 / step 0.05 | Probability that a meteor fragments mid-flight into smaller streaks. 0 = none; 0.2 (default) occasional break-up; 1.0 = every meteor fragments. |
| cl_avfx_meteor_impact | default 0 / 0 or 1 | Master toggle for AVFX impact meteors. Vertical-descent meteors that fall from sky level down to ground / water / lava surfaces near the player and explode on contact. Strictly separate pool from sky burn-up meteors above. Default OFF (opt-in). |
| cl_avfx_meteor_impact_brightness | default 1.45 / range 0.0..3.0 / step 0.05 | Head light brightness multiplier across the full descent. 1.45 (default) bright readable head; up to 3.0 cinematic; 0 invisible. |
| cl_avfx_meteor_impact_color_b | default 0.30 / range 0.0..1.0 / step 0.02 | Blue channel of the manual impact-meteor tint. Used when cl_avfx_meteor_impact_color_custom is 1; sampled once for each newly spawned meteor. |
| cl_avfx_meteor_impact_color_custom | default 0 / 0 or 1 | Use the manual RGB tint for newly spawned impact-meteor plasma, heated head edge, tails, smoke, hot shatter and local glow. The dark rock body keeps its natural material. Off preserves the accepted seeded stock palette exactly. Full Chaos sets this to 1 when impact meteors are selected; Reasonable leaves it unchanged. Meteors already in flight keep their spawn colour. |
| cl_avfx_meteor_impact_color_g | default 0.65 / range 0.0..1.0 / step 0.02 | Green channel of the manual impact-meteor tint. Used when cl_avfx_meteor_impact_color_custom is 1; sampled once for each newly spawned meteor. |
| cl_avfx_meteor_impact_color_r | default 1.00 / range 0.0..1.0 / step 0.02 | Red channel of the manual impact-meteor tint. Used when cl_avfx_meteor_impact_color_custom is 1; sampled once for each newly spawned meteor. |
| cl_avfx_meteor_impact_color_variation | default 0.00 / range 0.0..1.0 / step 0.02 | Seeded colour variation between individual newly spawned impact meteors. 0 keeps the exact manual RGB; 1 applies the strongest deterministic vivid variation while retaining influence from that base RGB and adding no RNG draw. Full Chaos enables variation; Reasonable keeps the default 0. |
| cl_avfx_meteor_impact_descent_seconds | default 3.0 / range 1.0..120.0 / step 1.0 | Descent duration in seconds — how long a meteor takes from sky-level appearance to surface impact. 3 (default) fast cinematic; up to 60 for slow 'minute-long' descents; 120 max. |
| cl_avfx_meteor_impact_force_bloom | default 1 / 0 or 1 | Forced bloom for impact meteor heads + impact flash. Works even when gl_bloom=0. Impact-pixel-only: does NOT enable whole-scene bloom. |
| cl_avfx_meteor_impact_ground_glow_seconds | default 14.0 / range 0.0..60.0 / step 0.5 | Duration in seconds of the persistent warm ground glow registered into the shared lightning local-surface light pool after impact. 14.0 (default) long readable afterglow; 5.0 = original baseline. |
| cl_avfx_meteor_impact_intensity | default 2.55 / range 0.0..5.0 / step 0.05 | Final impact flash intensity multiplier. 2.55 (default) strong cinematic flash; 1.00 = baseline; up to 5.0 nuclear; 0 disables the flash without disabling the spawn. |
| cl_avfx_meteor_impact_puddle_evap | default 1 / 0 or 1 | Master toggle for rain-puddle evaporation around impact meteor landings. Spawns a BFG-style alpha-suppression halo (separate pool from BFG evaps so weapon halos aren't starved) + a strong ring of steam puffs around the evap boundary. Does NOT mutate the puddle pool — alpha is suppressed for ~6–18 s while the surface 'dries', then ramps back. Default ON. |
| cl_avfx_meteor_impact_puddle_evap_radius | default 400 / range 0..2048 / step 16 | Puddle evaporation halo radius in world units around the impact. 400 (default) ≈ small-room-sized dry zone; up to 2048 for huge boulders. Scaled by per-meteor radius_scale; lifetime auto-scales 6..18 s with effective radius. |
| cl_avfx_meteor_impact_radius | default 1664 / range 64..8192 / step 64 | World-units radius around the player within which targets are selected. 1664 (default) — wide play area. Smaller = closer impacts; larger = wider field. |
| cl_avfx_meteor_impact_rate | default 60 / range 0.0..60.0 / step 0.5 | Average impact meteor spawn rate (events per minute). 0 = none; 60 (default) ≈ one per second dense rain; lower = quieter sky. |
| cl_avfx_meteor_impact_shake | default 1 / 0 or 1 | Master toggle for client-only camera shake when an impact meteor lands nearby. Distance-falloff damped envelope (pitch + roll), independent of server playerstate. Default ON. |
| cl_avfx_meteor_impact_shake_max | default 1.5 / range 0.0..5.0 / step 0.05 | Hard angular clamp in degrees for the combined pitch + roll shake delta per axis. 1.5 (default) caps aim disruption; up to 5.0 for unrestrained shake; 0 effectively disables. |
| cl_avfx_meteor_impact_shake_radius | default 1.0 / range 0.0..3.0 / step 0.05 | Camera shake falloff radius multiplier. 1.0 (default) ≈ 1200 wu felt zone; lower = only very close impacts shake camera; higher = wider felt area. |
| cl_avfx_meteor_impact_shake_strength | default 1.0 / range 0.0..3.0 / step 0.05 | Camera shake amplitude multiplier. 1.0 (default) baseline ≈ 1° peak at zero distance; up to 3.0 for strong cinematic shake; 0 disables without changing the master toggle. |
| cl_avfx_meteor_impact_shatter | default 1 / 0 or 1 | Spawn dark rocky shatter fragments at impact. Chunks fly outward + upward, fall under gravity, fade over ~1 s. Freefall + fade only — no secondary BSP contact events. Default ON. |
| cl_avfx_meteor_impact_shatter_density | default 3.55 / range 0.0..4.0 / step 0.05 | Shatter chunk count multiplier. 3.55 (default) ≈ 24 × radius_scale × size × this chunks per impact, capped at 120. Higher = denser debris cloud; 0 disables shatter without changing the toggle. |
| cl_avfx_meteor_impact_shimmer | default 1 / 0 or 1 | Heat-shimmer atmospheric refraction (air distortion) around falling impact-meteor heads. Default ON. Requires impact meteors (cl_avfx_meteor_impact). |
| cl_avfx_meteor_impact_shimmer_radius | default 1.0 / range 0.0..3.0 / step 0.05 | Heat-shimmer screen-space ellipsoid radius multiplier. 1.0 (default) baseline; higher widens the distorted area around each bolide. |
| cl_avfx_meteor_impact_shimmer_strength | default 0.5 / range 0.0..3.0 / step 0.05 | Heat-shimmer distortion strength multiplier. 0.5 (default) subtle haze; 1.0 = baseline; higher for stronger refraction. |
| cl_avfx_meteor_impact_size | default 0.40 / range 0.10..3.00 / step 0.05 | Head size multiplier — scales the visible glow radius growth as the meteor descends. 0.40 (default) compact bolide; 1.00 = baseline; up to 3.0 huge boulder. |
| cl_avfx_meteor_impact_tail | default 1 / 0 or 1 | Spawn trailing fire/ember particles behind the descending bolide head. World-space (not camera-attached). Default ON. |
| cl_avfx_meteor_impact_tail_density | default 3.00 / range 0.0..3.0 / step 0.05 | Tail particle density multiplier. 3.00 (default) ≈ 16 particles/frame at 60 fps × radius_scale × this; 1.00 = baseline. Higher = thicker volumetric plasma trail; 0 disables the tail without changing the toggle. |
| cl_avfx_meteor_impact_water_steam | default 1 / 0 or 1 | Spawn steam puffs when an impact meteor hits water (uses the existing AVFX lava-steam puff system on water targets). Default ON. |
| cl_avfx_meteor_rate | default 60 / range 0.0..60.0 / step 0.5 | Average meteor spawn rate (events per minute). 0 = none; 60 (default) ≈ one per second dense shower; lower = sparser sky. |
| cl_avfx_meteor_size | default 1.5 / range 0.1..5.0 / step 0.05 | Meteor angular size multiplier. 1.5 (default) baseline cinematic head; 0.5 = compact bolide; up to 5.0 for fat streaks. |
| cl_avfx_meteor_speed | default 0.55 / range 0.1..5.0 / step 0.05 | Meteor angular speed multiplier. 0.55 (default) slow drift across sky; 1.0 = baseline; up to 5.0 = streak in a blink. |
| cl_avfx_meteor_trail_length | default 3.35 / range 0.0..5.0 / step 0.05 | Trail length multiplier. 0 = head only; 3.35 (default) long cinematic tails; up to 5.0 for very long trails. |
| cl_avfx_meteor_train_time | default 6.75 / range 0.0..15.0 / step 0.25 | Persistent train afterglow time in seconds. 0 = no afterglow; 6.75 (default) long-lived glowing train; up to 15 = very long smoke trail. |
| cl_avfx_meteors | default 0 / 0 or 1 | Master toggle for the AVFX meteor / shooting-star layer. Streaks fall across the sky with optional trails, fragmentation, cloud occlusion and forced bloom. Default OFF (opt-in). |
| cl_avfx_meteors_comets | default 0 / 0 or 1 | Menu-wide master gate for all celestial meteors and comets. When off, sky meteors, impact meteors and comets are suppressed and their live pools are cleared, but their individual cvars are not changed. Default OFF. |
| cl_avfx_mist_billows | 0=Sprites / 1=Billows / 2=Billows + sprites (default 1) | Mist style: sprites = legacy wisps; billows = volumetric rolling smoke. Billows+sprites = both layers at once. Requires cl_avfx 1 and the mist preset (cl_avfx_preset 5). |
| cl_avfx_mist_color_b | 0..1 (menu step 0.02, default 0.92) | Mist base color, blue channel. Requires cl_avfx 1 and the mist preset (cl_avfx_preset 5). |
| cl_avfx_mist_color_g | 0..1 (menu step 0.02, default 0.88) | Mist base color, green channel. Requires cl_avfx 1 and the mist preset (cl_avfx_preset 5). |
| cl_avfx_mist_color_r | 0..1 (menu step 0.02, default 0.86) | Mist base color, red channel. Requires cl_avfx 1 and the mist preset (cl_avfx_preset 5). |
| cl_avfx_mist_color_variation | 0..1 (menu step 0.05, default 0.2) | Per-particle color spread around the mist base color. Requires cl_avfx 1 and the mist preset (cl_avfx_preset 5). |
| cl_avfx_mist_embers | 0=Off / 1=On (default 1) | Warm ember/spark sub-layer drifting through the billowing smoke. Requires cl_avfx 1 and the mist preset (cl_avfx_preset 5) with a billow mode active (cl_avfx_mist_billows 1 or 2). |
| cl_avfx_mist_shapes | 0=Off / 1=On (default 1) | Wisp-mode only: give mist soft haze/wisp shapes with soft edges instead of round dots. Requires cl_avfx 1 and the mist preset (cl_avfx_preset 5), and applies only in wisp mode (cl_avfx_mist_billows 0). |
| cl_avfx_mist_size_variation | 0..1 (menu step 0.05, default 0.45) | How much mist particle size varies around the base size. Requires cl_avfx 1 and the mist preset (cl_avfx_preset 5). |
| cl_avfx_moon | 0=off (default) / 1=on | Master toggle for the AVFX moon disk in the sky. Independent from the sun. The moon is rendered in the sky shader as a cloud-aware cratered disk with horizon fade and phase shading. When master is 0, the disk is fully suppressed. |
| cl_avfx_moon_azimuth | default 172 / range 0..359 / step 1 / degrees | Moon azimuth in degrees (manual mode only). Same convention as sun: 0 = north, 90 = east, 180 = south, 270 = west. Default 172 ≈ south. |
| cl_avfx_moon_brightness | default 0.85 / range 0.0..5.0 / step 0.05 | Moon disk brightness multiplier. 0.85 (default) keeps the tuned moon visible in dark AVFX scenes. Up to 5.0 for a cinematic super-bright moon. 0 disables disk emission. |
| cl_avfx_moon_cloud_occlusion | default 0.75 / range 0.0..1.0 / step 0.05 | Cloud occlusion strength on the moon disk. 0 = moon ignores clouds; 0.75 (default) = clouds dim the moon disk according to the AVFX cloud field while preserving tuned visibility. |
| cl_avfx_moon_color_b | default 1.00 / range 0.0..2.0 / step 0.01 | Moon color: blue channel. 1.00 (default) classic cool moonlight. See cl_avfx_moon_color_r. |
| cl_avfx_moon_color_g | default 0.86 / range 0.0..2.0 / step 0.01 | Moon color: green channel. 0.86 (default). See cl_avfx_moon_color_r. |
| cl_avfx_moon_color_r | default 0.78 / range 0.0..2.0 / step 0.01 | Moon color: red channel. 0.78 (default). Parallel to the sun color controls. Tints the visible moon disk/halo AND moon-driven scene lighting — world surfaces, entities, snow/water/particle celestial response, and volumetric cloud/fog moon scatter. Brightness stays on the moon brightness/world/entity sliders. Default 0.78/0.86/1.00 reproduces the previously hardcoded cool moon. |
| cl_avfx_moon_dark_side_visibility | default 1.0 / range 0.0..1.0 / step 0.01 | Visibility of the moon body on the unlit side of the phase. Uses a smooth nonlinear curve: 1.0 (default) keeps the accepted dark disk and faint surface texture; 0.0 fully removes the unlit body, including its star mask. Low values grow gently instead of popping in. |
| cl_avfx_moon_edge_smooth_inset | default 0.00 / range 0.00..0.30 / step 0.01 / applies live | Optional smoothing inset from the moon limb / phase terminator, as a fraction of moon radius. 0 (default) disables smoothing and keeps crater detail sharp. Higher values create a wider clean soft band and can intentionally blur edge details. |
| cl_avfx_moon_elevation | default 36 / range -90..90 / step 1 / degrees | Moon elevation above horizon in degrees (manual mode only). Default 36 ≈ moderately high night moon. Below -3° the moon fades out via horizon envelope. |
| cl_avfx_moon_entity_light | default 2.25 / range 0.0..3.0 / step 0.05 | Moon contribution to entity ambient (monsters, players, items, models). 2.25 (default) = same tuned balance as world; 0 = entity ambient unaffected by moon; up to 3.0 for cinematic moon-lit characters at night. |
| cl_avfx_moon_halo_alpha | default 1.0 / range 0.0..1.0 / step 0.05 | Moon local sky-shader halo opacity multiplier. 1.0 keeps the previous tuned halo visibility. 0 makes the halo fully transparent. This multiplies halo brightness and does not affect the moon disk. |
| cl_avfx_moon_halo_brightness | default 1.0 / range 0.0..5.0 / step 0.05 | Moon local sky-shader halo brightness multiplier. 1.0 keeps the previous tuned halo intensity. 0 removes halo light. Values above 1.0 strengthen the glow. |
| cl_avfx_moon_halo_phase_shape | 0=legacy round halo / 1=phase-shaped halo (default) | Mask the local moon halo by the moon phase shape. 1 (default) makes crescent / half moon halos follow the same curved terminator as the visible moon disk. 0 restores the legacy round halo. |
| cl_avfx_moon_halo_size | default 1.0 / range 0.0..4.0 / step 0.01 | Moon local sky-shader halo radius multiplier. 1.0 keeps the previous tuned halo around the moon disk. 0 fully removes the local halo. Values above 1.0 broaden the glow without changing the moon disk size. |
| cl_avfx_moon_hd_texture | 0=off (default) / 1=8K HD texture / applies live | Use the 8K moon albedo texture for the AVFX moon disk. 0 (default) keeps the accepted 2K LROC texture; 1 switches the same spherical/equirectangular moon mapping to q2pro-x/data/moon/hd8k.jpg. Applies live on a loaded map and preserves the current moon orientation, phase, halo and lighting. |
| cl_avfx_moon_indoor_leak | default 1 / range 0.0..1.0 / step 0.05 | Fraction of moonlight that leaks into indoor / closed spaces. 1.0 (default) = indoor spaces receive the same celestial moon lighting as outdoor view; 0 = no moonlight leaks indoors. Smoothed ~300 ms transition based on view-side sky exposure. |
| cl_avfx_moon_lighting | 0=off / 1=on (default) | Master toggle for AVFX moon scene lighting. When on, the moon's position and cool blue-white tint contribute a runtime light layer to world surfaces and entity ambient at night, with strength controlled by cl_avfx_moon_world_light / cl_avfx_moon_entity_light. Fades with phase, cloud cover, and view-side sky exposure (~300 ms smoothed). 0 = moon disk still draws but level lighting is unaffected. |
| cl_avfx_moon_mode | default 0 (manual) / range 0..2 / 0=manual 1=opposite_sun 2=cycle/clock | Moon position mode. 0 (default) = manual — use cl_avfx_moon_azimuth / cl_avfx_moon_elevation. 1 = opposite sun — moon mirrors the sun's direction (real-world default for full moon). 2 = cycle/clock — follow the sun's time mode but offset by 12 hours so moon rises as sun sets. |
| cl_avfx_moon_phase | default 0.30 / range 0.0..1.0 / step 0.05 | Moon phase 0..1. 0 = new moon (lit part invisible; dark body visibility is controlled by cl_avfx_moon_dark_side_visibility); 0.25 = crescent moon; 0.5 = half moon; 0.75 = gibbous moon; 1.0 = full moon. 0.30 (default) gives a visible crescent / young moon with the accepted curved terminator. The sky shader lights a virtual moon sphere, so crescents use a curved terminator instead of a straight cut. |
| cl_avfx_moon_phase_edge_rays | 0=clean tight phase edge (default) / 1=ray fringe / applies live | Textured ray-like fringe on the illuminated moon phase edge. 0 (default) keeps a clean tight phase edge without blurring crater detail. 1 restores the stylized rays/hairs on enlarged crescent moons. |
| cl_avfx_moon_rotation_mode | default 0 (manual) / range 0..1 / 0=manual 1=realtime_auto | Moon body rotation mode. 0 (default) = manual — fixed yaw/pitch/roll offsets from the sliders below. 1 = realtime auto — the yaw/pitch/roll speeds below are integrated over time (never writes the cvars). Default rotation is identity, so the accepted moon look is unchanged. |
| cl_avfx_moon_rotation_pitch | default 0 / range -180..180 / step 1 / degrees | Moon pitch (poles up/down) in degrees. Lets you inspect the top/bottom of the disk. 0 (default) keeps the accepted orientation. |
| cl_avfx_moon_rotation_pitch_speed | default 0.00 / range -10.0..10.0 / step 0.01 / deg/s | Moon auto pitch speed in degrees per second (realtime auto mode). 0.00 (default) = no pitch drift; negative tilts the opposite direction. |
| cl_avfx_moon_rotation_roll | default 0 / range -180..180 / step 1 / degrees | Moon roll (disk rolls on screen) in degrees. 0 (default) keeps the accepted orientation. |
| cl_avfx_moon_rotation_roll_speed | default 0.00 / range -10.0..10.0 / step 0.01 / deg/s | Moon auto roll speed in degrees per second (realtime auto mode). 0.00 (default) = no roll drift; negative rolls the opposite direction. |
| cl_avfx_moon_rotation_yaw | default 0 / range -360..360 / step 1 / degrees | Moon yaw (longitude spin) in degrees. Manual-mode fixed offset; also the starting angle in realtime auto. 0 (default) keeps the accepted orientation. |
| cl_avfx_moon_rotation_yaw_speed | default 0.02 / range -10.0..10.0 / step 0.01 / deg/s | Moon auto yaw speed in degrees per second (realtime auto mode). 0.02 (default) is a slow drift; negative spins the opposite direction; 0 freezes yaw. |
| cl_avfx_moon_size | default 1.95 / engine range 0.1..3000.0 / menu 0.1..100.0 step 0.15 | Moon disk angular size multiplier. 1.95 (default) ≈ slightly wider than real moon for visibility in-game; menu slider goes up to 100.0, while console/cfg still accept the engine range up to 3000.0 for extreme cinematic enlarged moon. It also scales moon scene lighting through a normalized, bounded area factor (size/1.95)^2 clamped to [0.05, 4.0], equal to 1.0 at the default size. This is an ADDITIONAL factor on top of moon phase — cl_avfx_moon_phase still reduces light for a cropped moon. Gated by cl_avfx_moon_lighting. |
| cl_avfx_moon_sky_brightness | default 1.0 / range 0.0..1.0 / step 0.01 | How strongly moon brightness lifts the surrounding sky. 1.0 (default) preserves the accepted look. 0.0 keeps the moon disk bright but leaves the sky much darker, which is useful for bright moon + dark sky + visible stars. Does NOT change moon disk brightness, local moon halo, or moon world/entity lighting. |
| cl_avfx_moon_smooth | 1=smooth mip/aniso (default) / 0=sharp GL_LINEAR / applies live | Smooth the AVFX moon disk texture with mipmap / trilinear / anisotropic filtering. 1 (default) keeps the moon smooth with no shimmer while it rotates. 0 disables smoothing and samples the texture at plain GL_LINEAR (no mipmaps, no anisotropy), so a non-rotating moon looks crisp and sharp. Applies live and does not reload the moon texture. |
| cl_avfx_moon_world_light | default 2.25 / range 0.0..3.0 / step 0.05 | Moon contribution to world / level surfaces. 2.25 (default) = tuned bright moonlight for night readability; 0 = no moon world tint; up to 3.0 if you want a cinematic super-bright lunar landscape. Same shader hook as cl_avfx_sun_world_light. Multiplied by phase, altitude, cloud_T, and the indoor-leak gate. |
| cl_avfx_mr_mask_debug | default 0 / 0=off 1=mask 2=mask no-depth 3=stencil probe (diagnostic, current session only) | Developer-only: AVFX mirror reflection mask/stencil visualization. 0=off; 1=show the receiver mask; 2=same ignoring depth; 3=stencil-bit probe. Not archived, no menu; zero cost at 0. |
| cl_avfx_multiplayer | 0=disable in multiplayer / 1=allow in multiplayer (default) | Allow AVFX during real multiplayer matches (cl.maxclients > 1). Off completely disables AVFX in multiplayer regardless of master toggle. Demo playback uses cl_avfx_demo instead of this gate. |
| cl_avfx_no_contact_debug | default 0 / 0=off, >0=diagnostic (diagnostic, current session only) | Developer-only: prints AVFX surface no-contact (rejected-contact) diagnostics. 0=off. Not archived, no menu; zero cost at 0. |
| cl_avfx_overlay_path | 0=legacy billboard / 1=flat overlay (default) | flat AVFX surface overlay primitive. 1 (default) — puddles and snow caps render as world-space alpha quads on the surface plane (lying flat on the floor / table top; correct silhouette from any view angle). 0 — legacy billboard particles (always-camera-facing round patches). Falls back to the billboard path automatically if the overlay queue ever overflows. Lives outside the entity_t / particle_t budgets, so storm / lightning / gameplay rendering is never impacted. |
| cl_avfx_particle_lightning_debris_enable | 0=stop future particles of this family / 1=emit (default) | Lightning impact debris: The warm debris bursts at a lightning strike point. The smoke flash, surface arcs and water reaction are separate controls. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is an ordinary AVFX setting: it belongs to ordinary AVFX presets, does not follow the standard-particle colour master, and never changes the global standard particle settings or the Player Contact domain. |
| cl_avfx_particle_lightning_water_droplets_enable | 0=stop future particles of this family / 1=emit (default) | Lightning water droplets: The blue droplets thrown up where lightning hits or crawls across real BSP water and visible AVFX puddles. Weapon-water droplets are a separate family and are never changed by this control. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is an ordinary AVFX setting: it belongs to ordinary AVFX presets, does not follow the standard-particle colour master, and never changes the global standard particle settings or the Player Contact domain. |
| cl_avfx_particle_meteor_debris_energy_enable | 0=stop future particles of this family / 1=emit (default) | Meteor debris (energy): The green half of the meteor's radial debris ring. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is an ordinary AVFX setting: it belongs to ordinary AVFX presets, does not follow the standard-particle colour master, and never changes the global standard particle settings or the Player Contact domain. |
| cl_avfx_particle_meteor_debris_red_enable | 0=stop future particles of this family / 1=emit (default) | Meteor debris (red): The red half of the meteor's radial debris ring. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is an ordinary AVFX setting: it belongs to ordinary AVFX presets, does not follow the standard-particle colour master, and never changes the global standard particle settings or the Player Contact domain. |
| cl_avfx_particle_meteor_debris_warm_enable | 0=stop future particles of this family / 1=emit (default) | Meteor debris (warm): The main warm debris burst at a meteor impact point. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is an ordinary AVFX setting: it belongs to ordinary AVFX presets, does not follow the standard-particle colour master, and never changes the global standard particle settings or the Player Contact domain. |
| cl_avfx_particle_meteor_snow_dust_enable | 0=stop future particles of this family / 1=emit (default) | Meteor snow dust: The snow dust thrown up by a meteor landing on snow, including its radial sprays. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is an ordinary AVFX setting: it belongs to ordinary AVFX presets, does not follow the standard-particle colour master, and never changes the global standard particle settings or the Player Contact domain. |
| cl_avfx_particle_multiplier | 0.2..100.0 (default 1.0) | Particle count multiplier for snow / ash / dust / mist plus the close raindrop layer. 1.0 (default) keeps the cell-based baseline. 0.2 (×0.2) thins each preset to 5× fewer particles by tightening the per-cell density gate. 100.0 (×100) keeps the same gate and emits up to 100 sub-particles per fired cell with unique sub-seeded offsets, so even the densest snowstorm / dust haze reads as proper whiteout. Per-frame total is still capped by quality budget × multiplier so MAX_PARTICLES is respected; the rain preset's main RF_BEAM streaks are unaffected (use cl_avfx_density / cl_avfx_weather_level for those). |
| cl_avfx_particle_rgb_lightning_debris_b | 0.00..1.00 / 0.03 default (the family's stock hue) | Blue channel of the colour used for "Lightning impact debris" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_avfx_particle_rgb_lightning_debris_custom | 0=stock colour (default) / 1=use the colour below | Lightning impact debris: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is an ordinary AVFX setting: it belongs to ordinary AVFX presets, does not follow the standard-particle colour master, and never changes the global standard particle settings or the Player Contact domain. |
| cl_avfx_particle_rgb_lightning_debris_g | 0.00..1.00 / 0.67 default (the family's stock hue) | Green channel of the colour used for "Lightning impact debris" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_avfx_particle_rgb_lightning_debris_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Lightning impact debris" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_avfx_particle_rgb_lightning_water_droplets_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Lightning water droplets" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_avfx_particle_rgb_lightning_water_droplets_custom | 0=stock colour (default) / 1=use the colour below | Lightning water droplets: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is an ordinary AVFX setting: it belongs to ordinary AVFX presets, does not follow the standard-particle colour master, and never changes the global standard particle settings or the Player Contact domain. |
| cl_avfx_particle_rgb_lightning_water_droplets_g | 0.00..1.00 / 0.59 default (the family's stock hue) | Green channel of the colour used for "Lightning water droplets" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_avfx_particle_rgb_lightning_water_droplets_r | 0.00..1.00 / 0.57 default (the family's stock hue) | Red channel of the colour used for "Lightning water droplets" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_avfx_particle_rgb_meteor_debris_energy_b | 0.00..1.00 / 0.00 default (the family's stock hue) | Blue channel of the colour used for "Meteor debris (energy)" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_avfx_particle_rgb_meteor_debris_energy_custom | 0=stock colour (default) / 1=use the colour below | Meteor debris (energy): Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is an ordinary AVFX setting: it belongs to ordinary AVFX presets, does not follow the standard-particle colour master, and never changes the global standard particle settings or the Player Contact domain. |
| cl_avfx_particle_rgb_meteor_debris_energy_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Meteor debris (energy)" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_avfx_particle_rgb_meteor_debris_energy_r | 0.00..1.00 / 0.00 default (the family's stock hue) | Red channel of the colour used for "Meteor debris (energy)" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_avfx_particle_rgb_meteor_debris_red_b | 0.00..1.00 / 0.00 default (the family's stock hue) | Blue channel of the colour used for "Meteor debris (red)" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_avfx_particle_rgb_meteor_debris_red_custom | 0=stock colour (default) / 1=use the colour below | Meteor debris (red): Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is an ordinary AVFX setting: it belongs to ordinary AVFX presets, does not follow the standard-particle colour master, and never changes the global standard particle settings or the Player Contact domain. |
| cl_avfx_particle_rgb_meteor_debris_red_g | 0.00..1.00 / 0.20 default (the family's stock hue) | Green channel of the colour used for "Meteor debris (red)" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_avfx_particle_rgb_meteor_debris_red_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Meteor debris (red)" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_avfx_particle_rgb_meteor_debris_warm_b | 0.00..1.00 / 0.03 default (the family's stock hue) | Blue channel of the colour used for "Meteor debris (warm)" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_avfx_particle_rgb_meteor_debris_warm_custom | 0=stock colour (default) / 1=use the colour below | Meteor debris (warm): Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is an ordinary AVFX setting: it belongs to ordinary AVFX presets, does not follow the standard-particle colour master, and never changes the global standard particle settings or the Player Contact domain. |
| cl_avfx_particle_rgb_meteor_debris_warm_g | 0.00..1.00 / 0.67 default (the family's stock hue) | Green channel of the colour used for "Meteor debris (warm)" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_avfx_particle_rgb_meteor_debris_warm_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Meteor debris (warm)" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_avfx_particle_rgb_meteor_snow_dust_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Meteor snow dust" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_avfx_particle_rgb_meteor_snow_dust_custom | 0=stock colour (default) / 1=use the colour below | Meteor snow dust: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is an ordinary AVFX setting: it belongs to ordinary AVFX presets, does not follow the standard-particle colour master, and never changes the global standard particle settings or the Player Contact domain. |
| cl_avfx_particle_rgb_meteor_snow_dust_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Meteor snow dust" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_avfx_particle_rgb_meteor_snow_dust_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Meteor snow dust" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_avfx_particle_rgb_wildlife_blood_b | 0.00..1.00 / 0.00 default (the family's stock hue) | Blue channel of the colour used for "Airborne wildlife blood" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_avfx_particle_rgb_wildlife_blood_custom | 0=stock colour (default) / 1=use the colour below | Airborne wildlife blood: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is an ordinary AVFX setting: it belongs to ordinary AVFX presets, does not follow the standard-particle colour master, and never changes the global standard particle settings or the Player Contact domain. |
| cl_avfx_particle_rgb_wildlife_blood_g | 0.00..1.00 / 0.20 default (the family's stock hue) | Green channel of the colour used for "Airborne wildlife blood" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_avfx_particle_rgb_wildlife_blood_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Airborne wildlife blood" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_avfx_particle_rgb_wpn_snow_dust_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Snow impact dust" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_avfx_particle_rgb_wpn_snow_dust_custom | 0=stock colour (default) / 1=use the colour below | Snow impact dust: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is an ordinary AVFX setting: it belongs to ordinary AVFX presets, does not follow the standard-particle colour master, and never changes the global standard particle settings or the Player Contact domain. |
| cl_avfx_particle_rgb_wpn_snow_dust_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Snow impact dust" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_avfx_particle_rgb_wpn_snow_dust_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Snow impact dust" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_avfx_particle_rgb_wpn_water_droplets_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Water impact droplets" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_avfx_particle_rgb_wpn_water_droplets_custom | 0=stock colour (default) / 1=use the colour below | Water impact droplets: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is an ordinary AVFX setting: it belongs to ordinary AVFX presets, does not follow the standard-particle colour master, and never changes the global standard particle settings or the Player Contact domain. |
| cl_avfx_particle_rgb_wpn_water_droplets_g | 0.00..1.00 / 0.59 default (the family's stock hue) | Green channel of the colour used for "Water impact droplets" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_avfx_particle_rgb_wpn_water_droplets_r | 0.00..1.00 / 0.57 default (the family's stock hue) | Red channel of the colour used for "Water impact droplets" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_avfx_particle_rgb_wpn_water_warm_b | 0.00..1.00 / 0.03 default (the family's stock hue) | Blue channel of the colour used for "Water impact warm spray" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_avfx_particle_rgb_wpn_water_warm_custom | 0=stock colour (default) / 1=use the colour below | Water impact warm spray: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is an ordinary AVFX setting: it belongs to ordinary AVFX presets, does not follow the standard-particle colour master, and never changes the global standard particle settings or the Player Contact domain. |
| cl_avfx_particle_rgb_wpn_water_warm_g | 0.00..1.00 / 0.67 default (the family's stock hue) | Green channel of the colour used for "Water impact warm spray" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_avfx_particle_rgb_wpn_water_warm_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Water impact warm spray" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_avfx_particle_wildlife_blood_enable | 0=stop future particles of this family / 1=emit (default) | Airborne wildlife blood: The blood burst thrown by a wounded, killed or striking snake. Its stains and sounds are separate controls. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is an ordinary AVFX setting: it belongs to ordinary AVFX presets, does not follow the standard-particle colour master, and never changes the global standard particle settings or the Player Contact domain. |
| cl_avfx_particle_wpn_snow_dust_enable | 0=stop future particles of this family / 1=emit (default) | Snow impact dust: The light snow dust thrown up when a weapon hits snow, including the rocket's radial sprays. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is an ordinary AVFX setting: it belongs to ordinary AVFX presets, does not follow the standard-particle colour master, and never changes the global standard particle settings or the Player Contact domain. |
| cl_avfx_particle_wpn_water_droplets_enable | 0=stop future particles of this family / 1=emit (default) | Water impact droplets: The blue droplet fountain thrown up when a weapon hits water. Rings, steam, stains and sounds are separate controls. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is an ordinary AVFX setting: it belongs to ordinary AVFX presets, does not follow the standard-particle colour master, and never changes the global standard particle settings or the Player Contact domain. |
| cl_avfx_particle_wpn_water_warm_enable | 0=stop future particles of this family / 1=emit (default) | Water impact warm spray: The warm spray mixed into a weapon water impact, visually distinct from the blue droplets. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is an ordinary AVFX setting: it belongs to ordinary AVFX presets, does not follow the standard-particle colour master, and never changes the global standard particle settings or the Player Contact domain. |
| cl_avfx_planet_jupiter_lat | default 0 / range -10..+10 / step 0.1 | Jupiter ecliptic latitude (degrees, -10..+10). Default 0. |
| cl_avfx_planet_jupiter_lon | default 34 / range 0..360 / step 1 | Jupiter ecliptic longitude (degrees, 0..360). Default 34 is approximate J2000.0 epoch. |
| cl_avfx_planet_mars_lat | default 0 / range -10..+10 / step 0.1 | Mars ecliptic latitude (degrees, -10..+10). Default 0. |
| cl_avfx_planet_mars_lon | default 336 / range 0..360 / step 1 | Mars ecliptic longitude (degrees, 0..360). Default 336 is approximate J2000.0 epoch. |
| cl_avfx_planet_mercury_lat | default 0 / range -10..+10 / step 0.1 | Mercury ecliptic latitude (degrees, -10..+10). Default 0 (planet sits on ecliptic plane). |
| cl_avfx_planet_mercury_lon | default 252 / range 0..360 / step 1 | Mercury ecliptic longitude (degrees, 0..360). Default 252 is approximate J2000.0 epoch. Dial to current real Mercury position using any astronomy reference (timeanddate.com / stellarium / etc.) for visible sky correctness. |
| cl_avfx_planet_reflection_debug | default 0 (off) / 0=off, >0=diagnostic (diagnostic, current session only) | Developer-only diagnostic for AVFX planet/celestial reflections in puddles and water. When non-zero it exposes reflection receiver and visibility counts in the cl_avfx_info line. Not archived, no menu row; costs nothing at 0. |
| cl_avfx_planet_saturn_lat | default 0 / range -10..+10 / step 0.1 | Saturn ecliptic latitude (degrees, -10..+10). Default 0. |
| cl_avfx_planet_saturn_lon | default 49 / range 0..360 / step 1 | Saturn ecliptic longitude (degrees, 0..360). Default 49 is approximate J2000.0 epoch. |
| cl_avfx_planet_venus_lat | default 0 / range -10..+10 / step 0.1 | Venus ecliptic latitude (degrees, -10..+10). Default 0. |
| cl_avfx_planet_venus_lon | default 181 / range 0..360 / step 1 | Venus ecliptic longitude (degrees, 0..360). Default 181 is approximate J2000.0 epoch. |
| cl_avfx_planets | default 1 / 0 or 1 | Master toggle for the AVFX planets layer (Venus + Mars). Rendered as brighter star-like points NOT as sun-like disks. Fixed sky positions for this phase (no ephemeris). Visible when cl_avfx_stars 1. Default ON. |
| cl_avfx_planets_brightness | default 1.95 / range 0.0..3.0 / step 0.05 | Global brightness multiplier for planets. 1.95 (default). Planets have their own per-planet intensity clamp (max 0.85, higher than catalog stars at 0.55) so they always read as the brightest sky points. |
| cl_avfx_planets_glow_alpha | default 1.0 / range 0.0..1.0 / step 0.05 | Forced glow opacity multiplier for planets. 1.0 (default) keeps the previous opacity; 0 makes the glow fully transparent. Does not change the planet point itself. |
| cl_avfx_planets_glow_brightness | default 1.0 / range 0.0..5.0 / step 0.05 | Forced glow brightness multiplier for planets. 1.0 (default) keeps the previous glow strength; 0 removes glow contribution; higher values make the halo brighter. Planet point brightness is still controlled by cl_avfx_planets_brightness. |
| cl_avfx_planets_glow_size | default 1.0 / range 0.0..4.0 / step 0.01 | Forced glow radius multiplier for planet bloom/halo. 1.0 (default) keeps the previous planet glow footprint; 0 removes the planet glow; higher values spread the glow wider without changing the compact planet point itself. |
| cl_avfx_planets_position_mode | default 1 / 1 manual ecliptic | Planet position source selector. 1 (default) — manual ecliptic longitude/latitude (per-planet _lon / _lat cvars). Other values are reserved for future date-driven ephemeris and manual RA/Dec modes (not yet implemented). |
| cl_avfx_planets_real | default 1 / 0 or 1 | Master toggle for the real planet ecliptic placement path. ON (default) renders 5 planets (Mercury / Venus / Mars / Jupiter / Saturn) at user-controllable real ecliptic longitudes (per-planet cl_avfx_planet_*_lon / _lat cvars). OFF reverts to the classic 2-planet fallback (Venus + Mars hand-curated synthetic positions). Position source is selected by cl_avfx_planets_position_mode. |
| cl_avfx_planets_size | default 0.45 / range 0.01..4.0 / step 0.01 | Global visual size multiplier for all planet point glows. 0.01 is a star-sized point; 0.45 (default) gives compact bright pin-points; up to 4.0 is available for stylized larger glows. One slider scales every visible planet together. |
| cl_avfx_preset | 0=off / 1=rain / 2=snow / 3=ash / 4=dust / 5=mist | Atmospheric preset selector. 0=off, 1=rain (RF_BEAM streaks + optional close raindrop particles + optional storm), 2=snow (white drifting particles), 3=ash (orange/grey motes for lava/industrial maps), 4=dust (tan/grey low-alpha motes), 5=mist (very-low-alpha large slow particles — not a fog substitute, layers over usefog). |
| cl_avfx_puddle_step_splash_amount | 0..5 (default 1.0) | Intensity multiplier for puddle step splashes, 0..5. 1.0 is the default visual. 0 disables the visible foot splashes while keeping puddle step audio active. Higher values add more droplets and slightly stronger spread, but the effect still requires run speed and visible puddle coverage. |
| cl_avfx_puddle_step_splashes | 0=off / 1=on (default) | Visual splash particles when the local player runs through visible AVFX puddles. Slow walking keeps only wet step audio; jog/run speed throws a small silent burst from the foot contact point. The effect is gated by the same visible-puddle coverage used by puddle step sounds, so hidden runoff/helper state never creates visual splashes on dry-looking floor. |
| cl_avfx_quality | 0=low / 1=normal (default) / 2=high | Per-frame budget tier. low=48 rain beams + 80 particles, normal=96+160, high=160+280. Competitive limit clamps these further during multiplayer. AVFX never evicts gameplay visuals; emission is late in CL_AddEntities and only fills leftover MAX_ENTITIES / MAX_PARTICLES headroom. |
| cl_avfx_radius | 128..2048 (default 768) | Horizontal radius (in world units) of the camera-local weather volume. Particles / beams are deterministically distributed inside this square around cl.refdef.vieworg. |
| cl_avfx_rain_drop_density | 0.0..1.0 (default 0.35) | Density of the close raindrop layer (independent of main streak density). Multiplied by cl_avfx_weather_level. Only effective when cl_avfx_rain_drops=1 and the rain preset is active. |
| cl_avfx_rain_drop_shape | 0.0..3.0 (default 1.0) | Close-raindrop elongation. 0 = round/legacy-like sprite (old V_AddParticle look); 1 = default short wind-aligned mini-streak matching the main rain streaks; values above 1 lengthen the close streaks toward cinematic. Shape/length only, not density. Direction follows cl_avfx_wind_x / cl_avfx_wind_y exactly like the main rain. |
| cl_avfx_rain_drop_size | 0.05..1.0 (default 0.25) | Visual size multiplier applied ONLY to close-drop sprites/mini-streaks (does not touch the main rain streak size — those still use cl_avfx_size directly). Default 0.25 keeps close drops visually smaller than the main rain curtain so the two layers do not blend. |
| cl_avfx_rain_drops | 0=disable close drops / 1=enable close drops (default) | Enable the close raindrop detail particle layer when the rain preset is active. Adds a small population of near-camera particles standing in for splashes / spray. Only meaningful for cl_avfx_preset=1. |
| cl_avfx_rain_flow_debug | default 0 / 0=off, >0=overlay (diagnostic, current session only) | Developer-only: visualizes the AVFX rain flow/runoff field. 0=off. Not archived, no menu; zero cost at 0. |
| cl_avfx_rain_flow_debug_alpha | default 0.75 / range 0..1 (diagnostic, current session only) | Developer-only: opacity of the rain-flow debug overlay. Only affects the overlay when cl_avfx_rain_flow_debug is on. |
| cl_avfx_rain_flow_debug_radius | default 8192 / world units (diagnostic, current session only) | Developer-only: world-space radius of the rain-flow debug overlay. Only affects the overlay when cl_avfx_rain_flow_debug is on. |
| cl_avfx_rain_gpu | 0=legacy RF_BEAM streaks / 1=GPU streak pass (default) | Use the GPU rain-streak pass instead of the legacy per-streak entity path. This is a kill switch: when it is off, or when the weather renderer is Classic, or when the hardware cannot run the pass, Q2PRO-X falls back to the legacy RF_BEAM streaks automatically and rain stays visible either way. Requires cl_avfx 1 and the rain preset (cl_avfx_preset 1). |
| cl_avfx_rain_on_eyes | 0=off (default) / 1=on | Optional rain-on-eyes / wet-lens postprocess while the player stands under open-sky rain. It uses non-uniform screen-space blur, misty soft patches and a faint wet tint rather than drawing more rain particles. Off by default for clear visibility. It disappears under roofs, underwater, and outside the rain preset. In competitive-limited multiplayer the intensity is automatically reduced. |
| cl_avfx_rain_on_eyes_amount | 0..1 (default 0.65) | Wet-lens blur / misting intensity, 0..1. 0 disables the effect even if the master toggle is on; 0.65 is the default. The final strength also scales with cl_avfx_density and cl_avfx_weather_level, so light rain stays subtle and heavy rain looks wetter. |
| cl_avfx_rain_puddle_alpha | 0..1 (default 0.4) | Puddle opacity multiplier. Lower values keep the floor texture more visible; higher values make accumulated water read darker and wetter. Applies to generated AVFX puddle decals and their flow continuation. |
| cl_avfx_rain_puddle_cascade_field_debug | default 0 / 0=off, >0=overlay (diagnostic, current session only) | Developer-only: visualizes the AVFX puddle cascade/flow field. 0=off. Not archived, no menu; zero cost at 0. |
| cl_avfx_rain_puddle_cascade_field_density | 0.1..3 (default 1) | Multiplier on how much water each cascade deposit adds to the puddle cascade field. Higher values fill lower puddles faster and make cascades read as heavier; lower values keep the lower level drier for longer. Requires cl_avfx 1 + cl_avfx_world 1 + cl_avfx_rain_puddles 1 with cascades active. |
| cl_avfx_rain_puddle_count | 0.2..500 (default 1.0) | Concurrent puddle budget multiplier. Controls how many generated puddles/flow pieces may live at once before the pool starts reusing old entries. Visual presets scale this together with puddle size and LOD. |
| cl_avfx_rain_puddle_density | 0..1 (default 1.0) | Fraction of qualifying horizontal rain hits that spawn a puddle decal, 0..1. 1.0 (default) — every horizontal hit gets a puddle (capped by AVFX_DECAL_MAX = 384 active decals shared with snow caps). 0.5 — roughly half. 0.0 — disabled (same as cl_avfx_rain_puddles 0). Lowering density reduces overlap density — rare hits read as scattered dark spots; high density saturates the visible floor. |
| cl_avfx_rain_puddle_dust | 0..3 (default 1.0) | Amount of drifting dark dirt particles inside puddles. Sloped puddles push particles along the water direction; flat puddles use subtle chaotic drift. 0 disables puddle debris. |
| cl_avfx_rain_puddle_dust_size | 0.1..3.0 (default 1.0) | Size multiplier for visible dirt/debris particles inside puddles and related flow areas. Does not change particle count, only their visual scale. |
| cl_avfx_rain_puddle_fill_rate | 0.01..20.0 (default 0.2) | Puddle fill/growth speed multiplier. Values below 1 make puddles appear and spread more slowly; values above 1 make wet surfaces fill faster. Used by direct rain puddles and downstream water-flow growth. |
| cl_avfx_rain_puddle_max_size | 0.2..100.0 (default 1.0) | Puddle max-size multiplier. Ultra Quality can use large values for broad natural wet areas; performance presets reduce it so puddles stay smaller and cheaper while still growing normally. |
| cl_avfx_rain_puddle_model_reflection | 0/1 (default 0) | Master toggle for MODEL reflections in rain puddles. When on, the per-category toggles below (weapons / armor / items / players+monsters / ships / meteors / comets / planets) choose what reflects. All categories default OFF, so this alone does nothing until at least one is enabled. |
| cl_avfx_rain_puddle_model_reflection_actors | 0/1 (default 0) | Reflect player and monster models in rain puddles. Needs the puddle MODEL-reflection master on. Default OFF. |
| cl_avfx_rain_puddle_model_reflection_armor | 0/1 (default 0) | Reflect armor models in rain puddles. Needs the puddle MODEL-reflection master on. Default OFF. |
| cl_avfx_rain_puddle_model_reflection_comets | 0/1 (default 0) | Reflect AVFX comets in rain puddles. Needs the puddle MODEL-reflection master on. Default OFF. |
| cl_avfx_rain_puddle_model_reflection_items | 0/1 (default 0) | Reflect item / object models in rain puddles. Needs the puddle MODEL-reflection master on. Default OFF. |
| cl_avfx_rain_puddle_model_reflection_meteors | 0/1 (default 0) | Reflect AVFX sky meteors (shooting-star streaks + embers) in rain puddles. Needs the puddle MODEL-reflection master on. Default OFF. |
| cl_avfx_rain_puddle_model_reflection_planets | 0/1 (default 0) | Reflect the AVFX Earth, Moon, Sun, Black Hole and compatible celestial bodies in rain puddles (per-pixel reflected-ray disk + a spatial BSP line-of-sight mask, with corona glow). Needs AVFX world on and rain puddles present; independent of the model-reflection master. Each body also needs its own master enabled, so this category plus cl_avfx_blackhole is the complete gate for the Black Hole — there is deliberately no separate black-hole reflection toggle. Default OFF. |
| cl_avfx_rain_puddle_model_reflection_projectiles | 0/1 (default 0) | Reflect final presented projectiles and the rail beam in rain puddles, including synchronized local prediction. Needs the puddle model-reflection master. Default OFF. |
| cl_avfx_rain_puddle_model_reflection_ships | 0/1 (default 0) | Reflect AVFX sky spaceships in rain puddles. Needs the puddle MODEL-reflection master on. Default OFF. |
| cl_avfx_rain_puddle_model_reflection_strength | 0..1 (default 0.8) | Strength / opacity of model reflections in rain puddles. |
| cl_avfx_rain_puddle_model_reflection_surface_volumes | 0/1 (default 0) | Reflect placed Surface Volumes (steam, smoke and fog) in rain puddles. Needs the puddle model-reflection master. Default OFF. |
| cl_avfx_rain_puddle_model_reflection_weapons | 0/1 (default 0) | Reflect weapon models in rain puddles. Needs the puddle MODEL-reflection master on. Default OFF. |
| cl_avfx_rain_puddle_reflection_distort | 0..1 (default 0) | Liquid distortion of ALL puddle reflections (SSR + models + sky objects): warps the reflection like moving liquid with uneven travelling ripples, scaled by the puddle surface speed. 0 = sharp mirror. |
| cl_avfx_rain_puddle_reflection_distort_speed | 0..5 (default 1) | Speed of the puddle reflection ripple. 1 = default, 0 = frozen ripple. |
| cl_avfx_rain_puddle_rings | 0=off / 1=on (default) | Puddle-surface rings. When rain or water contacts an already wet AVFX puddle, the renderer emits flat expanding rings on the puddle plane. Does not affect true water-surface rain rings. |
| cl_avfx_rain_puddle_runoff | 0=off / 1=on (default) | Water runoff from puddle edges. Allows accumulated puddles to continue as visible water flow over steps, ledges and lower connected surfaces. Ultra Performance may disable it, all higher presets keep it enabled. |
| cl_avfx_rain_puddle_runoff_dust | 0..3 (default 1.0) | Amount of dark debris/dirt particles moving inside puddle runoff streams. 0 disables the debris layer; higher values make flow direction easier to read. |
| cl_avfx_rain_puddle_runoff_dynamics | 0..1 (default 0.75) | Temporal life of organic runoff strands (style 1): how strongly individual strands start, grow, thin out, stop, and get replaced by nearby new strands over time. Stays deterministic (no frame-to-frame noise flicker). Higher = more visible change over time. |
| cl_avfx_rain_puddle_runoff_grow_speed | 0.05..10.0 (default 0.2) | Runoff visual extension speed multiplier. Low values make streams visibly crawl from the source puddle; high values make them reach the lower surface quickly. |
| cl_avfx_rain_puddle_runoff_lod | 0=Full / 1=Follow LOD / 2=Near (default 1) | LOD mode for puddle runoff CPU simulation/rendering. Full ignores runoff LOD; Follow uses Distance LOD only when it is enabled. Near keeps runoff near the camera even when Distance LOD is off. Requires cl_avfx 1 + cl_avfx_world 1 + cl_avfx_rain_puddles 1 + cl_avfx_rain_puddle_runoff 1. Full keeps every runoff stream simulated regardless of distance, so it is the most expensive setting. |
| cl_avfx_rain_puddle_runoff_scale | 0.1..5.0 (default 1.0) | Global runoff stream thickness multiplier. Scales the visual width of water streams generated from puddle edges, on top of per-stream randomization and source puddle size. |
| cl_avfx_rain_puddle_runoff_specular | 0..1 (default 0.60) | Strength of small wet highlights along organic runoff strands (style 1). |
| cl_avfx_rain_puddle_runoff_style | 0 classic, 1 organic (default 0) | Runoff renderer for water flowing from puddle edges. 0 = classic (the existing flat-strip renderer, unchanged). 1 = organic: multiple irregular strands per stream with varied width, broken segments, uneven alpha, subtle world-space wobble, small wet specular highlights, and temporal life (strands start, grow, thin, end, and nearby strands appear asynchronously). The runoff simulation/lifecycle is shared; only the look changes. Default 0. |
| cl_avfx_rain_puddle_runoff_variation | 0..1 (default 0.70) | Strand count, irregularity and breakup variation for organic runoff (style 1). Higher = more varied, more broken strands. |
| cl_avfx_rain_puddle_scene_reflection | 0/1 (default 0) | Screen-space reflection (SSR) of nearby world geometry in rain puddles. Reflects only what is on screen (marches a few hundred units); MODEL and sky-object reflections are separate toggles below. |
| cl_avfx_rain_puddle_scene_reflection_quality | low / medium / high | Puddle SSR quality (march step count / resolution). Higher = smoother, sharper reflection at more GPU cost. |
| cl_avfx_rain_puddle_scene_reflection_strength | 0..1 | Strength / opacity of the puddle SSR reflection. |
| cl_avfx_rain_puddle_specular | 0=off / 1=on (default) | Fake wet specular shimmer on AVFX puddles. Adds moving highlights and a small sky-tint mix so wet surfaces read as water rather than just dark stains. |
| cl_avfx_rain_puddle_specular_debug | default 0 / 0=off, >0=overlay (diagnostic, current session only) | Developer-only: visualizes AVFX puddle specular/reflection terms. 0=off. Not archived, no menu; zero cost at 0. |
| cl_avfx_rain_puddle_specular_strength | 0..1 (default 0.6) | Intensity multiplier for fake puddle specular highlights. 0 keeps puddles matte; 1 gives the strongest shimmer allowed by the shader. |
| cl_avfx_rain_puddle_surface_objects | 0/1 (default 1) | Reflect enabled grass, ivy, ferns and falling leaves in puddles. Stones, soil and ground litter are excluded before mesh work. Uses scene reflection strength; does not enable objects themselves. |
| cl_avfx_rain_puddle_surface_speed | 0.1..10 (default 1.0) | AVFX puddle style motion speed multiplier. 1.0 (default) = baseline; 0.1 = 10x slower, 10 = 10x faster. Scales puddle film/dirt motion. No effect at style 0 (Standard). |
| cl_avfx_rain_puddle_surface_style | 0..12 (default 0) | AVFX puddle surface material style. 0 = Standard (exact current look, no style texture). 1..12 = reference-derived puddle tiles (wet asphalt, muddy, swamp film, droplets, clean wet floor, foam, etc.) at pics/q2prox/avfx/ps/. Mask/DETAIL only inside the existing puddle alpha — breaks up wetness/dirt/film/specular; never determines whether a puddle exists and does NOT gate any AVFX puddle effect (rings, runoff, dust, step splashes, reflection, celestial/lightning). Live, no vid_restart; missing tile falls back to Standard. |
| cl_avfx_rain_puddles | 0=no puddles / 1=puddles (default) | Wet-patch puddle decals where rain hits horizontal hard surfaces. Each rain hit on a floor / table-top (surface normal.z > 0.7) optionally spawns a translucent dark blue-grey patch that grows briefly, holds, then fades over ~6-12 seconds. Continued rain refreshes the visual via fresh overlapping spawns. 0 — no puddles. 1 (default) — enable. Cleared on level change; never written to map data. |
| cl_avfx_rain_realistic | 0/1 (default 0 = legacy main rain) | Switch the MAIN / background rain streaks (not close drops) from the legacy uniform style to a realistic style: irregular, wind-slanted, tapered streaks with a thin/darker upstream tail and a brighter/thicker rounded downstream head that follows the rain+wind direction. Two controlled shape families — the rounded-head drop-streak and a rarer line-like streak (see cl_avfx_rain_realistic_line_mix). Default 0 (legacy). Does NOT replace close drops (cl_avfx_rain_drops). |
| cl_avfx_rain_realistic_amount | 0.1..20 (default 5) | Count multiplier for realistic MAIN rain streaks (PO Bugs/66). The realistic field was density-limited, so this scales how dense the streak grid is: 1.0 = the old realistic amount, 5.0 (default) = ~5x more drops, up to 20 = ~20x more, down to 0.1 = ~10x fewer. Only used when cl_avfx_rain_realistic 1. Bounded by the entity budget at the high end. |
| cl_avfx_rain_realistic_depth | 0..1 (default 0.60) | Depth-layer attenuation and distance variation for the realistic main rain field (nearer streaks stronger, farther dimmer/thinner). Only used when cl_avfx_rain_realistic 1. |
| cl_avfx_rain_realistic_head_bias | 0..1 (default 0.70) | Strength of the brighter/thicker rounded downstream head on realistic main rain streaks — the main reference look where the lower/downstream end is a small lit water mass. The head follows the actual rain fall direction including wind slant (never hard-coded screen-down). Only used when cl_avfx_rain_realistic 1. |
| cl_avfx_rain_realistic_line_mix | 0..1 (default 0.20) | Share of the secondary line-like streak family in realistic main rain. 0 = mostly rounded-head drop-streaks; higher adds more elongated line streaks (still with non-uniform center-bright / edge-dark shading, not uniform rods). Only used when cl_avfx_rain_realistic 1. |
| cl_avfx_rain_realistic_softness | 0..1 (default 0.65) | Edge softness / taper of realistic main rain streaks. Higher makes streaks less rod-like and more tapered. Only used when cl_avfx_rain_realistic 1. |
| cl_avfx_rain_realistic_variation | 0..1 (default 0.75) | Per-streak variation of length, width, opacity and brightness for realistic main rain. Higher = more diverse streaks. Only used when cl_avfx_rain_realistic 1. |
| cl_avfx_rain_ripple_alpha | 0..1 (menu step 0.05, default 1) | Opacity of rain rings on standard BSP water (0..1, default 1.0). Requires cl_avfx 1 + cl_avfx_world 1 + cl_avfx_rain_water_ripples 1; rings spawn only on sky-exposed water and are subject to the per-frame ring budget. |
| cl_avfx_rain_ripple_density | 0..1 (default 1.0) | Fraction of would-be water hits that spawn ring impacts, 0..1. 1.0 (default) spawns a ring burst per drop hit (every drop produces rings); 0.5 thins to roughly half; 0.0 disables ring spawning entirely (same effect as cl_avfx_rain_water_ripples 0). Each main rain drop spawns a 3-ring chase sequence; close drops spawn a single smaller ring. Per-ring radius / strength / lifetime are randomized so concurrent drops don't expand in lock-step. |
| cl_avfx_rain_ripple_impact_density | 0..1 (menu step 0.05, default 0.35) | Fraction of rain rings that show a drop/impact dot at the centre (0..1, default 0.35). Requires cl_avfx 1 + cl_avfx_world 1 + cl_avfx_rain_water_ripples 1; rings spawn only on sky-exposed water and are subject to the per-frame ring budget. |
| cl_avfx_rain_ripple_roundness | 0..3 (menu step 1, default 1) | Roundness of rain rings on standard BSP water: 0 = coarse/cheaper, 1 = standard, 2 = smooth, 3 = ultra-smooth. Requires cl_avfx 1 + cl_avfx_world 1 + cl_avfx_rain_water_ripples 1; rings spawn only on sky-exposed water and are subject to the per-frame ring budget. |
| cl_avfx_rain_ripple_speed | 0.1..3.0 (default 1.0; <1 = slower / softer; >1 = faster / sharper) | Ring expansion / fade speed multiplier, 0.1..3.0. 1.0 (default) keeps the original cadence (rings expand and fade across roughly 480-820 ms with a 130-190 ms stagger between the 3 chase rings of one burst). 0.1 stretches everything 10x — rings grow and dissolve very gently, ~5-8 seconds per ring. 3.0 compresses everything 3x — rings expand and fade in ~160-280 ms, snappier splashes. Lifetime AND inter-ring stagger both scale, so the burst chase relationship stays proportional at every speed. |
| cl_avfx_rain_ripple_stroke | 0.25..3 (menu step 0.05, default 1) | Stroke width of the ring outline on standard BSP water. 1.0 = current look; lower = thinner, higher = thicker. Requires cl_avfx 1 + cl_avfx_world 1 + cl_avfx_rain_water_ripples 1; rings spawn only on sky-exposed water and are subject to the per-frame ring budget. |
| cl_avfx_rain_splash_density | 0..1 (default 1.0) | Fraction of would-be hard-surface rain hits that spawn splash bursts, 0..1. 1.0 (default) spawns a splash on every qualifying hit; 0.5 thins to roughly half; 0.0 disables splash spawning entirely (same effect as cl_avfx_rain_splashes 0). Splash slot buffer caps active splashes at AVFX_SPLASH_MAX = 128 — heavy density just saturates faster, never exceeds the cap, so the per-frame work stays bounded. |
| cl_avfx_rain_splash_scale | 0.2..5.0 (default 1.0; <1 = smaller / softer; >1 = larger / heavier) | Splash burst SIZE multiplier, 0.2..5.0. 1.0 (default) keeps the original tuning (subtle 5-droplet bursts that arc ~30 units up and ~12 units out). 0.2 shrinks everything 5× — barely-visible micro-droplets, suitable for light drizzle. 5.0 enlarges everything 5× — heavy splashes with droplets arcing several feet, suitable for storm rain. Scale is applied to particle size, horizontal spread radius, vertical launch speed, AND the virtual-gravity term so the trajectory shape stays proportional at every setting. |
| cl_avfx_rain_splashes | 0=no splashes / 1=splashes (default) | Rain splash bursts on hard surfaces. Each rain spawn point that traces down to a non-liquid surface (not water / lava / slime / sky) produces a small upward burst of light-blue droplet particles that arc parabolically and fade out over ~250-400 ms. Independent of cl_avfx_rain_water_ripples (water hits → rings; hard hits → splashes). Both events come from the same per-frame trace pass so the work scales with whichever density cvar is higher. 0 — disable splashes. 1 (default) — enable. |
| cl_avfx_rain_water_contact | 0=off / 1=on (default) | Rain/water contact layer on true water surfaces. Enables rain rings, small bubbles/foam and related surface interaction when weather hits CONTENTS_WATER. Lava and slime use separate steam handling. |
| cl_avfx_rain_water_contact_bubble_density | 0..1 (default 0.65) | Density multiplier for rain-contact bubbles/foam on true water surfaces. |
| cl_avfx_rain_water_contact_bubble_size | 0.2..5.0 (default 1.0) | Size multiplier for rain-contact bubbles/foam on true water surfaces. |
| cl_avfx_rain_water_contact_bubbles | 0=off / 1=on (default) | Small drifting bubbles/foam on true water contacts. This is separate from puddle debris and from the enhanced-water foam shader. |
| cl_avfx_rain_water_contact_ripple_alpha | 0..1 (menu step 0.05, default 1) | Opacity of water-contact rings from runoff and water-to-water contact (0..1, default 1.0). Requires cl_avfx 1 + cl_avfx_world 1 + cl_avfx_rain_water_ripples 1; it affects only the contact/runoff rings, not the rain-impact rings. |
| cl_avfx_rain_water_contact_ripple_roundness | 0..3 (menu step 1, default 1) | Roundness of water-contact rings: 0 = coarse/cheaper, 1 = standard, 2 = smooth, 3 = ultra-smooth. Requires cl_avfx 1 + cl_avfx_world 1 + cl_avfx_rain_water_ripples 1; it affects only the contact/runoff rings, not the rain-impact rings. |
| cl_avfx_rain_water_contact_ripple_stroke | 0.25..3 (menu step 0.05, default 1) | Stroke width of the water-contact rings. 1.0 = current look; lower = thinner, higher = thicker. Requires cl_avfx 1 + cl_avfx_world 1 + cl_avfx_rain_water_ripples 1; it affects only the contact/runoff rings, not the rain-impact rings. |
| cl_avfx_rain_water_ripples | 0=no water ripples / 1=allow ripples (default) | Allow expanding ring impacts on water surfaces when rain hits them. An independent SPAWN pass samples a disc around the camera, traces with MASK_SOLID/MASK_WATER and spawns a 3-ring burst on each water hit (R3: when the camera is underwater the trace start is automatically lifted above the local water ceiling so rings still spawn on the surface above). Each visible ring renders as a fixed 16-chord RF_BEAM polygon (smooth circle silhouette). The per-frame entity budget caps how many rings render so storm / lightning bolts (which run after rings) keep their reserve; surplus rings beyond the cap are skipped entirely and counted in cl_avfx_info ripple skip stats (R5). Independent of cl_avfx_water (water visual master) — ripples can be on without the water shader. Subject to cl_avfx_world gate (R1) and open-sky exposure (R2 — no rings under indoor roofs). |
| cl_avfx_render_lod | 0..1 (default 1) | Master toggle for distance LOD culling of small AVFX effects (foam bubbles, water ripples, puddle rings, splashes, puddle dust, snow caps, snow blanket cells). Soft fade over the last 30% of cl_avfx_render_lod_wu range. Particle spawn radius is also clamped by lod_wu so CPU work scales with the LOD distance — set lod_wu < cl_avfx_radius for real fps gain. Surface decals (puddles), cascade flow paths, and rain particles themselves are NEVER culled. |
| cl_avfx_render_lod_wu | 256..4096 (default 1536) | Distance threshold in world units beyond which LOD-culled effects are no longer rendered. Values below cl_avfx_radius (default 768) actually shrink the spawn cylinder, saving CPU. Values above only fade alpha at the visual edge. Default 1536 = visual edge well outside spawn cylinder, no spawn cull at default radius. |
| cl_avfx_size | 0.25..4.0 (default 1.0) | Size multiplier for streaks / particles. Affects rain streak length and beam diameter, snow/ash/dust/mist particle scale. |
| cl_avfx_sky | 0=map sky / 1=weather (default) / 2=blue sky | Sky rendering mode (3-way). 0 = Map sky: the map's own sky texture, no AVFX sky. 1 = Weather sky (default): AVFX weather-driven sky tint, procedural cloud overlay and weather fog on sky surfaces (couples to rain/snow profiles via cl_avfx_sky_auto/override_mode/clouds). 2 = Blue sky: procedural blue daytime sky (the Summer Blue Sky look; tuned by cl_avfx_sky_blue_intensity/saturation/horizon_fade/...). Modes are mutually exclusive. |
| cl_avfx_sky_auto | 0=manual / 1=auto-coupled (default) | Auto-couple sky look to the active weather strength. Heavier weather can darken the sky and increase clouds/fog; manual values remain the baseline. |
| cl_avfx_sky_blue_cloud_preserve | default 1.0 / range 0.0..1.0 / step 0.05 | Keep the procedural cloud overlay visible over the blue sky (Blue sky mode). 1.0 = default (clouds preserved); 0 = blue sky hides them. |
| cl_avfx_sky_blue_horizon_fade | default 0.45 / range 0.0..1.0 / step 0.05 | Blue-sky fade toward the horizon (Blue sky mode). 0.45 = default; higher lightens the horizon band. |
| cl_avfx_sky_blue_intensity | default 1.0 / range 0.0..3.0 / step 0.05 | Blue-sky colour intensity (Blue sky mode, cl_avfx_sky 2). 1.0 = default; higher = deeper blue. |
| cl_avfx_sky_blue_saturation | default 1.0 / range 0.0..2.0 / step 0.05 | Blue-sky colour saturation (Blue sky mode). 1.0 = default. |
| cl_avfx_sky_blue_storm_morph | default 1.0 / range 0.0..1.0 / step 0.05 | Morph the blue sky toward a storm tint when a storm is active (Blue sky mode). 1.0 = default; 0 keeps the blue sky unchanged during storms. |
| cl_avfx_sky_cloud_intensity | 0..1 (default 0.35) | Cloud overlay intensity/density. Higher values make clouds more visible and the sky visually heavier. |
| cl_avfx_sky_cloud_speed | 0..4 (default 2.1) | Cloud drift speed multiplier. 0 freezes the cloud layer; higher values make the overlay move faster across the sky. |
| cl_avfx_sky_clouds | 0=off / 1=on (default) | Enable the procedural cloud overlay on sky surfaces. Cloud darkness, density and speed are controlled by the companion cloud cvars. |
| cl_avfx_sky_darkness | 0..1 (default 0.8) | Base sky darkening amount used by rain/snow presets. Higher values make the sky feel heavier and more overcast. |
| cl_avfx_sky_fog_alpha | 0..1 (default 0.35) | Weather fog opacity around and below the cloud layer. Helps rain/snow skies feel deeper without touching gameplay fog cvars. |
| cl_avfx_sky_override_mode | 0=off / 1=tint / 2=tint+clouds / 3=reserved | Weather sky render mode. 0 disables override, 1 tints the existing sky, 2 adds tint plus cloud overlay, 3 is reserved for future replacement mode. |
| cl_avfx_sky_procedural_brightness | 0=off (default) / 1=on | Opt-in procedural sky brightness driven by current sun + moon illumination. OFF (default) keeps the accepted AVFX sky look unchanged — sky color is the same regardless of where the sun/moon are. ON makes sky brightness EMERGE from the celestial state: night with no moon → sky goes fully black (there is no light source for the sky to reflect); moon at night → dim cool tint; sun above horizon → baseline brightness with mild warm bias. There is intentionally no separate darkness knob — the dark is a CONSEQUENCE of no illumination source, not a value you dial. Pair with cl_avfx_sun / cl_avfx_moon + a cycle/clock mode for live-changing sky. Independent from cl_avfx_sun_lighting / cl_avfx_moon_lighting (those gate world/entity contributions, not sky body visibility). |
| cl_avfx_sky_storm_tint | 0..1 (default 0.70) | Storm mood tint amount. Adds a colder storm-colour bias on top of sky darkening when storm visuals are active. |
| cl_avfx_snow_accum | 0=no snow caps / 1=accumulate (default) | Snow-cap accumulation decals where snow particles would land on horizontal hard surfaces. Each snow spawn point that traces down to a sky-exposed floor (surface normal.z > 0.7, not sky / not warp, R2 open-sky check) optionally spawns a translucent white patch that grows briefly to its target size and HOLDS while the snow preset stays active (R4: no time-fade while snow preset is on — caps persist as long as snow keeps falling). 0 — no accumulation. 1 (default) — enable. Caps clear on map change, preset switch away from snow, cl_avfx_world flip, or cl_avfx_defaults. |
| cl_avfx_snow_accum_alpha | 0..1 (default 1.0) | Opacity multiplier for legacy snow cap overlays. GPU material snow uses its own shader coverage but this still affects fallback/overlay snow caps. |
| cl_avfx_snow_accum_count | 0.2..500 (default 500) | Concurrent legacy snow-cap budget multiplier. Higher values allow more individual caps before the pool reuses old entries. |
| cl_avfx_snow_accum_density | 0..1 (default 1.0) | Fraction of qualifying snow-spawn-on-horizontal hits that spawn a snow-cap decal, 0..1. 1.0 (default) — every qualifying hit (capped by AVFX_DECAL_MAX = 384 shared with puddles). 0.5 — roughly half (sparse caps reading as patches). 0.0 — disabled. Caps share the same buffer as puddles, so a busy rain map and a busy snow map both compete for the 384-slot pool — first-come, first-served until slots free. |
| cl_avfx_snow_accum_fill_rate | 0.01..3.00 (default 0.06) | Snow accumulation fill-speed multiplier. Lower values make surfaces whiten slowly; higher values fill them faster. Capped at 3.0 because high-density snow already fills very quickly around 1.0. Also feeds footprint and weapon-mark refill logic. |
| cl_avfx_snow_accum_max_size | 0.04..4.0 (default 4.0) | Maximum size multiplier for legacy snow cap overlays. Kept for fallback caps and compatibility with older snow-cover paths. |
| cl_avfx_snow_celestial_glitter_scale | default 1.00 / range 0..2 / step 0.05 | Multiplier for snow glitter / sparkle response to celestial light. The GPU snow material's per-pixel sparkle is naturally scaled by the snow brightness scalar (length(snow_rgb) / sqrt(3)), so moonless night snow loses sparkle and noon snow retains the full accepted look. This cvar tunes that base relationship: 1.0 (default) = use the brightness scalar as-is; 0 = no celestial glitter modulation (sparkle never fades with night); up to 2.0 = sparkle exaggerated during the day, drops fast at night. |
| cl_avfx_snow_celestial_lighting | 0=off / 1=on (default) | Master toggle for snow celestial lighting response. When ON (default), all visible snow paths — GPU snow material on surfaces, snow caps / snow blanket / volume extrusion overlays, 3D snowflakes, and ordinary AVFX snow flakes — react to the accepted celestial state. At noon snow stays close to the accepted bright white look; at sunrise/sunset it picks up a mild warm tint; at moonlit night it becomes dim and cold; at moonless night it darkens strongly to a deep cold tint near the minimum brightness floor. When OFF, snow returns to the fixed bright-white behavior regardless of sun/moon state. Independent from cl_avfx_sun_lighting / cl_avfx_moon_lighting — those gate world/entity contributions, while this one only re-lights the snow visuals. Requires cl_avfx 1 and a snow-enabled preset (or any snow visual currently active). |
| cl_avfx_snow_celestial_min_brightness | default 0.08 / range 0..1 / step 0.01 | Minimum snow brightness floor when there is no celestial light. Without this floor, moonless deep-night snow would fall to nearly black and become invisible — visually wrong for snow surfaces which are highly reflective and should still read against the world. 0.08 (default) keeps moonless snow as a deep cold dim tint, not pure black. 0 = no floor (snow goes fully dark when celestial light disappears). Higher values keep snow visibly bright even at night (less convincing). |
| cl_avfx_snow_celestial_night_tint | default 0.45 / range 0..1 / step 0.05 | How much cold blue-grey tint the snow picks up in low-light conditions. 0.45 (default) gives a natural cold mood for moonlit / moonless snow without making daytime snow blue. The night tint is applied via mix(snow_rgb, snow_rgb × cold_color (0.55,0.62,0.78), (1 − max_light) × this). 0 = no cold tint (snow stays the same chromaticity dark as the celestial source). 1 = strongest cold push (snow reads very blue-grey in shadow). |
| cl_avfx_snow_celestial_strength | default 1.20 / range 0..2 / step 0.05 | How strongly celestial sun + moon illumination drives snow color/brightness. 1.20 (default) makes noon snow land near identity (very close to the accepted bright-white look) and produces a meaningful dim/cold response at night. 0 = snow color is driven entirely by the minimum brightness floor and night tint (no sun/moon influence — looks pre-baked). Up to 2.0 = strong reaction to sun/moon state. This is the artistic knob on top of the physically-emergent formula base + strength × (sun_part + moon_part). |
| cl_avfx_snow_dlight_headroom | default 1.00 / range 0..1 / step 0.05 / lying snow only | Extends the same existing-light headroom anti-washout to DYNAMIC light on LYING SNOW (TZ 2026-06-05, PO Bugs/61). Projectile dynamic lights (blaster / hyperblaster / rocket), weapon impact flashes, explosions and meteor-impact bursts all add a V_AddLight dlight; over snow that is already bright this drove the legacy lift to a flat white blob. This gate engages the same relief-preserving compressed path the flashlight uses, scaled by how bright the snow ALREADY is: dark snow still lights up fully (the dlight should), bright snow rolls off toward the luma ceiling with relief kept. Reuses the _luma_ceiling / _headroom_response / _detail_preserve / _gain / _soft_knee / _white_preserve tuning. 0 = legacy white blob (A/B); 1 (default) = full anti-washout. Lying snow only — non-snow materials and the flashlight path are unaffected. Applies to BOTH snow shader paths (GLS_AVFX_SNOW + the GPU snow material overlay). |
| cl_avfx_snow_field | 0=caps / 1=blanket | Legacy uniform snow blanket toggle. 0 uses individual cap-style fallback; 1 uses the older surface-field blanket path. Modern presets primarily rely on the GPU snow material. |
| cl_avfx_snow_flakes_3d | 0=disabled / 1=enable 3D flake batch under snow preset (default) | 3D snow flake batch. When 1, world-oriented quad flakes render alongside the regular particle_t snow under the SNOW preset (cl_avfx_preset 2). Flake basis is computed at spawn and stays anchored to world space — looking around shows flakes at varying angles instead of always face-on. Default 1 for the accepted snow profile parameters. Does not consume entity_t or particle_t budget — uses a separate 800-slot pool (v2) with its own batched draw call after particles. |
| cl_avfx_snow_flakes_3d_count | 0.2..2.0 (default 2.0) | flake density multiplier. Multiplies the v2 base target of 440 active flakes by this value, clamped to the pool cap of 800. 0.2 ≈ 88 flakes (sparse), 1.0 = base 440, 2.0 = clamped 800. Range 0.2..2.0. Use this to tune perceived density without changing AVFX weather level / preset. This cvar multiplies the selected 3D snow preset density, so it remains effective even when cl_avfx_snow_flakes_3d_quality is non-zero. |
| cl_avfx_snow_flakes_3d_crossed | 0=single quad / 1=crossed quads (default) | crossed-quads mode. 1 (default) renders each 3D flake as TWO perpendicular quads (the original axis_u/axis_v plane plus a second quad in the axis_v/axis_w plane where axis_w = axis_u × axis_v). Eliminates edge-on slivers — there is no single view direction where both quads collapse to a line, so flakes always read as proper volumetric specks instead of disappearing at certain angles. Costs 2× vertex bandwidth per flake (12 verts vs 6). 0 = single-quad v1 mode (cheaper; some flakes appear as thin slivers when viewed near edge-on). Effective only when cl_avfx_snow_flakes_3d is on. When cl_avfx_snow_flakes_3d_quality is non-zero this cvar is overridden by the preset. |
| cl_avfx_snow_flakes_3d_fractal | 0=Off / 1=On (default 0) | Replace round 3D snowflakes with real 6-armed fractal snowflake shapes from a generated atlas. Optional; OFF keeps the accepted round flakes. Same lighting as ordinary snow. Requires cl_avfx 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_flakes_3d 1. Turning it on builds a runtime snowflake atlas once (forms x tile resolution of texture memory); the flakes themselves cost the same as the round ones. |
| cl_avfx_snow_flakes_3d_fractal_forms | 4..64 (menu step 1, default 16) | Number of unique snowflake shapes in the atlas (4..64). More = less repetition, slightly more atlas memory. Requires cl_avfx 1, the snow preset (cl_avfx_preset 2), cl_avfx_snow_flakes_3d 1 and cl_avfx_snow_flakes_3d_fractal 1. |
| cl_avfx_snow_flakes_3d_fractal_max_size | 1..64 (menu step 0.5, default 14) | Absolute maximum flake half-size in world units (caps giant flakes). Requires cl_avfx 1, the snow preset (cl_avfx_preset 2), cl_avfx_snow_flakes_3d 1 and cl_avfx_snow_flakes_3d_fractal 1. |
| cl_avfx_snow_flakes_3d_fractal_size_max | 0.1..6 (menu step 0.05, default 1.75) | Maximum size multiplier (relative to the base flake size) for fractal flakes. Requires cl_avfx 1, the snow preset (cl_avfx_preset 2), cl_avfx_snow_flakes_3d 1 and cl_avfx_snow_flakes_3d_fractal 1. |
| cl_avfx_snow_flakes_3d_fractal_size_min | 0.1..4 (menu step 0.05, default 0.75) | Minimum size multiplier (relative to the base flake size) for fractal flakes. Requires cl_avfx 1, the snow preset (cl_avfx_preset 2), cl_avfx_snow_flakes_3d 1 and cl_avfx_snow_flakes_3d_fractal 1. |
| cl_avfx_snow_flakes_3d_fractal_tile | 0=64 / 1=128 / 2=256 (default 1) | Atlas tile resolution (quality vs memory). 256 = crispest, 64 = lightest. Requires cl_avfx 1, the snow preset (cl_avfx_preset 2), cl_avfx_snow_flakes_3d 1 and cl_avfx_snow_flakes_3d_fractal 1. |
| cl_avfx_snow_flakes_3d_near | 0.1..1.0 (default 1.0; lower = more LOD, less cost) | near-radius LOD gate. Fraction of the spawn radius within which 3D flakes render as crossed quads; flakes farther from the camera than (spawn_radius * this_value) keep marching in the pool but skip the 3D submit, so the cheaper particle_t snow path carries them visually at distance. 1.0 (default) disables LOD — every alive flake submits as 3D. 0.6 ≈ 64% area saving on vertex bandwidth at default spawn. 0.1 = aggressive (only the very closest flakes render as 3D; rest drop to particle_t). Useful for tuning frame cost on weaker GPUs / dense weather without losing apparent snow density. Telemetry: the developer 1 log line avfx_flakes_3d: shows submitted vs lod_skipped counts every second. Effective only when cl_avfx_snow_flakes_3d is on. When cl_avfx_snow_flakes_3d_quality is non-zero this cvar is overridden by the preset. |
| cl_avfx_snow_flakes_3d_quality | 0=manual / 1=performance / 2=balanced / 3=rich (default) | 3D-flake quality preset. Convenience selector for crossed / tumble / near settings and for the base density tier. cl_avfx_snow_flakes_3d_count remains live in every preset and multiplies that base density. The per-feature cvars stay untouched — switching the preset back to 0 returns the user's manual values immediately. _size is intentionally NOT preset-controlled. 0 = manual. 1 = performance. 2 = balanced. 3 = rich (default). Effective only when cl_avfx_snow_flakes_3d is on. |
| cl_avfx_snow_flakes_3d_size | 0.03..3.0 (default 0.2) | flake size multiplier. Scales the per-flake half-size at spawn (base 6 world units, plus a small 0.7..1.3 jitter) by this value. 0.03 = microscopic snow dust, 0.2 (default) = fine snow, 3.0 = oversized blizzard flakes. Applies to newly spawned flakes — already-alive flakes keep their original size until they fall out of the pool. Range 0.03..3.0. |
| cl_avfx_snow_flakes_3d_tumble | 0=frozen / 1=tumble (default) | per-flake tumble. 1 (default) rotates each flake's axis_v in place around its axis_u with a per-flake angular velocity in the 0.2..1.5 rad/sec range (one revolution every 4..31 seconds), sign 50/50 either direction. Flakes appear to gently spin as they fall — reads as living snowfall rather than a frozen scatter. Pure CPU work (one trig call + Gram-Schmidt re-orthogonalisation per live flake per frame); no GL state involved. 0 = freeze flake orientation at spawn (cheaper; static look). Effective only when cl_avfx_snow_flakes_3d is on. When cl_avfx_snow_flakes_3d_quality is non-zero this cvar is overridden by the preset. |
| cl_avfx_snow_flashlight_detail_preserve | default 0.85 / range 0..1 / step 0.05 / lying snow only | How much snow relief / texture detail is kept after the flashlight lift on LYING SNOW (TZ 2026-06-02). Replaces the old flat white-preserve (which mixed toward a single luminance and erased relief) with a chroma-neutralizing blend that keeps local luminance/relief variation. 1 = keep nearly all relief; 0 = old flatter white-preserve behavior. 0.85 (default) keeps snow reading as textured snow inside the cone. Lying snow only; non-snow materials unaffected. |
| cl_avfx_snow_flashlight_gain | default 0.45 / range 0..2 / step 0.05 | Multiplier on the flashlight contribution to snow only — applied before the soft-knee compression. Lower = less brightening of snow inside the flashlight cone (good for already-bright daytime snow). Higher = more brightening (good for dim night snow if you want it to read more under the cone). At 0 the flashlight has no extra effect on snow (snow stays at its celestial-lit base). At 0.45 (default) the cone gives a soft visible lift without blowing out. At 2.0 the snow-local boost is strong; pair with _soft_knee and _white_preserve to keep it from clipping. |
| cl_avfx_snow_flashlight_headroom_response | default 1.00 / range 0..2 / step 0.05 / lying snow only | Existing-light / luminance headroom gate for LYING SNOW only (TZ 2026-06-02). The brighter the snow already is from moon / sun / celestial / local light, the LESS additional visible light the flashlight adds — so bright moonlit snow no longer turns into a flat white blob. This is not a binary on/off: dim and moderately lit snow still get a proportional flashlight boost; only near-saturated snow strongly suppresses the extra lift. 0 = old accepted behavior (no headroom suppression); 1 (default) = physically-plausible rolloff; 2 = aggressive suppression on bright snow. Ordinary walls / models / water / puddles keep the accepted global flashlight brightness. |
| cl_avfx_snow_flashlight_luma_ceiling | default 0.92 / range 0.50..1.20 / step 0.01 / lying snow only | Local LDR brightness target the flashlight approaches on LYING SNOW instead of blindly pushing toward pure white (TZ 2026-06-02). Pre-HDR safety ceiling: flashlight-lit snow brightens toward this value, not past it, so relief and texture survive. Lower = the flashlight tops out dimmer and preserves more detail on bright snow; higher = allows brighter snow before suppression kicks in. Lying snow only; non-snow materials unaffected. The future HDR pipeline may replace or reinterpret this. |
| cl_avfx_snow_flashlight_response | default 1.00 / 0=legacy, 1=full snow-specific compression / range 0..1 / step 0.05 | Master blend for the snow-material-specific flashlight response curve. 0 = legacy behavior (flashlight contribution feeds the same lift-to-vec3(2.0) as lightning / dlight / emissive — under bright flashlight on snow this clips into a flat overbright blob, PO Bugs/60 screenshot 2026-05-28). 1 = full snow-specific compression: the flashlight contribution to snow is gain-scaled, soft-knee compressed against snow albedo luminance, and the lit color is pushed back toward its own luminance to stay snow-white. Other materials (walls, water, puddles, models) are NOT affected — flashlight stays at the accepted global brightness everywhere else. Pair with cl_avfx_snow_flashlight_gain, _soft_knee, _white_preserve. |
| cl_avfx_snow_flashlight_soft_knee | default 0.65 / range 0..1 / step 0.05 | Highlight rolloff strength keyed on snow albedo luminance. At 0 there is no soft-knee — gain is applied flat (legacy-like behavior for already-bright snow). At 1 the gain is fully attenuated by the inverse of snow luminance — already-bright snow gets little additional boost, dark snow gets the full multiplier. 0.65 (default) is a balanced rolloff: dark snow brightens noticeably, near-white snow only gets a gentle nudge so the cone center doesn't clip to a flat blob. |
| cl_avfx_snow_flashlight_white_preserve | default 0.80 / range 0..1 / step 0.05 | When the flashlight is the dominant local boost on a snow fragment (out-ranks lightning / amplified dlight / emissive), push the lit color toward its own luminance so the result stays visually white instead of tinting or clipping inside the cone. 0 = no white preservation (lit color is whatever the lift produces). 1 = fully push toward greyscale of the lit luminance. 0.80 (default) keeps snow reading as snow-white in the cone while still allowing slight celestial tint at the edges. |
| cl_avfx_snow_footprint_fade_rate | 0.1..20.0 (default 1.0) | Snow footprint fade-speed multiplier. Footprints still depend on snowfall / snow fill, but this cvar scales how quickly they are covered back up. 1 = normal, 0.1 = 10x slower / longer-lasting tracks, 10 = 10x faster, 20 = maximum fast fade. |
| cl_avfx_snow_footprint_strength | 0..1 (default 0.65) | Per-step footprint carve strength. Higher values make each step darker/deeper; lower values leave subtle shallow marks. |
| cl_avfx_snow_footprints | 0=off / 1=on (default) | Enable local-player footprints in GPU snow. Footsteps carve visible marks into the snow field and refill as snow accumulation continues. |
| cl_avfx_snow_gpu | 0=baseline / 1=enable GPU material (default) | GPU snow material master toggle. Adds a fragment-shader pass on top of accumulated AVFX snow primitives with world-space noise, cold tint, relief illusion and optional sparkle. The shader runs only where CPU validity authorises snow. Default 1 for snow-enabled AVFX profiles; master AVFX and the snow preset remain opt-in. |
| cl_avfx_snow_gpu_clumpy_edge | 0=off (default) / 1=on | Optional snow clump pattern near snow/bare boundaries. Intended for subtle irregularity at exposed edges; main soft boundary remains controlled by edge feather settings. |
| cl_avfx_snow_gpu_clumpy_freq | 0.02..2.0 (default 0.18) | Frequency/scale of the optional snow clump pattern at boundaries. Lower values make larger, softer clumps; higher values make finer grain. |
| cl_avfx_snow_gpu_continuity | 0=stop at face boundaries / 1=carry across adjacent floors (default) | Additive support layer that carries snow across adjacent static BSP floors so a snow field does not end in a hard break exactly on a BSP face boundary. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_coverage | 0/1 (default 1) | world-XY snow coverage atlas. When ON, the C4 material output is multiplied by a CPU-built atlas tracking snow coverage over time, so the level grows into snow instead of appearing instantly. Default 1 for the accepted snow material baseline. |
| cl_avfx_snow_gpu_coverage_prefill | 0..1 (default 0.0) | Snow coverage atlas prefill floor. 0 starts a level clean and lets snow accumulate over time; 1 starts already fully covered. Intermediate values seed partial coverage. |
| cl_avfx_snow_gpu_coverage_res | 64..1024 (default 1024, snapped) | coverage atlas resolution in pixels per axis. Snapped to {64, 128, 256, 512, 1024}. Default 1024 gives fine transitions while keeping memory around 1 MB. |
| cl_avfx_snow_gpu_coverage_tile_px | 32 or 64 pixels (default 32) | Dirty-tile size, in atlas pixels, used by the accelerated backend when it uploads changed parts of the snow coverage atlas. Smaller tiles give tighter bounding boxes on scattered changes and upload less redundant area; larger tiles mean fewer, bigger uploads. Changing the value forces a full coverage rebuild on the next frame so tile geometry stays consistent. Accelerated backend only (cl_avfx_backend 1); the Classic backend ignores this cvar entirely. |
| cl_avfx_snow_gpu_debug | default 0 / 0=off, >0=diagnostic (diagnostic, current session only) | Developer-only: GPU-snow diagnostic overlay/print. 0=off. Not archived, no menu; zero cost at 0. |
| cl_avfx_snow_gpu_displace | 0/1 (default 0, reserved / not active) | Reserved (not active in this release) — vertex displacement on AVFX snow primitives only. When implemented, will offset snow stamp vertices along the surface normal up to cl_avfx_snow_volume_h_max for a sense of accumulated depth. BSP world geometry will not be displaced. |
| cl_avfx_snow_gpu_drip_wu | 0..32 world units (default 10) | Height, in world units, of the snow drip band that hangs down a vertical face below a snow-covered floor above it. The band is broken up by per-fragment noise so it reads as irregular fingers fading into nothing rather than a painted stripe; 0 removes it. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_edge_feather | 0=off / 1=on (default) | Shader-side soft fade along exposed snow receiver edges. Helps snow end naturally near lava, moving doors, cliffs and unsupported borders instead of cutting as a hard rectangle. |
| cl_avfx_snow_gpu_edge_feather_min_wu | 0..64 world units (default 12) | Lower bound, in world units, for the snow edge feather band. Small receiver faces would otherwise get a feather so narrow that the edge reads as a hard cut; this floor keeps a visible soft edge on them. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_edge_feather_wu | 1..256 wu (default 24) | Width of the soft snow edge fade band in world units. Larger values make boundary transitions wider and softer. |
| cl_avfx_snow_gpu_edge_flat_nz | 0..1 normal.z (default 0.95) | Flatness cutoff used by cl_avfx_snow_gpu_edge_flat_skip: a face counts as flat when the absolute vertical component of its normal is at least this value. Lower it to treat gentle slopes as flat too, raise it to restrict the exemption to almost perfectly level faces. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_edge_flat_skip | 0=feather every face / 1=skip the feather on flat faces (default) | Treat nearly-flat faces as surfaces rather than edges and skip the edge feather and edge noise on them. This is what keeps flat floors near water clean instead of showing a grainy sand-like band along the shoreline. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_edge_noise_wu | 0..32 wu (default 10) | Noise amplitude added to the snow edge fade distance. Prevents perfectly straight fades and makes snow boundaries look more organic. |
| cl_avfx_snow_gpu_exposure | 0/1 (default 1) | top-down ortho exposure FBO that records the closest occluder above each world XY column. the material pass samples it to discard fragments under overhangs / ceilings. Default 1 for the snow material baseline. |
| cl_avfx_snow_gpu_exposure_res | 256/512/1024/2048/4096 (default 1024) | resolution of the exposure FBO (256/512/1024/2048/4096). Higher = finer exposure mask, more memory + render cost. Default 1024 = 4 MB color tex + 4 MB depth renderbuffer; ample for typical Q2 maps. |
| cl_avfx_snow_gpu_exposure_taps | 1=sharp/cheap / 4=balanced default / 9=smoother edge | Quality of soft snow-edge sampling. 1 is sharper and cheaper, 4 is the default balanced value, 9 is smoother and a little more expensive. It controls how gently snow fades near cover / sky-boundary transitions. |
| cl_avfx_snow_gpu_footprint_depth | 0..1 (default 1.0) | Visual depth multiplier for GPU snow footprints. Controls how strongly footprints affect the snow material depth/parallax channel. |
| cl_avfx_snow_gpu_footprint_size_wu | 0..256 wu (default 100) | Footprint size in world units for the GPU footprint atlas. Larger values make each step wider; smaller values produce tighter boot marks. |
| cl_avfx_snow_gpu_footprints | 0/1 (default 0, reserved / not active) | Reserved (not active in this release) — GPU-rendered boot-print depressions. Existing 2D overlay footprints continue to work in both Шапки and Покров modes. When implemented, will render boot prints as smooth oval depressions in the snow material instead of textured stickers on top. |
| cl_avfx_snow_gpu_footprints_res | 128..2048 pixels (default 512) | Resolution of the footprint atlas that records where players have walked through the snow. Higher values keep footprint edges crisp on large maps at the cost of texture memory; lower values are cheaper and blur the prints. Requires cl_avfx_snow_footprints 1 in addition to the snow chain. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_fringe | 0=off, receiver-mesh feather only (default) / 1=draw the legacy fringe stamps | Legacy stamp overlay that painted a snow fringe past the polygon edge. The receiver-mesh edge feather replaced it, so it is off by default and is kept for A/B comparison against the current edge treatment. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_fringe_alpha | 0..1 (default 0.45) | Per-overlay opacity of the legacy fringe stamps. It scales the alpha byte written by each stamp and therefore only has a visible effect while cl_avfx_snow_gpu_fringe 1. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_fringe_width_wu | 0..256 world units (default 56) | Width, in world units, of the legacy fringe stamps. Only has a visible effect while cl_avfx_snow_gpu_fringe 1. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_glitter | 0.0..1.0 (default 0.15) | Snow sparkle strength in the GPU snow shader. Draws tiny round icy glints with a soft halo at world-fixed positions instead of rectangular white marks. The glints also write to the bloom buffer, so gl_bloom, gl_bloom_strength, gl_bloom_threshold and gl_bloom_sigma control the final glow. Active only at snow GPU quality >= normal. 0 = no sparkles; default 0.15. |
| cl_avfx_snow_gpu_lava_melt_noise | 0..1 (default 0 = clean band) | Break-up noise applied to the melt band where snow meets lava. 0 keeps a clean melt edge; higher values give the band a figured, irregular outline. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_lava_melt_slope_only | 0=fade on all faces near lava / 1=fade on slopes only (default) | Restrict the lava melt fade to sloped faces. With it on, flat floors near lava keep a uniform snow fill and only slopes show the melt gradient, which is the accepted look; with it off every face near lava fades. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_material | 0/1 (default 1) | render snow as a GPU material on real BSP world face polygons (not as overlay-quads above the world). This is the accepted production path for the 1.3 snow profile defaults. |
| cl_avfx_snow_gpu_material_alpha | 0..1 (default 1.0) | output alpha for the material pass (0..1). 1.0 = fully opaque snow (default, matches the overlay opacity). Lower values make snow translucent — brush surface beneath shows through. Combined with cl_avfx_snow_gpu_noise / relief / glitter / quality gives runtime control over the visual. |
| cl_avfx_snow_gpu_material_debug_mode | default 0 / 0=off, >0=mode (diagnostic, current session only) | Developer-only: GPU-snow material diagnostic mode (highlights how receivers/materials are classified). 0=off. Not archived, no menu; zero cost at 0. |
| cl_avfx_snow_gpu_material_edge_fade_wu | 0..256 (default 100) | Width of the soft snow-edge transition in world units (0..256, default 100). Higher values make the border between snowy and bare nearby surfaces fade more gently; 0 keeps the edge hard. |
| cl_avfx_snow_gpu_material_min_fill | 0..1 (default 1; 0=pure organic accumulation, 0.35=soft playable, 0.70=mostly filled) | Floor under the source intensity that the surface graph propagates to spill faces. It is not a global coverage prefill: it only raises the level the spill chain carries, so indoor geometry can be judged without waiting for organic accumulation. The effective value still ramps up over time. 0 gives a pure organic accumulation test, 1 is the accepted target. Part of the spill chain: it only matters while cl_avfx_snow_gpu_spill 1. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_mesh_debug | default 0 / 0=off, >0=overlay (diagnostic, current session only) | Developer-only: GPU-snow mesh diagnostic overlay. 0=off. Not archived, no menu; zero cost at 0. |
| cl_avfx_snow_gpu_noise | 0.0..1.0 (default 0.45) | world-noise amplitude in the GPU snow shader. Drives a 2-octave hash noise sampled in world XY (so the pattern is locked to the map's ground plane, not the camera). 0 = no noise modulation; 1 = strongest variation (about ±8% albedo swing). Default 0.45. Effective only when cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_pom | 0=flatter/cheaper snow / 1=high-quality snowdrift volume (default) | High-quality snowdrift volume shader. When enabled, flat GPU snow gains a stronger depth illusion and reads more like accumulated snow mass. Disable it for the cheaper, flatter relief path. |
| cl_avfx_snow_gpu_pom_alpha | 0..1 (default 0.95) | Snowdrift volume strength (0..1, default 0.95). This is the maximum strength of the depth effect; when cl_avfx_snow_gpu_pom_grow_time is enabled, the actual volume grows up to this value over time. |
| cl_avfx_snow_gpu_pom_depth_wu | 0..32 world units (default 32) | Maximum virtual snowdrift height in world units (0..32, default 32). Higher values make the depth illusion taller at grazing angles; the growth timer treats this as the final target height. |
| cl_avfx_snow_gpu_pom_edge_taper | 0=harder edge / 1=soft snowdrift edge (default) | Fade snowdrift volume at the snow boundary. Keeps the raised snow depth from ending as a hard cliff at the edge of the snow-covered area. |
| cl_avfx_snow_gpu_pom_grow_effective | 0..1 internal/dev | Internal runtime multiplier produced by cl_avfx_snow_gpu_pom_grow_time. 0 means snowdrift volume has not grown yet; 1 means the configured snowdrift strength/height is fully reached. Not archived; meant for diagnostics, not manual tuning. |
| cl_avfx_snow_gpu_pom_grow_time | 0=off/immediate volume (default) / 1..3600 seconds = grow snowdrifts over time | Optional snowdrift growth time in seconds. 0 (default) keeps snowdrift volume immediate. When set to 1..3600, the snow first lays down as a flat blanket; then snowdrift volume grows smoothly toward the configured strength/height over at least this many seconds. Weak snowfall can stretch the time; heavy snowfall never makes it shorter than the configured value. |
| cl_avfx_snow_gpu_pom_steps | 4..32 (default 29) | Snowdrift detail / quality (4..32, default 29). Higher values make the depth illusion smoother and more stable, but cost more shader work. Lower values are faster but can look rougher. |
| cl_avfx_snow_gpu_quality | 0..2 (default 1) | quality tier for the GPU snow shader. 0 = low: relief halved, no glitter (cheapest). 1 = normal (default): full noise + relief + glitter on top of base albedo. 2 = high: same as normal but the shader retains all detail at the highest internal precision. Effective only when cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_receivers | 0/1 (default 1) | build receiver inventory of BSP world faces eligible for snow accumulation (upward-facing normal, not sky/liquid/transparent, sky-cache accepted). Default 1 for the snow material baseline. |
| cl_avfx_snow_gpu_relief | 0.0..1.0 (default 0.35) | relief illusion strength in the GPU snow shader. Where the noise dips low, snow gains a cold blue-shadow tint and a subtle darken; where it peaks, a slight rim-lighten. Sells a soft non-flat surface without real geometry. 0 = flat; 1 = strongest tint (default 0.35). Effective only when cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_relief_intensity | 0..1 (default 1.0) | Master strength of snowdrift relief (0..1, default 1.0). At 0 the snow looks flatter; at 1 the snow surface reacts more strongly at grazing angles, making the blanket read as raised snow mass. |
| cl_avfx_snow_gpu_small_face_area_wu2 | 0..65536 (menu step 256, default 4096) | Small BSP face area threshold in square world units. Higher values treat more narrow/tiny faces as small snow receivers; default 4096. Requires cl_avfx 1 + cl_avfx_world 1 + cl_avfx_snow_accum 1 with the GPU receiver path active; changing it re-classifies BSP receiver faces on the next rebuild. |
| cl_avfx_snow_gpu_small_face_inradius_wu | 0..256 world units (default 32) | Inradius threshold, in world units, below which a BSP face counts as a small snow receiver. Small faces such as stair treads use the tightened material clamp instead of the normal receiver path. Raise it to treat more narrow geometry as small. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_spill | 0=only directly sky-exposed faces / 1=spread onto connected floors (default) | Master switch for snow spill: snow that reaches a sky-exposed receiver is allowed to spread onto connected floors that have no sky of their own, so a hall next to an open courtyard is snowed rather than bare. With it off, only directly exposed faces carry snow. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_spill_allow_water | 0=strict fence around every liquid / 1=allow snow beside water (default) | Allow snow on dry floors next to water. Water is not lava, so the strict full-liquid fence is not needed there; the lava melt edge is preserved either way. Set it to 0 to restore the strict fence around every liquid. Part of the spill chain: it only matters while cl_avfx_snow_gpu_spill 1. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_spill_alpha | 0..1 (default 0.75) | Global opacity multiplier applied to spilled snow, so indoor spill can read lighter than the directly exposed snow it comes from. Part of the spill chain: it only matters while cl_avfx_snow_gpu_spill 1. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_spill_chain_passes | 1..32 passes (default 8) | Number of propagation passes the spill solver runs. Each pass advances the front by one graph hop, so deep interiors need several; the solver exits early once nothing changes, so a generous value costs little. Part of the spill chain: it only matters while cl_avfx_snow_gpu_spill 1. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_spill_edge | 0=no edge seeding / 1=seed spill from exposed edges (default) | Seed spill from the exposed edges of receiver faces. This is the mechanism that carries snow through a doorway: the exposed edge acts as the source line the spill field grows from. Part of the spill chain: it only matters while cl_avfx_snow_gpu_spill 1. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_spill_fade_wu | 0..512 world units (default 96) | Width, in world units, of the fade band past the full-strength band. It sets how far spilled snow reaches from its seed before it disappears, and therefore how sharp the outer edge of an indoor snow patch looks. Part of the spill chain: it only matters while cl_avfx_snow_gpu_spill 1. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_spill_full_wu | 0..256 world units (default 0) | Width, in world units, of the band around each seed that receives full-strength spill before the falloff starts. 0 means the falloff begins immediately at the seed, which is what produces a visible gradient instead of a saturated flat fill. Part of the spill chain: it only matters while cl_avfx_snow_gpu_spill 1. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_spill_graph | 0=distance-bounded spill / 1=graph-bounded spill (default) | Bound spill by a surface graph of connected upward world faces instead of by distance alone. Snow then propagates only along floors that are actually reachable from a snowed receiver, so it cannot bleed through a wall into an unrelated room. Part of the spill chain: it only matters while cl_avfx_snow_gpu_spill 1. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_spill_graph_max_wu | 0..4096 world units (default 256) | Maximum graph distance, in world units, that spill may travel from a receiver along the surface graph. It is the reach of indoor snow measured along the floor, not through the air. Part of the spill chain: it only matters while cl_avfx_snow_gpu_spill 1. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_spill_graph_segment_min_overlap | 0..64 world units (default 6) | Minimum length, in world units, that two colinear face edges must overlap before the graph treats them as adjacent. Raising it demands a more substantial shared border and rejects incidental touches. Part of the spill chain: it only matters while cl_avfx_snow_gpu_spill 1. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_spill_graph_segment_tol_wu | 0..64 world units (default 6) | Tolerance, in world units, for deciding that two face edges are colinear when the surface graph is built. It is what connects BSP-fragmented brush boundaries and T-junctions that endpoint matching alone would miss. Part of the spill chain: it only matters while cl_avfx_snow_gpu_spill 1. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_spill_max_drop_wu | 0..512 world units (default 96) | Largest vertical drop, in world units, that spill may cross downward from its receiver. It stops snow from falling down deep shafts onto unrelated floors far below. Part of the spill chain: it only matters while cl_avfx_snow_gpu_spill 1. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_spill_max_edge_samples | 256..65536 samples (default 10124) | Upper bound on how many edge sample points the spill builder may take in one map. It is a safety cap for very large maps: raising it improves coverage on huge levels, lowering it bounds the build cost. Part of the spill chain: it only matters while cl_avfx_snow_gpu_spill 1. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_spill_sameplane_wu | 0..1024 world units (default 256) | Proximity radius, in world units, within which two faces are treated as the same spill plane when the spill target list is built. Part of the spill chain: it only matters while cl_avfx_snow_gpu_spill 1. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_spill_small_step_wu | 0..64 world units (default 12) | Vertical difference, in world units, still treated as the same level when spill crosses a threshold. It lets snow bridge a low door sill without painting the riser face itself. Part of the spill chain: it only matters while cl_avfx_snow_gpu_spill 1. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_spill_step_wu | 1..128 world units (default 20) | Spacing, in world units, between seed points placed along an exposed edge. Smaller steps give a smoother spill front at the cost of more seeds; larger steps are cheaper and coarser. Part of the spill chain: it only matters while cl_avfx_snow_gpu_spill 1. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_spill_support_tail | 0=hard cutoff at the graph limit / 1=soft tail extension (default) | Soft-tail extension for claimed spill faces that are far from any receiver along the graph. It is what removes the bare patches those faces used to show under the old hard cutoff; set it to 0 to compare against that older behaviour. Part of the spill chain: it only matters while cl_avfx_snow_gpu_spill 1. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_spill_support_tail_wu | 0..8192 world units (default 2048) | Reach of the soft-tail extension in world units. It is intentionally longer than the ordinary graph reach, since its whole purpose is to cover faces the chain could not reach. Part of the spill chain: it only matters while cl_avfx_snow_gpu_spill 1. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_spill_unreached_amount | 0..1 (default 0.65) | Base snow level given to those unreachable spill faces. Lower values leave them visibly thinner than properly connected snow; 1 makes them indistinguishable from it. Part of the spill chain: it only matters while cl_avfx_snow_gpu_spill 1. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_spill_unreached_fill | 0=leave unreachable faces bare / 1=fill them to the base level (default) | Give claimed spill faces that have no graph path to any receiver — thin ledges and bridges cut off by vertical drops — a flat base level of snow so they are not left bare. Part of the spill chain: it only matters while cl_avfx_snow_gpu_spill 1. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_submodel_cut_feather_wu | 0..64 world units (default 8) | Width, in world units, of the inward taper drawn where static world snow meets an excluded moving brush such as a lift or door. It is deliberately narrow so the snow tapers into the gap instead of ending in a hard rectangle. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_thickness_growth | 1..64 (default 10) | How quickly the stored snow depth of a receiver grows while snow keeps falling on it. Larger values reach the thick accepted look sooner after a map starts; smaller values keep a thin dusting for much longer. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_gpu_uzory_debug | default 0 / 0=off, >0=overlay (diagnostic, current session only) | Developer-only: GPU-snow frost-pattern (uzory) diagnostic overlay. 0=off. Not archived, no menu; zero cost at 0. |
| cl_avfx_snow_mesh_legacy_debug | default 0 / 0=off, >0=overlay (diagnostic, current session only) | Developer-only: legacy snow-mesh diagnostic overlay. 0=off. Not archived, no menu; zero cost at 0. |
| cl_avfx_snow_ordinary_debug | default 0 / 0=off, >0=diagnostic (diagnostic, current session only) | Developer-only: ordinary (non-GPU) snow diagnostic overlay/print. 0=off. Not archived, no menu; zero cost at 0. |
| cl_avfx_snow_surface_style | 0..20 (default 1) | TZ 2026-06-22 — snow surface material style. Picks the tile used by the snow material (C4 body, C7B spill/fringe stamps, caps and volume). 0 = Classic (legacy pics/q2prox/avfx/snow_blanket.png); 1..20 = reference-derived natural snow tiles under pics/q2prox/avfx/ss/s1.png..s20.png (fine powder, crystal grain, wind-brushed crust, soft drifts, blue ice, dimpled drift, etc.). Applies live with no vid_restart; a missing tile falls back to Classic. Use the existing noise/relief/glitter/quality controls for strength. |
| cl_avfx_snow_volume | 0=flat only / 1=volume on near cells (default) | extruded 3D snow volume on near-range Покров cells. When 1 (default), accumulated snow cells within cl_avfx_snow_volume_near_wu of the camera render as raised caps with visible side bevels on exposed edges; mid/far cells beyond that radius keep the cheap flat overlay; cells beyond cl_avfx_render_lod_wu remain culled. Sky-gate inheritance: only cells already accepted by the strict v9.22 sky cache get volume — no indoor leak. 0 = always flat (legacy behavior). |
| cl_avfx_snow_volume_align_surface | 0=world-axis cells (default) / 1=align cells to surface texture axes | Align snow volume cells to the texture axes of the floor brush instead of to world axes. On maps whose floor textures are rotated this makes the cell grid follow the visible surface direction; on maps with plain axis-aligned textures the two are identical. Requires cl_avfx 1 + cl_avfx_world 1, the snow preset (cl_avfx_preset 2) and cl_avfx_snow_accum 1 with the GPU receiver path cl_avfx_snow_gpu 1. |
| cl_avfx_snow_volume_growth | 0.05..4.0 (default 0.35) | snow depth growth rate relative to coverage. Multiplier on AddHit for the depth byte: depth_step = coverage_step × growth. 0.35 (default) means depth fills ~3× slower than coverage so the visible blanket appears quickly while the volume thickens gradually over the session. 1.0 = depth and coverage grow at the same rate. >1.0 = depth saturates first (looks like fresh deep snow on bare ground — uncommon). <0.1 = volume barely lifts even at full coverage. |
| cl_avfx_snow_volume_h_max | 0..32 wu (default 10.0) | saturation snow depth in world units. Per-cell volume height grows with the cell's depth byte through a smoothstep curve up to this ceiling, modulated by per-cell jitter so neighbour heights vary slightly. Default 10.0 wu is the accepted baseline: visible accumulation without turning surfaces into slabs. 4-6 = light dusting / shallow snow. 8-12 = visible accumulation. 16-32 = blizzard drift / debug. Effective only when cl_avfx_snow_volume is on. |
| cl_avfx_snow_volume_near_wu | 0..4096 wu (default 4096) | radius in world units within which volume geometry is built. Cells beyond this radius (but still within cl_avfx_render_lod_wu) fall back to the cheap flat overlay; the volume cap stays a near-range visual. Default 4096 wu keeps the accepted snow look stable across q2dm1-scale movement. Lower values reduce volume CPU/GPU cost. Combined with LOD: effective volume range = min(this, cl_avfx_render_lod_wu when LOD on). |
| cl_avfx_snow_volume_uv_scale | 16..256 wu (default 184) | snow blanket texture tile size in world units. Sets how many world units cover one repetition of the snow grain texture. Default 184 wu/tile is the accepted baseline: calmer large-scale grain with less tiled noise. Texture is sampled at world-projected UVs so adjacent cells share a continuous grain stream. Asset is pics/q2prox/avfx/snow_blanket.png; falls back to the round-alpha particle texture if missing. |
| cl_avfx_snow_wall_smear | 0=off (default) / 1=on | TZ 2026-07-02 — optional vertical wall snow smear. When on, a light snow film clings a limited distance up STATIC BSP walls that share a real edge with an adjacent snow-covered floor receiver. Additive and isolated: never changes the accepted floor/spill/continuity snow, never runs on movers (doors/plats/lifts), sky/warp/liquid/nodraw faces, ceilings/undersides, or no-contact lethal voids. The film is bottom-up + organic-topped, seeded from the neighbouring floor's visible snow, and honours Distance LOD. Weapon impacts on a smeared wall leave snow marks using the real wall normal. Off by default; tune height/opacity/noise in the Edges submenu. |
| cl_avfx_snow_wall_smear_alpha | 0..1 (default 0.35) | TZ 2026-07-02 — opacity of the wall snow smear. 0 = invisible, 1 = full snow opacity. Combined with the floor's own visible snow amount and the global snow-material alpha, so the restrained default reads as a subtle wind-blown residue, not an opaque sheet. |
| cl_avfx_snow_wall_smear_clump_scale | 0.3..3.0 (default 1.0) | TZ 2026-07-02 — wall snow clump size. Higher values make the clumps smaller and more frequent (finer granular snow); lower values make fewer, larger clumps. Live tuning knob for the wall-snow look. |
| cl_avfx_snow_wall_smear_density | 0..1 (default 0.5) | TZ 2026-07-02 — wall snow coverage amount. Shifts the clump acceptance threshold: higher = the clumps cover more of the wall (denser), lower = sparser scattered clumps. Live tuning knob. |
| cl_avfx_snow_wall_smear_fill_ratio | 1..20 (default 5) | TZ 2026-07-02 — how many times SLOWER the wall snow fills in than the horizontal floor it grows from. 1 = same speed as the floor; 5 (default) = wall builds up 5x slower; 20 = very gradual. The wall opacity ramps over time and never outruns the floor's own fill, so wall snow lags behind floor snow naturally. |
| cl_avfx_snow_wall_smear_height_wu | 8..512 wu (default 48) | TZ 2026-07-02 — how far the wall snow smear climbs up the wall, in world units. Kept low by default so it reads as a thin residue hugging the floor/step contact; the reach varies along the wall and the top breaks up organically (see the noise toggle). On stairs each step gets its own thin band. Only meaningful with cl_avfx_snow_wall_smear 1. |
| cl_avfx_snow_wall_smear_noise | 0=smooth / 1=organic (default) | TZ 2026-07-02 — organic top edge for the wall snow smear. 1 = the upper boundary is eroded by world-locked noise so it reads as packed snow dust / wind residue rather than a straight painted line. 0 = a plain smooth gradient top. |
| cl_avfx_snow_water_effects | 0=off / 1=snow water contacts (default) | Snow-on-water contact effects for the snow preset. When a falling snow sample reaches sky-exposed CONTENTS_WATER, Q2PRO-X keeps the water as water and adds a soft low-strength ripple plus small pale drifting melt specks on the surface; a small fraction of specks also emits bloom-capable icy glints. Lava/slime are excluded and keep their own steam path. Independent of cl_avfx_water: the contact layer can render even if the enhanced water shader is off. Subject to cl_avfx_world and the open-sky gate. |
| cl_avfx_snow_water_patch_density | 0..1 (default 0.45) | Visible density/chance for drifting snow melt patches on water, 0..1. Rings still mark snow contacts, but this cvar controls how often longer-lived pale surface patches appear. 0.0 disables the visible patches and effectively mutes the contact sampling; 0.45 (default) gives sparse natural patches; 1.0 is a dense/debug look. |
| cl_avfx_snow_water_patch_drift_speed | 0..16 wu/s (default 4) | Drift speed for snow melt patches on water in world units per second. 0 keeps patches almost pinned to the hit point; 4 (default) gives subtle movement; 16 is visibly fast and useful for storm/wind testing. |
| cl_avfx_snow_water_patch_lifetime | 1..100 sec (default 10) | Lifetime for drifting snow melt specks on water, in seconds. Specks fade in, drift a little with wind/current, then fade out; nearby hits can refresh/merge them. 10 (default) keeps the previous timing; range 1..100 gives 10x shorter to 10x longer persistence. |
| cl_avfx_snow_water_patch_size | 0.01..4.0 (default 0.20) | Size multiplier for snow specks / melt patches on water. 0.20 is the default and is 5x smaller than the first T2 test build. Range is 0.01..4.0: 0.01 is 20x smaller than the default, 4.0 is 20x larger than the default. Also lightly scales the contact ripple so tiny snow does not create oversized water rings. |
| cl_avfx_spaceships | default 0 / 0 or 1 | Master toggle for AVFX sky spaceships: client-only decorative flybys of stock baseq2 Quake II ships (Strogg / Viper / Big Viper) that enter from beyond the horizon, cross the sky on long deterministic routes and fade into the distance. These are long sky flybys, NOT base1 scripted loops. Render-only: no gameplay, hitboxes, collision or network state. Independent of stars and weather preset. Default OFF (opt-in). |
| cl_avfx_spaceships_altitude | default 1.0 / range 0.25..4.0 / step 0.05 | Far-shell distance / apparent altitude multiplier. 1.0 (default). Higher = ships feel farther away and shrink more slowly. This is not a map height in world units. |
| cl_avfx_spaceships_arc_height | default 0.55 / range 0.0..1.0 / step 0.05 | Route apex bias. 0 = low horizon traffic, 1 = high overhead arcs. 0.55 (default). Render-only. |
| cl_avfx_spaceships_color_b | default 1.0 / range 0.0..2.0 / step 0.05 | Manual tint blue channel, used only when color_mode = 3 (Manual RGB). 1.0 (default). Render-only. |
| cl_avfx_spaceships_color_g | default 1.0 / range 0.0..2.0 / step 0.05 | Manual tint green channel, used only when color_mode = 3 (Manual RGB). 1.0 (default). Render-only. |
| cl_avfx_spaceships_color_mode | default 0 / 0 stock, 1 random, 2 palette, 3 manual RGB | Per-ship color styling. 0 = stock model colors, no tint. 1 = subtle deterministic random tint per ship (like monster variants). 2 = cinematic palette per ship. 3 = manual RGB tint for all ships (color_r/g/b). Color variation is render-only and does not affect gameplay; applied via entity color, no new shader. |
| cl_avfx_spaceships_color_r | default 1.0 / range 0.0..2.0 / step 0.05 | Manual tint red channel, used only when color_mode = 3 (Manual RGB). 1.0 (default). Render-only. |
| cl_avfx_spaceships_color_strength | default 30 / range 0..100 / step 1 | Color tint strength (percent). 30 (default). 0 = neutral even when color_mode is non-zero; 100 = strongest stylized tint. Render-only. |
| cl_avfx_spaceships_count | default 3 / range 1..100 / step 1 | Target maximum simultaneously active ship events. 3 (default), up to 100. Render-only and does not affect gameplay, hitboxes, collision or network state; high counts are heavier to render; low-quality / competitive-limited paths may cap it lower and report that in cl_avfx_info. |
| cl_avfx_spaceships_horizon_clip | default 0 / 0 full sphere, 1 upper sky only | Sky coverage, mirrors cl_avfx_stars_horizon_clip. 0 (default) = full celestial sphere: ships fly the whole sky above AND below the horizon (so they stay visible under floating levels and do not fade/melt at the horizon; below-horizon ships are still hidden by real geometry via the sky-stencil world sub-pass). 1 = clip to the upper sky only (classic above-horizon arcs that fade near the horizon). |
| cl_avfx_spaceships_min_duration | default 18.0 / range 8.0..90.0 / step 1.0 | Lower clamp for full flyby duration (seconds) after route length, average speed and per-event speed deviation are applied. 18.0 (default). Keeps high speed from collapsing flybys into short base1-like scenes — routes stay long sky flybys. |
| cl_avfx_spaceships_model | default 0 / 0 mixed, 1 Strogg, 2 Viper, 3 Big Viper | Which stock baseq2 ship model to fly. 0 = mixed stock fleet (deterministic mix of all present models). 1 = Strogg (models/ships/strogg1). 2 = Viper (models/ships/viper). 3 = Big Viper (models/ships/bigviper). Uses stock ship models only — no new assets. |
| cl_avfx_spaceships_rate | default 2.0 / range 0.0..100.0 / step 0.5 | Average ship spawn rate in events per minute. 2.0 (default), up to 100. 0 = no new flybys while existing ships finish their route. Decorative render-only pacing; does not affect gameplay. |
| cl_avfx_spaceships_roll | default 0 / 0 or 1 | Master toggle for aerobatic 360 barrel rolls: a rolling ship performs full turns around its length axis mid-flight (cockpit dips, continues, returns) while its flight path is unchanged. Render-only, per-event stable. Default OFF. |
| cl_avfx_spaceships_roll_chance | default 0.35 / range 0.0..1.0 / step 0.05 | Fraction of ships that perform aerobatic rolls (when the roll master is on). 0.35 (default). Higher = more ships roll. Decided once per event at spawn (stable). |
| cl_avfx_spaceships_roll_frequency | default 1.5 / range 0.0..8.0 / step 0.5 | Average number of full 360 rolls a rolling ship performs across its flight. 1.5 (default). 0 = none. Render-only. |
| cl_avfx_spaceships_roll_speed | default 1.0 / range 0.1..8.0 / step 0.1 | Roll rate: how fast one full 360 roll completes. 1.0 (default) is about 2 seconds per roll; higher = snappier. Phase-continuous ease-in/ease-out. Render-only. |
| cl_avfx_spaceships_scale | default 2.0 / range 0.25..20.0 / step 0.05 | Base model scale multiplier before distance / perspective shrink. 2.0 (default). Render-only. |
| cl_avfx_spaceships_size_variation | default 0.45 / range 0.0..1.0 / step 0.05 | Per-event size variation around the base scale. 0.45 (default). 0 = every ship uses exactly cl_avfx_spaceships_scale; 1 = broad variation (clamped so ships never become unreadably tiny or near-world huge). Render-only and does not affect hitboxes or collision. |
| cl_avfx_spaceships_sound | default 1 / 0 or 1 | AVFX sound master for the spaceship flyby sound. 1 (default). 0 = completely silent ships. Ship sound is optional and can be disabled completely; local-only decorative, one controlled one-shot near closest approach, missing WAVs play silent. |
| cl_avfx_spaceships_sound_volume | default 0.35 / range 0.0..1.0 / step 0.05 | Spaceship flyby sound volume. 0.35 (default). 0 = silent (equivalent to sound master off for playback). Optional; kept restrained so rare flybys add atmosphere without constant hum. |
| cl_avfx_spaceships_speed | default 1.0 / range 0.25..40.0 / step 0.25 | Average flight-speed multiplier. 1.0 (default), up to 40 (10x the old max). Higher = faster / shorter flybys. Render-only. At very high speed also lower cl_avfx_spaceships_min_duration — that floor otherwise caps how fast ships can cross (the floor is scaled down with speed but the base value still limits extreme settings). |
| cl_avfx_spaceships_speed_variation | default 0.35 / range 0.0..1.0 / step 0.05 | Per-event speed deviation around the average. 0.35 (default). 0 = every ship uses exactly cl_avfx_spaceships_speed; 1 = broad spread. Render-only and does not affect gameplay, hitboxes, collision or network state. |
| cl_avfx_spaceships_weave | default 0 / range 0.0..1.0 / step 0.05 | Course weave amount. 0 (default) = ships fly the straight sky arc. Higher = ships weave and wander off the arc with smooth lateral + vertical drift (banking into the turns). Render-only; the underlying route stays deterministic and camera-independent. |
| cl_avfx_spaceships_weave_frequency | default 2.0 / range 0.25..8.0 / step 0.25 | How many weave wiggles occur across a full flight. 2.0 (default). Only matters when cl_avfx_spaceships_weave > 0. Render-only. |
| cl_avfx_speed | 0.1..4.0 (default 1.0) | Speed multiplier for fall / drift speed of all preset elements. Combined with cl_avfx_weather_level. Affects rain streak length, drop cycle period and snow/ash/dust/mist drift. |
| cl_avfx_stars | default 0 / 0 or 1 | Master toggle for the AVFX celestial stars layer. When enabled, the sky shader renders a real-data star catalog (~50 brightest named stars + constellation anchors for Orion / Big Dipper / Cassiopeia / Cygnus / Lyra / Aquila / Taurus / Pleiades / Scorpius / Sagittarius / Pegasus / Andromeda) plus an extra faint background field. Stars respect cloud occlusion and fade in daylight / under full moon. Default OFF (opt-in). |
| cl_avfx_stars_auto_speed | default 1.0 / range 0..10 / step 0.1 | Multiplier on the auto-rotation rate when cl_avfx_stars_orientation_mode is 1 (sidereal) or 2 (AVFX day-cycle). 1.0 (default) = realistic real-time-like sweep (one 360° per sidereal day in mode 1, or per AVFX day in mode 2). Higher = faster, lower = slower; 0 freezes the auto contribution but keeps manual yaw/pitch/roll active. |
| cl_avfx_stars_auto_time | default 0 / range -86400..+86400 sec / step 60 | Static phase seed added to the auto-rotation accumulator, in seconds. Lets you set a deterministic starting orientation for a particular map / demo without waiting for the auto-rotation to drift into the right phase. Mode 1: shifts the sidereal day phase. Mode 2: shifts the AVFX day phase. Mode 0: unused (no auto rotation). |
| cl_avfx_stars_background_mode | default 2 / 0 dense background / 1 real catalog / 2 real catalog + dense background | Selects the background star source. 0 - dense stable background. 1 - real catalog point stars only. 2 (default) - real catalog + dense background. The real-catalog high-count path is intentionally deferred to a dedicated point/instanced draw pass; the dense background keeps the sky visually rich on the stable shader path. |
| cl_avfx_stars_bg_godrays | 0=Off / 1=On (default 0) | Allow procedural background stars to emit Sun God Rays streaks. OFF default: background stars stay visible, but do not create streaks. Requires cl_avfx 1, an active star pass and God Rays (cl_avfx_sun_godrays 1). With the toggle off that star class is routed around the radial blur instead of feeding it, so the stars stay visible but emit no streaks. |
| cl_avfx_stars_bloom | default 1 / 0 or 1 | Master toggle for the AVFX stars + planets forced bloom path. Adds a star-pixel-only postprocess glow to bright catalog stars + Venus + Mars. Works even when global gl_bloom 0 via a separate keep-alive flag that holds the bloom MRT alive. Star-pixel-only by construction — does NOT silently enable whole-scene bloom. Visible only when cl_avfx_stars 1. |
| cl_avfx_stars_bloom_blur_iterations | 1..32 iterations (default 8) | Number of blur iterations the bloom post pass runs while the star/planet bloom source is alive. This is a direct performance knob: fewer iterations restore frame budget, more iterations give a wider, softer halo around bright catalog stars. It only applies while the star post pass is actually alive, so a background-only star sky is unaffected. |
| cl_avfx_stars_bloom_intensity | default 1.10 / range 0.0..3.0 / step 0.05 | Stars bloom intensity multiplier. 1.10 (default) tuned for natural glow on Sirius / Vega / Venus / Mars without over-blooming. Multiplied with the per-star (emissive - threshold) excess to compute the actual bloom MRT contribution. |
| cl_avfx_stars_bloom_threshold | default 0.10 / range 0.0..3.0 / step 0.05 | Emissive threshold for the stars bloom contribution. 0.10 (default) — catalog stars / planets whose emissive (intensity × brightness × fade) exceeds this value contribute to bloom; the brightest extra background points can also contribute. At default settings this lets the top-magnitude catalog stars (Sirius / Vega / Capella / Rigel / Procyon / etc.) plus Venus and Mars bloom. Higher = only the brightest few; lower = many stars contribute. Milky Way haze does not bloom directly. |
| cl_avfx_stars_brightness | default 3.0 / range 0.0..3.0 / step 0.05 | Global brightness multiplier for all stars (catalog + extra background). 3.0 (default) gives the accepted dense night sky; lower for a subtle field. |
| cl_avfx_stars_cloud_occlusion | default 0.35 / range 0.0..1.0 / step 0.05 | Cloud occlusion strength for stars. 0 = stars ignore clouds entirely; 0.35 (default) = clouds dim stars with substantial residual leak through thin cloud cells. |
| cl_avfx_stars_colorful | default 0 / 0=accepted white look / 1=rare colour accents + subset twinkle | Master toggle for the colourful accent-star feature. OFF (default) keeps the accepted white / cold blue-white star look. ON tints a rare deterministic subset of stars with a fixed cinematic palette (cold/blue-white, electric blue, cyan, violet, magenta, ember red, warm amber — no green/acid/rainbow) and lets that subset slowly twinkle. Pure shader-side: no extra pass, texture, CPU rebuild, or per-star animation; selection is deterministic from stable star identity so colours never move with the camera or mouse. Independent from the internal cl_avfx_stars_twinkle_strength stabilization knob. |
| cl_avfx_stars_colorful_fraction | default 0.08 / range 0..0.50 | Fraction of star points eligible to receive an accent tint when cl_avfx_stars_colorful is ON. Default 0.08 (~8%%). Colours are sparse and unevenly distributed (warm red/amber and magenta are rarer than blue/violet); white / cold-blue stars stay the majority. Faint background stars can be selected too but read dim, so visible accents concentrate on the brighter stars. |
| cl_avfx_stars_colorful_intensity | default 1.00 / range 0..2 | Saturation / emissive weight of the coloured accent stars only. Default 1.00 leaves accents at palette strength. Higher boosts the emissive of coloured stars; this never globally brightens ordinary white stars. |
| cl_avfx_stars_colorful_twinkle | default 0.75 / range 0..1 / 0=static colours, no pulse | How strongly the eligible coloured stars (and any white stars selected by cl_avfx_stars_white_twinkle_fraction) pulse. Default 0.75. 0 disables the subset twinkle while keeping the colours static. Twinkle changes brightness / bloom only — never position, colour selection, or palette index. |
| cl_avfx_stars_colorful_twinkle_floor | default 0.04 / range 0..0.50 | Minimum brightness a twinkling star reaches at the dimmest point of its cycle, as a fraction of full. Default 0.04 lets stars fade almost to invisible without hard popping. Raise toward 0.5 to keep twinkling stars always clearly visible. |
| cl_avfx_stars_colorful_twinkle_seconds | default 4.00 / range 1..12 | Base full dim->bright->dim twinkle cycle length in seconds (before the speed multiplier). Default 4.00 makes the change visibly gradual and cinematic, not a fast sparkle. |
| cl_avfx_stars_colorful_twinkle_speed | default 1.00 / range 0.05..4 | Multiplier on the seconds-based twinkle cycle. The effective cycle length is cl_avfx_stars_colorful_twinkle_seconds / this speed. Default 1.00. Higher = faster pulse, lower = slower. Each star keeps a slightly different per-star frequency and phase so the field does not pulse in unison. |
| cl_avfx_stars_day_fade | default 1.0 / range 0.0..1.0 / step 0.05 | Daylight fade strength for stars. 0 = stars stay equally visible at noon; 1.0 (default) = strong fade driven by the sun's sky-altitude — stars only really emerge from sunset through dawn. |
| cl_avfx_stars_horizon_clip | default 0 / values 0,1 | Star sky extent. 0 (default) = full celestial sphere: stars, Milky Way, constellations and planets cover the whole sky including below the mathematical horizon (the right look when an AVFX sky hides the map's own sky texture). 1 = clip at the horizon: sky objects below the world horizon are culled, so on maps with a real below-horizon SURF_SKY (e.g. cor_ffa_d) shown with the map sky (cl_avfx_sky 0) the stars do not paint over the mountains. |
| cl_avfx_stars_milky_way | default 1 / 0 or 1 | Master toggle for the procedural Milky Way band along the galactic plane. Visible when cl_avfx_stars 1. Default ON — enabling stars gives the intended look immediately. |
| cl_avfx_stars_milky_way_brightness | default 1.25 / range 0.0..3.0 / step 0.05 | Milky Way band brightness multiplier. 1.25 (default) gives a clearly visible cosmic glow; lower for subtle hint; up to 3.0 for cinematic bright sky. Obeys the same day/moon/cloud fade as the stars. |
| cl_avfx_stars_milky_way_contrast | default 0.40 / range 0.0..2.0 / step 0.05 | Milky Way noise contrast — controls the visibility of dust lanes vs cosmic glow patches. 0.40 (default); 0 = flat featureless band; higher = more pronounced dappled structure with darker dust lanes and brighter glow concentrations. |
| cl_avfx_stars_milky_way_width | default 0.70 / range 0.05..2.0 / step 0.05 | Milky Way angular band thickness (in radians of galactic latitude width). 0.70 (default); lower = thin tight band concentrated on the galactic plane; higher = wider diffuse glow spreading toward higher galactic latitudes. |
| cl_avfx_stars_moon_fade | default 1.0 / range 0.0..1.0 / step 0.05 | Full-moon fade strength for stars. 0 = full moon does not dim stars; 1.0 (default) = full moon high in the sky reduces faint-star visibility by up to ~40% (realistic moonlight washout). Scaled by current moon phase and altitude — new moon or low moon does little. |
| cl_avfx_stars_orientation_mode | default 0 / 0 manual / 1 sidereal auto / 2 AVFX day-cycle auto | Celestial sphere orientation source for the dedicated stars pass. 0 (default) = fixed/manual — uses cl_avfx_stars_yaw / _pitch / _roll directly. 1 = auto sidereal-like rotation around the celestial axis, yaw advanced by realtime × cl_avfx_stars_auto_speed (one 360° sweep per real sidereal day at speed 1.0). 2 = auto linked to the AVFX day cycle (same clock that drives sun/moon), one 360° sweep per AVFX day at speed 1.0. Both auto modes are smooth (not step-based) and add their contribution on top of the manual yaw/pitch/roll, so manual + auto can co-exist. |
| cl_avfx_stars_pitch | default 0 / range -90..+90 deg / step 1 | Manual pitch offset (tilt above/below the celestial equator) for the dedicated stars pass, in degrees. Live. 90 = pole-up, -90 = pole-down, 0 = equator on the horizon. |
| cl_avfx_stars_procedural | default 1.0 / range 0.0..1.0 / step 0.05 | Density of the extra faint background star field drawn ON TOP of the catalog stars. 0 = catalog only (sparse named stars on black); 1.0 (default) = dense extra background. Has no effect on catalog star visibility — it only adds the filler layer. |
| cl_avfx_stars_procedural_bright_tail | default 0 / 0=uniformly dim background (recommended) / 1=allow 5% bright tail | Allow a rare-bright tail (~5% of generated background stars) in the procedural background layer. OFF (default) keeps every generated star inside the uniformly dim RGB 0.025..0.080 range so the background layer never has a star bright enough to compete visually with the real catalog. ON adds a 5% chance per generated star to land in a brighter RGB 0.15..0.25 range (so the sky gets a few bright background dots — more dramatic but they can sit close enough to real catalog stars that the bright catalog's bloom halo overlaps them). Toggle for users who want a richer dynamic-range sky but accept the overlap. |
| cl_avfx_stars_procedural_count | default 12000 / range 0..20000 / step 250 | Total count of faint procedural background stars rendered through the dedicated AVFX stars geometry pass (2026-05-31 architecture). Generated by a deterministic spherical-Fibonacci distribution on the celestial sphere — no grid, no pole streaks, no meridian seams, identical placement every launch. These stars are intentionally faint (Vmag 5.0..7.5) and never feed forced bloom — only bright real-catalog stars and planets bloom. Set to 0 to render only the real catalog layer. Hard upper cap is 20000 (deeper than naked-eye limit; PO machine handles it easily because the dedicated pass is one instanced draw, not a per-pixel loop). |
| cl_avfx_stars_procedural_large | default 0 / 0=small dots only (recommended) / 1=allow up to 2x larger soft sprites | Allow large soft sprites in the procedural background layer. OFF (default) caps the per-star size variance to a small range so every procedural background star renders as a small dot regardless of cl_avfx_stars_size. ON unlocks the full 0.6..2.0 size variance so ~half the procedural background gets larger soft sprites — looks like a sky with a few bigger stars in the background, but those larger sprites can overlap the angular position of bright real catalog stars at the same screen area. Recommended OFF when real catalog is enabled. |
| cl_avfx_stars_real_bright_size | default 0.0 / range 0.0..4.0 / step 0.05 | Extra apparent-magnitude diameter multiplier for the brightest real catalog stars. 0.0 (default) keeps the accepted compact sizing. Higher values make stars with low/negative visual magnitude (Sirius, Canopus, Vega, Rigel, Betelgeuse-class anchors) visibly larger than ordinary catalog stars while leaving the faint procedural background unchanged. |
| cl_avfx_stars_real_brightness | default 3.00 / range 0.0..3.0 / step 0.05 | Real catalog point-star brightness multiplier (separate from cl_avfx_stars_brightness which controls the full star layer). 3.0 (default) — accepted brightness level matching the classic catalog look. Decrease for dimmer recognizable stars. |
| cl_avfx_stars_real_catalog | default 1 / 0 or 1 | Master toggle for the real catalog point-star path. ON (default) renders the real Hipparcos-anchored bright stars catalog as crisp point splats at proper RA/Dec coordinates — same crisp angular evaluation as the classic-tier catalog, with a much larger star count. OFF reverts to the classic fallback path (hand-curated 56 bright anchors + 27 hand-curated constellation segments + built-in background). Visible only when cl_avfx_stars 1. No texture sampling — stars are evaluated per-pixel against catalog directional data. |
| cl_avfx_stars_real_color | default 1 / 0 or 1 | When ON (default), real catalog stars use spectral B-V bucketed RGB tints from the catalog (cool blue O/B / white A / yellow-white F / yellow G / orange K / red M). When OFF, all stars render as pure white. The accepted Hertzsprung-Russell spectral classification is the source of the tint — Sirius white, Betelgeuse red, Rigel blue-white, etc. |
| cl_avfx_stars_real_count | default 1625 / range 64..2048 / step 16 | Requested active star count from the real catalog. The current fragment-shader path is internally capped to the brightest 256 stars for performance; a future point/instanced pass should lift this to the full catalog without sky-pixel cost. |
| cl_avfx_stars_real_godrays | 0=Off / 1=On (default 0) | Allow real catalog stars to emit Sun God Rays streaks. OFF default: stars stay visible, but do not create streaks. Requires cl_avfx 1, an active star pass and God Rays (cl_avfx_sun_godrays 1). With the toggle off that star class is routed around the radial blur instead of feeding it, so the stars stay visible but emit no streaks. |
| cl_avfx_stars_real_size | default 0.05 / range 0.05..4.0 / step 0.05 | Angular size multiplier for real catalog point stars. 0.05 (default) renders each star at the same sub-pixel size as the classic catalog stars so the layers visually line up when blended (background_mode 2). Higher for slightly softer larger pin-points (still point-like — not blobs). |
| cl_avfx_stars_roll | default 0 / range -180..+180 deg / step 1 | Manual roll offset (rotation about the view-forward axis) for the dedicated stars pass, in degrees. Live. Mostly a stylistic knob — real astronomy doesn't roll the sky. |
| cl_avfx_stars_size | default 0.20 / range 0.05..4.0 / step 0.05 | Visual size multiplier for star disks. 0.20 (default) gives tight pin-point stars; 0.05 = extremely tight sub-pixel stars; up to 4.0 for soft larger disks. Magnitudes still drive the per-star size variation underneath. |
| cl_avfx_stars_sync_debug | default 0 / 0=off, >0=diagnostic (diagnostic, current session only) | Developer-only: AVFX star-field synchronization diagnostic. 0=off. Not archived, no menu; zero cost at 0. |
| cl_avfx_stars_twinkle_strength | default 0.0 / range 0..1 / 0=no twinkle (stable), 1=legacy 6%% modulation | Amplitude multiplier for the real-catalog star twinkle (per-star deterministic sin oscillation). Codex round-5 (2026-06-01) binding: default 0.0 for the temporal stabilization pass after PO reported real stars appearing/disappearing during camera motion. At 1.0 reaches the legacy 0.06 amplitude (~6%% peak modulation). Applies only to bright catalog stars (bloom_w > 0). Internal — no menu row in this landing. |
| cl_avfx_stars_white_twinkle_fraction | default 0.00 / range 0..0.50 | Fraction of ordinary (non-coloured) white / cold stars that also twinkle, using the same smooth deterministic model as the coloured subset. Default 0.00 because the main intent is for the rare coloured stars to pulse. Independent from cl_avfx_stars_colorful_fraction; pulse strength still comes from cl_avfx_stars_colorful_twinkle. |
| cl_avfx_stars_yaw | default 0 / range -360..+360 deg / step 1 | Manual yaw offset (azimuth around the celestial axis) for the dedicated stars pass, in degrees. Live — changes apply immediately without map reload. Added to the auto-rotation contribution when cl_avfx_stars_orientation_mode is 1 or 2. |
| cl_avfx_static_sky_cell | 16..128 world units (default 48) | Cell size, in world units, of the static whole-map sky-exposure cache the accelerated backend builds at map load. Smaller cells reject non-sky areas more precisely but cost more traces during the build; larger cells build faster and reject more coarsely. Changing the value triggers a single-frame rebuild. Accelerated backend only (cl_avfx_backend 1); the Classic backend ignores this cvar entirely. |
| cl_avfx_storm | 0=no storm (default) / 1=storm enabled (rain preset only) | Optional storm event layer for the rain preset. When enabled with cl_avfx_preset=1 and cl_avfx_lightning=1, schedules rare lightning flashes and (if audio is on) thunder one-shots. Inactive for any other preset. |
| cl_avfx_storm_density | 0.0..1.0 (default 0.65) | Lightning/thunder event frequency baseline. Mean inter-strike interval is 30s..3s as the value grows from 0 to 1; per-strike jitter is ±50%. Multiplied by cl_avfx_lightning_frequency for the final cadence. Thunder volume also gets a small bias from this value. |
| cl_avfx_sun | 0=off (default) / 1=on | Master toggle for AVFX sun disk in the sky. When enabled, a visible sun disk renders at the configured direction with cloud-aware dimming and horizon fade. Disk is rendered inside the AVFX sky fragment shader (sky-pixel only — no fullscreen draw indoors). Time mode (manual / day-cycle / real-clock) controls position. Scope of is the disk + position + cloud occlusion + diagnostic; world/entity lighting physics and god rays / sun shafts are separate later landings. When master is 0, the disk is fully suppressed and there is no shader cost. |
| cl_avfx_sun_arc_apex | 1..89 degrees (default 72) | Peak elevation the sun reaches at local noon, in degrees above the horizon. Low values give a long low winter-like arc with permanently long shadows; high values give a steep summer arc with a short shadow at noon. Requires cl_avfx 1 + cl_avfx_sun 1 in a cycle/clock sun mode. |
| cl_avfx_sun_arc_yaw | 0..360 degrees (default 90 = +Y axis) | Compass direction of sunrise, in degrees, for the moving-sun modes. It rotates the whole day arc around the vertical axis, so it decides which side of the map the sun rises on and which way shadows sweep. Requires cl_avfx 1 + cl_avfx_sun 1 in a cycle/clock sun mode; the manual sun mode uses explicit azimuth/elevation instead. |
| cl_avfx_sun_azimuth | default 235 / range 0..359 / step 1 / degrees | Sun azimuth in degrees. Manual mode uses it as the exact disk azimuth; Day Cycle / Real Clock use it as the sunrise side of the sun arc. 0 = north, 90 = east, 180 = south, 270 = west. Default 235 = accepted tuned manual direction. |
| cl_avfx_sun_brightness | default 0.50 / range 0.0..5.0 / step 0.05 | Sun disk brightness multiplier. 0.50 (default) baseline; up to 5.0 for cinematic overexposed sun; 0 disables disk emission but the body still affects later lighting phases. |
| cl_avfx_sun_cloud_occlusion | default 0.90 / range 0.0..1.0 / step 0.05 | Cloud occlusion strength on the sun disk. 0 = sun ignores clouds (always at full brightness when above horizon); 0.90 (default) = clouds strongly dim the sun disk according to the AVFX cloud field while preserving readable glow through gaps. |
| cl_avfx_sun_color_b | default 0.78 / range 0.0..2.0 / step 0.01 | Sun disk color: blue channel. 0.78 (default) classic warm sunlight (RGB 1.00 / 0.92 / 0.78 ≈ sunny warm). |
| cl_avfx_sun_color_g | default 0.92 / range 0.0..2.0 / step 0.01 | Sun disk color: green channel. 0.92 (default) gentle warm bias. |
| cl_avfx_sun_color_r | default 1 / range 0.0..2.0 / step 0.01 | Sun disk color: red channel. 1 (default) baseline warm. Lower for cooler/whiter sun, higher for warmer/yellower-redder. |
| cl_avfx_sun_day_length | default 1440 / range 0.5..1440.0 minutes / step 0.5 | Day cycle length in minutes — how long a full 24h day takes when cl_avfx_sun_mode = 1 (Day Cycle). 1440 (default) = real-time 24h day; lower values create accelerated cinematic cycles. |
| cl_avfx_sun_elevation | default -34 / range -90..90 / step 1 / degrees | Sun elevation control. Manual mode uses it as the exact disk elevation above horizon. Day Cycle / Real Clock use it as the steepness of the stable maximum-Q2-BSP sky semicircle: 6:00/18:00 stay at horizon, 12:00 reaches the true visible sky top / zenith. The cycle is not fitted to the current map AABB. |
| cl_avfx_sun_entity_light | default 3 / range 0.0..3.0 / step 0.05 | Sun contribution to entity ambient (monsters, players, items, models). 3 (default) = same strength as world light; 0 = entity ambient unaffected by sun; up to 3.0 for cinematic exaggerated sunlit characters. Added to the entity light point AFTER dynamic lights and BEFORE doublelight scaling. |
| cl_avfx_sun_godrays | 0=off (default) / 1=on | Master toggle for AVFX celestial god rays / sun shafts. Screen-space radial blur post-process from the sun's projected screen position (GPU Gems 3 Ch. 13 style). Independent from gl_bloom — sun shafts render even when global bloom is disabled. OFF (default) keeps the accepted AVFX scene unchanged; ON adds soft radial light streaks that visually trail from the sun through the rendered scene, fading smoothly as the sun moves behind the camera, drops below horizon, hides behind walls (no scene luma → no rays), or is fully covered by clouds. Requires cl_avfx 1 and cl_avfx_sun 1. |
| cl_avfx_sun_godrays_cloud_beams | default 1 / range 0..1 | Master toggle for cloud SUNBEAMS — light shafts that break through the gaps between the visible volumetric clouds, layered on top of the base god rays. 0 = off (base god rays unchanged); 1 (default) = on. Needs cl_avfx + cl_avfx_sun + cl_avfx_sun_godrays + cl_avfx_volclouds and an AVFX sky (cl_avfx_sky 1 or 2). No effect on the map sky (cl_avfx_sky 0). |
| cl_avfx_sun_godrays_cloud_beams_gap_power | default 1.45 / range 0.2..4 / step 0.05 | Gap selectivity. Higher values make beams come only through clearer gaps; lower values let beams through thinner cloud too. 1.45 (default). |
| cl_avfx_sun_godrays_cloud_beams_intensity | default 1.45 / range 0..3 / step 0.05 | Artistic brightness multiplier for the cloud sunbeams ONLY (the base god rays are unaffected). 0 = no beams; 1.45 (default) = balanced shafts; up to 3.0 = strong. |
| cl_avfx_sun_godrays_cloud_beams_presence | default 0.40 / range 0..1 / step 0.05 | How much nearby cloud mass is required before a clear gap becomes a visible shaft. Higher values suppress beams in nearly clear sky (so you get shafts through BROKEN cloud, not generic clear-sky streaks). 0.40 (default). |
| cl_avfx_sun_godrays_cloud_beams_softness | default 0.45 / range 0..1 / step 0.05 | Width of the cloud-presence ramp. Higher values make the shafts broader and softer. 0.45 (default). |
| cl_avfx_sun_godrays_cloud_mask | default 0.90 / range 0..1 / step 0.05 | How strongly clouds mask the god rays. 0 = clouds do not affect rays (always visible regardless of cloud cover); 0.90 (default) attenuates rays via the accepted smoothed cloud transmittance while keeping them visible through light overcast. |
| cl_avfx_sun_godrays_decay | default 0.91 / range 0..1 / step 0.01 | Per-sample falloff multiplier along the radial ray (GPU Gems formula). 0.91 (default) gives smooth gradual fade; lower values fade faster (tighter rays); 1.0 = no decay (rays extend uniformly across all samples — usually too bright). |
| cl_avfx_sun_godrays_density | default 0.85 / range 0..2 / step 0.05 | Sample spacing / density along each radial-blur direction. 0.85 (default) gives the accepted long sun-shaft reach; lower values produce tighter rays close to the sun; higher values produce longer streaks across the screen. Combined with the sample count (cl_avfx_sun_godrays_samples) it determines how far rays extend from the sun. |
| cl_avfx_sun_godrays_downscale | default 2 / range 1..4 / integer | Render scale factor for the god-rays radial-blur pass. 1 = full resolution (maximum quality, highest cost); 2 (default) = half resolution (recommended balance); 4 = quarter resolution (cheapest, may look blocky at high sample counts). This landing composes the rays inside the existing post-process resolve so this reserves a future explicit downscale control — current implementation always runs at scene resolution. Range preserved for forward compatibility. |
| cl_avfx_sun_godrays_exposure | default 0.15 / range 0..2 / step 0.05 | Final exposure multiplier on the accumulated radial-blur result (GPU Gems formula). 0.15 (default) keeps the accepted rays readable without washing out the scene; higher values produce stronger overexposed-style rays. |
| cl_avfx_sun_godrays_intensity | default 1.45 / range 0..2 / step 0.05 | Overall god rays intensity multiplier. 1.45 (default) gives the accepted strong sun-shaft strength when the sun is visible; 0 = invisible; up to 2.0 = cinematic strong rays. Multiplied by the final visibility envelope (horizon × front × screen × cloud × sun brightness), so this is the artistic knob on top of physically-emergent ray strength. |
| cl_avfx_sun_godrays_samples | default 51 / range 8..96 / integer | Number of radial-blur sample taps from each fragment toward the sun's screen position. 51 (default) is the tuned quality/cost point; higher counts produce smoother continuous streaks; lower counts produce visibly banded rays but cost less. GPU cost is roughly linear in samples × screen pixels. |
| cl_avfx_sun_godrays_weight | default 0.55 / range 0..2 / step 0.05 | Per-sample brightness weight (GPU Gems formula). 0.55 (default) gives natural tuned ray strength; higher values brighten each sample's contribution; lower values weaken. |
| cl_avfx_sun_halo_alpha | default 1.0 / range 0.0..1.0 / step 0.05 | Sun local sky-shader halo opacity multiplier. 1.0 keeps the previous tuned halo visibility. 0 makes the halo fully transparent. This multiplies halo brightness and does not affect the sun disk. |
| cl_avfx_sun_halo_brightness | default 1.0 / range 0.0..5.0 / step 0.05 | Sun local sky-shader halo brightness multiplier. 1.0 keeps the previous tuned halo intensity. 0 removes halo light. Values above 1.0 strengthen the glow. |
| cl_avfx_sun_halo_size | default 1.0 / range 0.0..4.0 / step 0.01 | Sun local sky-shader halo radius multiplier. 1.0 keeps the previous tuned corona around the sun disk. 0 fully removes the local halo/glow. Values above 1.0 broaden the glow without changing the sun disk size. |
| cl_avfx_sun_indoor_leak | default 0.90 / range 0.0..1.0 / step 0.05 | Fraction of sun light that leaks into indoor / closed spaces. 0.90 (default) keeps interiors influenced by the celestial state without fully flattening them. 0 = no sun light leaks indoors; outdoor surfaces still receive normal sun light. 1 = indoor spaces receive the same celestial lighting as outdoor view. The gate uses the smoothed sky_exposure (~300 ms low-pass) so doorway transitions don't pop. |
| cl_avfx_sun_lighting | 0=off / 1=on (default) | Master toggle for AVFX sun scene lighting. When on, the sun's position drives a runtime tint × intensity multiplier on world surfaces and an additive ambient delta for entities. Stronger at noon, warmer at sunrise/sunset, gated by cloud cover and by view-side sky exposure (~300 ms smoothed). 0 = sun disk still draws but level lighting is unchanged from baseline. |
| cl_avfx_sun_lighting_multiplier | 1..20 (default 5) | Amplifies the SUN contribution to AVFX precipitation/water surfaces ONLY — water surfaces, puddles, runoff, rain streaks, snow and snowflakes — NOT world/sky lighting (those are tuned by cl_avfx_sun_world_light / cl_avfx_sun_brightness). Lets those surfaces stay bright at a sky-safe (low) sun brightness instead of over-darkening when cl_avfx_sun_lighting is on (PO Bugs/66). 1 = previous behavior, 5 = default, up to 20. No effect when cl_avfx_sun_lighting is off. |
| cl_avfx_sun_mode | default 0 (manual) / range 0..2 / 0=manual 1=cycle 2=real-clock | Sun position time mode. 0 = manual — use cl_avfx_sun_azimuth / cl_avfx_sun_elevation cvars verbatim (good for screenshots and tests). 1 = day cycle — 24h day passes in cl_avfx_sun_day_length minutes; cl_avfx_sun_time sets the starting hour. 2 = real local clock — sun position follows system time-of-day. Codex Q6 binding. |
| cl_avfx_sun_size | default 0.55 / range 0.1..5.0 / step 0.05 | Sun disk angular size multiplier. 0.55 (default) gives a visible tuned disk with glow; up to 5.0 for cinematic exaggerated sun; 0.1 = tiny pinpoint. Now ALSO scales sun scene lighting: a normalized, bounded area factor (size/0.55)^2 clamped to [0.05, 4.0], equal to 1.0 at the default size so the accepted default look is unchanged. A bigger sun lights world/snow/water/entities/sky more; a smaller sun dims them. The visible disk geometry and brightness are unchanged (scene illumination only, gated by cl_avfx_sun_lighting). |
| cl_avfx_sun_time | default 8.75 / range 0.0..24.0 / step 0.25 | Hour of day 0..24 used by Day Cycle mode as the starting hour. Also used as a static value when mode = Manual but the user wants to specify by time-of-day rather than azimuth/elevation. 12 = noon (sun near peak elevation in default model). |
| cl_avfx_sun_world_light | default 2.60 / range 0.0..3.0 / step 0.05 | Sun contribution to world / level surfaces. 2.60 (default) = strong tuned sunlight on outdoor surfaces; 0 = no world tint from sun; up to 3.0 for cinematic bright daylight. Applied as a fragment-shader multiply after lightmap contribution and before fog. Gated by cl_avfx_sun_indoor_leak when the player is in a closed space. |
| cl_avfx_surface_ferns | default 0 / 0..1 / step 1 | An independent Surface Objects category. Requires its master; Grass and Surface Materials are not required. |
| cl_avfx_surface_ferns_color_b | default 0.045 / 0..1 / step 0.01 | Base blue channel before scene lighting. |
| cl_avfx_surface_ferns_color_g | default 0.28 / 0..1 / step 0.01 | Base green channel before scene lighting. |
| cl_avfx_surface_ferns_color_r | default 0.12 / 0..1 / step 0.01 | Base red channel before scene lighting. |
| cl_avfx_surface_ferns_density | default 0.6 / 0.05..4 / step 0.05 | Fixed map population density. A change rebuilds placement once. |
| cl_avfx_surface_ferns_diversity | default 1 / 0..1 / step 0.01 | Varies fern crown, frond lengths, curvature, orientation and pinnate leaf shapes. 0 uniform plants; 1 full stable variety. |
| cl_avfx_surface_ferns_dynamic_light | default 1.00 / range 0..2 / step 0.05 | Brightness response of objects to engine dynamic lights. |
| cl_avfx_surface_ferns_light_celestial | default 1 / 0=off / 1=on | Makes ferns follow the live AVFX sun/moon/cloud-transmittance state. Uses ferns-specific strength, floor and night tint rather than snow tuning. |
| cl_avfx_surface_ferns_light_celestial_min_brightness | default 0.04 / range 0..1 / step 0.01 | Celestial brightness floor at a dark or moonless night. This is applied before local lights brighten individual fragments. |
| cl_avfx_surface_ferns_light_celestial_night_tint | default 0.35 / range 0..1 / step 0.05 | Amount of muted cool-green tint applied as sun/moon illumination approaches darkness. |
| cl_avfx_surface_ferns_light_celestial_strength | default 1.20 / range 0..2 / step 0.05 | Strength of sun and moon illumination on ferns after cloud attenuation. |
| cl_avfx_surface_ferns_light_dynamic | default 1 / 0=off / 1=on | Enables engine dynamic lights on ferns: blaster bolts, muzzle flashes, rockets, explosions and similar gameplay sources. |
| cl_avfx_surface_ferns_light_dynamic_color | default 1.00 / range 0..2 / step 0.05 | Amount of dynamic-light colour transferred to ferns (red blaster, green BFG, orange explosion, etc.). |
| cl_avfx_surface_ferns_light_emissive | default 1 / 0=off / 1=on | Enables the same AVFX map-emissive and spawn/teleporter-marker source families used by snow surfaces. |
| cl_avfx_surface_ferns_light_emissive_color | default 1.00 / range 0..2 / step 0.05 | Amount of emissive-source colour transferred to ferns. |
| cl_avfx_surface_ferns_light_emissive_strength | default 1.00 / range 0..2 / step 0.05 | Brightness response of ferns to AVFX emissive source families. |
| cl_avfx_surface_ferns_light_flashlight | default 1 / 0=off / 1=on | Enables per-fragment ferns response to the actual AVFX player flashlight cone. |
| cl_avfx_surface_ferns_light_flashlight_strength | default 1.00 / range 0..2 / step 0.05 | Grass brightness response to the flashlight cone; flashlight colour is preserved. |
| cl_avfx_surface_ferns_light_lightning | default 1 / 0=off / 1=on | Enables ferns response to the shared bounded lightning-local pool, including meteor-impact illumination registered in that pool. |
| cl_avfx_surface_ferns_light_lightning_strength | default 1.00 / range 0..2 / step 0.05 | Grass response strength for local lightning strikes and meteor-impact lights. |
| cl_avfx_surface_ferns_light_local_lift | default 1.00 / range 0..2 / step 0.05 | Common response multiplier for flashlight, lightning/meteor, dynamic and emissive local sources. It controls how strongly those sources restore visible daytime ferns in darkness. |
| cl_avfx_surface_ferns_light_min_brightness | default 0.02 / range 0..1 / step 0.01 | Absolute static-light floor before celestial/local lighting. Low values keep unlit night ferns dark; this is not an emissive term. |
| cl_avfx_surface_ferns_lighting | default 1 / 0=legacy static only / 1=responsive lighting | Master for responsive ferns lighting. 1 uses cached BSP light plus live sun/moon, flashlight, lightning/meteor, engine dynamic and AVFX emissive sources. 0 restores the previous static-only ferns shading. |
| cl_avfx_surface_ferns_quality | default 3 / 0..3 / step 1 | Leaf curve detail. Plant positions and visibility do not depend on this setting. |
| cl_avfx_surface_ferns_roughness | default 0.7 / 0.15..1 / step 0.01 | Leaf surface roughness; higher values soften highlights. |
| cl_avfx_surface_ferns_seed | default 0 / 0..16777215 / step 1 | Deterministic placement seed. Camera motion never changes the arrangement. |
| cl_avfx_surface_ferns_shadow_strength | default 0 / 0..1 / step 0.01 | Strength of the contact shadow and additional flashlight shadow. Uses the wind-deformed geometry. The flashlight casts onto scene surfaces only inside its beam, with flashlight shadows enabled. Zero skips both shadow passes for this category. |
| cl_avfx_surface_ferns_size | default 24 / 8..64 / step 1 | Plant scale in world units. Plants must fit their supporting surfaces. |
| cl_avfx_surface_ferns_static_light | default 1.00 / range 0..2 / step 0.05 | Multiplier for the per-cell cached BSP/static light sampled when the objects inventory is built. |
| cl_avfx_surface_ferns_wind | default 0.4 / 0..1 / step 0.01 | Continuous branch and leaf motion with fixed roots. |
| cl_avfx_surface_grass | 0=off (default) / 1=on | Enable instanced grass over eligible flat and gently sloped static world surfaces. Requires the Surface Objects master (cl_avfx_surface_objects) to be on as well. Off by default; purely a client-side visual with no effect on gameplay, collision or the server. |
| cl_avfx_surface_grass_antialiasing | default 3 / 0=off / 1=2x 2=3x 3=4x 4=5x 5=6x 6=7x 7=8x | Grass geometry antialiasing quality. 0 uses one raster sample. Levels 1..7 accumulate 2..8 fixed sub-pixel samples of the original vertical blade geometry inside each frame. No level replaces distant blades with flat coverage. Default 3 = 4x. |
| cl_avfx_surface_grass_cell_size | default 128 / range 4..512 / step 4 / wu | World-space size of a grass placement cell in world units. Smaller cells give finer placement granularity and more even coverage; larger cells are cheaper to manage. Changing this rebuilds the grass cell grid — it is a topology setting rather than a live cosmetic tweak. |
| cl_avfx_surface_grass_color_b | default 0.18 / range 0..2 / step 0.02 | Base grass colour, blue channel in linear space. See cl_avfx_surface_grass_color_r for how the three channels combine. Raising blue cools the tint toward teal; 0.18 (default) keeps a warm natural green. |
| cl_avfx_surface_grass_color_g | default 0.55 / range 0..2 / step 0.02 | Base grass colour, green channel in linear space. See cl_avfx_surface_grass_color_r for how the three channels combine. 0.55 (default) is the dominant channel of the natural green. |
| cl_avfx_surface_grass_color_r | default 0.30 / range 0..2 / step 0.02 | Base grass colour, red channel in linear space. Combined with the green and blue channels it sets the overall blade tint before per-blade colour variation. 0.30 (default) with G=0.55 / B=0.18 gives a natural green. |
| cl_avfx_surface_grass_color_variation | default 0.35 / range 0..1 / step 0.05 | Per-blade random spread of colour around the base grass colour. 0 paints every blade the exact base colour; 1.0 gives the widest natural mottling of lighter and darker blades. 0.35 (default) is a natural-looking variation. |
| cl_avfx_surface_grass_density | default 1.0 / range 0.05..20.0 / step 0.05 | Blade density multiplier applied on top of the quality profile. Higher values grow more blades per grass cell for a lusher lawn; lower values thin it out. 1.0 (default) keeps the density chosen by the quality tier. |
| cl_avfx_surface_grass_distance | default 1400 / range 128..8192 / step 32 / wu | Grass draw distance in world units, before the quality multiplier. Applies only with Distance LOD enabled. With LOD off, this value does not limit grass visibility. Larger values show grass further away when LOD is on; default 1400. |
| cl_avfx_surface_grass_height | default 22 / range 1..128 / step 1 / wu | Base grass blade height in world units. 22 (default) is an ankle-to-shin height that reads well on most maps; lower values give a mown lawn, higher values give tall meadow grass. Per-blade random variation is added on top via cl_avfx_surface_grass_height_variation. |
| cl_avfx_surface_grass_height_variation | default 0.45 / range 0..1 / step 0.05 | Per-blade random spread of blade height around the base height. 0 makes every blade exactly the base height for a uniform trimmed look; 1.0 gives the widest natural mix of short and tall blades. 0.45 (default) is a natural-looking spread. |
| cl_avfx_surface_grass_interact_max | default 24 / range 1..64 / step 1 | Maximum number of actors that can influence the grass in a single frame. Actors beyond this count do not bend grass that frame; the nearest actors are prioritised. The effective limit is also capped by the quality profile. 24 (default) covers busy scenes. |
| cl_avfx_surface_grass_interact_monsters | 0=off / 1=on (default) | Nearby grounded monsters part the grass they walk through. Active in local single-player and DM-training only — never during demo playback or remote multiplayer. On by default; requires the interaction master to be on. |
| cl_avfx_surface_grass_interact_player | 0=off / 1=on (default) | Local player parts nearby grass as they move through it. Enabled by default and allowed both in local play and in permitted multiplayer AVFX modes. Requires the interaction master (cl_avfx_surface_grass_interaction) to be on. |
| cl_avfx_surface_grass_interact_players | 0=off (default) / 1=on | Visible other player models part nearby grass. This is a local visual only and is off by default; it is forced off under the multiplayer competitive limit. It uses only client entities visible in the current frame, so grass never reacts to players hidden behind walls. |
| cl_avfx_surface_grass_interact_radius | default 42 / range 8..192 / step 2 / wu | Radius around each actor, in world units, inside which grass bends away from them. Larger values clear a wider path through the grass; 42 (default) roughly matches a player's body footprint. |
| cl_avfx_surface_grass_interact_recovery | default 1.5 / range 0.05..10 / step 0.05 / sec | Recovery time constant, in seconds, for grass springing back upright after an actor moves away. Lower values snap back almost instantly; 1.5 (default) is a soft natural settle; up to 10 leaves a long-lasting trampled trail behind moving actors. |
| cl_avfx_surface_grass_interact_strength | default 0.70 / range 0..2 / step 0.05 | How strongly actors bend the grass they are near. 0 leaves grass upright even inside the interaction radius; 0.70 (default) gives a clear natural push; up to 2.0 flattens blades hard around the actor. |
| cl_avfx_surface_grass_interaction | 0=off / 1=on (default) | Master toggle for grass bending and parting around actors. When on (default), moving actors push nearby blades aside and the blades spring back afterwards. When off, grass ignores all actors and only the wind model animates it. The per-source sub-toggles below have no effect while this master is off. |
| cl_avfx_surface_grass_light_celestial | default 1 / 0=off / 1=on | Makes grass follow the live AVFX sun/moon/cloud-transmittance state. Uses grass-specific strength, floor and night tint rather than snow tuning. |
| cl_avfx_surface_grass_light_celestial_min_brightness | default 0.04 / range 0..1 / step 0.01 | Celestial brightness floor at a dark or moonless night. This is applied before local lights brighten individual fragments. |
| cl_avfx_surface_grass_light_celestial_night_tint | default 0.35 / range 0..1 / step 0.05 | Amount of muted cool-green tint applied as sun/moon illumination approaches darkness. |
| cl_avfx_surface_grass_light_celestial_strength | default 1.20 / range 0..2 / step 0.05 | Strength of sun and moon illumination on grass after cloud attenuation. |
| cl_avfx_surface_grass_light_dynamic | default 1 / 0=off / 1=on | Enables engine dynamic lights on grass: blaster bolts, muzzle flashes, rockets, explosions and similar gameplay sources. |
| cl_avfx_surface_grass_light_dynamic_color | default 1.00 / range 0..2 / step 0.05 | Amount of dynamic-light colour transferred to grass (red blaster, green BFG, orange explosion, etc.). |
| cl_avfx_surface_grass_light_dynamic_strength | default 1.00 / range 0..2 / step 0.05 | Brightness response of grass to engine dynamic lights. |
| cl_avfx_surface_grass_light_emissive | default 1 / 0=off / 1=on | Enables the same AVFX map-emissive and spawn/teleporter-marker source families used by snow surfaces. |
| cl_avfx_surface_grass_light_emissive_color | default 1.00 / range 0..2 / step 0.05 | Amount of emissive-source colour transferred to grass. |
| cl_avfx_surface_grass_light_emissive_strength | default 1.00 / range 0..2 / step 0.05 | Brightness response of grass to AVFX emissive source families. |
| cl_avfx_surface_grass_light_flashlight | default 1 / 0=off / 1=on | Enables per-fragment grass response to the actual AVFX player flashlight cone. |
| cl_avfx_surface_grass_light_flashlight_strength | default 1.00 / range 0..2 / step 0.05 | Grass brightness response to the flashlight cone; flashlight colour is preserved. |
| cl_avfx_surface_grass_light_lightning | default 1 / 0=off / 1=on | Enables grass response to the shared bounded lightning-local pool, including meteor-impact illumination registered in that pool. |
| cl_avfx_surface_grass_light_lightning_strength | default 1.00 / range 0..2 / step 0.05 | Grass response strength for local lightning strikes and meteor-impact lights. |
| cl_avfx_surface_grass_light_local_lift | default 1.00 / range 0..2 / step 0.05 | Common response multiplier for flashlight, lightning/meteor, dynamic and emissive local sources. It controls how strongly those sources restore visible daytime grass in darkness. |
| cl_avfx_surface_grass_light_min_brightness | default 0.02 / range 0..1 / step 0.01 | Absolute static-light floor before celestial/local lighting. Low values keep unlit night grass dark; this is not an emissive term. |
| cl_avfx_surface_grass_light_static_strength | default 1.00 / range 0..2 / step 0.05 | Multiplier for the per-cell cached BSP/static light sampled when the grass inventory is built. |
| cl_avfx_surface_grass_lighting | default 1 / 0=legacy static only / 1=responsive lighting | Master for responsive grass lighting. 1 uses cached BSP light plus live sun/moon, flashlight, lightning/meteor, engine dynamic and AVFX emissive sources. 0 restores the previous static-only grass shading. |
| cl_avfx_surface_grass_lod | 0=off / 1=on (default) | Distance level-of-detail. On (default) enables the draw-distance limit and reduces distant grass density. Off disables every distance-based visibility and density reduction: even a low stored draw distance cannot remove far grass. PVS visibility and the instance cap remain active. The competitive budget does not override this switch. |
| cl_avfx_surface_grass_max_instances | default 24000 / range 1024..8000000 | Hard cap on actual rendered grass cards per frame. Ultra permits up to 8,000,000 blades. Card count per placement depends on quality and density, never FOV or zoom. With LOD off, the budget selects a fixed population across the entire map; hidden cells retain their share so moving between rooms cannot replace visible grass. With LOD on, the budget is shared by the current visible cells. |
| cl_avfx_surface_grass_outdoor_only | 0=off / 1=on (default) | When on (default), grass grows only on cells that are open to the sky, giving natural outdoor lawns. When off, grass is allowed on every eligible AVFX floor including enclosed indoor rooms. This is a topology setting — changing it re-evaluates surface eligibility. |
| cl_avfx_surface_grass_quality | default 1 / 0=Performance 1=Balanced 2=High 3=Ultra | Grass quality profile. 0 = Performance, 1 = Balanced (default), 2 = High, 3 = Ultra. Higher tiers grow denser grass with a richer blade mesh, extend the draw distance, and raise the interaction budget — at higher CPU and GPU cost. Ultra is the visual reference tier. |
| cl_avfx_surface_grass_shadow_strength | default 0 / 0..1 / step 0.01 | Strength of the contact shadow and additional flashlight shadow. Uses the wind-deformed geometry. The flashlight casts onto scene surfaces only inside its beam, with flashlight shadows enabled. Zero skips both shadow passes for this category. |
| cl_avfx_surface_grass_slope_max | default 65 / range 0..75 / step 1 / deg | Maximum surface slope, in degrees, that is allowed to grow grass. 0 restricts grass to perfectly flat floors; values up to 75 degrees let grass climb steep ramps and banks. This is a topology setting — changing it re-evaluates which surfaces qualify. |
| cl_avfx_surface_grass_width | default 3.0 / range 0.25..16 / step 0.25 / wu | Grass blade width in world units. 3.0 (default) is a balanced blade thickness; narrower blades look wispy and fine, wider blades read as broad-leaf grass and fill coverage with fewer instances. |
| cl_avfx_surface_grass_wind | 0=off / 1=on (default) | Master toggle for grass wind sway. When on (default), blades bend and ripple under the wind model. This works independently of any weather preset, so grass can sway with weather turned off. Turn it off for perfectly still grass. |
| cl_avfx_surface_grass_wind_angle | default 0 / range 0..359 / step 1 / deg | Wind direction in degrees, controlling which way the grass leans. 0 (default) is the reference direction; the value sweeps a full circle so you can align the sway with a map's prevailing wind or its skybox. |
| cl_avfx_surface_grass_wind_speed | default 1.0 / range 0..8 / step 0.1 | Wind oscillation rate — how quickly the sway cycles back and forth. 0 freezes the sway at a static bend; 1.0 (default) is a natural pace; up to 8.0 gives a fast, nervous flutter. |
| cl_avfx_surface_grass_wind_strength | default 0.55 / range 0..2 / step 0.05 | Wind sway strength — how far the blade tips bend away from vertical. 0 holds blades upright even with wind on; 0.55 (default) is a gentle natural breeze; up to 2.0 drives a strong storm-blown bend. |
| cl_avfx_surface_grass_wind_turbulence | default 0.35 / range 0..1 / step 0.05 | High-frequency turbulence layered on top of the base sway, breaking up the uniform motion with small chaotic flutters. 0 gives a clean single-frequency sway; 1.0 is the most turbulent. 0.35 (default) is natural. The effect is automatically reduced on lower quality tiers. |
| cl_avfx_surface_ivy | default 0 / 0..1 / step 1 | An independent Surface Objects category. Requires its master; Grass and Surface Materials are not required. |
| cl_avfx_surface_ivy_clumping | default 0 / 0..1 / step 0.01 | 0: separate vines; 1: dense six-vine colonies only, with no isolated twigs. Fewer crowns balance the extra branches. |
| cl_avfx_surface_ivy_color_b | default 0.045 / 0..1 / step 0.01 | Base blue channel before scene lighting. |
| cl_avfx_surface_ivy_color_g | default 0.28 / 0..1 / step 0.01 | Base green channel before scene lighting. |
| cl_avfx_surface_ivy_color_r | default 0.12 / 0..1 / step 0.01 | Base red channel before scene lighting. |
| cl_avfx_surface_ivy_density | default 0.6 / 0.05..4 / step 0.05 | Fixed map population density. A change rebuilds placement once. |
| cl_avfx_surface_ivy_diversity | default 1 / 0..1 / step 0.01 | Varies branching, leaf shapes and runner lengths; some runners grow several times longer. 0 uses one uniform structure, 1 full variety. Stable until settings change. |
| cl_avfx_surface_ivy_dynamic_light | default 1.00 / range 0..2 / step 0.05 | Brightness response of objects to engine dynamic lights. |
| cl_avfx_surface_ivy_light_celestial | default 1 / 0=off / 1=on | Makes ivy follow the live AVFX sun/moon/cloud-transmittance state. Uses ivy-specific strength, floor and night tint rather than snow tuning. |
| cl_avfx_surface_ivy_light_celestial_min_brightness | default 0.04 / range 0..1 / step 0.01 | Celestial brightness floor at a dark or moonless night. This is applied before local lights brighten individual fragments. |
| cl_avfx_surface_ivy_light_celestial_night_tint | default 0.35 / range 0..1 / step 0.05 | Amount of muted cool-green tint applied as sun/moon illumination approaches darkness. |
| cl_avfx_surface_ivy_light_celestial_strength | default 1.20 / range 0..2 / step 0.05 | Strength of sun and moon illumination on ivy after cloud attenuation. |
| cl_avfx_surface_ivy_light_dynamic | default 1 / 0=off / 1=on | Enables engine dynamic lights on ivy: blaster bolts, muzzle flashes, rockets, explosions and similar gameplay sources. |
| cl_avfx_surface_ivy_light_dynamic_color | default 1.00 / range 0..2 / step 0.05 | Amount of dynamic-light colour transferred to ivy (red blaster, green BFG, orange explosion, etc.). |
| cl_avfx_surface_ivy_light_emissive | default 1 / 0=off / 1=on | Enables the same AVFX map-emissive and spawn/teleporter-marker source families used by snow surfaces. |
| cl_avfx_surface_ivy_light_emissive_color | default 1.00 / range 0..2 / step 0.05 | Amount of emissive-source colour transferred to ivy. |
| cl_avfx_surface_ivy_light_emissive_strength | default 1.00 / range 0..2 / step 0.05 | Brightness response of ivy to AVFX emissive source families. |
| cl_avfx_surface_ivy_light_flashlight | default 1 / 0=off / 1=on | Enables per-fragment ivy response to the actual AVFX player flashlight cone. |
| cl_avfx_surface_ivy_light_flashlight_strength | default 1.00 / range 0..2 / step 0.05 | Grass brightness response to the flashlight cone; flashlight colour is preserved. |
| cl_avfx_surface_ivy_light_lightning | default 1 / 0=off / 1=on | Enables ivy response to the shared bounded lightning-local pool, including meteor-impact illumination registered in that pool. |
| cl_avfx_surface_ivy_light_lightning_strength | default 1.00 / range 0..2 / step 0.05 | Grass response strength for local lightning strikes and meteor-impact lights. |
| cl_avfx_surface_ivy_light_local_lift | default 1.00 / range 0..2 / step 0.05 | Common response multiplier for flashlight, lightning/meteor, dynamic and emissive local sources. It controls how strongly those sources restore visible daytime ivy in darkness. |
| cl_avfx_surface_ivy_light_min_brightness | default 0.02 / range 0..1 / step 0.01 | Absolute static-light floor before celestial/local lighting. Low values keep unlit night ivy dark; this is not an emissive term. |
| cl_avfx_surface_ivy_lighting | default 1 / 0=legacy static only / 1=responsive lighting | Master for responsive ivy lighting. 1 uses cached BSP light plus live sun/moon, flashlight, lightning/meteor, engine dynamic and AVFX emissive sources. 0 restores the previous static-only ivy shading. |
| cl_avfx_surface_ivy_quality | default 3 / 0..3 / step 1 | Leaf curve detail. Plant positions and visibility do not depend on this setting. |
| cl_avfx_surface_ivy_roughness | default 0.7 / 0.15..1 / step 0.01 | Leaf surface roughness; higher values soften highlights. |
| cl_avfx_surface_ivy_seed | default 0 / 0..16777215 / step 1 | Deterministic placement seed. Camera motion never changes the arrangement. |
| cl_avfx_surface_ivy_shadow_strength | default 0 / 0..1 / step 0.01 | Strength of the contact shadow and additional flashlight shadow. Uses the wind-deformed geometry. The flashlight casts onto scene surfaces only inside its beam, with flashlight shadows enabled. Zero skips both shadow passes for this category. |
| cl_avfx_surface_ivy_size | default 24 / 8..64 / step 1 | Plant scale in world units. Plants must fit their supporting surfaces. |
| cl_avfx_surface_ivy_static_light | default 1.00 / range 0..2 / step 0.05 | Multiplier for the per-cell cached BSP/static light sampled when the objects inventory is built. |
| cl_avfx_surface_ivy_top_bias | default 0 / 0..1 / step 0.01 | Smoothly confines roots to the top of each connected wall: 0 all heights, 1 upper 12%. Long runners can hang below their roots. |
| cl_avfx_surface_ivy_wind | default 0.4 / 0..1 / step 0.01 | Continuous branch and leaf motion with fixed roots. |
| cl_avfx_surface_leaves | default 0 / 0..1 / step 1 | Independent Surface Objects category; requires only the common master. Decorative geometry, no collision. |
| cl_avfx_surface_leaves_clumping | default 0.5 / 0..1 / step 0.01 | 0 separate objects; 1 multi-object clusters. Cluster count decreases to balance added geometry. |
| cl_avfx_surface_leaves_color_b | default 0.055 / 0..1 / step 0.01 | Base color channel before material variation and scene lighting. |
| cl_avfx_surface_leaves_color_g | default 0.20 / 0..1 / step 0.01 | Base color channel before material variation and scene lighting. |
| cl_avfx_surface_leaves_color_r | default 0.38 / 0..1 / step 0.01 | Base color channel before material variation and scene lighting. |
| cl_avfx_surface_leaves_color_variation | default 0.5 / 0..1 | Smooth per-leaf hue variation from the chosen RGB; zero keeps its hue, one includes autumn, green and bluish shades. |
| cl_avfx_surface_leaves_density | default 0.6 / 0.05..4 / step 0.05 | Stable map population. Placement rebuilds once when settings change, never when the camera moves. |
| cl_avfx_surface_leaves_diversity | default 1 / 0..1 / step 0.01 | 0 one structure; 1 varied silhouettes, proportions and orientations. Camera-independent. |
| cl_avfx_surface_leaves_dynamic_light | default 1.00 / range 0..2 / step 0.05 | Brightness response of objects to engine dynamic lights. |
| cl_avfx_surface_leaves_fall_amount | default 10 / 1..100 / step 1 | Falling leaf quantity only: 10% by default, 1% minimum, 100% restores the original population. Ground litter is unchanged. |
| cl_avfx_surface_leaves_fall_speed | default 24 / 4..160 | Average downward speed in world units per second; individual leaves flutter, rotate and drift at different rates. |
| cl_avfx_surface_leaves_falling | default 0 / 0/1 | Adds falling leaves where the full flight path is clear. Outdoor only applies to ground and flying leaves together. Off skips flight draws; ground placement is unchanged. |
| cl_avfx_surface_leaves_light_celestial | default 1 / 0=off / 1=on | Makes leaves follow the live AVFX sun/moon/cloud-transmittance state. Uses leaves-specific strength, floor and night tint rather than snow tuning. |
| cl_avfx_surface_leaves_light_celestial_min_brightness | default 0.04 / range 0..1 / step 0.01 | Celestial brightness floor at a dark or moonless night. This is applied before local lights brighten individual fragments. |
| cl_avfx_surface_leaves_light_celestial_night_tint | default 0.35 / range 0..1 / step 0.05 | Amount of muted cool-green tint applied as sun/moon illumination approaches darkness. |
| cl_avfx_surface_leaves_light_celestial_strength | default 1.20 / range 0..2 / step 0.05 | Strength of sun and moon illumination on leaves after cloud attenuation. |
| cl_avfx_surface_leaves_light_dynamic | default 1 / 0=off / 1=on | Enables engine dynamic lights on leaves: blaster bolts, muzzle flashes, rockets, explosions and similar gameplay sources. |
| cl_avfx_surface_leaves_light_dynamic_color | default 1.00 / range 0..2 / step 0.05 | Amount of dynamic-light colour transferred to leaves (red blaster, green BFG, orange explosion, etc.). |
| cl_avfx_surface_leaves_light_emissive | default 1 / 0=off / 1=on | Enables the same AVFX map-emissive and spawn/teleporter-marker source families used by snow surfaces. |
| cl_avfx_surface_leaves_light_emissive_color | default 1.00 / range 0..2 / step 0.05 | Amount of emissive-source colour transferred to leaves. |
| cl_avfx_surface_leaves_light_emissive_strength | default 1.00 / range 0..2 / step 0.05 | Brightness response of leaves to AVFX emissive source families. |
| cl_avfx_surface_leaves_light_flashlight | default 1 / 0=off / 1=on | Enables per-fragment leaves response to the actual AVFX player flashlight cone. |
| cl_avfx_surface_leaves_light_flashlight_strength | default 1.00 / range 0..2 / step 0.05 | Grass brightness response to the flashlight cone; flashlight colour is preserved. |
| cl_avfx_surface_leaves_light_lightning | default 1 / 0=off / 1=on | Enables leaves response to the shared bounded lightning-local pool, including meteor-impact illumination registered in that pool. |
| cl_avfx_surface_leaves_light_lightning_strength | default 1.00 / range 0..2 / step 0.05 | Grass response strength for local lightning strikes and meteor-impact lights. |
| cl_avfx_surface_leaves_light_local_lift | default 1.00 / range 0..2 / step 0.05 | Common response multiplier for flashlight, lightning/meteor, dynamic and emissive local sources. It controls how strongly those sources restore visible daytime leaves in darkness. |
| cl_avfx_surface_leaves_light_min_brightness | default 0.02 / range 0..1 / step 0.01 | Absolute static-light floor before celestial/local lighting. Low values keep unlit night leaves dark; this is not an emissive term. |
| cl_avfx_surface_leaves_lighting | default 1 / 0=legacy static only / 1=responsive lighting | Master for responsive leaves lighting. 1 uses cached BSP light plus live sun/moon, flashlight, lightning/meteor, engine dynamic and AVFX emissive sources. 0 restores the previous static-only leaves shading. |
| cl_avfx_surface_leaves_outdoor_only | default 1 / 0/1 | Leaves only on supports open to the sky, including falling leaves. Off also allows indoor supports; flight still requires a clear path. |
| cl_avfx_surface_leaves_quality | default 3 / 0..3 / step 1 | Mesh detail. Fixed object positions and visibility never depend on quality. |
| cl_avfx_surface_leaves_roughness | default 0.8 / 0.15..1 / step 0.01 | Higher values soften specular highlights. |
| cl_avfx_surface_leaves_seed | default 0 / 0..16777215 / step 1 | Stable placement seed; changes the arrangement on the map. |
| cl_avfx_surface_leaves_size | default 8 / 2..16 / step 1 | Cluster size in world units. The complete footprint must fit its support, clear of openings and water. |
| cl_avfx_surface_leaves_size_spread | default 0.5 / 0..1 / step 0.01 | Botanical size variation: 0 equal base size, 1 ranges from 65 to 125 percent; no boulder-sized leaves. |
| cl_avfx_surface_leaves_static_light | default 1.00 / range 0..2 / step 0.05 | Multiplier for the per-cell cached BSP/static light sampled when the objects inventory is built. |
| cl_avfx_surface_leaves_wind | default 0.25 / 0..1 / step 0.01 | Restrained flutter of curled leaf tips; support points stay fixed. |
| cl_avfx_surface_materials | 0=off (default) / 1=on | Master toggle for AVFX Surface Materials — optional compatible material and wildlife layers over eligible static-world walls and floors that preserve the map's original texture and lighting. Off by default; client-only, with no gameplay, collision or server effect. Effective only when cl_avfx is also on. |
| cl_avfx_surface_materials_brick | default 0 / 0=off, 1=on | Brick family master: irregular masonry with real bump and parallax relief coating eligible static world walls and floors. The original BSP texture and lightmap stay underneath according to coverage and blend; map geometry, collision and gameplay never change. Off by default; with it off the family does no work. |
| cl_avfx_surface_materials_brick_alpha | default 0.78 / range 0.00..1.00 | Overall blend of the masonry into the original surface. 0 is a real no-op: the family stops sampling entirely. |
| cl_avfx_surface_materials_brick_chipping | default 0.25 / range 0.00..1.00 | Amount of broken corners and face fragments. A chip removes material: it changes the height and the material response, not merely the tint. |
| cl_avfx_surface_materials_brick_color_variation | default 0.25 / range 0.00..1.00 | Restrained material variation between individual bricks. It is stable per brick and never turns the wall into a multicolour pattern; it does not alter blend or coverage. |
| cl_avfx_surface_materials_brick_coverage | default 0.85 / range 0.00..1.00 | How much of the eligible surface is coated. At 1 the whole surface is masonry; below 1 broad irregular islands of the original texture stay exposed. It is a macro mask evaluated before any relief work, never random deletion of individual bricks. |
| cl_avfx_surface_materials_brick_coverage_softness | default 0.25 / range 0.01..1.00 | Feather of the coated-area boundary only. It never changes brick or joint width. |
| cl_avfx_surface_materials_brick_floors | default 1 / 0=off, 1=on | Coat eligible floors and gentle slopes. Independent of the wall lane, and floors ignore the wall band controls entirely. |
| cl_avfx_surface_materials_brick_geometry | default 0 / range 0.00..1.00 | Real geometric brick relief on tessellated world surfaces. Shading relief (bump and parallax) can never change a silhouette; this moves vertices, so bricks physically stand out of the wall and the edge of a wall stops being a straight line. It requires hardware tessellation and grows only outward from the authored surface, never behind it; collision is not affected. 0 is off and does no work. |
| cl_avfx_surface_materials_brick_irregularity | default 0.35 / range 0.00..1.00 | Bounded stable variation of course drift, per-brick length and joint edges. It is deterministic in the world: it never depends on time, camera or quality. |
| cl_avfx_surface_materials_brick_mortar_depth | default 0.55 / range 0.00..1.00 | How deeply the joint is recessed below the brick faces, within the overall relief. Independent of joint width. |
| cl_avfx_surface_materials_brick_mortar_width | default 0.45 / range 0.00..1.00 | Width of the mortar joint between bricks. Independent of joint depth. |
| cl_avfx_surface_materials_brick_relief | default 0.60 / range 0.00..1.00 | Overall strength of the visual bump and parallax relief: height, tangent normal response and parallax scale together. Faces stand proud of the joints and chips recess as the view angle changes. This is shading and UV offset only — no map geometry, collision, silhouette or depth is touched. Exactly 0 takes the cheap non-relief path and reports zero parallax steps. |
| cl_avfx_surface_materials_brick_scale | default 1.00 / range 0.25..4.00 | Physical size of a brick and its course. Small = fine masonry; large = massive blocks. It does not change which world region selects which profile. |
| cl_avfx_surface_materials_brick_tint_b | default 1.00 / range 0.00..3.00 | Blue multiplier over the resolved brick palette. 1 is neutral. |
| cl_avfx_surface_materials_brick_tint_g | default 1.00 / range 0.00..3.00 | Green multiplier over the resolved brick palette. 1 is neutral. |
| cl_avfx_surface_materials_brick_tint_r | default 1.00 / range 0.00..3.00 | Red multiplier over the resolved brick palette. 1 is neutral. |
| cl_avfx_surface_materials_brick_variant | default 0 / 0=Auto / 1..6 fixed profile | Masonry appearance. 0 = Auto: broad stable world regions choose the profile and at most two neighbouring profiles meet in a soft boundary, blended into ONE course grid rather than two overlaid grids. 1 clean masonry; 2 aged uneven; 3 exposed under plaster; 4 dark industrial; 5 pale masonry; 6 damp chipped relief. Profiles differ in brick size, bond, joint width and depth, irregularity and relief calibration, not only in colour. |
| cl_avfx_surface_materials_brick_wall_distribution | default 0 / 0=uniform, 1=bottom-up band | How the masonry is spread over a wall. 0 = uniform over the whole surface. 1 = a bottom-up band, as if the wall is faced from its base. Floors are unaffected by this setting. |
| cl_avfx_surface_materials_brick_wall_fade | default 0.18 / range 0.01..1.00 | Smooth width of the band boundary. The boundary is always broken by world noise, so it never reads as a straight horizontal line. |
| cl_avfx_surface_materials_brick_wall_height | default 0.70 / range 0.00..1.00 | How far the coated band reaches up the wall. Ignored when the distribution is uniform and on floors. |
| cl_avfx_surface_materials_brick_walls | default 1 / 0=off, 1=on | Coat eligible vertical and steep wall surfaces. Independent of the floor lane. |
| cl_avfx_surface_materials_coverings_order | default 0 / 0=Floor layer below Wall layer, 1=Wall layer below Floor layer | Which of the two Surface Coverings layers lies underneath when both cover the same face. It moves only these two relative to each other and never against the other material families; it is a uniform, so switching it compiles nothing. |
| cl_avfx_surface_materials_cracks | default 0 / 0=off, 1=on | Cracks family master: hairline, branching, network, chipped and deep fractures worn into eligible static world walls and floors. It is damage in the existing material, not black lines drawn on top, and it never changes collision or gameplay. Off by default; with it off the family does no work. |
| cl_avfx_surface_materials_cracks_alpha | default 0.70 / range 0.00..1.00 | Overall blend of the damage into the original surface. 0 is a real no-op: the family stops sampling entirely. |
| cl_avfx_surface_materials_cracks_branching | default 0.50 / range 0.00..1.00 | How strongly secondary branches grow off the primary crack. It does not add new independent systems. |
| cl_avfx_surface_materials_cracks_cavity_darkness | default 0.65 / range 0.00..1.00 | How dark the inside of the cavity becomes. It only dims the already lit substrate, never paints flat black and never emits light or bloom; at 0 the relief and the chipped rim remain. |
| cl_avfx_surface_materials_cracks_chipping | default 0.30 / range 0.00..1.00 | Amount of broken and spalled rim around the cracks, with fragments of exposed substrate. It is tied to the crack itself, not a broad dirt overlay. |
| cl_avfx_surface_materials_cracks_density | default 0.32 / range 0.00..1.00 | How much of the surface carries crack systems. Low values leave broad intact areas, which is what keeps damage believable. 0 disables sampling like alpha 0. |
| cl_avfx_surface_materials_cracks_depth | default 0.55 / range 0.00..1.00 | Bounded cavity and micro-relief response: how deep the damage reads under the scene light. Geometry, collision and depth buffer are never touched. |
| cl_avfx_surface_materials_cracks_edge_softness | default 0.20 / range 0.00..1.00 | Width of the anti-aliased transition at the crack rim. It softens the edge, and at its default it never erases fine hairline cracks. |
| cl_avfx_surface_materials_cracks_floors | default 1 / 0=off, 1=on | Damage eligible floors and gentle slopes. Independent of the wall lane, and floors ignore the wall band controls entirely. |
| cl_avfx_surface_materials_cracks_scale | default 1.00 / range 0.25..4.00 | World size of a damage system. Small = many small local systems; large = few sweeping fractures. It never changes the line width. |
| cl_avfx_surface_materials_cracks_variant | default 0 / 0=Auto / 1..6 fixed profile | Damage appearance. 0 = Auto: broad stable world regions choose the profile and at most two neighbouring profiles meet in a soft boundary. 1 hairline cracks; 2 branching structural; 3 dry crack network; 4 chipped surface; 5 deep fractured; 6 irregular mixed damage. Profiles differ in centreline topology, branch angles, gap scale and rim geometry, not only in threshold or colour. |
| cl_avfx_surface_materials_cracks_wall_distribution | default 0 / 0=uniform, 1=bottom-up band | How damage is spread over a wall. 0 = uniform over the whole surface. 1 = a bottom-up band, as if the wall is worn from its base. Floors are unaffected by this setting. |
| cl_avfx_surface_materials_cracks_wall_fade | default 0.18 / range 0.01..1.00 | Smooth width of the damage-band boundary. The boundary is always broken by world noise, so it never reads as a straight horizontal line. |
| cl_avfx_surface_materials_cracks_wall_height | default 0.70 / range 0.00..1.00 | How far the damage band reaches up the wall. Ignored when the distribution is uniform. |
| cl_avfx_surface_materials_cracks_walls | default 1 / 0=off, 1=on | Damage eligible vertical and steep wall surfaces. Independent of the floor lane. |
| cl_avfx_surface_materials_cracks_width | default 0.45 / range 0.00..2.00 | Width of the crack around its own centreline. It expands or contracts the same cracks without changing where they run or how they branch. |
| cl_avfx_surface_materials_crawlers | default 0 / 0=off, 1=on | Wildlife family master: insects, tadpoles, snails and Snakes living on eligible static world surfaces along stable world routes. A local visual layer only - it never changes server gameplay, networking, demos or map files. Off by default; with it off the family does no work. |
| cl_avfx_surface_materials_crawlers_alpha | default 0.85 / range 0.00..1.00 | How strongly the creatures show over the original surface. 0 is a real no-op: no route maths and no texture samples. |
| cl_avfx_surface_materials_crawlers_audio_flies | default 0 / 0=off / 1=on | Positional buzzing around Snake remains after corpse flies arrive. Different carcasses use independent voices and sound variants. |
| cl_avfx_surface_materials_crawlers_audio_flies_volume | default 0.42 / range 0.00..1.00 | Corpse-fly buzz volume before the global AVFX audio volume. |
| cl_avfx_surface_materials_crawlers_audio_hiss | default 0 / 0=off / 1=on | Positional Snake hiss. A one-shot starts only when a Snake opens its mouth and shoots its tongue. Independent Snakes may hiss at the same time. |
| cl_avfx_surface_materials_crawlers_audio_hiss_volume | default 0.70 / range 0.00..1.00 | Snake hiss volume before the global AVFX audio volume. |
| cl_avfx_surface_materials_crawlers_blood | default 1 / 0=off / 1=on | Spread local visual blood from a Snake cut point over its supporting surface or puddle. |
| cl_avfx_surface_materials_crawlers_blood_alpha | default 0.82 / range 0.00..1.00 | Peak opacity of Snake blood. |
| cl_avfx_surface_materials_crawlers_blood_persistence | default 1.00 / range 0.10..4.00 | Lifetime multiplier for Snake blood. |
| cl_avfx_surface_materials_crawlers_blood_size | default 1.00 / range 0.25..4.00 | Final blood spread size; puddles use a wider contour-clipped film. |
| cl_avfx_surface_materials_crawlers_blood_spread_speed | default 1.00 / range 0.10..4.00 | Speed at which blood expands from the cut point. |
| cl_avfx_surface_materials_crawlers_clustering | default 0.35 / range 0.00..1.00 | How much the creatures gather into local groups instead of spreading evenly. It shifts group density smoothly and never makes them blink in and out. |
| cl_avfx_surface_materials_crawlers_color_variation | default 0.35 / range 0.00..1.00 | How much individual creatures differ in colour. At 0 every creature of a species shares one tone; higher values spread their tone so a wall is not a row of identical clones. The spread is stable per creature, so one crawler keeps its colour for its whole life. |
| cl_avfx_surface_materials_crawlers_contact_lava | default 0 / 0=off / 1=on | Let lava destroy local decorative wildlife. This is cosmetic and does not affect server gameplay. |
| cl_avfx_surface_materials_crawlers_contact_lightning | default 0 / 0=off / 1=on | Let AVFX lightning strikes destroy nearby local decorative wildlife. |
| cl_avfx_surface_materials_crawlers_contact_meteors | default 0 / 0=off / 1=on | Let falling meteor impacts destroy nearby local decorative wildlife. |
| cl_avfx_surface_materials_crawlers_contact_weapons | default 0 / 0=off / 1=on | Let local weapon impacts destroy wildlife. The affected area follows weapon power. No server damage, score or networking is changed. |
| cl_avfx_surface_materials_crawlers_contrast | default 0.55 / range 0.00..1.00 | How hard the creatures read against the surface they walk on. Higher darkens the body and lifts its outline, so they stay clearly visible on bright floors and dark walls alike, and deepens the contact shadow so they sit on the surface instead of looking painted into it. |
| cl_avfx_surface_materials_crawlers_density | default 0.35 / range 0.00..1.00 | How many routes are occupied. Raising it adds routes; lowering it removes routes without moving the ones that remain. 0 is a real no-op. |
| cl_avfx_surface_materials_crawlers_floors | default 1 / 0=off, 1=on | Let wildlife move on eligible floors and up-slopes. Independent of the wall lane. |
| cl_avfx_surface_materials_crawlers_gait_motion | default 0.70 / range 0.00..1.00 | How much the legs and body move while walking. It changes the gait only, not the travel speed; 0 keeps the legs still while the creature still travels. |
| cl_avfx_surface_materials_crawlers_grass_interaction | default 1 / 0=off / 1=on | Grass parts around a Snake body and recovers after it passes. |
| cl_avfx_surface_materials_crawlers_grass_radius | default 1.00 / range 0.25..4.00 | Radius of Snake interaction with grass. |
| cl_avfx_surface_materials_crawlers_grass_recovery | default 1.25 / range 0.10..5.00 | Seconds for grass bent by a Snake to recover. |
| cl_avfx_surface_materials_crawlers_grass_strength | default 0.70 / range 0.00..3.00 | Strength of grass bending caused by Snakes. |
| cl_avfx_surface_materials_crawlers_population | default 1 / range 1..100 | Peak number of creatures. It multiplies how many can appear per unit of surface, so 100 gives one hundred times the count of 1. Density then thins that peak; the two controls are independent. Bodies are capped to the route spacing, so a very high population naturally means smaller creatures. |
| cl_avfx_surface_materials_crawlers_puddle_wake | default 1 / 0=off / 1=on | Snake bodies disturb visible AVFX puddles and leave a fading wake. The wake is clipped to the selected puddle contour. |
| cl_avfx_surface_materials_crawlers_puddle_wake_alpha | default 0.65 / range 0.00..1.00 | Opacity of Snake-made puddle waves, independent of wave geometry. |
| cl_avfx_surface_materials_crawlers_puddle_wake_fade | default 1.00 / range 0.25..4.00 | Lifetime of Snake-made water disturbance. |
| cl_avfx_surface_materials_crawlers_puddle_wake_strength | default 1.00 / range 0.00..3.00 | Visibility of Snake-made puddle waves. |
| cl_avfx_surface_materials_crawlers_puddle_wake_thickness | default 1.00 / range 0.10..4.00 | Thickness of the paired wave bands following the real Snake body path. |
| cl_avfx_surface_materials_crawlers_puddle_wake_trail | default 1.00 / range 0.25..4.00 | Length of the fading wake behind a moving Snake. |
| cl_avfx_surface_materials_crawlers_puddle_wake_width | default 1.00 / range 0.25..4.00 | Width of water disturbance around a Snake body. |
| cl_avfx_surface_materials_crawlers_route_wander | default 0.55 / range 0.00..1.00 | How curved and varied the routes are. It reshapes the same routes smoothly and never moves a creature to a different place. |
| cl_avfx_surface_materials_crawlers_scale | default 1.00 / range 0.25..4.00 | Physical size of the creatures. It changes how big they are, not how many there are or where their routes run. |
| cl_avfx_surface_materials_crawlers_size_variation | default 0.35 / range 0.00..1.00 | How much individual creatures differ in size. Stable per creature and independent of the overall size control. |
| cl_avfx_surface_materials_crawlers_speed | default 1.00 / range 0.00..3.00 | How fast the creatures travel along their routes. 0 freezes them exactly where they are without switching the family off; restoring speed continues from that point. |
| cl_avfx_surface_materials_crawlers_tint_b | default 1.00 / range 0.00..3.00 | Blue multiplier over the creature colour (1 = neutral). |
| cl_avfx_surface_materials_crawlers_tint_g | default 1.00 / range 0.00..3.00 | Green multiplier over the creature colour (1 = neutral). |
| cl_avfx_surface_materials_crawlers_tint_r | default 1.00 / range 0.00..3.00 | Red multiplier over the creature colour (1 = neutral). |
| cl_avfx_surface_materials_crawlers_variant | default 0 / 0=Auto, 1=random (all species), 2=ants, 3=beetles, 4=spiders, 5=roaches, 6=tiny mixed insects, 7=sparse mixed routes, 8=tadpoles, 9=snails, 10=large snakes | Which creatures appear. Auto uses broad world regions; Random mixes all species. Tadpoles keep the former short profile. Large Snakes use a separate floor, ramp and stair lattice, varied colours, scales and an occasional forked tongue. Live, no restart. |
| cl_avfx_surface_materials_crawlers_wall_distribution | default 0 / 0=uniform, 1=bottom-up band | How creatures are spread up a wall: evenly, or concentrated in a band rising from the floor. Floors are always even. |
| cl_avfx_surface_materials_crawlers_wall_fade | default 0.18 / range 0.01..1.00 | Smooth width of the band boundary. The boundary is always broken by world noise, so it never reads as a straight horizontal line. |
| cl_avfx_surface_materials_crawlers_wall_height | default 0.75 / range 0.00..1.00 | In bottom-up mode, how high up the wall the creatures reach on average (0 floor, 1 ceiling). |
| cl_avfx_surface_materials_crawlers_walls | default 1 / 0=off, 1=on | Let wildlife move on eligible vertical and steep wall surfaces. Independent of the floor lane. |
| cl_avfx_surface_materials_debug | default 0 / 0=off / 1..35 documented modes (diagnostic, current session only) | Surface materials diagnostic overlay. 0 = off (no diagnostic work). 1 class (inactive black, wall blue, floor green); 2 face-id hash colour; 3 wall-height grayscale (floors black); 4 coverage field; 5 final mold mask; 6 asset layer + distance LOD; 7 wall-runoff spawn/cell field; 8 moving droplet+trail mask; 9 persistent wetness mask; 10 resolved runoff profile / Auto transition; 11 final composed runoff amount; 12 greenery world-space growth field; 13 greenery profile / Auto regions; 14 greenery island and gap mask; 15 greenery root and leaf motion weights; 16 greenery normal/height/roughness response; 17 final composed greenery amount; 18 cracks world-space system field; 19 selected cracks profile / Auto regions; 20 centreline and secondary branches; 21 cavity, rim and chipped mask; 22 cracks normal/depth/roughness response; 23 final composed cracks amount; 24 brick coverage mask; 25 selected brick profile / Auto regions; 26 brick face-versus-joint lattice; 27 analytic brick height; 28 brick tangent normal; 29 parallax steps actually taken; 30 crawler route occupancy over the candidate cells; 31 stable route id; 32 curve distance to the winning route; 33 selected creature species; 34 gait phase and frame interpolation; 35 final crawler silhouette and contact mask. Off by default and never saved to a preset. |
| cl_avfx_surface_materials_distance | default 4096 / range 512..16384 | Smooth detail LOD distance in world units. Colonies keep their world-anchored identity at any distance; only fine detail fades out smoothly beyond this range, and no colony pops on camera movement. |
| cl_avfx_surface_materials_drawing | default 0 / 0=off, 1=on | Show your own drawings on world surfaces. Drawings are local, are stored separately for each mod and each map revision, are never sent to a server and are never deleted by a reset or by a preset. Off by default. |
| cl_avfx_surface_materials_drawing_ceilings | 0=no ceiling drawings / 1=ceilings receive drawings (default) | Let the Drawing surface-material family place its art on ceiling faces as well as the other receiver lanes. Ceilings are the least visible lane, so turning it off is a cheap way to cut drawing coverage without changing the look at eye level. Requires cl_avfx 1 + cl_avfx_surface_materials 1 + cl_avfx_surface_materials_drawing 1. |
| cl_avfx_surface_materials_drawing_editor_alpha | default 0.92 / range 0.20..1.00 | Opacity of the drawing editor toolbox. Affects the overlay only. |
| cl_avfx_surface_materials_drawing_editor_height | default 330 / range 200..900 | Toolbox height in window pixels. |
| cl_avfx_surface_materials_drawing_editor_scale | default 1.00 / range 0.50..4.00 | Size of the drawing editor toolbox. Affects the overlay only. |
| cl_avfx_surface_materials_drawing_editor_width | default 260 / range 160..640 | Toolbox width in window pixels. |
| cl_avfx_surface_materials_drawing_editor_x | default -1 / -1 = default placement | Toolbox position in window pixels. -1 keeps the default placement. |
| cl_avfx_surface_materials_drawing_editor_y | default -1 / -1 = default placement | Toolbox position in window pixels. -1 keeps the default placement. |
| cl_avfx_surface_materials_drawing_floors | default 1 / 0=off, 1=on | Show and allow drawing on eligible floors and up-slopes. Turning the lane off hides those drawings; it never deletes them. |
| cl_avfx_surface_materials_drawing_walls | default 1 / 0=off, 1=on | Show and allow drawing on eligible walls and ceilings. Turning the lane off hides those drawings; it never deletes them. |
| cl_avfx_surface_materials_floor_surfaces | default 0 / 0=off, 1=on | Master for this Surface Coverings layer. It needs the Surface Materials master and at least one receiver lane. The layer name only selects its catalog and its default lane; it never restricts geometry. Default off. |
| cl_avfx_surface_materials_floor_surfaces_alpha | default 0.82 / range 0.00..1.00 | How strongly an accepted covering blends over the original BSP material. 0 is a real no-op: the layer stops before any hash, noise, texture, relief or motion work. |
| cl_avfx_surface_materials_floor_surfaces_cavity | default 0.25 / range 0.00..1.00 | Darkening inside the material's own hollows. Contact shading of the relief, never invented emission. |
| cl_avfx_surface_materials_floor_surfaces_ceilings | default 0 / 0=off, 1=on | Allow this layer on eligible ceilings and undersides. Ceilings are a lane of their own: switching it on does not change any other material family. |
| cl_avfx_surface_materials_floor_surfaces_coverage | default 0.85 / range 0.00..1.00 | Area of the coverage field — WHERE the covering exists, which is independent of alpha. 0 is a real no-op. |
| cl_avfx_surface_materials_floor_surfaces_coverage_softness | default 0.25 / range 0.01..1.00 | Feather of the covered/uncovered boundary only. It never changes the material's own grain or motif. |
| cl_avfx_surface_materials_floor_surfaces_depth | default 0.45 / range 0.00..1.00 | Bounded parallax depth. The offset is clamped and fades out at grazing angles and at distance, so it never smears or samples past a face edge. |
| cl_avfx_surface_materials_floor_surfaces_distribution | default 1 / 0=Uniform, 1=Natural islands, 2=Clustered, 3=Bottom-up, 4=Top-down, 5=Directional bands, 6=Slope-biased | How the coverage field is laid out over the world. The mode changes what reach, softness and direction mean, but not their stored value. |
| cl_avfx_surface_materials_floor_surfaces_distribution_direction | default 0 / range -180..180 degrees | Direction the banded and gradient distribution modes follow. Ignored by the modes that have no direction. |
| cl_avfx_surface_materials_floor_surfaces_distribution_reach | default 0.70 / range 0.00..1.00 | Zone or bias of the distribution mode: the band reach for bottom-up and top-down, and the slope bias for the slope mode. |
| cl_avfx_surface_materials_floor_surfaces_distribution_scale | default 1 / range 0.125..8.00 | Size of the macro field the distribution mode works with. Small = many small areas; large = a few broad ones. |
| cl_avfx_surface_materials_floor_surfaces_distribution_softness | default 0.25 / range 0.01..1.00 | Feather of the distribution mode's own boundary. Independent of the coverage-edge softness. |
| cl_avfx_surface_materials_floor_surfaces_floors | default 1 / 0=off, 1=on | Allow this layer on eligible floors and gentle up-slopes. |
| cl_avfx_surface_materials_floor_surfaces_material | default 1 / 1..160 stable catalog id | Catalog 1..160; metal 129..160. Local room reflection, directional sheen and filtered highlights, not a precise mirror. Detail follows Materials Quality; rotation and roughness shape the sheen. |
| cl_avfx_surface_materials_floor_surfaces_metal_anisotropy | default 1 / range 0.00..2.00 / menu step 0.05 | Directional metal sheen strength: 0 is isotropic, 1 uses the material recipe, 2 strengthens the direction. Layer rotation controls its orientation. |
| cl_avfx_surface_materials_floor_surfaces_metal_antialias | default 1 / range 0.00..2.00 / menu step 0.05 | Reduces tiny unstable highlights from fine metal normals: 0 disables smoothing, 1 is normal, 2 is softer. Does not change the chosen roughness value. |
| cl_avfx_surface_materials_floor_surfaces_metal_reflection | default 1 / range 0.00..2.00 / menu step 0.05 | Room reflection strength for metal in this layer: 0 disables the captured reflection, 1 is normal, 2 boosts it. Does not change transparency or mirror/water quality. |
| cl_avfx_surface_materials_floor_surfaces_motion_direction | default 0 / range -180..180 degrees | Direction of drift and ripple motion. Swirl and pulse use it as a bias. |
| cl_avfx_surface_materials_floor_surfaces_motion_mode | default 0 / 0=Off, 1=Drift, 2=Ripple, 3=Swirl, 4=Pulse | Shader-only motion of this layer, off by default. It is world-anchored, so it does not swim with the camera and a mirror shows the same phase as the direct view. The two layers move independently. |
| cl_avfx_surface_materials_floor_surfaces_motion_scale | default 1 / range 0.125..8.00 | Spatial frequency of the motion field: small = long slow waves, large = fine busy movement. |
| cl_avfx_surface_materials_floor_surfaces_motion_speed | default 1 / range 0.00..4.00 | Speed of this layer's motion. The module owns one clock; this multiplies it, which is what makes the two layers independent. |
| cl_avfx_surface_materials_floor_surfaces_motion_strength | default 0 / range 0.00..2.00 | Motion amplitude. Exactly 0 is a real no-motion path, not a slow animation. |
| cl_avfx_surface_materials_floor_surfaces_motion_turbulence | default 0.30 / range 0.00..1.00 | How non-linear the motion field is. 0 is a clean regular movement; 1 is broken and irregular. |
| cl_avfx_surface_materials_floor_surfaces_relief | default 0.60 / range 0.00..1.00 | Strength of the bump and normal response. It changes how the surface catches light; BSP vertices, collision, silhouette and depth are never touched. |
| cl_avfx_surface_materials_floor_surfaces_rotation | default 0 / range -180..180 degrees | Rotation of the material within the surface plane. It is anchored to the BSP plane, so it does not turn with the camera. |
| cl_avfx_surface_materials_floor_surfaces_roughness | default 1 / range 0.00..2.00 | Private material response of this layer: low values read as damp or polished, high values as dry and matte. |
| cl_avfx_surface_materials_floor_surfaces_scale | default 1 / range 0.125..8.00 | User multiplier on the recipe's own physical scale. 1 keeps the size the reference photograph implies. |
| cl_avfx_surface_materials_floor_surfaces_stretch | default 1 / range 0.25..4.00 | Anisotropic stretch of the material along the surface. 1 is square. |
| cl_avfx_surface_materials_floor_surfaces_tint_b | default 1 / range 0.00..3.00 | Blue multiplier of the material colour. 1 is neutral. |
| cl_avfx_surface_materials_floor_surfaces_tint_g | default 1 / range 0.00..3.00 | Green multiplier of the material colour. 1 is neutral. |
| cl_avfx_surface_materials_floor_surfaces_tint_r | default 1 / range 0.00..3.00 | Red multiplier of the material colour. 1 is neutral: the recipe's own palette is used unchanged. |
| cl_avfx_surface_materials_floor_surfaces_walls | default 0 / 0=off, 1=on | Allow this layer on eligible walls and steep faces. |
| cl_avfx_surface_materials_greenery | default 0 / 0=off, 1=on | Greenery family master: moss, lichen, ivy, leafy creep and small weeds grown over eligible static world surfaces. This is a shader coating on the original texture, not the separate 3D grass and not a green tint. Off by default; with it off the family does no work at all. |
| cl_avfx_surface_materials_greenery_alpha | default 0.70 / range 0.00..1.00 | Blend strength of the greenery over the original surface. 0 = invisible, 1 = the growth fully replaces the substrate colour where it is present. |
| cl_avfx_surface_materials_greenery_coverage | default 0.45 / range 0.00..1.00 | Occupied fraction of the eligible surface. Below one the growth always leaves irregular holes with the original texture visible through them. |
| cl_avfx_surface_materials_greenery_coverage_softness | default 0.35 / range 0.00..1.00 | Softness of the island edges. Small = crisp defined borders; large = a gradual organic fade into the bare surface. |
| cl_avfx_surface_materials_greenery_damp_bias | default 0.50 / range 0.00..1.00 | How strongly growth prefers low and damp places. At 0 it has no effect and growth is distributed evenly. When wall runoff is on, its already-composed wetness restrainedly adds to this preference; greenery never turns runoff on and works fully without it. |
| cl_avfx_surface_materials_greenery_floors | default 1 / 0=off, 1=on | Grow greenery on eligible floor and gentle-slope surfaces. Independent of the wall lane. |
| cl_avfx_surface_materials_greenery_foliage_motion | default 0.35 / range 0.00..2.00 | Restrained movement of leaf and vine tips. Roots stay anchored: the displacement is zero at the attachment and small at the tips. The moss and lichen profiles are static and never pretend to wave; at 0 every profile is completely still. |
| cl_avfx_surface_materials_greenery_scale | default 1.00 / range 0.25..4.00 | World-space size of the growth features. Small = fine dense detail; large = broad sweeping colonies. Purely spatial: it never changes the profile or the coverage fraction. |
| cl_avfx_surface_materials_greenery_thickness | default 0.55 / range 0.00..1.00 | Strength of the micro-relief: how much the growth reads as raised cushions under the scene light. Bounded shading only — geometry, collision and depth are never changed. |
| cl_avfx_surface_materials_greenery_tint_b | default 1.00 / range 0.00..3.00 | Blue multiplier applied on top of the profile's own palette. 1 = neutral. |
| cl_avfx_surface_materials_greenery_tint_g | default 1.00 / range 0.00..3.00 | Green multiplier applied on top of the profile's own palette. 1 = neutral. |
| cl_avfx_surface_materials_greenery_tint_r | default 1.00 / range 0.00..3.00 | Red multiplier applied on top of the profile's own palette. 1 = neutral. |
| cl_avfx_surface_materials_greenery_variant | default 0 / 0=Auto / 1..6 fixed profile | Growth appearance. 0 = Auto: broad stable world regions choose the profile and at most two neighbouring profiles meet in a soft boundary. 1 soft moss film; 2 lichen mottling; 3 ivy and vines; 4 leafy creep; 5 weeds and ferns; 6 damp overgrowth. Profiles differ in island structure, edge character, relief and whether foliage moves — not only in colour. |
| cl_avfx_surface_materials_greenery_wall_distribution | default 1 / 0=uniform, 1=natural band | How growth is distributed over a wall. 0 = uniform over the whole surface. 1 = a natural band: moss, weeds and damp overgrowth climb upward from the low damp end, while ivy and leafy creep hang downward from the upper attachment. In Auto the direction follows the chosen profile. |
| cl_avfx_surface_materials_greenery_wall_fade | default 0.15 / range 0.01..1.00 | Smooth width of the growth-band boundary. Small = a sharper edge; large = a soft gradient. The boundary is always broken by world noise, so it never reads as a straight horizontal line. |
| cl_avfx_surface_materials_greenery_wall_height | default 0.60 / range 0.00..1.00 | How far the growth band reaches along the wall in natural-band mode. Small = a narrow strip near the attachment; large = growth over most of the wall. Ignored when the distribution is uniform. |
| cl_avfx_surface_materials_greenery_walls | default 1 / 0=off, 1=on | Grow greenery on eligible vertical and steep wall surfaces. Independent of the floor lane: turning floors off never changes walls. |
| cl_avfx_surface_materials_mold | 0=off (default) / 1=on | Mold family master. With the subsystem master and at least one of walls/floors on, irregular mold colonies grow over eligible static walls and floors. Off by default. |
| cl_avfx_surface_materials_mold_alpha | default 0.65 / range 0.00..1.00 | Blend strength of mold over the original texture. 0 is a real no-op (the wall is unchanged); 1 is fully opaque mold. The original texture stays recognizable at partial alpha. |
| cl_avfx_surface_materials_mold_coverage | default 0.45 / range 0.00..1.00 | Irregular occupied fraction — how much of a surface the colonies cover, keeping holes and local variation so the wall never turns uniformly green. |
| cl_avfx_surface_materials_mold_coverage_softness | default 0.5 / range 0.00..1.00 | Coverage softness — width of the fade from covered to uncovered. Higher values ease the alpha down gradually near colony edges for a natural look; lower values give crisp, peeled-plaster boundaries. |
| cl_avfx_surface_materials_mold_floors | default 1 / 0=off 1=on | Allow mold on eligible floor / up-slope faces (topology effective normal Z >= 0.35). On by default. Downward ceilings and undersides are never coated. |
| cl_avfx_surface_materials_mold_scale | default 1.0 / range 0.25..4.00 | Colony scale. Smaller values give finer, denser colonies; larger values give broader patches. Anchored in world space, so the pattern does not swim with the camera. |
| cl_avfx_surface_materials_mold_tint_b | default 1.0 / range 0.00..3.00 | Blue-channel tint multiplier over the selected profile colour (1 = neutral). |
| cl_avfx_surface_materials_mold_tint_g | default 1.0 / range 0.00..3.00 | Green-channel tint multiplier over the selected profile colour (1 = neutral). |
| cl_avfx_surface_materials_mold_tint_r | default 1.0 / range 0.00..3.00 | Red-channel tint multiplier applied over the selected profile colour (1 = neutral). Raise/lower R/G/B together to push the mold toward any hue — including blue or red the base palettes do not have. Same idea as the sun/moon colour cvars. |
| cl_avfx_surface_materials_mold_variant | default 0 / integer 0..8 | Mold appearance profile. 0 = Auto (blends broad world-space regions of every look with soft transitions); 1..8 select one fixed look: 1 current mixed, 2 soft green wash, 3 damp dark, 4 black spotting, 5 grey powdery, 6 white fuzzy, 7 olive fibrous, 8 aged brown-green. Live uniform-only change, no restart or rebuild. |
| cl_avfx_surface_materials_mold_wall_distribution | default 1 / 0 uniform, 1 bottom-up | Vertical distribution on walls. 0 = uniform over the whole wall; 1 = bottom-up, biased toward damp-looking low areas while keeping holes and variation. Floors always use uniform. |
| cl_avfx_surface_materials_mold_wall_fade | default 0.15 / range 0.01..1.00 | Smooth transition width of the bottom-up height limit. Small = a sharper band; large = a soft gradient. Never a hard horizontal cut. |
| cl_avfx_surface_materials_mold_wall_height | default 0.45 / range 0.00..1.00 | In bottom-up mode, the normalized height (0 = wall base, 1 = top of the connected wall group) up to which mold reaches on average. |
| cl_avfx_surface_materials_mold_walls | default 1 / 0=off 1=on | Allow mold on eligible wall / steep faces (topology effective normal Z between -0.35 and 0.35). On by default. Class comes from the original BSP surface, never from tessellated micro-relief. |
| cl_avfx_surface_materials_quality | default 2 / 0 Performance, 1 Balanced, 2 High, 3 Ultra | Surface detail and runtime wildlife quality, changed live without a shader recompile. Material work is 1/2/3/4 sample sites for Performance/Balanced/High/Ultra. Redirected carcass-feeder pools are 16/48/128/256 globally and 4/12/32/64 per carcass; fly swarms are 12/24/40/80. Snake wake, blood, snow and grass-reaction budgets scale through the same tier. Correctness queues for weapon contacts and audio are never reduced by quality. |
| cl_avfx_surface_materials_seed | default 1337 / integer 0..16777215 | Global pattern seed, mixed in the shader with each map's immutable per-group seed. Changing it gives a different colony layout live, without rebuilding metadata or topology. |
| cl_avfx_surface_materials_wall_surfaces | default 0 / 0=off, 1=on | Master for this Surface Coverings layer. It needs the Surface Materials master and at least one receiver lane. The layer name only selects its catalog and its default lane; it never restricts geometry. Default off. |
| cl_avfx_surface_materials_wall_surfaces_alpha | default 0.82 / range 0.00..1.00 | How strongly an accepted covering blends over the original BSP material. 0 is a real no-op: the layer stops before any hash, noise, texture, relief or motion work. |
| cl_avfx_surface_materials_wall_surfaces_cavity | default 0.25 / range 0.00..1.00 | Darkening inside the material's own hollows. Contact shading of the relief, never invented emission. |
| cl_avfx_surface_materials_wall_surfaces_ceilings | default 0 / 0=off, 1=on | Allow this layer on eligible ceilings and undersides. Ceilings are a lane of their own: switching it on does not change any other material family. |
| cl_avfx_surface_materials_wall_surfaces_coverage | default 0.85 / range 0.00..1.00 | Area of the coverage field — WHERE the covering exists, which is independent of alpha. 0 is a real no-op. |
| cl_avfx_surface_materials_wall_surfaces_coverage_softness | default 0.25 / range 0.01..1.00 | Feather of the covered/uncovered boundary only. It never changes the material's own grain or motif. |
| cl_avfx_surface_materials_wall_surfaces_depth | default 0.45 / range 0.00..1.00 | Bounded parallax depth. The offset is clamped and fades out at grazing angles and at distance, so it never smears or samples past a face edge. |
| cl_avfx_surface_materials_wall_surfaces_distribution | default 1 / 0=Uniform, 1=Natural islands, 2=Clustered, 3=Bottom-up, 4=Top-down, 5=Directional bands, 6=Slope-biased | How the coverage field is laid out over the world. The mode changes what reach, softness and direction mean, but not their stored value. |
| cl_avfx_surface_materials_wall_surfaces_distribution_direction | default 0 / range -180..180 degrees | Direction the banded and gradient distribution modes follow. Ignored by the modes that have no direction. |
| cl_avfx_surface_materials_wall_surfaces_distribution_reach | default 0.70 / range 0.00..1.00 | Zone or bias of the distribution mode: the band reach for bottom-up and top-down, and the slope bias for the slope mode. |
| cl_avfx_surface_materials_wall_surfaces_distribution_scale | default 1 / range 0.125..8.00 | Size of the macro field the distribution mode works with. Small = many small areas; large = a few broad ones. |
| cl_avfx_surface_materials_wall_surfaces_distribution_softness | default 0.25 / range 0.01..1.00 | Feather of the distribution mode's own boundary. Independent of the coverage-edge softness. |
| cl_avfx_surface_materials_wall_surfaces_floors | default 0 / 0=off, 1=on | Allow this layer on eligible floors and gentle up-slopes. |
| cl_avfx_surface_materials_wall_surfaces_material | default 1 / 1..160 stable catalog id | Catalog 1..160; metal 129..160. Local room reflection, directional sheen and filtered highlights, not a precise mirror. Detail follows Materials Quality; rotation and roughness shape the sheen. |
| cl_avfx_surface_materials_wall_surfaces_metal_anisotropy | default 1 / range 0.00..2.00 / menu step 0.05 | Directional metal sheen strength: 0 is isotropic, 1 uses the material recipe, 2 strengthens the direction. Layer rotation controls its orientation. |
| cl_avfx_surface_materials_wall_surfaces_metal_antialias | default 1 / range 0.00..2.00 / menu step 0.05 | Reduces tiny unstable highlights from fine metal normals: 0 disables smoothing, 1 is normal, 2 is softer. Does not change the chosen roughness value. |
| cl_avfx_surface_materials_wall_surfaces_metal_reflection | default 1 / range 0.00..2.00 / menu step 0.05 | Room reflection strength for metal in this layer: 0 disables the captured reflection, 1 is normal, 2 boosts it. Does not change transparency or mirror/water quality. |
| cl_avfx_surface_materials_wall_surfaces_motion_direction | default 0 / range -180..180 degrees | Direction of drift and ripple motion. Swirl and pulse use it as a bias. |
| cl_avfx_surface_materials_wall_surfaces_motion_mode | default 0 / 0=Off, 1=Drift, 2=Ripple, 3=Swirl, 4=Pulse | Shader-only motion of this layer, off by default. It is world-anchored, so it does not swim with the camera and a mirror shows the same phase as the direct view. The two layers move independently. |
| cl_avfx_surface_materials_wall_surfaces_motion_scale | default 1 / range 0.125..8.00 | Spatial frequency of the motion field: small = long slow waves, large = fine busy movement. |
| cl_avfx_surface_materials_wall_surfaces_motion_speed | default 1 / range 0.00..4.00 | Speed of this layer's motion. The module owns one clock; this multiplies it, which is what makes the two layers independent. |
| cl_avfx_surface_materials_wall_surfaces_motion_strength | default 0 / range 0.00..2.00 | Motion amplitude. Exactly 0 is a real no-motion path, not a slow animation. |
| cl_avfx_surface_materials_wall_surfaces_motion_turbulence | default 0.30 / range 0.00..1.00 | How non-linear the motion field is. 0 is a clean regular movement; 1 is broken and irregular. |
| cl_avfx_surface_materials_wall_surfaces_relief | default 0.60 / range 0.00..1.00 | Strength of the bump and normal response. It changes how the surface catches light; BSP vertices, collision, silhouette and depth are never touched. |
| cl_avfx_surface_materials_wall_surfaces_rotation | default 0 / range -180..180 degrees | Rotation of the material within the surface plane. It is anchored to the BSP plane, so it does not turn with the camera. |
| cl_avfx_surface_materials_wall_surfaces_roughness | default 1 / range 0.00..2.00 | Private material response of this layer: low values read as damp or polished, high values as dry and matte. |
| cl_avfx_surface_materials_wall_surfaces_scale | default 1 / range 0.125..8.00 | User multiplier on the recipe's own physical scale. 1 keeps the size the reference photograph implies. |
| cl_avfx_surface_materials_wall_surfaces_stretch | default 1 / range 0.25..4.00 | Anisotropic stretch of the material along the surface. 1 is square. |
| cl_avfx_surface_materials_wall_surfaces_tint_b | default 1 / range 0.00..3.00 | Blue multiplier of the material colour. 1 is neutral. |
| cl_avfx_surface_materials_wall_surfaces_tint_g | default 1 / range 0.00..3.00 | Green multiplier of the material colour. 1 is neutral. |
| cl_avfx_surface_materials_wall_surfaces_tint_r | default 1 / range 0.00..3.00 | Red multiplier of the material colour. 1 is neutral: the recipe's own palette is used unchanged. |
| cl_avfx_surface_materials_wall_surfaces_walls | default 1 / 0=off, 1=on | Allow this layer on eligible walls and steep faces. |
| cl_avfx_surface_materials_wall_water | 0=off (default) / 1=on | Wall runoff family master (Стекание воды). With the subsystem master on, animated water droplets, beads, rivulets and wet sheen run down eligible static WALLS only — floors are never affected. Off by default. Water darkens/glosses the wall but adds no light and no bloom. |
| cl_avfx_surface_materials_wall_water_alpha | default 0.70 / range 0.00..1.00 | Blend strength of the runoff over the original wall. 0 is a real no-op; 1 is the strongest wet look. The wall texture and lightmap stay recognizable at partial alpha. |
| cl_avfx_surface_materials_wall_water_coverage | default 0.40 / range 0.00..1.00 | Irregular occupied fraction — how much of a wall the water paths cover, keeping dry gaps and local variation so it never looks like a uniform sheet. |
| cl_avfx_surface_materials_wall_water_distribution | default 0 / 0 uniform, 1 top-fed | Vertical distribution on walls. 0 = uniform sources over the whole wall; 1 = top-fed, sources biased to the top and limited downward by wall reach. Walls only. |
| cl_avfx_surface_materials_wall_water_droplet_balance | default 0.50 / range 0.00..1.00 | Balance between discrete droplets and continuous streams. 0 = mostly separate droplets; 1 = mostly continuous streams; in between mixes both. |
| cl_avfx_surface_materials_wall_water_scale | default 1.00 / range 0.25..4.00 | Bead / stream scale. Smaller values give finer, denser beads; larger values give broader streams. Anchored in world space, so the pattern does not swim with the camera. |
| cl_avfx_surface_materials_wall_water_speed | default 1.00 / range 0.10..4.00 | Flow speed of the descending beads. Changing it live alters velocity smoothly without teleporting existing beads. Anchored to a single per-frame flow clock shared by every reflection. |
| cl_avfx_surface_materials_wall_water_trail_length | default 1.00 / range 0.25..4.00 | Length of the damp trail left behind each moving bead. Smaller = short faint tails; larger = long persistent tracks. |
| cl_avfx_surface_materials_wall_water_variant | default 0 / integer 0..6 | Runoff appearance profile. 0 = Auto (blends broad world-space regions of neighbouring looks); 1..6 select one fixed look: 1 fine droplets, 2 bead trails, 3 thin slow rivulets, 4 heavy streams, 5 broad wet film, 6 intermittent mixed runoff. Live uniform-only change, no restart or rebuild. |
| cl_avfx_surface_materials_wall_water_wall_fade | default 0.15 / range 0.01..1.00 | Smooth transition width of the top-fed reach boundary. Small = a sharper band; large = a soft gradient. |
| cl_avfx_surface_materials_wall_water_wall_reach | default 0.75 / range 0.00..1.00 | In top-fed mode, the normalized downward reach (0 = only the top, 1 = down to the wall base) that water travels on average. The lower boundary is broken by world noise, never a hard horizontal cut. |
| cl_avfx_surface_materials_wall_water_wetness | default 0.65 / range 0.00..1.00 | Damp / gloss response. Higher values darken and gloss the wet areas more strongly (a wetter look); lower values keep a restrained damp trace. Never emits light or bloom. |
| cl_avfx_surface_mirror | 0=off (default) / 1=on | Master toggle for experimental AVFX Mirror Surfaces. Selected static world surfaces (floors/slopes and/or walls) reflect the scene like a mirror. Use at your own risk; enabling wall and floor mirrors together is not recommended. The saved choice is effective only in deathmatch 0, on a local deathmatch 1 server, or during dm2/mvd2 Demo Player playback. Remote deathmatch 1 is hard-blocked from authoritative server status and cannot be enabled through cl_avfx_multiplayer or another user cvar. This restriction applies only to mirror floors/walls, never to puddle or BSP-water reflections. Mirror floors/slopes temporarily suppress AVFX puddles and snow cover; wall-only mirrors remain compatible with puddles and snow cover. Rain, snowfall and BSP water keep working. Off by default (opt-in); independent of the weather preset. On capable WGL, mirror receivers inherit the same BSP tessellation as the world automatically; on EGL they use ordinary flat geometry. |
| cl_avfx_surface_mirror_debug | default 0 / 0=off / 1..10 documented internal modes (diagnostic, current session only) | Mirror surfaces diagnostic overlay for tuning and troubleshooting. 0 = off (default). Higher values colour receiver classes and connected groups, isolate a single active plane, show the exact polygon mask, SSR confidence, planar fallback, reflected depth and the effective-state summary. Off by default and never saved to a preset. |
| cl_avfx_surface_mirror_distance | default 4096 / range 256..16384 wu / step 64 | Maximum distance (world units) at which a mirror receiver is selected and captured. Farther surfaces are skipped to save cost. 4096 by default. |
| cl_avfx_surface_mirror_floor_slope_max | default 65 / range 0..89 degrees / step 1 | Angle limit (degrees from horizontal) that separates floors/slopes from walls. A surface tilted up to this angle counts as a floor/slope; steeper counts as a wall. 0 mirrors only near-horizontal floors; 65 (default) includes normal ramps and stairs; near 89 still never turns a ceiling into a floor. Changing it re-filters receivers without rebuilding the surface inventory. |
| cl_avfx_surface_mirror_floors | default 1 / 0=off 1=on | Turn floors and up-facing slopes (stairs, ramps, upward tilts up to the angle limit) into mirrors. While active, this category suppresses AVFX puddles on the same floor/slope receiver domain. On by default so enabling the master immediately shows a visible floor mirror. Uses the original BSP surface class, so a tessellated floor is never reclassified from its micro-relief. |
| cl_avfx_surface_mirror_model_reflection | default 0 / 0=off 1=on | Master toggle for reflecting alias models (players, monsters, weapons, items, sky objects) in mirror surfaces. Off by default. Each model category below has its own independent toggle on top of this parent; with the parent on and a category on, matching models are reflected with correct depth/occlusion so hidden geometry does not show through walls. |
| cl_avfx_surface_mirror_model_reflection_actors | default 0 / 0=off 1=on | Reflect players and monsters in mirror surfaces, including your own body in first person through a mirror-only body feed (the on-screen first-person view is never affected). Requires the model reflection parent. Off by default. |
| cl_avfx_surface_mirror_model_reflection_armor | default 0 / 0=off 1=on | Reflect armor pickup models in mirror surfaces. Requires the model reflection parent. Off by default. |
| cl_avfx_surface_mirror_model_reflection_comets | default 0 / 0=off 1=on | Reflect AVFX comets in mirror surfaces, blocked by reflected roofs/walls. Requires the model reflection parent. Off by default. |
| cl_avfx_surface_mirror_model_reflection_items | default 0 / 0=off 1=on | Reflect generic item and object models in mirror surfaces. Requires the model reflection parent. Off by default. |
| cl_avfx_surface_mirror_model_reflection_meteors | default 0 / 0=off 1=on | Reflect AVFX meteors in mirror surfaces, blocked by reflected roofs/walls. Requires the model reflection parent. Off by default. |
| cl_avfx_surface_mirror_model_reflection_planets | default 0 / 0=off 1=on | Reflect Earth, Moon, Sun and compatible celestial bodies in mirror surfaces, obeying reflected BSP line-of-sight so a body does not show through a roof or wall. Requires the model reflection parent. Off by default. |
| cl_avfx_surface_mirror_model_reflection_projectiles | default 0 / 0=off 1=on | Reflect final presented projectiles and the rail beam in mirror surfaces, including synchronized local prediction. Requires the model-reflection parent. Off by default. |
| cl_avfx_surface_mirror_model_reflection_ships | default 0 / 0=off 1=on | Reflect AVFX sky ships in mirror surfaces. Requires the model reflection parent. Off by default. |
| cl_avfx_surface_mirror_model_reflection_strength | default 0.80 / range 0.00..1.00 / step 0.05 | Strength of reflected models in mirror surfaces. 1.0 is a full-strength reflection; lower values fade the reflected models. 0.80 by default. Independent of the scene reflection strength. |
| cl_avfx_surface_mirror_model_reflection_surface_volumes | default 0 / 0=off 1=on | Reflect placed Surface Volumes (steam, smoke and fog) in mirror surfaces. Requires the model-reflection parent. Off by default. |
| cl_avfx_surface_mirror_model_reflection_weapons | default 0 / 0=off 1=on | Reflect world, pickup and linked weapon models in mirror surfaces — NOT the first-person view gun. Requires the model reflection parent. Off by default. |
| cl_avfx_surface_mirror_roughness | default 0.00 / range 0.00..1.00 / step 0.05 | Mirror surface roughness. 0.00 (default) is a sharp rigid mirror. Higher values soften/blur the reflection. This is a rigid optical roughness; it is unrelated to and unaffected by the liquid ripple/distortion sliders of puddles and water. |
| cl_avfx_surface_mirror_scene_reflection | default 1 / 0=off 1=on | Enable reflection of static world detail in mirror surfaces. On by default. Medium and High keep persistent planar capture slots while their selected planes remain visible. Ultra captures every visible canonical plane immediately, so a model reflection cannot require camera movement to appear. Planes over a lower-profile budget use SSR, with a neutral source-colour fallback for unresolved pixels. |
| cl_avfx_surface_mirror_scene_reflection_quality | default 2 / 0=Performance 1=Medium 2=Quality(8) 3=Ultra(16) 4=Extra(all) | Reflection quality profile. 0 = Performance (SSR only), 1 = Medium (one persistent planar capture), 2 = Quality (up to 8 persistent planar capture slots, default), 3 = Ultra (up to 16 slots), 4 = Extra (every visible canonical plane, no capture-count limit). Bounded profiles keep stable slots and use SSR with a neutral source-colour fallback over budget. Extra is the maximum-quality mode: every selected receiver receives its complete reflected scene from the first frame. This never changes BSP tessellation quality or receiver shape. |
| cl_avfx_surface_mirror_scene_reflection_strength | default 0.90 / range 0.00..1.00 / step 0.05 | Strength of the reflected scene in mirror surfaces. 1.0 is a full bright mirror; lower values dim the reflection toward the surface's own colour. 0.90 by default for a strong but not overpowering mirror. |
| cl_avfx_surface_mirror_surface_objects | 0/1 (default 1) | Reflect enabled grass, ivy, ferns and falling leaves in mirrors. Stones, soil and ground litter are excluded before mesh work. Uses scene reflection strength; does not enable objects themselves. |
| cl_avfx_surface_mirror_walls | default 0 / 0=off 1=on | Turn vertical and steep wall-like surfaces into mirrors. Wall-only mirrors remain compatible with AVFX puddles on floors. Off by default because wall mirrors capture a wider scene and cost more than floors. A wall mirror reflects players, monsters, weapons and items standing away from it, upright and correctly left-right mirrored. |
| cl_avfx_surface_objects | 0=off (default) / 1=on | Master toggle for AVFX Surface Objects — decorative objects placed directly on eligible world surfaces. Independent of the rain/snow/mist weather profiles and of cl_avfx_preset, so surface decoration can run with any weather setting or none. Off by default (opt-in); client-side visual only with no gameplay effect. Individual object families such as grass keep their own sub-toggle on top of this master. |
| cl_avfx_surface_rubble | default 0 / 0..1 / step 1 | Independent Surface Objects category; requires only the common master. Decorative geometry, no collision. |
| cl_avfx_surface_rubble_clumping | default 0.5 / 0..1 / step 0.01 | 0 separate objects; 1 multi-object clusters. Cluster count decreases to balance added geometry. |
| cl_avfx_surface_rubble_color_b | default 0.28 / 0..1 / step 0.01 | Base color channel before material variation and scene lighting. |
| cl_avfx_surface_rubble_color_g | default 0.31 / 0..1 / step 0.01 | Base color channel before material variation and scene lighting. |
| cl_avfx_surface_rubble_color_r | default 0.33 / 0..1 / step 0.01 | Base color channel before material variation and scene lighting. |
| cl_avfx_surface_rubble_color_variation | default 0.4 / 0..1 | Restrained per-piece texture tint variation; zero keeps the chosen tint. Does not change placement. |
| cl_avfx_surface_rubble_density | default 0.6 / 0.05..4 / step 0.05 | Stable map population. Placement rebuilds once when settings change, never when the camera moves. |
| cl_avfx_surface_rubble_diversity | default 1 / 0..1 / step 0.01 | 0 one structure; 1 varied silhouettes, proportions and orientations. Camera-independent. |
| cl_avfx_surface_rubble_dynamic_light | default 1.00 / range 0..2 / step 0.05 | Brightness response of objects to engine dynamic lights. |
| cl_avfx_surface_rubble_light_celestial | default 1 / 0=off / 1=on | Makes stones follow the live AVFX sun/moon/cloud-transmittance state. Uses stones-specific strength, floor and night tint rather than snow tuning. |
| cl_avfx_surface_rubble_light_celestial_min_brightness | default 0.04 / range 0..1 / step 0.01 | Celestial brightness floor at a dark or moonless night. This is applied before local lights brighten individual fragments. |
| cl_avfx_surface_rubble_light_celestial_night_tint | default 0.35 / range 0..1 / step 0.05 | Amount of muted cool-green tint applied as sun/moon illumination approaches darkness. |
| cl_avfx_surface_rubble_light_celestial_strength | default 1.20 / range 0..2 / step 0.05 | Strength of sun and moon illumination on stones after cloud attenuation. |
| cl_avfx_surface_rubble_light_dynamic | default 1 / 0=off / 1=on | Enables engine dynamic lights on stones: blaster bolts, muzzle flashes, rockets, explosions and similar gameplay sources. |
| cl_avfx_surface_rubble_light_dynamic_color | default 1.00 / range 0..2 / step 0.05 | Amount of dynamic-light colour transferred to stones (red blaster, green BFG, orange explosion, etc.). |
| cl_avfx_surface_rubble_light_emissive | default 1 / 0=off / 1=on | Enables the same AVFX map-emissive and spawn/teleporter-marker source families used by snow surfaces. |
| cl_avfx_surface_rubble_light_emissive_color | default 1.00 / range 0..2 / step 0.05 | Amount of emissive-source colour transferred to stones. |
| cl_avfx_surface_rubble_light_emissive_strength | default 1.00 / range 0..2 / step 0.05 | Brightness response of stones to AVFX emissive source families. |
| cl_avfx_surface_rubble_light_flashlight | default 1 / 0=off / 1=on | Enables per-fragment stones response to the actual AVFX player flashlight cone. |
| cl_avfx_surface_rubble_light_flashlight_strength | default 1.00 / range 0..2 / step 0.05 | Grass brightness response to the flashlight cone; flashlight colour is preserved. |
| cl_avfx_surface_rubble_light_lightning | default 1 / 0=off / 1=on | Enables stones response to the shared bounded lightning-local pool, including meteor-impact illumination registered in that pool. |
| cl_avfx_surface_rubble_light_lightning_strength | default 1.00 / range 0..2 / step 0.05 | Grass response strength for local lightning strikes and meteor-impact lights. |
| cl_avfx_surface_rubble_light_local_lift | default 1.00 / range 0..2 / step 0.05 | Common response multiplier for flashlight, lightning/meteor, dynamic and emissive local sources. It controls how strongly those sources restore visible daytime stones in darkness. |
| cl_avfx_surface_rubble_light_min_brightness | default 0.02 / range 0..1 / step 0.01 | Absolute static-light floor before celestial/local lighting. Low values keep unlit night stones dark; this is not an emissive term. |
| cl_avfx_surface_rubble_lighting | default 1 / 0=legacy static only / 1=responsive lighting | Master for responsive stones lighting. 1 uses cached BSP light plus live sun/moon, flashlight, lightning/meteor, engine dynamic and AVFX emissive sources. 0 restores the previous static-only stones shading. |
| cl_avfx_surface_rubble_quality | default 3 / 0..3 / step 1 | Mesh detail. Fixed object positions and visibility never depend on quality. |
| cl_avfx_surface_rubble_roughness | default 0.85 / 0.15..1 / step 0.01 | Higher values soften specular highlights. |
| cl_avfx_surface_rubble_seed | default 0 / 0..16777215 / step 1 | Stable placement seed; changes the arrangement on the map. |
| cl_avfx_surface_rubble_shadow_strength | default 0 / 0..1 / step 0.01 | Contact and flashlight contour shadows; flashlight needs its shadow master. Zero skips both. |
| cl_avfx_surface_rubble_size | default 16 / 8..256 / step 1 | Cluster size in world units. The complete footprint must fit its support, clear of openings and water. |
| cl_avfx_surface_rubble_size_spread | default 0.75 / 0..1 / step 0.01 | Independent scale spread: 0 equal base size, 1 ranges from 1/16 to 8 times base size; pebbles and boulders together. Large objects still require full support. |
| cl_avfx_surface_rubble_static_light | default 1.00 / range 0..2 / step 0.05 | Multiplier for the per-cell cached BSP/static light sampled when the objects inventory is built. |
| cl_avfx_surface_soil | default 0 / 0..1 / step 1 | Independent Surface Objects category; requires only the common master. Decorative geometry, no collision. |
| cl_avfx_surface_soil_clumping | default 0.5 / 0..1 / step 0.01 | 0 separate objects; 1 multi-object clusters. Cluster count decreases to balance added geometry. |
| cl_avfx_surface_soil_color_b | default 0.055 / 0..1 / step 0.01 | Base color channel before material variation and scene lighting. |
| cl_avfx_surface_soil_color_g | default 0.12 / 0..1 / step 0.01 | Base color channel before material variation and scene lighting. |
| cl_avfx_surface_soil_color_r | default 0.24 / 0..1 / step 0.01 | Base color channel before material variation and scene lighting. |
| cl_avfx_surface_soil_color_variation | default 0.4 / 0..1 | Restrained per-piece texture tint variation; zero keeps the chosen tint. Does not change placement. |
| cl_avfx_surface_soil_density | default 0.6 / 0.05..4 / step 0.05 | Stable map population. Placement rebuilds once when settings change, never when the camera moves. |
| cl_avfx_surface_soil_diversity | default 1 / 0..1 / step 0.01 | 0 one structure; 1 varied silhouettes, proportions and orientations. Camera-independent. |
| cl_avfx_surface_soil_dynamic_light | default 1.00 / range 0..2 / step 0.05 | Brightness response of objects to engine dynamic lights. |
| cl_avfx_surface_soil_light_celestial | default 1 / 0=off / 1=on | Makes soil follow the live AVFX sun/moon/cloud-transmittance state. Uses soil-specific strength, floor and night tint rather than snow tuning. |
| cl_avfx_surface_soil_light_celestial_min_brightness | default 0.04 / range 0..1 / step 0.01 | Celestial brightness floor at a dark or moonless night. This is applied before local lights brighten individual fragments. |
| cl_avfx_surface_soil_light_celestial_night_tint | default 0.35 / range 0..1 / step 0.05 | Amount of muted cool-green tint applied as sun/moon illumination approaches darkness. |
| cl_avfx_surface_soil_light_celestial_strength | default 1.20 / range 0..2 / step 0.05 | Strength of sun and moon illumination on soil after cloud attenuation. |
| cl_avfx_surface_soil_light_dynamic | default 1 / 0=off / 1=on | Enables engine dynamic lights on soil: blaster bolts, muzzle flashes, rockets, explosions and similar gameplay sources. |
| cl_avfx_surface_soil_light_dynamic_color | default 1.00 / range 0..2 / step 0.05 | Amount of dynamic-light colour transferred to soil (red blaster, green BFG, orange explosion, etc.). |
| cl_avfx_surface_soil_light_emissive | default 1 / 0=off / 1=on | Enables the same AVFX map-emissive and spawn/teleporter-marker source families used by snow surfaces. |
| cl_avfx_surface_soil_light_emissive_color | default 1.00 / range 0..2 / step 0.05 | Amount of emissive-source colour transferred to soil. |
| cl_avfx_surface_soil_light_emissive_strength | default 1.00 / range 0..2 / step 0.05 | Brightness response of soil to AVFX emissive source families. |
| cl_avfx_surface_soil_light_flashlight | default 1 / 0=off / 1=on | Enables per-fragment soil response to the actual AVFX player flashlight cone. |
| cl_avfx_surface_soil_light_flashlight_strength | default 1.00 / range 0..2 / step 0.05 | Grass brightness response to the flashlight cone; flashlight colour is preserved. |
| cl_avfx_surface_soil_light_lightning | default 1 / 0=off / 1=on | Enables soil response to the shared bounded lightning-local pool, including meteor-impact illumination registered in that pool. |
| cl_avfx_surface_soil_light_lightning_strength | default 1.00 / range 0..2 / step 0.05 | Grass response strength for local lightning strikes and meteor-impact lights. |
| cl_avfx_surface_soil_light_local_lift | default 1.00 / range 0..2 / step 0.05 | Common response multiplier for flashlight, lightning/meteor, dynamic and emissive local sources. It controls how strongly those sources restore visible daytime soil in darkness. |
| cl_avfx_surface_soil_light_min_brightness | default 0.02 / range 0..1 / step 0.01 | Absolute static-light floor before celestial/local lighting. Low values keep unlit night soil dark; this is not an emissive term. |
| cl_avfx_surface_soil_lighting | default 1 / 0=legacy static only / 1=responsive lighting | Master for responsive soil lighting. 1 uses cached BSP light plus live sun/moon, flashlight, lightning/meteor, engine dynamic and AVFX emissive sources. 0 restores the previous static-only soil shading. |
| cl_avfx_surface_soil_quality | default 3 / 0..3 / step 1 | Mesh detail. Fixed object positions and visibility never depend on quality. |
| cl_avfx_surface_soil_roughness | default 0.95 / 0.15..1 / step 0.01 | Higher values soften specular highlights. |
| cl_avfx_surface_soil_seed | default 0 / 0..16777215 / step 1 | Stable placement seed; changes the arrangement on the map. |
| cl_avfx_surface_soil_size | default 24 / 8..64 / step 1 | Cluster size in world units. The complete footprint must fit its support, clear of openings and water. |
| cl_avfx_surface_soil_size_spread | default 0.4 / 0..1 / step 0.01 | Size spread: 0 equal base size, 1 ranges from half to twice the base size. |
| cl_avfx_surface_soil_static_light | default 1.00 / range 0..2 / step 0.05 | Multiplier for the per-cell cached BSP/static light sampled when the objects inventory is built. |
| cl_avfx_surface_volumes | default 0 / 0=off, 1=on | Master for AVFX Surface Volumes: volumetric steam and smoke rising from areas you mark on floors, walls, ceilings and slopes. Needs cl_avfx on. Turning it on shows the marked areas in the current map immediately, with no map reload and no video restart. |
| cl_avfx_surface_volumes_debug | default 0 / 0=off, 1=coverage tint / session only (diagnostic, current session only) | Session-only diagnostic: tints the volume by its accumulated coverage so overdraw is visible. Never read from a config and never written by any config or preset writer; after a restart it is off again. |
| cl_avfx_surface_volumes_gpu_budget_ms | default 0.75 / range 0.10..4.00 (legacy preset scale) | Calibrated density control for EACH visible volume shape. The legacy 0.10..4.00 numerical scale is retained for preset compatibility; the cvar name is retained for ABI compatibility. The value is NOT measured GPU milliseconds and is NOT a whole-pass GPU ceiling. Adding a shape never changes existing shapes; total GPU load grows with the visible shape count. |
| cl_avfx_surface_volumes_lod | default 0 / 0=off, 1=near, 2=medium, 3=far | Distance visibility of whole marked areas. 0 shows every area; 1..3 show only areas within a growing distance of the camera. A visible area always draws WHOLE and fades out completely at its cutoff. |
| cl_avfx_surface_volumes_max_lobes | default 1400 / range 64..8192 | Upper bound on volume primitives built for EACH shape. This population is independent and is never divided between shapes. |
| cl_avfx_surface_volumes_quality | default 2 / 0=Low, 1=Balanced, 2=High, 3=Ultra | Volume detail: how many samples each covered pixel integrates and how much screen coverage the pass may use. One shader serves every tier, so changing this compiles nothing. |
| cl_avfx_volclouds | 0=off (default) / 1=on | Master toggle for AVFX volumetric clouds. When ON, the sky shader runs a GPU raymarch through a world-space horizontal cloud layer ([base_height, base_height+thickness]) and composites cloud color over the base sky behind world geometry. Reacts to sun, moon, storm darkening, and optionally attenuates the sun/moon disk/corona via _sun_occlusion. Default OFF — opt-in; new visual layer adds GPU cost only when enabled. Disabled state is a single uniform check. |
| cl_avfx_volclouds_adaptive | 1=fixed step (default) / 2..4=progressively coarser empty-space skipping | Step mode of the volumetric-cloud raymarcher. 1 keeps the tuned fixed-step march. Values above 1 coarsely skip space the marcher can prove is empty, which buys frame rate on cloudy skies at the cost of slightly blockier cloud edges. Requires cl_avfx 1 + cl_avfx_volclouds 1. |
| cl_avfx_volclouds_ambient | default 0.50 / range 0..1 / step 0.05 | Ambient light floor for clouds (warm-blue sky-scattered light). 0 = no ambient (clouds pitch black when no direct light reaches them); 0.50 (default) = balanced night readability without washing out the sky; 1.0 = strong full ambient (clouds bright even at night). |
| cl_avfx_volclouds_base_height | default 7648 / range 0..8192 wu / step 16 | World-space Z (height) where the cloud layer begins. 7648 (default) puts the bottom of the cloud layer well above typical playable areas in stock Q2 maps. Lower values pull clouds closer to the play area; higher values push them further into the sky. The slab from base_height to base_height + thickness is what the raymarch intersects. |
| cl_avfx_volclouds_count | default 177 / range 1..256 / step 1 | Procedural macro-cell / cluster density. Higher values produce more cloud cells across the sky; lower values give fewer larger clusters. Affects the perceived cloud cell granularity — combined with size it determines roughly how many cloud puffs fill a typical view. This is NOT a CPU object count; it is a shader-side parameter controlling the macro noise. |
| cl_avfx_volclouds_coverage | default 0.65 / range 0..1 / step 0.05 | Sky coverage / fill amount. 0 = scattered wisps only (high threshold on macro noise); 0.65 (default) = moderate broken-cloud cover; 1 = full overcast (low threshold, nearly everything passes the macro gate). Combined with density and opacity for final cloud presence on screen. |
| cl_avfx_volclouds_debug | default 0 / values 0,1,2,3 (diagnostic, current session only) | Debug visualisation mode for the volclouds raymarch. 0 = off (normal composite — default). 1 = density: visualise accumulated 1 - transmittance. 2 = lighting: visualise raw inscatter color (cloud lighting without scene composite). 3 = steps: visualise horizon fade ramp (0 at horizon, 1 at zenith). Use for screenshots and tuning; should be 0 in normal play. |
| cl_avfx_volclouds_density | default 1.4 / range 0..2 / step 0.05 | Base cloud density (extinction coefficient per ray-step before height profile). 1.4 (default) gives readable clouds with daylight transmittance through gaps. Higher values produce thick opaque clouds; lower values give thin wispy clouds. Multiplied with height profile + macro coverage along the raymarch via Beer absorption. |
| cl_avfx_volclouds_detail_scale | default 0.30 / range 0.05..8 / step 0.05 | Detail / erosion noise spatial scale (subtracted from macro to break up cloud edges). 0.30 (default) gives soft large-scale edge detail. Higher values produce finer cloud edge detail; lower values produce smoother edges. |
| cl_avfx_volclouds_erosion | default 0.35 / range 0..1 / step 0.05 | Strength of edge erosion: how strongly the detail noise eats away at cloud edges. 0 = no erosion (clouds have smooth blob edges); 0.35 (default) = natural ragged edges; 1.0 = aggressive erosion (clouds look fragmented). |
| cl_avfx_volclouds_evolution_speed | default 4.15 / range 0..5 / step 0.05 | Speed of internal noise-field evolution (cloud SHAPES morphing over time, independent from translation by wind). Range 0..5. 0 freezes the noise field entirely (combine with a non-zero seed for reproducible screenshots / A-B comparison). 4.15 (default) = fast visible morphing. 5 = maximum (rapid roiling storm clouds). |
| cl_avfx_volclouds_fluffiness | default 0.55 / range 0..1 / step 0.05 | Boost of inscattered light visibility. 0 = flat shading (clouds read as solid colored blobs); 0.55 (default) = fluffy cumulus look with visible inscatter; 1.0 = maximum boost (bright glowing puffs). |
| cl_avfx_volclouds_horizon_fade | default 0.2 / range 0..1 / step 0.05 | Horizon-band fade. Controls how strongly cloud contribution attenuates as the per-pixel sky ray approaches the horizon. 0 = clouds fully visible at the horizon (can look unnatural); 0.2 (default) = clouds fade out smoothly near horizon (matches the real-world look where distant clouds dim into atmospheric haze); 1 = clouds visible only well above horizon. |
| cl_avfx_volclouds_l1_coverage | 0..1 (menu step 0.05, default 0.7) | Sky coverage for layer 1. Higher = more cloud and smaller blue gaps. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l1_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l1_density | 0..2 (menu step 0.05, default 0.95) | Cloud-body density for layer 1. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l1_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l1_detail | 0.1..4 (menu step 0.05, default 1); engine accepts 0.05..8 | Detail and erosion noise scale for layer 1. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l1_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l1_enable | 0=Off / 1=On (default 1) | Enable layer 1: low heavy cumulus. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model) and the layer index below cl_avfx_volclouds_layer_count. Each active layer adds raymarch work. |
| cl_avfx_volclouds_l1_erosion | 0..1 (menu step 0.05, default 0.3) | Edge erosion strength for layer 1. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l1_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l1_evolution_speed | 0..2 (menu step 0.05, default 0.2); engine accepts 0..5 | Shape evolution speed for layer 1. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l1_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l1_height | 0..2 (menu step 0.05, default 0); engine accepts -2..4 | Relative height position inside the cloud slab for layer 1. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l1_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l1_opacity | 0..2 (menu step 0.05, default 0.9); engine accepts 0..1 | Opacity over the sky for layer 1. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l1_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l1_scale | 0.1..4 (menu step 0.05, default 1); engine accepts 0.05..8 | Feature scale for layer 1. Higher = larger cloud bodies. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l1_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l1_thickness | 0.1..2 (menu step 0.05, default 0.9); engine accepts 0.05..4 | Relative vertical thickness for layer 1. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l1_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l1_wind_dir | -180..180 (menu step 5, default 0); engine accepts any angle, wrapped to 0..359 | Wind direction for layer 1, in degrees. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l1_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l1_wind_speed | 0..5 (menu step 0.05, default 1); engine accepts 0..8 | Wind drift speed for layer 1. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l1_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l2_coverage | 0..1 (menu step 0.05, default 0.52) | Sky coverage for layer 2. Higher = more cloud and smaller blue gaps. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l2_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l2_density | 0..2 (menu step 0.05, default 0.62) | Cloud-body density for layer 2. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l2_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l2_detail | 0.1..4 (menu step 0.05, default 1.2); engine accepts 0.05..8 | Detail and erosion noise scale for layer 2. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l2_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l2_enable | 0=Off / 1=On (default 1) | Enable layer 2: mid broken cumulus. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model) and the layer index below cl_avfx_volclouds_layer_count. Each active layer adds raymarch work. |
| cl_avfx_volclouds_l2_erosion | 0..1 (menu step 0.05, default 0.4) | Edge erosion strength for layer 2. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l2_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l2_evolution_speed | 0..2 (menu step 0.05, default 0.25); engine accepts 0..5 | Shape evolution speed for layer 2. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l2_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l2_height | 0..2 (menu step 0.05, default 0.55); engine accepts -2..4 | Relative height position inside the cloud slab for layer 2. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l2_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l2_opacity | 0..2 (menu step 0.05, default 0.62); engine accepts 0..1 | Opacity over the sky for layer 2. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l2_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l2_scale | 0.1..4 (menu step 0.05, default 1.85); engine accepts 0.05..8 | Feature scale for layer 2. Higher = larger cloud bodies. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l2_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l2_thickness | 0.1..2 (menu step 0.05, default 0.45); engine accepts 0.05..4 | Relative vertical thickness for layer 2. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l2_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l2_wind_dir | -180..180 (menu step 5, default 20); engine accepts any angle, wrapped to 0..359 | Wind direction for layer 2, in degrees. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l2_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l2_wind_speed | 0..5 (menu step 0.05, default 1.35); engine accepts 0..8 | Wind drift speed for layer 2. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l2_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l3_coverage | 0..1 (menu step 0.05, default 0.36) | Sky coverage for layer 3. Higher = more cloud and smaller blue gaps. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l3_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l3_density | 0..2 (menu step 0.05, default 0.42) | Cloud-body density for layer 3. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l3_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l3_detail | 0.1..4 (menu step 0.05, default 1.6); engine accepts 0.05..8 | Detail and erosion noise scale for layer 3. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l3_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l3_enable | 0=Off / 1=On (default 1) | Enable layer 3: high thin cirrus. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model) and the layer index below cl_avfx_volclouds_layer_count. Each active layer adds raymarch work. |
| cl_avfx_volclouds_l3_erosion | 0..1 (menu step 0.05, default 0.5) | Edge erosion strength for layer 3. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l3_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l3_evolution_speed | 0..2 (menu step 0.05, default 0.32); engine accepts 0..5 | Shape evolution speed for layer 3. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l3_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l3_height | 0..2 (menu step 0.05, default 1.15); engine accepts -2..4 | Relative height position inside the cloud slab for layer 3. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l3_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l3_opacity | 0..2 (menu step 0.05, default 0.42); engine accepts 0..1 | Opacity over the sky for layer 3. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l3_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l3_scale | 0.1..4 (menu step 0.05, default 2.7); engine accepts 0.05..8 | Feature scale for layer 3. Higher = larger cloud bodies. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l3_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l3_thickness | 0.1..2 (menu step 0.05, default 0.3); engine accepts 0.05..4 | Relative vertical thickness for layer 3. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l3_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l3_wind_dir | -180..180 (menu step 5, default -15); engine accepts any angle, wrapped to 0..359 | Wind direction for layer 3, in degrees. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l3_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_l3_wind_speed | 0..5 (menu step 0.05, default 1.9); engine accepts 0..8 | Wind drift speed for layer 3. Requires cl_avfx 1 + cl_avfx_volclouds 1 + cl_avfx_volclouds_layers 1 (Upper sky model), the layer index below cl_avfx_volclouds_layer_count, and cl_avfx_volclouds_l3_enable 1. The value is applied relative to the global cloud settings, not as an absolute. |
| cl_avfx_volclouds_layer_count | 1..3 (menu step 1, default 3) | Number of active layers in Upper sky mode. Ignored by Full sphere mode. Range 1..3. Requires cl_avfx 1 + cl_avfx_volclouds 1. More active layers mean more raymarching, so this is a direct performance knob. |
| cl_avfx_volclouds_layers | 0=Full sphere (single field) / 1=Upper sky (layered) (default 1) | Sky coverage and cloud model. Full sphere uses one mirrored field above and below the horizon. Upper sky uses the layered model only above the horizon. Default: Upper sky. Requires cl_avfx 1 + cl_avfx_volclouds 1. More active layers mean more raymarching, so this is a direct performance knob. |
| cl_avfx_volclouds_lighting_mask | default 1 / range 0..1 / step 0.05 | How strongly volumetric clouds dim sun and moon world/entity lighting. 1.0 (default) = full physical dimming — thick volclouds darken the world. 0.0 = volclouds do not affect scene lighting at all (only god rays + disk occlusion still react). This is independent of cl_avfx_volclouds_sun_occlusion (disk only) and cl_avfx_sun_godrays_cloud_mask (god rays only). |
| cl_avfx_volclouds_lightning_local | 0=off / 1=on (default) | Master toggle for local lightning illumination of volumetric clouds. When ON (default), nearby lightning strikes brighten the cloud body locally within radius — clouds light up around the strike rather than uniformly across the whole sky. Reuses the same 8-strike origin array as surface lightning but applies volclouds-specific radius / strength / falloff. Sparse-sampled (every 4th raymarch step) so cost is bounded. |
| cl_avfx_volclouds_lightning_local_falloff | default 1.25 / range 0.25..4 / step 0.05 | Radial/edge softness shaping exponent for the local cloud-entry glow. 1.0 = linear falloff toward the glow's edge; 1.25 (default) = slightly tighter near the glow center with smooth falloff; higher values up to 4.0 = very tight bright core; lower values down to 0.25 = nearly uniform fill inside the glow. After smoothstep shaping for visual softness. This only shapes the radial profile; the vertical extent and the bulb shape are fixed by the bounded-glow geometry. |
| cl_avfx_volclouds_lightning_local_radius | default 1200 / range 0..8000 / step 50 | Horizontal radius in world units of the local cloud-entry glow around each visible lightning bolt top. The glow is a bounded 3D volume anchored at the bolt-cloud entry point (not a cone flaring upward) — it has finite vertical extent (clamped via 0.75 × this, 256..900 wu above and 0.2 × this, 96..240 wu below), peaks in a small bulb at the entry, and fades outward and upward. Lower values keep the glow tight around each strike; higher values produce a broader storm flash that may overlap from multiple simultaneous strikes. |
| cl_avfx_volclouds_lightning_local_strength | default 4 / range 0..5 / step 0.05 | Brightness boost multiplier for the local cloud-entry glow. 4 (default) gives clearly visible local brightening at the bolt-cloud entry. 0 disables (same as master off). Higher values up to 5.0 produce cinematic over-bright cloud flashes near the strike. Per-strike fade envelope (leader/peak/decay) is preserved from the bolt — this just scales it. |
| cl_avfx_volclouds_moon_lighting | 0=off / 1=on (default) | When ON (default), the moon's direction + phase contribute weak cold scatter to clouds at night. Much weaker than sun by design. When OFF, clouds get only ambient + sun contribution. |
| cl_avfx_volclouds_noise_source | default 0 / values 0,1 | Cloud detail source. 0 = Fast procedural: in-shader hash/value-noise FBM (cheapest, no texture memory, broad compatibility). 1 = Rich 3D noise: generated tileable Perlin-Worley shape + Worley erosion 3D textures (128^3 shape / 64^3 detail, RGBA channels) for connected dense cloud bodies with clean blue gaps — the reference summer-sky look. The 3D textures are generated/uploaded ~once when AVFX clouds need them (gen time and resolution shown in cl_avfx_info under volcloud noise:); nothing is generated when cl_avfx 0 or cl_avfx_volclouds 0. |
| cl_avfx_volclouds_opacity | default 0.45 / range 0..1 / step 0.05 | Final opacity scalar of the cloud composite over base sky. 0.45 (default) lets sky color show through thin cloud edges naturally. 1.0 = clouds fully obscure at max accumulated density; 0 disables visual contribution (use debug modes to inspect). |
| cl_avfx_volclouds_quality | default 1 / values 0,1,2 | Quality preset multiplier applied on top of cl_avfx_volclouds_steps. 0 = low (~0.5x base steps — fastest, mild banding under motion). 1 (default) = quality (~1.0x base steps). 2 = ultra (~1.5x base steps — best fidelity, highest cost). Effective resolved step count is reported in cl_avfx_info under volclouds:. |
| cl_avfx_volclouds_randomness | default 1 / range 0..1 / step 0.05 | How randomly cloud features are placed across the sky. 0 = highly regular / grid-like pattern; 1 (default) = natural random scatter; 1.0 = maximum disorder. Combined with seed to derive the macro layout. |
| cl_avfx_volclouds_render_scale | default 0.5 / range 0.25..1.00 / step 0.05 | Internal cloud buffer scale. Reserved / informational in this foundation pass (raymarch always runs at scene resolution inside the sky shader). A future optimization phase may add an explicit downscale / temporal-upscale path that uses this cvar; until then it does not change rendering. |
| cl_avfx_volclouds_seed | default 40777 / 0 = map/time-derived / non-zero = fixed-offset | Cloud noise field seed offset. 40777 (default) = fixed reproducible offset — same cloud layout across reloads and runs. Set to 0 to derive layout from the map / time so it varies between runs. Any non-zero 16-bit value locks a specific arrangement (different seeds = different layouts); combine with evolution_speed 0 to freeze the noise field entirely for screenshots / A-B comparison. |
| cl_avfx_volclouds_shadow_steps | default 0 / range 0..32 / step 1 | Number of light-march samples toward the sun per raymarch step, for cheap cloud self-shadowing. 0 (default) is a reasonable balance. 0 disables self-shadowing (clouds get only ambient + scatter, no internal darkening). Higher values give richer cloud volume shading but cost grows multiplicatively with main steps. |
| cl_avfx_volclouds_shape_scale | default 2.95 / range 0.05..8 / step 0.05 | Macro shape noise spatial scale. 2.95 (default) gives broad natural cloud cell wavelength. Higher values produce smaller cells (tighter cluster pattern); lower values produce broader continuous overcast. |
| cl_avfx_volclouds_silver_lining | default 0.20 / range 0..2 / step 0.05 | Henyey-Greenstein anisotropy g-factor controlling the silver lining / forward-scatter peak. 0 = isotropic scatter (clouds glow uniformly). Positive values bias scatter forward — bright edges visible when looking toward the sun (the classic silver-lining edge highlight). 0.20 (default) gives a gentle forward-scatter bias. |
| cl_avfx_volclouds_size | default 3.6 / range 0.10..10.0 / step 0.05 | Macro cloud feature size multiplier. 3.6 (default) gives natural-scale clouds. Higher values produce broader cloud features (looks like puffy cumulus); lower values produce smaller wispier cloud bits. Combines with shape_scale and count to define overall cloud morphology. |
| cl_avfx_volclouds_size_variation | default 0.8 / range 0..1 / step 0.05 | How strongly individual cloud features vary in apparent size. 0 = all clouds the same scale; 0.8 (default) = natural strong variation; 1.0 = strong mix of small and large clouds. |
| cl_avfx_volclouds_steps | default 31 / range 8..128 / step 1 | Base raymarch sample count per pixel through the cloud slab. 31 (default) is the PO-accepted baseline (the original TZ design value of 48 was lowered after smoke for perf headroom; raise toward 48..96 if the future render-scale audit allows). Effective count = steps × quality_multiplier (see cl_avfx_volclouds_quality). Lower values look stepped / banded; higher values smoother but linearly more expensive. |
| cl_avfx_volclouds_storm_darkening | default 0.25 / range 0..1 / step 0.05 | Strength of storm-driven cloud darkening. Applied only when both cl_avfx_volclouds 1 AND cl_avfx_storm 1 are active (per Codex Q-C6 binding — no force-enable from weather presets). 0 = clouds unaffected by storm state; 0.25 (default) = clouds visibly darken when storm is on; 1.0 = clouds go nearly black under storm. |
| cl_avfx_volclouds_sun_lighting | 0=off / 1=on (default) | When ON (default), the sun's direction + power contribute forward-scatter lighting to clouds via the silver-lining curve. When OFF, clouds get only ambient + moon contribution. Independent from sun world-lighting cvars — this controls only the volumetric cloud's response to the sun. |
| cl_avfx_volclouds_sun_occlusion | 0=off (default) / 1=on | When ON, volumetric cloud transmittance attenuates the AVFX sun and moon disk/corona/glow contributions inside the sky shader. Default OFF keeps celestial disks at tuned visibility while accepted flat-cloud occlusion still applies. Per Codex Q-C7 binding — applies to both sun and moon (shared transmittance helper). |
| cl_avfx_volclouds_temporal_jitter | default 0 / range 0..1 / step 0.05 | EXPERIMENTAL v1. Strength of the per-frame temporal sub-step jitter on the volumetric cloud raymarch. The accepted spatial jitter (per-pixel hash of camera + ray) is augmented with a per-frame golden-ratio phase offset; successive frames sample the cloud field at slightly different sub-step starts. v1 (this version) has NO temporal accumulation / feedback (Codex Q-D3.F5.M3 binding for v1), so values >0 produce visible edge shimmer on thin cloud boundaries instead of the smoothed look they would produce with TAA-style accumulation. Default 0.0 (OFF, D2 accepted look). Set to 1.0 to opt into v1 jitter. v2 with feedback / TAA-style accumulation is a queued follow-up that will let this default flip back to ON. |
| cl_avfx_volclouds_thickness | default 2400 / range 64..4096 wu / step 16 | Thickness (Z-extent) of the cloud slab in world units. 2400 (default) gives a tuned tall vertical extent. Larger values produce thicker clouds with longer raymarch path; smaller values give thin, flat cloud strata. Each raymarch step covers thickness / steps. |
| cl_avfx_volclouds_trans_cutoff | 0.001..0.5 (default 0.03) | Transmittance level at which the cloud raymarch stops early because the remaining light contribution is negligible. Higher values stop sooner and cost less; lower values march deeper into dense cloud for slightly richer interiors. Requires cl_avfx 1 + cl_avfx_volclouds 1. |
| cl_avfx_volclouds_turbulence | default 0.90 / range 0..1 / step 0.05 | High-frequency turbulence applied to the cloud density. 0 = smooth clouds; 0.90 (default) = natural strong turbulence; 1.0 = strongly turbulent / chaotic clouds. |
| cl_avfx_volclouds_wind_dir | default 351 / range 0..359 deg / step 1 | Wind direction for cloud drift, in degrees from world +X (math convention — (cos(θ), sin(θ))). 0° points toward world +X (treated as east in standard map orientation). 90° = +Y (north). 180° = -X (west). 270° = -Y (south). 351° (default) is almost +X with a slight south component. Same convention as cl_avfx_sun_azimuth. |
| cl_avfx_volclouds_wind_speed | default 20 / range 0..20 / step 0.05 | Wind speed scalar for cloud drift along cl_avfx_volclouds_wind_dir. Range 0..20. 0 freezes drift (static cloud positions — combine with evolution_speed 0 for fully static field). Low values (1..5) give a gentle slow drift typical of clear-weather skies. 20 (default = maximum) gives the visibly fast storm-sky motion PO accepted as the baseline for the rain preset. |
| cl_avfx_volclouds_world_shadow | default 1.25 / range 0..3 / step 0.05 | Strength of how strongly the SUN-DIRECTION rich cloud transmittance (clouds between the world and the sun, matching the visible Perlin-Worley cloud field) darkens the WORLD BASELINE brightness. Applies the multiplier to the (1 - night_dim) ambient baseline ONLY — sun/moon direction-based contributions are NOT double-dimmed because F1 (cl_avfx_volclouds_lighting_mask) already handles those. 1.25 (default) = tuned dimming when the cloud field covers the sun. 0.0 = clouds do not affect world baseline brightness at all. Higher values up to 3.0 = cinematic dramatic overcast. Applies globally — same surface reads the same brightness regardless of camera position (clouds are a light-filter, not a per-viewer effect). (Legacy zenith/omni sample is kept only as the fallback for the fast value-noise cloud source.) |
| cl_avfx_volfog | 0=off (default) / 1=on | Master toggle for AVFX volumetric fog / mist. When ON, the postprocess shader runs a depth-aware screen-space raymarch through a virtual fog layer and composites the result over the scene. Reacts to sun, moon, lightning impacts and the player flashlight. Default OFF — opt-in; new visual layer that adds GPU cost only when enabled. When OFF the shader branch is a single uniform check and costs nothing. |
| cl_avfx_volfog_anisotropy | default 0.60 / range -0.5..0.9 / step 0.05 | Henyey-Greenstein anisotropy parameter for sun/moon scatter. Default 0.60 (PO-tuned, stronger forward scatter). 0 = isotropic scatter (fog glows uniformly). Positive values bias scatter forward — fog brightens visibly toward the sun direction (common in real water vapor); negative values bias backward (back-scatter). Moon scatter uses a softer fraction. |
| cl_avfx_volfog_base_height | default 184 / range -4096..4096 wu / step 8 | Base Z (world units) of the fog layer. Default 184 (PO-tuned low fog baseline). Negative values push the layer below the floor (fog 'leaks' up from below); 0 anchors at the typical floor; positive values lift the layer above the floor. |
| cl_avfx_volfog_color_b | default 0.98 / range 0..2 / step 0.01 | Fog tint blue channel. Default 0.98 (PO-tuned, near-pure cool blue mist). Higher values lean toward azure / cold; lower values produce yellow / brown smoke tints. |
| cl_avfx_volfog_color_g | default 0.78 / range 0..2 / step 0.01 | Fog tint green channel. 0.78 (default). Combined with the red and blue channels to set the base fog color before celestial scatter is applied. |
| cl_avfx_volfog_color_r | default 0.7 / range 0..2 / step 0.01 | Fog tint red channel. 0.7 (default) gives a slightly cool blue-gray fog typical of moist mist. Higher values warm the fog toward red/yellow (smoke / sunset feel); lower values shift to cooler blue. Multiplied with sun/moon scattering to produce the final per-step inscatter color. |
| cl_avfx_volfog_debug | default 0 / values 0,1,2,3 (diagnostic, current session only) | Debug visualisation mode for the volfog raymarch. 0 = off (normal composite — default). 1 = density: visualise accumulated 1 - transmittance as red (red = denser fog, black = clear). 2 = lighting: visualise raw inscatter color (sun/moon/lightning/flashlight scatter without scene composite). 3 = steps: visualise normalized t_max / view_distance ramp (white = full range, black = clipped near camera). Use for screenshots and tuning; should be 0 in normal play. |
| cl_avfx_volfog_density | default 1.45 / range 0..2 / step 0.05 | Base fog density (extinction coefficient before height falloff). Default 1.45 (PO-tuned, dense atmospheric fog). Higher values (1.5+) produce thick fog that quickly obscures distant geometry; lower values (0.10) give a thin atmospheric layer. Multiplied with extinction along the raymarch via Beer absorption. |
| cl_avfx_volfog_evolution_speed | default 4 / range 0..5 / step 0.05 | Speed of internal noise evolution (time accumulator multiplier). Default 4 (PO-tuned, noticeable fast morphing of patch shapes). 0.10 gives slow gentle drift suitable for atmospheric haze. Higher values speed up the evolution of patch shapes (independent from wind_speed which only translates the patches). 0 freezes the noise field entirely — useful with non-zero seed for A-B screenshots. |
| cl_avfx_volfog_extinction | default 3.1 / range 0..4 / step 0.05 | Per-step extinction multiplier (Beer absorption strength). Default 3.10 (PO-tuned, strong per-step absorption — combined with the lower step count of 20 gives a 'patchy thick' look). Lower values make the fog feel more transparent / scattered. |
| cl_avfx_volfog_falloff | default 5.45 / range 0.05..8 / step 0.05 | Density falloff exponent above base_height. Default 5.45 (PO-tuned, tight ground layer below the base plane saturated by ground_hug, very fast decay above it). Lower values (e.g. 1.25) give a slower decay (more fog at the top of the layer). Math: density ∝ exp(-norm_height * falloff) where norm_height = (z - base) / height. |
| cl_avfx_volfog_flashlight_alpha | default 0.15 / range 0..2 / step 0.05 | Per-step alpha of the flashlight cone contribution inside the volfog raymarch. Default 0.15 (PO-tuned, soft gentle gradient). Lower values further soften the cone; higher values produce a tight bright spot. 0 disables the flashlight scatter contribution entirely; 2.0 = very bright cone. Scoped to the fog raymarch only — does NOT change the accepted flashlight surface boost on BSP / entity materials. |
| cl_avfx_volfog_flashlight_scatter | 0=off / 1=on (default) | When ON (default), the player flashlight cone scatters fog inside the cone — produces a visible volumetric beam. Uses the raw cone boost (no surface_alpha cap, per Codex Q-L2 binding — matches accepted rain-particle behavior), so the volumetric beam is visible even when the cone has not reached a surface. Respects flashlight master / intensity / battery / range / angle. When OFF, flashlight has no effect on fog scattering. |
| cl_avfx_volfog_ground_hug | 0=off / 1=on (default) | When ON (default), points below base_height are saturated with fog density (the fog 'pools' on the floor and lower areas). When OFF, density below the base layer is 0 (fog exists only above the base plane). Use OFF if you want fog as a high bank with clear space at the floor. |
| cl_avfx_volfog_height | default 3504 / range 0..4096 wu / step 16 | Thickness of the fog layer (world units) above base_height. Default 3504 (PO-tuned, thick layer covering most of the vertical extent of typical maps). Smaller values (e.g. 256) keep fog low along the floor. Combined with falloff for the exact density curve. |
| cl_avfx_volfog_lightning_scatter | 0=off / 1=on (default) | When ON (default), real AVFX lightning strike impacts brighten nearby fog with a per-strike exponential falloff (~512 wu half-distance per Codex Q-L1 binding). Fades with the bolt brightness envelope. Combined contribution is clamped to prevent whiteout under cluster strikes. Visual-only — does NOT change lightning damage. |
| cl_avfx_volfog_moon_scatter | 0=off / 1=on (default) | When ON (default), the moon's cool color and phase contribute a weak cold scatter to fog at night. When OFF, moonless behaviour applies regardless of moon state. Per Codex Q-L3 binding — much weaker than sun by design. |
| cl_avfx_volfog_near_fade | default 344 / range 0..2048 wu / step 8 | Distance window over which the fog opacity smoothly fades in starting at start_distance. Default 344 (PO-tuned). Higher values widen the fade (fog only fully contributes far from the camera), lower values harden the boundary. Visual-only — does not change the raymarch range. |
| cl_avfx_volfog_noise | default 0.75 / range 0..1 / step 0.05 | Strength of the low-frequency noise patches that break the fog into uneven puffs. Default 0.75 (PO-tuned, visible patchiness). 1.0 = maximum patchiness; 0 = perfectly smooth uniform layer. Combined with noise_scale and patchiness for the full effect. |
| cl_avfx_volfog_noise_scale | default 5.45 / range 0.05..8 / step 0.05 | Spatial scale of the noise patches. 5.45 (default) gives small active wisps. Higher values shrink patches further; lower values make broad uniform-ish patches. Combined with wind_dir/wind_speed patches drift with wind. |
| cl_avfx_volfog_opacity | default 0.70 / range 0..1 / step 0.05 | Final opacity scalar of the fog composite over the scene. Default 0.70 (PO-tuned, scene clearly visible through dense fog). 1.0 = fog fully obscures at max accumulated density; 0 disables visual contribution while keeping the raymarch active (use the debug modes to inspect). |
| cl_avfx_volfog_patchiness | default 0.5 / range 0..1 / step 0.05 | Amplitude of the noise patches — how strongly density varies between dense and thin patches. 0.5 (default) gives natural variation. Higher values (close to 1.0) produce extreme dense/thin contrast — fog looks 'broken' into clusters; lower values keep the fog more uniform with just light texture. |
| cl_avfx_volfog_quality | default 0 / values 0,1,2 | Quality preset for volumetric fog raymarch. 0 = low (default, beta performance profile), 1 = quality, 2 = ultra (≈25% more steps for smoother dense fog). Effective step count is reported in cl_avfx_info. |
| cl_avfx_volfog_render_scale | default 0.40 / range 0.25..1.00 / step 0.05 | Performance scale for volumetric fog raymarch steps. 0.40 (default) cuts the effective full-resolution sample count; 1.00 uses the full requested step count. A real low-res fog buffer is a later optimization. |
| cl_avfx_volfog_seed | default 24030 / any 16-bit integer for a fixed-offset layout | Noise seed for the patch layout offset. Default 24030 = accepted fixed layout. 0 = no offset (the noise field drifts naturally via wind + evolution_speed). Non-zero shifts the entire noise field by a fixed amount along the time axis — different seeds produce different starting layouts of the same field. Combined with evolution_speed > 0 the layout still drifts; set evolution_speed=0 to freeze a specific layout for screenshots / A-B comparison. |
| cl_avfx_volfog_start_distance | default 248 / range 0..2048 wu / step 8 | Distance from camera (world units) where the fog raymarch starts contributing. Default 248 (PO-tuned clear near-field zone). Set higher for a wider clear near-field zone (useful when the camera is in a small room and you want fog only farther away). |
| cl_avfx_volfog_steps | default 10 / range 8..128 / step 1 | Requested raymarch samples per pixel. Default 10 in the beta performance profile. The effective count is adjusted by cl_avfx_volfog_quality and cl_avfx_volfog_render_scale; low/0.40 defaults to 4 effective samples. |
| cl_avfx_volfog_sun_scatter | 0=off / 1=on (default) | When ON (default), the sun's color + altitude-driven power contributes to fog inscatter via Henyey-Greenstein phase function. Bright at noon, warm at sunrise/sunset, dim at night (when sun is below horizon). When OFF, fog stays at the user tint baseline regardless of sun position — useful to keep fog 'theatrical' / off-physics. |
| cl_avfx_volfog_view_distance | default 4096 / range 128..8192 wu / step 16 | Maximum raymarch distance in world units. Default 4096 in the beta performance profile; 8192 remains available for full-map haze. Lower values cap how far fog extends visibly. The fog accumulates between start_distance and min(view_distance, surface_depth). |
| cl_avfx_volfog_wind_dir | default 267 / range 0..359 deg / step 1 | Wind direction for fog patch drift, in degrees. Default 267 (PO-tuned, ≈ WSW). 0 = +X (east), 90 = +Y (north), 180 = -X (west), 270 = -Y (south). Convention matches cl_avfx_sun_azimuth. Combined with wind_speed to drift the noise patches across the scene over time. |
| cl_avfx_volfog_wind_speed | default 10 / range 0..10 / step 0.05 | Wind speed scalar applied to noise patch drift. Default 10 (PO-tuned, visibly fast storm-style scrolling). Lower values (e.g. 0.35) give slow gentle motion suitable for ground mist. 0 stops all patch motion (static fog). |
| cl_avfx_water | 0=stock warp (default) / 1=enhanced water (requires cl_avfx_world 1) | Enhanced water surface master toggle. 0 (default) — stock Q2 warp surface unchanged. 1 — when cl_avfx_world is also on, water surfaces get an extended shader path with subtle animated normal/ripple distortion, optional natural water color correction (cl_avfx_water_color), specular/highlight motion, weather-strength-driven amplitude, and an optional rain-impact ring overlay layer. Lava and slime surfaces are explicitly excluded. |
| cl_avfx_water_celestial_lighting | 0=off / 1=on (default) | Master toggle for water + puddle celestial lighting response. When ON (default), real BSP water surfaces, AVFX puddle overlays, runoff streams, foam bubbles, puddle rings and falling-water droplets react to the accepted celestial state. At noon water stays close to the accepted bright daytime look; at sunrise/sunset it picks up a subtle warm/cool mood; at moonlit night it becomes darker and colder; at moonless night it darkens strongly to a deep cold tint near the minimum brightness floor. When OFF, water returns to the daytime-bright behavior regardless of sun/moon state. Independent from cl_avfx_sun_lighting / cl_avfx_moon_lighting. Requires cl_avfx 1 + cl_avfx_water 1. |
| cl_avfx_water_celestial_min_brightness | default 0.05 / range 0..1 / step 0.01 | Minimum water brightness floor when there is no celestial light. Set lower than the snow floor (water can naturally read very dark at night). 0.05 (default) keeps moonless deep-night water as a very dim cold tint, not pure black. 0 = no floor (water goes fully dark when celestial light disappears). Higher values keep water visibly bright at night (less convincing). |
| cl_avfx_water_celestial_night_tint | default 0.55 / range 0..1 / step 0.05 | How much cold deep-blue tint water picks up in low-light conditions. Stronger than the snow tint (0.45) because night water reads as deep cold blue/teal rather than grey-white. 0.55 (default) gives a natural night mood for moonlit / moonless water. The night tint is applied via mix(water_rgb, water_rgb × cold_color (0.35, 0.48, 0.68), (1 − max_light) × this). 0 = no cold tint. 1 = strongest cold push. |
| cl_avfx_water_celestial_specular_scale | default 1.00 / range 0..2 / step 0.05 | Multiplier for the brightness scalar exposed to CPU-only water highlight paths (foam bubbles, runoff streams, puddle rings, falling-water droplets) that do not receive the shader's final RGB multiply. The water shader paths (GLS_AVFX_WATER + GLS_AVFX_PUDDLE) handle their own specular/foam scaling automatically via the final end-of-block RGB multiply — this cvar is reserved for future per-effect tuning on the CPU paths and currently affects only the brightness-scalar diagnostic output. |
| cl_avfx_water_celestial_strength | default 1.00 / range 0..2 / step 0.05 | How strongly celestial sun + moon illumination drives water color/brightness. 1.00 (default) gives a natural balance between identity-at-noon and visible night darkening. 0 = water color is driven entirely by the minimum brightness floor and night tint (no sun/moon influence). Up to 2.0 = strong reaction to sun/moon state. This is the artistic knob on top of the physically-emergent formula base + strength × (sun_part + moon_part). |
| cl_avfx_water_clarity | 0..1 (menu step 0.05, default 0.35) | Water clarity; higher = see deeper before it darkens (0..1, default 0.35). Requires realistic water plus at least one depth feature — cl_avfx_water_depth_color 1 or cl_avfx_water_shore_foam 1; otherwise the whole depth lane is published as zero. |
| cl_avfx_water_color | 0=original / 1=natural (default) / 2=clear / 3=tropical / 4=pool / 5=ocean / 6=lake / 7=glacier / 8=deep / 9=murky / 10=toxic | Water color correction profile. Wide palette of natural and artificial water looks; mix() blend in the fragment shader applies live (no vid_restart needed). 0=original (no tint). 1=natural (default — soft cool blue, balanced). 2=clear (bright cyan, crystal pool). 3=tropical (vivid turquoise, lagoon). 4=pool (chlorinated bright blue). 5=ocean (saturated deep blue). 6=lake (greenish-blue, low saturation). 7=glacier (pale ice blue, high brightness). 8=deep (very dark abyssal). 9=murky (dark olive-green swamp). 10=toxic (sickly yellow-green hazard). Profiles only apply on water surfaces (lava / slime untouched). Effective only when cl_avfx_water is on. |
| cl_avfx_water_deep_mix | 0..1 (menu step 0.05, default 1) | Amount of dark deep tint mixed into deep water (0..1, default 1.0). Requires realistic water plus at least one depth feature — cl_avfx_water_depth_color 1 or cl_avfx_water_shore_foam 1; otherwise the whole depth lane is published as zero. |
| cl_avfx_water_depth_color | 0=Off / 1=On (default 1) | Depth-based colouring: shallow shore lighter, deep water darker/bluer. On by default; needs Realistic water (uses a scene-depth snapshot). Requires cl_avfx 1 + cl_avfx_world 1 + cl_avfx_water 1 + cl_avfx_water_realistic 1, and enables the pre-water opaque depth snapshot, so it costs more than plain enhanced water. |
| cl_avfx_water_depth_color_strength | 0..2 (menu step 0.05, default 0.85) | Strength of the depth colouring (0..2, default 0.85). Requires realistic water plus at least one depth feature — cl_avfx_water_depth_color 1 or cl_avfx_water_shore_foam 1; otherwise the whole depth lane is published as zero. |
| cl_avfx_water_depth_extinction | 0.1..4 (menu step 0.05, default 1.15) | How fast water darkens with depth (0.1..4, default 1.15). Requires realistic water plus at least one depth feature — cl_avfx_water_depth_color 1 or cl_avfx_water_shore_foam 1; otherwise the whole depth lane is published as zero. |
| cl_avfx_water_foam | 0=no drifting foam (default) / 1=drifting patches | Drifting foam patches across the water surface — small white patches that smoothly fade in, drift slowly with time, then fade out, simulating real-water foam. Two-octave noise (large rare patches + smaller faster ones) with cell-grid distortion so the pattern reads organic, not geometric. 0 (default) — no patches. 1 — patches appear and drift. Intensity is scaled by cl_avfx_water_strength; when cl_avfx_world_auto is on heavy rain / storm boost the amount. |
| cl_avfx_water_fresnel_power | 1..8 (menu step 0.1, default 2.8) | Fresnel falloff exponent. Higher = reflection only at the very grazing edge (1..8, default 2.80). Requires cl_avfx 1 + cl_avfx_world 1 + cl_avfx_water 1 + cl_avfx_water_realistic 1; it has no effect on baseline enhanced water. |
| cl_avfx_water_fresnel_strength | 0..2 (menu step 0.05, default 1.2) | Strength of grazing-angle sky reflection (fresnel) on realistic water (0..2, default 1.20). Requires cl_avfx 1 + cl_avfx_world 1 + cl_avfx_water 1 + cl_avfx_water_realistic 1; it has no effect on baseline enhanced water. |
| cl_avfx_water_model_reflection | 0/1 (default 0) | Master toggle for MODEL reflections on BSP water. The per-category toggles below (weapons / armor / items / players+monsters / ships / meteors / comets / planets) choose what reflects; all default OFF. |
| cl_avfx_water_model_reflection_actors | 0/1 (default 0) | Reflect player and monster models on BSP water. Needs the water MODEL-reflection master on. Default OFF. |
| cl_avfx_water_model_reflection_armor | 0/1 (default 0) | Reflect armor models on BSP water. Needs the water MODEL-reflection master on. Default OFF. |
| cl_avfx_water_model_reflection_comets | 0/1 (default 0) | Reflect AVFX comets on BSP water. Needs the water MODEL-reflection master on. Default OFF. |
| cl_avfx_water_model_reflection_items | 0/1 (default 0) | Reflect item / object models on BSP water. Needs the water MODEL-reflection master on. Default OFF. |
| cl_avfx_water_model_reflection_meteors | 0/1 (default 0) | Reflect AVFX sky meteors (shooting-star streaks + embers) on BSP water. Needs the water MODEL-reflection master on. Default OFF. |
| cl_avfx_water_model_reflection_planets | 0/1 (default 0) | Reflect the AVFX Earth, Moon, Sun, Black Hole and compatible celestial bodies on BSP water (per-pixel reflected-ray disk + a spatial BSP line-of-sight mask, same path as puddles). Needs AVFX world, visible water and the water model-reflection master. Each body also needs its own master enabled, so this category plus cl_avfx_blackhole is the complete gate for the Black Hole — there is deliberately no separate black-hole reflection toggle. Default OFF. |
| cl_avfx_water_model_reflection_projectiles | 0/1 (default 0) | Reflect final presented projectiles and the rail beam on BSP water, including synchronized local prediction. Needs the water model-reflection master. Default OFF. |
| cl_avfx_water_model_reflection_quality | 0 Performance; 1 Medium; 2 Quality; 3 Ultra; 4 Extra (default) | Quality budget for object reflections on BSP water. Lower tiers smoothly fade distant models, reduce reflected sky-object populations and keep only the nearest water receiver faces. Extra preserves the complete current image. |
| cl_avfx_water_model_reflection_ships | 0/1 (default 0) | Reflect AVFX sky spaceships on BSP water. Needs the water MODEL-reflection master on. Default OFF. |
| cl_avfx_water_model_reflection_strength | 0..1 (default 0.8) | Strength / opacity of model reflections on BSP water. |
| cl_avfx_water_model_reflection_surface_volumes | 0/1 (default 0) | Reflect placed Surface Volumes (steam, smoke and fog) on transparent and opaque BSP water. Needs the water model-reflection master. Default OFF. |
| cl_avfx_water_model_reflection_weapons | 0/1 (default 0) | Reflect weapon models on BSP water. Needs the water MODEL-reflection master on. Default OFF. |
| cl_avfx_water_normal_strength | 0..2 (menu step 0.05, default 1.65) | Strength of the procedural surface normal; drives fresnel/glint brightness (0..2, default 1.65). Requires cl_avfx 1 + cl_avfx_world 1 + cl_avfx_water 1 + cl_avfx_water_realistic 1; it has no effect on baseline enhanced water. |
| cl_avfx_water_quality | 0=low / 1=normal (default) / 2=high | Enhanced water shader detail tier. 0=low (cheaper distortion, fewer wave layers), 1=normal (default, balanced), 2=high (more distortion samples + extra specular passes). Quality tier caps the per-water-surface shader cost; PO can drop to 0 on weak GPUs without losing the water identity, or push to 2 for screenshots / cinematic feel. Effective only when cl_avfx_water is on. |
| cl_avfx_water_realistic | 0=Off / 1=On (default 0) | Optional realistic mode layered over enhanced water: procedural waves and normals, grazing-angle fresnel sky reflection and sun glint. Requires cl_avfx 1 + cl_avfx_world 1 + cl_avfx_water 1; it is an opt-in, so the accepted baseline water stays byte-identical while it is off. Costs an extra wave/normal plus fresnel evaluation on every water fragment. |
| cl_avfx_water_reflection_distort | 0..1 (default 0) | Liquid distortion of ALL water reflections (SSR + models + sky objects), scaled by the water surface speed. 0 = sharp mirror. |
| cl_avfx_water_reflection_distort_speed | 0..5 (default 1) | Speed of the water reflection ripple. 1 = default, 0 = frozen ripple. |
| cl_avfx_water_ripples | 0=smooth surface / 1=animated wavelets (default) | Enhanced water surface RIPPLE OVERLAY layer (separate from cl_avfx_rain_water_ripples — that one is the per-drop ring buffer, this is the surface-shader ripple amplitude). 0 — water surface stays smooth. 1 (default) — adds animated wavelets across the water plane, amplitude scaled by cl_avfx_water_strength + (when cl_avfx_world_auto is on) the current weather strength. Effective only when cl_avfx_water is on. |
| cl_avfx_water_scene_reflection | 0/1 (default 0) | Screen-space reflection (SSR) of nearby world geometry on BSP water. Reflects only on-screen geometry; MODEL and sky-object reflections are separate toggles below. |
| cl_avfx_water_scene_reflection_strength | 0..1 | Strength / opacity of the water SSR reflection. |
| cl_avfx_water_shore_foam | 0=Off / 1=On (default 1) | Shore foam where clear shallow water meets the shore/geometry. On by default; needs Realistic water + depth snapshot. 1.4: not drawn on opaque water (q2dm1). Requires cl_avfx 1 + cl_avfx_world 1 + cl_avfx_water 1 + cl_avfx_water_realistic 1, and enables the pre-water opaque depth snapshot, so it costs more than plain enhanced water. |
| cl_avfx_water_shore_foam_alpha | 0..1 (menu step 0.05, default 0.35) | Opacity of shore foam (0..1, default 0.35), separate from brightness. Lower = dissolves more into the water. Requires cl_avfx_water_realistic 1 + cl_avfx_water_shore_foam 1; the foam pass also consumes the pre-water opaque depth snapshot. |
| cl_avfx_water_shore_foam_intensity | 0..2 (menu step 0.05, default 1.35) | Brightness of the shore foam (0..2, default 1.35). Requires cl_avfx_water_realistic 1 + cl_avfx_water_shore_foam 1; the foam pass also consumes the pre-water opaque depth snapshot. |
| cl_avfx_water_shore_foam_noise | 0..1 (menu step 0.05, default 0) | Noise break-up of the foam; higher = less solid (0..1, default 0). Requires cl_avfx_water_realistic 1 + cl_avfx_water_shore_foam 1; the foam pass also consumes the pre-water opaque depth snapshot. |
| cl_avfx_water_shore_foam_range | 0..1 (menu step 0.05, default 0.15) | How far foam reaches out from shore (0..1, default 0.15). Higher = wider foam band. Requires cl_avfx_water_realistic 1 + cl_avfx_water_shore_foam 1; the foam pass also consumes the pre-water opaque depth snapshot. |
| cl_avfx_water_shore_foam_size | 0.25..4 (menu step 0.05, default 1) | Size of foam texture elements (0.25..4, default 1.0). Lower = finer foam, higher = larger blobs. Requires cl_avfx_water_realistic 1 + cl_avfx_water_shore_foam 1; the foam pass also consumes the pre-water opaque depth snapshot. |
| cl_avfx_water_shore_foam_speed | 0..3 (menu step 0.05, default 3) | Foam animation speed (0..3, default 3.0). Requires cl_avfx_water_realistic 1 + cl_avfx_water_shore_foam 1; the foam pass also consumes the pre-water opaque depth snapshot. |
| cl_avfx_water_shore_mix | 0..1 (menu step 0.05, default 0.5) | Amount of light shore tint mixed into shallow water (0..1, default 0.50). Requires realistic water plus at least one depth feature — cl_avfx_water_depth_color 1 or cl_avfx_water_shore_foam 1; otherwise the whole depth lane is published as zero. |
| cl_avfx_water_sky_reflection | 0..1 (default 0.75) | How much sky / cloud colour is reflected on BSP water surfaces. A cheap procedural sky tint, independent of SSR / model reflections (those are separate toggles). |
| cl_avfx_water_specular_strength | 0..2 (menu step 0.05, default 0.65) | Sun-glint strength along the realistic-water wave normal (0..2, default 0.65). Requires cl_avfx 1 + cl_avfx_world 1 + cl_avfx_water 1 + cl_avfx_water_realistic 1; it has no effect on baseline enhanced water. |
| cl_avfx_water_strength | 0..1 (default 0.5) | Enhanced water visual strength multiplier, 0..1. 0 = no extra effect (matches cl_avfx_water 0 even when the master is on). 0.5 (default) = balanced subtle ripples + colour correction. 1.0 = maximum visible distortion + colour shift. Combines multiplicatively with weather-strength biasing when cl_avfx_world_auto is on. |
| cl_avfx_water_surface_speed | 0.1..10 (default 1.0) | BSP water style motion speed multiplier. 1.0 (default) = the accepted baseline; 0.1 = 10x slower, 10 = 10x faster. Scales all selected-style motion (downhill flow + ripple warp + cross-blend). No effect at style 0 (Standard). |
| cl_avfx_water_surface_style | 0..12 (default 0) | BSP water surface material style. 0 = Standard (exact current look, no style texture). 1..12 = reference-derived water tiles (clear shallow, pool caustics, ripples, ocean chop, deep, lagoon, foam, etc.) at pics/q2prox/avfx/ws/. Material DETAIL only — adds caustic/ripple/specular breakup and restrained color; cl_avfx_water_color still drives hue. Does NOT gate any AVFX water effect (rings, foam, realistic water, celestial, lightning). Works in baseline and realistic water. Live, no vid_restart; missing tile falls back to Standard. |
| cl_avfx_water_wave_scale | 0.25..4 (menu step 0.05, default 1.7) | Tiling scale of the realistic-water wave normal (0.25..4, default 1.70). Lower = larger waves. Requires cl_avfx 1 + cl_avfx_world 1 + cl_avfx_water 1 + cl_avfx_water_realistic 1; it has no effect on baseline enhanced water. |
| cl_avfx_water_wave_speed | 0..3 (menu step 0.05, default 1) | Wave animation speed of realistic water (0..3, default 1.0). Requires cl_avfx 1 + cl_avfx_world 1 + cl_avfx_water 1 + cl_avfx_water_realistic 1; it has no effect on baseline enhanced water. |
| cl_avfx_water_wind_coupling | 0..1 (menu step 0.05, default 1) | Couples wave direction to wind / anisotropy (0..1, default 1.0). Requires cl_avfx 1 + cl_avfx_world 1 + cl_avfx_water 1 + cl_avfx_water_realistic 1; it has no effect on baseline enhanced water. |
| cl_avfx_weapon_impact_bfg | 0=off / 1=on (default) | Enable AVFX water-impact reaction for the BFG. Visual: huge steam cloud + large irregular dark/evaporation stain that fades back cleanly over ~17 seconds. Client-side visual only — does not mutate gameplay, BSP contents, or server state. Currently the puddle alpha inside the BFG halo is NOT live-suppressed (a follow-up adds the alpha hook); existing visible puddles fade naturally while the stain occludes them. |
| cl_avfx_weapon_impact_blaster | 0=off / 1=on (default) | Enable AVFX water-impact reaction for the Blaster. Only effective when cl_avfx_weapon_impacts is 1. Visual: small splash + small spray + a few water rings + a single steam puff with the AVFX steam hiss audio (steam_hiss1..3.wav, gated by cl_avfx_audio_lava_steam). |
| cl_avfx_weapon_impact_chaingun | 0=off / 1=on (default) | Enable AVFX water-impact reaction for the Chaingun. Same family as Machinegun but richer because more bullets hit; rate-capped to avoid particle/audio flood. |
| cl_avfx_weapon_impact_debug | default 0 / 0=off, >0=diagnostic (diagnostic, current session only) | Developer-only: AVFX weapon-impact diagnostic overlay/print. 0=off. Not archived, no menu; zero cost at 0. |
| cl_avfx_weapon_impact_grenadelauncher | 0=off / 1=on (default) | Enable AVFX water-impact reaction for the Grenade Launcher. Same family as Hand Grenade with slight per-grenade variation; irregular fading dark stains. Note: Q2 protocol uses the same TE for hand-thrown grenades and Grenade Launcher rounds, so opponent hand grenades also go through this cvar. |
| cl_avfx_weapon_impact_handgrenade | 0=off / 1=on (default) | Enable AVFX water-impact reaction for the Hand Grenade. Visual: large splash/fountain (~5x the Railgun) + more and larger rings + an irregular semi-transparent dark stain on water that fades over time. Stain shape varies per hit via seeded fan extents. |
| cl_avfx_weapon_impact_hyperblaster | 0=off / 1=on (default) | Enable AVFX water-impact reaction for the Hyperblaster. Each projectile hit on water spawns the Blaster-style effect, but the per-frame visual gate caps the rate to avoid particle/audio flood under continuous fire. |
| cl_avfx_weapon_impact_machinegun | 0=off / 1=on (default) | Enable AVFX water-impact reaction for the Machinegun. Visual: bullet splash + small water rings, no steam. Burst fire reads as a dotted bullet line on water as each bullet TE arrives. |
| cl_avfx_weapon_impact_railgun | 0=off / 1=on (default) | Enable AVFX water-impact reaction for the Railgun. Visual: fountain/splash at the water impact point + many water rings + steam effect with AVFX steam hiss. |
| cl_avfx_weapon_impact_rocketlauncher | 0=off / 1=on (default) | Enable AVFX water-impact reaction for the Rocket Launcher. Visual: huge fountain/splash at rocket impact + many sprays in all directions + many rings + large irregular semi-transparent dark stain fading over time + strong steam using AVFX steam hiss. |
| cl_avfx_weapon_impact_shotgun | 0=off / 1=on (default) | Enable AVFX water-impact reaction for the Shotgun. Visual: pellet-based scattered splash pattern + rings/spray per pellet group; no steam. Note: Q2 protocol does not distinguish Shotgun from Super Shotgun pellets, so opponent SSG fire also goes through this cvar; pellet count carries the visual difference. |
| cl_avfx_weapon_impact_supershotgun | 0=off / 1=on (default) | Enable AVFX water-impact reaction for the Super Shotgun. Same as Shotgun but stronger/richer and wider, accounting for the larger pellet spread. No steam. |
| cl_avfx_weapon_impacts | 0=off (default) / 1=enable weapon water impacts | Master toggle for AVFX reactions when weapons hit real water (CONTENTS_WATER) or visibly rendered AVFX puddles / flow surfaces. Lava/slime are NOT routed here — the existing lava-steam path already handles those. Effects per weapon: blaster/hyperblaster — splash + few rings + steam hiss; machinegun/chaingun — bullet splash + small rings, no steam; shotgun/SSG — pellet pattern splash + rings, no steam; railgun — fountain + many rings + steam; hand grenade / grenade launcher — large splash + irregular fading dark stain; rocket launcher — huge fountain + radial spray + irregular fading dark stain + strong steam; BFG — huge steam cloud + large irregular evaporation stain that fades back over ~17 seconds (client-side visual only). Per-weapon toggles below allow disabling individual families. |
| cl_avfx_weapon_snow_impact_bfg | 0=off / 1=on (default) | Enable AVFX snow-impact reaction for the BFG. Visual: giant melted/burned area covering several meters around the hit + 8 radial steam puffs. Mark fades back as snow refills. Client-side visual only. |
| cl_avfx_weapon_snow_impact_blaster | 0=off / 1=on (default) | Enable AVFX snow-impact reaction for the Blaster. Visual: small dark-warm melted patch on snow + light snow dust upward + one steam puff using AVFX steam hiss. |
| cl_avfx_weapon_snow_impact_chaingun | 0=off / 1=on (default) | Enable AVFX snow-impact reaction for the Chaingun. Same family as Machinegun, denser dust and holes per shot. |
| cl_avfx_weapon_snow_impact_fade_rate | 0.1..20.0 (default 1.0) | Multiplier over the snow refill speed that controls how fast weapon marks (bullet pinholes, melted spots, craters) disappear. Mirrors the footprint fade-rate semantics but applies to the weapon snow mark pool only. 1.0 = normal (same speed as snow accumulation); 0.1 = roughly 10x longer-lived marks; 10..20 = much faster fill-in. No effect on water/lava effects. |
| cl_avfx_weapon_snow_impact_grenadelauncher | 0=off / 1=on (default) | Enable AVFX snow-impact reaction for the Grenade Launcher. Same family as Hand Grenade with slight per-grenade seeded variation. |
| cl_avfx_weapon_snow_impact_handgrenade | 0=off / 1=on (default) | Enable AVFX snow-impact reaction for the Hand Grenade. Visual: very large snow crater/mark + big snow fountain + steam. Stain shape varies per hit via seeded fan extents. |
| cl_avfx_weapon_snow_impact_hyperblaster | 0=off / 1=on (default) | Enable AVFX snow-impact reaction for the Hyperblaster. Same family as Blaster per projectile; rate-capped to avoid dust/audio flood. |
| cl_avfx_weapon_snow_impact_machinegun | 0=off / 1=on (default) | Enable AVFX snow-impact reaction for the Machinegun. Visual: small dark cool-grey bullet pinhole in snow + small snow dust burst upward; no steam. |
| cl_avfx_weapon_snow_impact_railgun | 0=off / 1=on (default) | Enable AVFX snow-impact reaction for the Railgun. Visual: large dark melted patch on snow + strong snow dust upward + 2 steam puffs using AVFX steam hiss. |
| cl_avfx_weapon_snow_impact_rocketlauncher | 0=off / 1=on (default) | Enable AVFX snow-impact reaction for the Rocket Launcher. Visual: huge snow crater + huge snow fountain + 6 radial dust sprays + 4 steam puffs. Strongest non-BFG explosive snow reaction. |
| cl_avfx_weapon_snow_impact_shotgun | 0=off / 1=on (default) | Enable AVFX snow-impact reaction for the Shotgun. Visual: scattered pellet pinholes + strong snow dust burst. Pellet count carries the per-shot density naturally. |
| cl_avfx_weapon_snow_impact_supershotgun | 0=off / 1=on (default) | Enable AVFX snow-impact reaction for the Super Shotgun. Same as Shotgun but stronger/richer and wider scatter — roughly 2x SHG visual on snow. |
| cl_avfx_weapon_snow_impacts | 0=off (default) / 1=enable weapon snow impacts | Master toggle for AVFX reactions when weapons hit visible snow (surface field + GPU material coverage above the visible threshold). Effects: thermal weapons (blaster/HB/rail/rocket/BFG) melt/burn snow + raise steam; bullets (MG/CG/SHG/SSG) punch dark holes + throw snow dust; explosives (HG/GL/RL) carve craters + throw snow fountains; BFG melts a large patch. Effects scale with visible snow body and snowdrift POM growth. Marks fade as snow refills them. Snow detection runs after water/lava detection fails so liquid hits keep priority. Requires cl_avfx_weapon_impacts 1 as well. |
| cl_avfx_weapon_snow_steam_audio | 0=off / 1=on (default) | Separate audio gate for steam caused by hot weapon impacts on snow (blaster / hyperblaster / rail / explosives / BFG). Visual steam remains controlled by the per-weapon snow-impact toggles; this cvar only enables or disables the hiss sound, independent of lava steam audio. |
| cl_avfx_weather_level | 0=light/quiet / 1=normal (default) / 2=heavy | Weather strength selector — biases visual density, fall speed, raindrop density, wind ambience, rain ambience and storm event chance toward light/normal/heavy without overwriting your manual sliders. You can still combine "heavy visuals + quiet audio" or "light streaks + loud wind" via the detailed cvars. |
| cl_avfx_weather_renderer | 0=Classic / 1=Accelerated / 2=Auto (default 2) | Weather render path. Classic uses the legacy CPU/entity path. Accelerated/Auto can use the modern path when the AVFX backend is Accelerated. Requires cl_avfx 1. The accelerated path is used only when cl_avfx_backend 1 is also set; Auto falls back to the classic path whenever the accelerated one is unavailable. |
| cl_avfx_wind_x | -512..512 (default 0) | Wind X component (world units / second). Slants rain streaks and drifts particles eastward (+) or westward (-). |
| cl_avfx_wind_y | -512..512 (default 0) | Wind Y component (world units / second). Slants rain streaks and drifts particles north (+) or south (-). |
| cl_avfx_world | 0=off (default) / 1=on | AVFX master toggle for world / surface effects. 0 (default) — none of the optional surface content is rendered (water surface enhancements, weather-driven sky, rain splashes / puddles, water ripples, snow accumulation). 1 — decorative content is enabled, individually gated by per-feature cvars (cl_avfx_water, cl_avfx_sky, cl_avfx_rain_impacts, cl_avfx_snow_accum, etc.). The mandatory liquid-volume clipping that prevents AVFX particles from rendering inside water / lava / slime is always active when AVFX itself is on, independent of this toggle. |
| cl_avfx_world_auto | 0=manual per-feature / 1=auto-coupled to weather (default) | Auto-coupling between weather state and surface effects. 1 (default) — heavier rain / snow / storm automatically increases sky darkness, cloud intensity, ripple density, splash count and puddle coverage proportionally. 0 — surface effects use only their own per-feature strength cvars without weather coupling. Auto-coupling makes weather presets feel physically connected to the world; manual mode is useful when the user wants explicit control of each effect intensity independent of AVFX preset / weather level. |
| cl_avfx_world_debug | 0=basic info (default) / 1=detail (diagnostic, current session only) | Surface-effects diagnostic text in the cl_avfx_info dump. 0 (default) — standard AVFX info only. 1 — adds surface detail: liquid-volume clipping stats (camera-in-liquid status, per-particle clip counts), surface classifier counts, ripple / splash / puddle / snow accumulation event counts, last-clear reason. Not archived; resets to 0 on restart. |
| cl_avfxgen_air | default 0 / 0=Random / 1=Off / 2=Ash / 3=Dust / 4=Mist | AVFX Preset Generator: secondary airborne impurity selector. Random resolves to Off when the main profile is Off and never duplicates the main Ash/Dust/Mist identity, matching the engine's air-layer rules; an explicitly impossible fixed pair (Off main with an impurity, or an identical pair) refuses generation with an explanation and changes nothing. Saved to the global Q2PRO-X config; never part of any AVFX preset snapshot. |
| cl_avfxgen_atmosphere | default 0 / 0=Random / 1=Off / 2=Lightning / 3=Volumetric fog / 4=Clouds / 5=Fog and clouds / 6=All compatible | AVFX Preset Generator: atmospheric-effects selector. Lightning requires the Rain atmosphere: with a Random main profile a fixed Lightning resolves it to Rain+Storm, with a fixed incompatible profile the request is refused atomically. Clouds cover the flat sky overlay plus quality-eligible volumetric clouds; Fog and clouds combines both; All compatible enables everything the tier, budget and weather allow. Inert until Generate; never part of any AVFX preset snapshot. |
| cl_avfxgen_celestial | default 0 / 0=Random / 1=Off / 3=Sun / 5=Planets/Earth / 9=Black Hole / 10=All compatible | AVFX Preset Generator: celestial-bodies selector, limited to Sun, planets/Earth and Black Hole. Random may produce none, one, several or all tier-allowed bodies; every fixed choice is exact. Black Hole implies the required star backdrop and needs Ultra Quality; planets/Earth need Balanced. Meteors, comets and spaceships are controlled independently by cl_avfxgen_traffic. Inert until Generate; never part of any AVFX preset snapshot. |
| cl_avfxgen_chaos | default 0 / 0=Full / 1=Reasonable | AVFX Preset Generator: chaos level. Full (default) varies every active ordinary-AVFX family inside the quality budget. It rolls RGB and enables Custom for all 10 selected AVFX particle families without changing their Enable switches; for selected sky meteors, impact meteors and comets it also rolls the dedicated GPU RGB palettes, enables Custom and sets maximum seeded colour variation. Global Standard cl_particle_* and Contact cl_avfx_contact* are never included. Reasonable reproduces the original curated generator exactly and does not alter these new RGB controls. Inert until Generate is pressed; never part of an AVFX preset snapshot. |
| cl_avfxgen_coverage | default 1 / 0=Random / 1=Full | AVFX Preset Generator: surface coverage zone. Full drives every active surface material that has a coverage amount to its maximum — mold, greenery, brick, cracks and the floor and wall coverings; the two covering layers additionally use Uniform distribution. Random leaves those amounts to the generator. This selector decides placement area, not participation or opacity. Wildlife and wall runoff are never touched, and Surface Drawings never take part in generation. Inert until Generate; never part of an AVFX preset snapshot. |
| cl_avfxgen_materials | default 1 / 0=Random / 1=Always / 2=Off | AVFX Preset Generator: final Surface Materials participation policy. Random preserves the preliminary Surfaces result exactly. Always enables at least two eligible layers at full opacity; candidates are mold, brick, cracks, greenery, wall runoff and the two floor/wall covering layers. Off disables all seven. Wildlife, Surface Drawings and 3D grass are independent and never controlled here. Coverage still decides how much of the level the active layers occupy. An explicit Always is honored at every generator quality tier. Inert until Generate; never part of an AVFX preset snapshot. |
| cl_avfxgen_objects | default 0 / 0=Random / 1=Off / 2=All compatible / 3=Grass / 4=Wall foliage / 5=Ferns / 6=Stones / 7=Soil / 8=Fallen leaves | Independent surface-object generator selector. Random chooses a bounded set; All compatible includes all six families. Objects start at Balanced, their shadows at Quality. Inert until Generate; global preference outside preset snapshots. |
| cl_avfxgen_profile | default 0 / 0=Random / 1=Off / 2=Rain / 3=Snow / 4=Ash / 5=Dust / 6=Mist | AVFX Preset Generator: main atmosphere selector. Random lets the generator pick a weighted identity (including Off, which then always receives a sky or surface theme so the scene is never empty); a fixed choice is honored exactly. Changes nothing until Generate is pressed. Saved to the global Q2PRO-X config; never part of any AVFX preset snapshot. |
| cl_avfxgen_quality | default 2 / 0=Ultra Performance / 1=Performance / 2=Balanced / 3=Quality / 4=Ultra Quality / 5=Extra Quality | AVFX Preset Generator: six quality tiers. Ultra sets included effects to Quality/High (Standard for volumetric fog and clouds). Extra sets included effects to Ultra quality, or their highest available level if they have no Ultra option. Extra mirrors use only floors and upward slopes, with Ultra reflection quality; walls and Extra reflection quality are never generated. Model reflections are eligible from Ultra; mirrors only at Extra. Ultra and Extra disable all AVFX LOD switches, including global, grass, puddle runoff and surface volumes. Both chaos modes follow this policy. Changes nothing until Generate is pressed. Saved to the global Q2PRO-X config; never part of AVFX preset snapshots. |
| cl_avfxgen_sky | default 0 / 0=Random / 1=Map / 2=Weather / 3=Blue / 4=Stars / 5=Space / 6=Nebula / 7=Sunny / 8=Mystic | AVFX Preset Generator: base-sky family selector. A fixed choice keeps its identity (map sky, weather-driven, blue, star field, space, colored nebula, sunny, mystic) while Full chaos varies its appearance; space/nebula/mystic need Balanced quality, sunny needs Performance — a fixed family below its tier is refused with an explanation. Inert until Generate; never part of any AVFX preset snapshot. |
| cl_avfxgen_surfaces | default 0 / 0=Random / 1=Off / 2=Materials / 3=Coverings / 4=Grass / 5=Wildlife / 6=All compatible | AVFX Preset Generator: preliminary surface-family selector. It chooses among material variants, floor/wall coverings, 3D grass and wildlife. The narrower Materials and Wildlife policies make the final decision for those two domains, so their Always or Off state overrides this selector. The generator changes visual state only, never gameplay, damage, contact, blood or audio policy. Inert until Generate; never part of an AVFX preset snapshot. |
| cl_avfxgen_traffic | default 0 / 0=Random / 1=Off / 2=All compatible / 3=Impact meteors / 4=Sky meteors / 5=Comets / 6=Spaceships | AVFX Preset Generator: independent meteors-and-ships selector. Random (default) chooses any tier-allowed subset. Off disables every moving family. All compatible enables impact meteors, sky meteors, comets and spaceships allowed by the quality tier. A fixed kind is exact and disables the other three; impact/sky meteors and comets need Performance, spaceships need Balanced. Inert until Generate; never part of any AVFX preset snapshot. |
| cl_avfxgen_water | default 0 / 0=Random / 1=Off / 2=Water / 3=Puddles / 4=Water and puddles | AVFX Preset Generator: water and puddles selector. Fixed Puddles (alone or with Water) require the Rain atmosphere: a Random main profile resolves to Rain, a fixed incompatible one is refused atomically — the generator never silently changes a fixed choice. Inert until Generate; never part of any AVFX preset snapshot. |
| cl_avfxgen_wildlife | default 1 / 0=Random / 1=Always / 2=Off | AVFX Preset Generator: final Wildlife participation policy. Random preserves the preliminary Surfaces result exactly. Always enables Wildlife at full opacity and selects Random (all species), so occupied routes can mix every available creature kind. Off disables Wildlife. Materials, Surface Drawings and 3D grass are independent; the coverage-zone selector never changes Wildlife. An explicit Always is honored at every generator quality tier. Inert until Generate; never part of an AVFX preset snapshot. |
| cl_perf_hud_show_avfx | 0=hide the section / 1=show the section (default) | Show the AVFX section. Only families that are actually switched on appear; a family requested but blocked by a parent or a capability shows one row with its exact reason, and a family that is simply off is omitted rather than drawn as a grey catalogue. When AVFX is globally disabled or the current mod's master is off, the whole section collapses to one truthful status row. The section accent colour is violet. |
| cl_sp_avfx_lightning_damage | 0=off (default) / 1=apply lightning damage to nearby monsters | Master toggle for AVFX lightning monster damage. When ON, AVFX storm lightning strikes radial-damage nearby live monsters using rocket/grenade-class damage and a much larger area (~5x grenade launcher). Local single-player and SP DM-training only — no effect in deathmatch, coop, demo playback or remote multiplayer. Player, items, doors, projectiles, triggers and world brushes are NEVER damaged. Bosses included by default. Uses actual AVFX strike positions; visual / audio lightning is unchanged. Game DLL applies damage; stock baseq2/gamex86_64.dll untouched. |
| cl_sp_avfx_lightning_damage_amount | default 120 / range 0..1000 / step 1 | Damage dealt at the strike center. Default 120 matches rocket / grenade base damage. Damage falls off with distance from the strike center using damage * (1.0 - 0.75 * dist / radius) shape — about 25% damage at the radius edge, full damage at the center. Minimum applied damage is 1 when the master is on and amount > 0. Stock light monsters around 20-80 HP die near a direct strike; medium 100-200 HP may die near the center; heavy 300+ HP usually survive one strike; bosses survive many. |
| cl_sp_avfx_lightning_damage_breakables | default 0 / 0=off / 1=damage breakable/explosive objects | Allow AVFX lightning to damage nearby explosive barrels (misc_explobox) and breakable func_explosive brushes using the same amount / radius / LOS / falloff settings as monster lightning damage. Default 0 (off). Independent from cl_sp_avfx_lightning_damage — monsters and breakables can be toggled separately or together. Allowlist is strictly misc_explobox + func_explosive — doors, buttons, triggers and scripted target entities are never affected even though they may have takedamage != DAMAGE_NO. |
| cl_sp_avfx_lightning_damage_los | default 1 / 0=no LOS check / 1=require LOS | Require line of sight from the strike point to the monster's bbox center before applying damage. Uses a MASK_SOLID trace, so solid world brushes block damage but other monsters / items / glass do not. Default 1 (LOS required) — lightning does not hurt monsters behind thick walls. Set 0 to allow through-wall radial damage within the radius. |
| cl_sp_avfx_lightning_damage_radius | default 800 / range 0..2048 / step 1 / wu | Damage radius in world units. Default 800 is about 5x the grenade launcher splash (160) so a single strike covers a large room. Damage falls off linearly from full at the center to ~25% at the configured radius. Set 0 to disable damage entirely (diagnostic counts as invalid-radius skip). Values above ~1024 are stylized and let one strike clear large areas; clamp is 2048. |
| cl_sp_avfx_meteor_impact_damage | default 0 / 0 or 1 | Master toggle for AVFX impact meteor gameplay damage to monsters. Works ONLY in local single player and SP-training (deathmatch 0, coop 0, single client). Does NOT apply in normal multiplayer / coop / demo. Default OFF (opt-in). Game DLL is authoritative for all gates. |
| cl_sp_avfx_meteor_impact_damage_amount | default 260 / range 0..2000 / step 10 | Peak damage at the impact point. 260 (default) — rocket-class strong hit. Scales linearly with meteor size (radius_scale clamped 0.25..3.0). Falloff cvar drops damage to (1-falloff) at radius edge. |
| cl_sp_avfx_meteor_impact_damage_breakables | default 1 / 0 or 1 | Allow meteor impact to detonate misc_explobox (exploding barrels) and damage func_explosive (breakable brushes). ON (default). Doors, buttons, triggers and scripted entities are NEVER affected by this gate — only the specific allowlist. |
| cl_sp_avfx_meteor_impact_damage_falloff | default 0.75 / range 0.0..1.0 / step 0.05 | Damage falloff slope. 0.75 (default) — edge of radius receives 25% of peak damage. 0 = no falloff (full damage everywhere in radius). 1.0 = damage zero at edge. Linear: damage = peak × (1 - falloff × dist / radius). |
| cl_sp_avfx_meteor_impact_damage_knockback | default 140 / range 0..500 / step 5 | Knockback impulse applied to damaged monsters (Q2 T_Damage knockback parameter). 140 (default) — noticeable shove without launching them across the map. |
| cl_sp_avfx_meteor_impact_damage_los | default 1 / 0 or 1 | Require line-of-sight from impact point to target. ON (default) — solid world brushes between impact and monster block damage (MASK_SOLID trace). OFF — radial damage ignores geometry. Trace start lifted +8 wu to clear floor brushes. |
| cl_sp_avfx_meteor_impact_damage_radius | default 640 / range 0..4096 / step 32 | Damage radius in world units around the impact point. 640 (default). Scales linearly with meteor size (clamped 0.25..3.0). Larger meteors hit a wider area. |
| cl_sp_avfx_monster_attack_snakes | default 1 / 0=this direction never happens / 1=enabled | Let monsters notice a Snake on their own and attack it with their normal melee, hitscan and projectile weapons. Dormant while the combat master is off. On by default, so enabling the master alone already produces this direction. |
| cl_sp_avfx_monster_attack_snakes_chance | default 50 / 0..100 percent (0=never, 100=always) | Chance in percent that a given pair starts fighting at all. It is rolled ONCE when a previously inactive pair becomes eligible - never per render frame, per server frame or per bite - so a pair that was rejected does not creep toward certainty over time and the result cannot move with FPS. 0 rejects every pair exactly, 100 accepts every pair exactly. Changing the value applies to the NEXT meeting: a fight already accepted or already rejected is not re-rolled. |
| cl_sp_avfx_monster_attack_snakes_damage | default 20 / 1..1000 base damage | Base damage of one an accepted monster hit on a Snake, before armour, power armour, godmode, invulnerability and skill scaling. It is direct contact damage with zero knockback: this slider can never become a launch force, radius damage or armour-bypassing damage. Repeated hits of one attack (shotgun pellets, splash, beam ticks) are collapsed to exactly one transaction, so the number here is what one hit costs. SKILL: the number here is the skill-0 value. Survivability and force values are multiplied by 1x / 2x / 3x / 4x at skill 0 / 1 / 2 / 3, the same direction stock Quake II hardens the game with skill (stock scales monster attack chance 0.5x/1x/2x/2x and halves what the player receives on skill 0; monster health is not scaled by skill at all, only which monsters spawn). Because of that stock halving, on skill 0 the PLAYER takes half of the bite damage shown here, exactly as a monster's damage number behaves. Zones, chances, intervals, bite reach and the engagement budget are not force values and stay literal. sv q2px_snake_info prints the multiplier and the resulting values. |
| cl_sp_avfx_monster_attack_snakes_interval | default 1.00 / 0.10..10.00 seconds | Minimum time in seconds between two accepted hits of the same fight. Changing it applies at the next authoritative service tick and never retroactively creates damage. |
| cl_sp_avfx_monster_attack_snakes_zone | default 384 / 32..2048 world units | Search area in world units. A target inside it may be chosen; actually touching it still needs a physical walkable path and the contact reach. Leaving the area does not end a fight instantly: a short hysteresis prevents target flapping. |
| cl_sp_avfx_monster_retaliate_snakes | default 1 / 0=no counterattack after a bite / 1=allow counterattack | Let a bitten monster strike back at exactly the Snake that bit it, even when monsters do not attack Snakes on their own. It is a separate decision from proactive acquisition and does not roll the proactive chance. It opens only after a bite that produced positive health damage, so godmode, invulnerability or full armour absorption never trigger it, and it reuses the monster damage, interval and search-area controls. It ends on the Snake dying, five seconds without a valid attack opportunity, loss of range or sight, target invalidation, or the combat master going off. |
| cl_sp_avfx_snake_attack_monsters | default 1 / 0=this direction never happens / 1=enabled | Let Snakes acquire, approach and repeatedly bite monsters. Dormant while the combat master is off. On by default, so enabling the master alone already produces this direction. |
| cl_sp_avfx_snake_attack_monsters_chance | default 50 / 0..100 percent (0=never, 100=always) | Chance in percent that a given pair starts fighting at all. It is rolled ONCE when a previously inactive pair becomes eligible - never per render frame, per server frame or per bite - so a pair that was rejected does not creep toward certainty over time and the result cannot move with FPS. 0 rejects every pair exactly, 100 accepts every pair exactly. Changing the value applies to the NEXT meeting: a fight already accepted or already rejected is not re-rolled. |
| cl_sp_avfx_snake_attack_monsters_damage | default 20 / 1..1000 base damage | Base damage of one Snake bites on a monster, before armour, power armour, godmode, invulnerability and skill scaling. It is direct contact damage with zero knockback: this slider can never become a launch force, radius damage or armour-bypassing damage. Repeated hits of one attack (shotgun pellets, splash, beam ticks) are collapsed to exactly one transaction, so the number here is what one hit costs. SKILL: the number here is the skill-0 value. Survivability and force values are multiplied by 1x / 2x / 3x / 4x at skill 0 / 1 / 2 / 3, the same direction stock Quake II hardens the game with skill (stock scales monster attack chance 0.5x/1x/2x/2x and halves what the player receives on skill 0; monster health is not scaled by skill at all, only which monsters spawn). Because of that stock halving, on skill 0 the PLAYER takes half of the bite damage shown here, exactly as a monster's damage number behaves. Zones, chances, intervals, bite reach and the engagement budget are not force values and stay literal. sv q2px_snake_info prints the multiplier and the resulting values. |
| cl_sp_avfx_snake_attack_monsters_interval | default 1.00 / 0.10..10.00 seconds | Minimum time in seconds between two accepted hits of the same fight. Changing it applies at the next authoritative service tick and never retroactively creates damage. |
| cl_sp_avfx_snake_attack_monsters_zone | default 384 / 32..2048 world units | Search area in world units. A target inside it may be chosen; actually touching it still needs a physical walkable path and the contact reach. Leaving the area does not end a fight instantly: a short hysteresis prevents target flapping. |
| cl_sp_avfx_snake_attack_player | default 1 / 0=this direction never happens / 1=enabled | Let Snakes acquire, approach and repeatedly bite you. Dormant while the combat master is off. On by default, so enabling the master alone already produces this direction. |
| cl_sp_avfx_snake_attack_player_chance | default 50 / 0..100 percent (0=never, 100=always) | Chance in percent that a given pair starts fighting at all. It is rolled ONCE when a previously inactive pair becomes eligible - never per render frame, per server frame or per bite - so a pair that was rejected does not creep toward certainty over time and the result cannot move with FPS. 0 rejects every pair exactly, 100 accepts every pair exactly. Changing the value applies to the NEXT meeting: a fight already accepted or already rejected is not re-rolled. |
| cl_sp_avfx_snake_attack_player_damage | default 20 / 1..1000 base damage | Base damage of one Snake bites on you, before armour, power armour, godmode, invulnerability and skill scaling. It is direct contact damage with zero knockback: this slider can never become a launch force, radius damage or armour-bypassing damage. Repeated hits of one attack (shotgun pellets, splash, beam ticks) are collapsed to exactly one transaction, so the number here is what one hit costs. SKILL: the number here is the skill-0 value. Survivability and force values are multiplied by 1x / 2x / 3x / 4x at skill 0 / 1 / 2 / 3, the same direction stock Quake II hardens the game with skill (stock scales monster attack chance 0.5x/1x/2x/2x and halves what the player receives on skill 0; monster health is not scaled by skill at all, only which monsters spawn). Because of that stock halving, on skill 0 the PLAYER takes half of the bite damage shown here, exactly as a monster's damage number behaves. Zones, chances, intervals, bite reach and the engagement budget are not force values and stay literal. sv q2px_snake_info prints the multiplier and the resulting values. |
| cl_sp_avfx_snake_attack_player_interval | default 1.00 / 0.10..10.00 seconds | Minimum time in seconds between two accepted hits of the same fight. Changing it applies at the next authoritative service tick and never retroactively creates damage. |
| cl_sp_avfx_snake_attack_player_zone | default 384 / 32..2048 world units | Search area in world units. A target inside it may be chosen; actually touching it still needs a physical walkable path and the contact reach. Leaving the area does not end a fight instantly: a short hysteresis prevents target flapping. |
| cl_sp_avfx_snake_bite_reach | default 40 / 8..128 world units | How close the Snake head must be to the target hull, in world units, before a bite can land. This is contact reach and is deliberately separate from the search area: the search area finds a target, this decides whether teeth can touch it. It scales up safely with the visible Snake size and is still clamped to the range below. |
| cl_sp_avfx_snake_combat | 0=off (default) / 1=enable local single-player Snake combat | Master switch of the optional local single-player Snake combat mode. Off is an exact no-op: no candidate scan, no bridge command, no proxy entity, no monster scan and no damage. Requires local single player (deathmatch 0, coop 0, one client, no demo playback) and the Q2PRO-X game DLL from baseq2/q2pro-x; it has no effect in deathmatch, coop, demo playback, on a dedicated server, on a remote server or with a foreign mod DLL. Enabling it produces the complete behaviour at once because every subordinate direction below defaults ON; disable any direction independently. Turning the master off restores every redirected monster target, removes every proxy and leaves no delayed bite. |
| cl_sp_avfx_snake_combat_debug | default 0 / 0=silent / 1=rate-limited tracing (session only) (diagnostic, current session only) | Session-only diagnostic for the local single-player Snake combat mode. It prints rate-limited session, epoch and outcome tracing on both sides of the local bridge; the read-out itself is the sp_avfx_snake_combat_info command and needs no diagnostic. It is never archived, never written into any config or AVFX preset, and is rejected when it appears in a cfg, so after a restart it is off again unless you enable it in the new session. It costs one integer test on paths that already run. |
| cl_sp_avfx_snake_combat_trace | default 0 / 0=silent / 1=full per-tick AI trace (session only, verbose) (diagnostic, current session only) | Session-only per-tick flight recorder for the local single-player Snake combat AI. At 1 it prints one [SNCT] line for every live monster and one [SNCR] line for every engaged Snake on every authoritative tick: the current enemy and its kind, the previous enemy, the attack cooldown, the attack state, whether the player is visible to it, which Snake owns it, and its position. It exists because the defects that survive a single assertion are SEQUENCES over time, and tools/analyze_snake_combat_trace.py reads a condump of it and names the monster and the tick at which the AI stopped answering. It is verbose by design, never archived, never written into any config or AVFX preset, and off again after a restart. It costs one integer test when off. |
| cl_sp_avfx_snake_health | default 40 / 1..1000 hit points | Snake health against monster attacks, in hit points. It belongs to the Snake, not to a particular target or fight: it survives target changes, new fights and save/load while that Snake stays in the fighting set, and it never regenerates. Raising this value does NOT heal a Snake that is already fighting; lowering it clamps the current value down without creating a hit or a death. A Snake that leaves the fighting set entirely and is later admitted again starts at this configured value. SKILL: the number here is the skill-0 value. Survivability and force values are multiplied by 1x / 2x / 3x / 4x at skill 0 / 1 / 2 / 3, the same direction stock Quake II hardens the game with skill (stock scales monster attack chance 0.5x/1x/2x/2x and halves what the player receives on skill 0; monster health is not scaled by skill at all, only which monsters spawn). Because of that stock halving, on skill 0 the PLAYER takes half of the bite damage shown here, exactly as a monster's damage number behaves. Zones, chances, intervals, bite reach and the engagement budget are not force values and stay literal. sv q2px_snake_info prints the multiplier and the resulting values. |
| cl_sp_avfx_snake_max_engaged | default 16 / 1..32 Snakes | How many Snakes may be in the fighting set at the same time. Snakes already fighting are kept before any newly visible Snake, so looking away from a fight never ends it and a new Snake cannot evict a nearer active one. Lowering the value releases the farthest Snakes first, in a deterministic order, with every monster target restored and no final bite. The hard upper bound is a storage limit, not a recommendation. |
| cl_sp_avfx_snake_require_los | default 1 / 0=skip the sight check for acquisition / 1=require sight | Require a clear line of sight before a Snake picks a target, and again immediately before every bite. Independently of this setting a Snake ALWAYS needs a physical walkable path to the target and real contact reach, so switching it off does not let a Snake bite through a wall or reach an airborne, swimming or elevator-borne target. |
| cl_sp_geo_deform_avfx_sync | 0=AVFX stays on original anchors / 1=AVFX visuals follow changed surface (default) | Makes AVFX visuals such as puddles, snow caps and rain/water rings follow the changed visible surface where possible. Safety checks and accumulation still use the original map geometry. |
| cl_sp_monster_avfx_contact_amount | default 1.0 / range 0..5 / step 0.05 | Overall intensity multiplier for monster contacts. 1.0 (default) baseline; 0 effectively disables emission even when the master is on. Range 0..5. Scales footprint strength, ring radius/strength, splash count, and audio volume together so a single knob produces a consistent louder/quieter mode. |
| cl_sp_monster_avfx_contact_audio | default 1 / 0=off / 1=on | Reuse existing AVFX snow / puddle step sounds for monster contacts. Default 1 (on) for audio/visual cohesion with the monster contact visuals (PO 2026-05-22 deviation from TZ default: «звук шагов должен быть включён по умолчанию когда у нас включены шаги на воде и снегу монстров чтобы было все гармонично»). Set to 0 if monster crowds become too noisy. Respects cl_avfx_audio / cl_avfx_audio_surface_steps / cl_avfx_audio_snow_steps / cl_avfx_audio_puddle_steps masters. Volume lower than the player's footstep gain by design. |
| cl_sp_monster_avfx_contact_max_distance | default 1600 / range 256..8192 / step 64 / wu | Maximum distance from camera at which monster contacts are emitted (world units). Monsters beyond this distance are tracked (so their step phase / origin history isn't lost) but produce no visible contact this frame. Counted in the skipped-distance diagnostic. Default 1600 wu (~5x grenade splash radius). Range 256..8192. |
| cl_sp_monster_avfx_contact_max_per_frame | default 16 / range 0..128 / step 1 | Hard per-frame cap on the number of monster contact emissions. Excess monsters are skipped this frame and counted in the skipped-by-cap diagnostic. Cap is global across snow / puddle / land emissions for the frame. Default 16. Range 0..128. 0 disables emission entirely. |
| cl_sp_monster_avfx_contacts | default 0 / 0=off / 1=on | Master toggle: monsters leave snow footprints, puddle ripples / splashes, and landing splashes when stepping through visible AVFX surfaces in local single-player and DM-training. Default 0 (off). No effect in deathmatch / coop / demo playback / remote multiplayer. Player contacts work exactly as before regardless. Sub-toggles (snow_footprints / puddle_splashes / land_splashes / contact_audio) gate individual contact families. |
| cl_sp_monster_avfx_debug | default 0 / 0=off / 1=on (diagnostic, current session only) | Diagnostic debug spam — when enabled, prints per-frame contact counters via Com_DPrintf on every frame that emits at least one contact. Off by default. Transient (not archived) — toggle via console for live debugging. Use the sp_monster_avfx_contacts_info console command for a one-shot snapshot instead. |
| cl_sp_monster_avfx_land_splashes | default 1 / 0=off / 1=on | Sub-toggle: stronger splash burst when a falling/jumping monster lands into a visible AVFX puddle. Detected via vertical-velocity transition (was negative, now near-zero) plus puddle-coverage check at the landing point. Burst count + amplitude scale with the monster's fall speed magnitude. |
| cl_sp_monster_avfx_puddle_splashes | default 1 / 0=off / 1=on | Sub-toggle: monster step ripples and splash particles in visible AVFX puddles. Speed-scaled (fast monsters produce stronger ripples / visible splashes) and size-scaled (large monsters produce bigger contacts). Uses avfx_spawn_puddle_step_ring_ + avfx_emit_puddle_step_splash_ — same emitters as the player puddle-step path. |
| cl_sp_monster_avfx_snow_footprints | default 1 / 0=off / 1=on | Sub-toggle: monster footprints on accumulated AVFX snow. Reuses the same persistent footprint overlay buffer (avfx_footprints[]) as the player snow-footprint path. Inactive when cl_avfx_snow_footprints / cl_avfx_snow_accum is off, or when there is no visible snow coverage under the monster. |
| cl_sp_mutate_liquid_swap_avfx | 1=contacts follow swap (default) / 0=original contacts | SP liquid swap: master for AVFX CONTACT effects following the effective liquid. When ON (default) and cl_avfx 1, weapon impacts, rain ripples, snow contacts and foam on a swapped liquid use the effective material's effects (former water -> lava steam/rings, no water bubbles; former lava -> water splash/rings). When OFF, contacts keep the original liquid's effects. Requires cl_avfx 1 (AVFX master). Local single-player only. |
| gl_shader_prewarm_avfx | default 1 / 0=stock keys only (AVFX lazy-compiles), 1=stock + AVFX keys + named AVFX passes | REAL include/exclude gate for AVFX-specific shader paths (TZ 2026-06-05 made it a true gate; previously a no-op switch). Effective only when the prewarm policy allows running AND cl_avfx is on. 1 (default) = include AVFX-specific state-bit keys AND the dedicated named AVFX pass programs (stars / meteors / comets / impacts). 0 = prewarm stock/world/postprocess keys only; AVFX programs may lazy-compile on first use — an intentional user-disabled state, reported as such by shader_prewarm_info (include_avfx=0), not a failure. |
Game statistics and demos
Variables in this section: 111.
| Variable | Accepted values | Description |
|---|---|---|
| cl_demo_analytics_cell_size | 32 .. 512 world units, default 128 | Heatmap cell size in world units. Samples are binned into squares of this edge length on the XY plane; a cell's colour intensity follows how many samples landed in it. Smaller = finer detail (more cells drawn). Larger = fewer, bigger blocks. Rebuild triggers automatically when this cvar changes. |
| cl_demo_analytics_debug | 0=off (default) / 1=log scans (diagnostic, current session only) | Diagnostic logging for the analytics module. 0 = silent. 1 = log scan success/failure with sample/frag/pickup counts and truncation flags when a .mvd2 finishes scanning. Useful for diagnosing missing events or very-dense heatmaps. |
| cl_demo_analytics_dm2_mode | 0=off / 1=live POV (default) | Strategy for .dm2 single-POV demos (the engine can't replay full arena state — only what the recording POV saw). off — collect nothing, panel stays empty for .dm2 demos. live POV — sample the chase POV position every sample_ms during playback; status label reads dm2 POV only so you know coverage is limited to that player. |
| cl_demo_analytics_draw_max_cells | 100 .. 5000 cells, default 1200 | Hard cap on the number of traffic heatmap cells drawn per frame (both HUD overview and world style). Protects framerate when a dense long-demo scan produces many thousands of cells. |
| cl_demo_analytics_draw_max_events | 100 .. 16000 events, default 2000 | Hard cap on frag-dot + pickup-dot count drawn per frame combined (both HUD overview and world style). Pickups render first, then frags on top — when both exceed the budget the dropped events come from the tail. |
| cl_demo_analytics_frag_color | #rrggbb or named color, default #ff3030 | Colour of the frag-event dots (HUD panel + world particles). Parsed via SCR_ParseColor. |
| cl_demo_analytics_mode | 0=off / 1=traffic / 2=frags / 3=pickups / 4=all (default 0) | Master selector for the demo analytics overlay. off draws nothing. traffic renders a heatmap from binned sampled player positions — the full map for .mvd2 (via one-shot pre-scan), POV-only for .dm2. frags draws dots at obituary positions. pickups draws dots at item-pickup positions. all draws all three layers at once. Cycled by the ana: … pill in the demo player overlay. |
| cl_demo_analytics_mvd_autoscan | 0=manual only / 1=auto-scan on demo start (default) | When on (default), a .mvd2 demo starting playback triggers an automatic pre-scan of the file using MVD_PreScanAnalytics — samples player positions every sample_ms, records all obituary events, records all item-pickup events. Runs in a throwaway scratch parser so live playback is not perturbed. When off, the panel stays empty until you run demo_analytics_rescan manually. |
| cl_demo_analytics_overview_alpha | 0.0 .. 1.0, default 0.75 | Background opacity of the HUD analytics panel. 0 = panel background fully transparent (map/dots still drawn on top of game). 1 = fully opaque black panel. Does not affect world-style particles — see cl_demo_analytics_world_alpha for that. |
| cl_demo_analytics_pickup_color | #rrggbb or named color, default #55ff88 | Colour of the item-pickup-event dots (HUD panel + world particles). Parsed via SCR_ParseColor. |
| cl_demo_analytics_sample_ms | 50 .. 5000 ms, default 250 | Sampling interval in milliseconds for both the MVD full pre-scan and the .dm2 live POV path. Lower values = denser heatmap but more memory and longer scan time; higher values = coarser heatmap. Sample storage is capped (250k samples) — extremely low values on long demos will truncate and the status label will flag !S. |
| cl_demo_analytics_show_legend | 0=hide / 1=show (default) | Show the counts + truncation-flags footer line at the bottom of the HUD panel. Reads as cN eM[ !S][ !F][ !P] — N cells drawn, M events drawn, and !S/!F/!P flags when sample/frag/pickup storage was capped. |
| cl_demo_analytics_style | 0=overview / 1=world / 2=both (default 0) | Where analytics are drawn. overview = compact HUD panel in the upper-right showing the map bounds and the selected layers. world = translucent in-world particles at sampled positions / event locations (in 3D world space, visible through the normal view). both = draw the HUD panel and the world particles simultaneously. |
| cl_demo_analytics_time_scope | 0=full / 1=elapsed / 2=window (default 0) | Time window applied to both the heatmap and event dots. full — include everything that was collected (whole demo). elapsed — include only from demo start up to the current playback time (grows as the demo plays). window — rolling last-N-seconds window anchored on the current playback time (window size from cl_demo_analytics_window_sec). Only affects rendering; the collected dataset is unchanged. |
| cl_demo_analytics_traffic_high_color | #rrggbb or named color, default #ff4030 | Colour at the HIGH end of the traffic heatmap intensity ramp (hottest cells). Same parser / format as the low-color counterpart. |
| cl_demo_analytics_traffic_low_color | #rrggbb or named color, default #2060ff | Colour at the LOW end of the traffic heatmap intensity ramp (cells with few samples). Parsed via SCR_ParseColor — accepts #rrggbb and named colours. Invalid values fall back to the built-in default. |
| cl_demo_analytics_trail_feet_z | integer, default -24 | Z offset from the entity origin applied when trail_height_mode = 1 (feet). Negative values move the dot toward the floor. Typical player half-height is -24 units. |
| cl_demo_analytics_trail_height_mode | 0=origin (default) / 1=feet | Controls the vertical position of trail dots and line endpoints. 0 (origin) = dot placed at the player's entity origin (classic behaviour). 1 (feet) = dot floated near ground level using trail_feet_z + trail_hover_z offsets. Render-only — stored sample positions are never mutated, so switching modes live works correctly. |
| cl_demo_analytics_trail_hover_z | integer, default 4 | Extra upward Z offset added on top of trail_feet_z in feet mode, so trail dots don't clip into the floor geometry. Smaller values sit closer to the ground. |
| cl_demo_analytics_trail_line_color | #rrggbb or named color, default #ffffff | Colour for connecting lines in trail+lines mode. Parsed via SCR_ParseColor — accepts #rrggbb and named colours. Alpha is derived from the per-endpoint trail fade (so lines get thinner as they age). |
| cl_demo_analytics_trail_lines | 0=dots only (default) / 1=dots+lines | In trail mode, connect two consecutive drawn samples of the same player slot with a short chain of interpolated particles. Segment count scales with distance (2..8 interpolated points), so short close hops stay cheap and long jumps still read as lines. Line color is cl_demo_analytics_trail_line_color. No effect when lifetime_sec == 0. |
| cl_demo_analytics_trail_outline | 0=off / 1=on (default) | Draw a larger, darker outline particle behind each trail dot and line interpolation particle, and behind HUD event dots (frags / pickups). Improves readability against bright or similarly-coloured backgrounds. Outline uses the colour from cl_demo_analytics_trail_outline_color. |
| cl_demo_analytics_trail_outline_alpha | float 0..1, default 0.65 | Opacity of the outline particle. Multiplied with the foreground dot's current trail fade alpha. Values around 0.5..0.8 work well for most backgrounds. |
| cl_demo_analytics_trail_outline_color | #rrggbb or named color, default #000000 | Colour of the outline particle drawn behind trail dots and HUD event dots (requires trail_outline 1). Accepts #rrggbb and named colours via SCR_ParseColor. Default is solid black #000000. |
| cl_demo_analytics_trail_outline_scale | float >= 1, default 1.6 | Size multiplier of the outline particle relative to the foreground dot. 1.6 means the outline is 60 % wider on each side. Must be >= 1. |
| cl_demo_analytics_trail_stride | 1 .. 20, default 1 | Per-slot sample thinning in trail mode. 1 = draw every live sample (densest trail). N = draw every Nth live sample per player slot — dots become more spaced apart, and line segments (when trail_lines is on) become longer. This is a draw-time filter only; the underlying cached dataset is untouched, so no rescan is needed. Clamped to [1, 20]. |
| cl_demo_analytics_window_sec | 5 .. 600 seconds, default 60 | Sliding-window size in seconds for time_scope = window. Ignored when time_scope is full or elapsed. |
| cl_demo_analytics_world_adaptive_colors | 0=off (default) / 1=on | Analytics adaptive colours — when on, the toggle expands cl_vis_*_color highlight palette across multiple analytics surfaces: - recognized item pickup dots in world rendering AND HUD overview both pull from the item-class highlight palette (overrides cl_demo_analytics_pickup_color only for those dots) - in trail mode, player-traffic dots AND connecting lines pull from per-player highlight colours via the player visibility palette (cl_vis_players_* mode dispatch — team / duel / FFA / model / all / off→FFA-fallback). Off-mode falls through to FFA palette so each slot still gets a distinct stable colour Aggregate-mode heatmap traffic cells, frag dots, and trail outlines are NOT adaptive — they keep their manual cvars. Unsupported / ambiguous pickups fall back to cl_demo_analytics_pickup_color. Demo-only — no effect outside playback. Off by default. LOCAL scope (demo_visual cfg). Cvar name kept for backwards compatibility — its actual scope spans world + HUD + trail. |
| cl_demo_analytics_world_alpha | 0.0 .. 1.0, default 0.35 | Alpha of in-world particles (used when cl_demo_analytics_style is world or both). Applied to traffic heatmap cells, frag dots, and pickup dots in 3D space. |
| cl_demo_analytics_world_lifetime_sec | 0.0 .. 60.0 seconds, default 0.0 (aggregate) | Trail mode for in-world particles. 0 (default) = aggregate: every collected sample/event is drawn at once at flat alpha (traffic uses binned heat cells). >0 = trail: each sample/event becomes its own dot that appears at the moment it was recorded (sample.t == cl.servertime) and fades linearly to fully transparent over this many seconds. In trail mode traffic is drawn per-sample (not via binned cells) so you see actual movement trails growing behind players as the demo plays. Does not affect the HUD panel — the HUD still follows cl_demo_analytics_time_scope. |
| cl_demo_analytics_world_scale | 0.25 .. 4.0, default 1.0 | Size multiplier for in-world particles. 1.0 = default (traffic ~8 units, pickup ~6 units, frag ~10 units). Independent from cell_size; this only affects visible particle scale in 3D. |
| cl_demo_browser_alpha | 0.0 .. 1.0, default 0.85 | Demo browser overlay background opacity, [0.0, 1.0]. Independent from scr_alpha. Applied on top of SCR_OledGetUiAlpha() when OLED UI-protection is enabled, so the overlay dims in sync with the rest of the Q2PRO-X UI during the OLED breathe. |
| cl_demo_browser_fullscreen | 0=windowed (default) / 1=fullscreen | Maximize the demo browser overlay to fill the entire HUD. When on, the window spans the full screen and the resize grip + title-bar drag are suppressed (the previous geometry cvars are preserved and restored when fullscreen is toggled back off). Also toggled by the [F] button in the overlay header, same contract as the server browser. |
| cl_demo_browser_h | HUD pixels, 0 = auto | Demo browser overlay height in HUD pixels. 0 = recompute from HUD extents each open (82% tall). See cl_demo_browser_w. |
| cl_demo_browser_last_tab | all / favorites / date / mod / map / pov (default "all") | Internal archived cvar that holds the last opened demo browser tab as a stable string name ("all", "favorites", "date", "mod", "map", "pov"). Read on browser open when cl_demo_browser_remember_tab is on, written on every tab switch. Legacy integer values from older configs are accepted and rewritten in string form on the next switch. |
| cl_demo_browser_pillarbox_workspace | 0=content rect / 1=full window (default) | When pillarbox (letterbox) display is active, draw the demo browser overlay into the full window rather than the narrower game content rect. Matches the analogous behaviour in the server browser. |
| cl_demo_browser_remember_tab | 0=always start on All / 1=restore last tab (default) | Restore the last opened demo browser tab (All / Favorites / Date / Mod / Map / POV) on next session. When off, the browser always starts on All. The current tab is recorded in cl_demo_browser_last_tab whenever you switch tabs. |
| cl_demo_browser_row_colors | 0=uniform rows / 1=alternate row colors (default) | Alternate row background colour in the demo browser list for readability (zebra-stripe style). Selection highlight is drawn on top regardless. |
| cl_demo_browser_scale | 0.1 .. 3.0, default 1.5 | Demo browser overlay text and chrome scale, [0.1, 3.0]. Independent from scr_scale. Same scaling model as the cvar browser: the atlas stays fixed and the overlay picks its on-screen glyph size from this multiplier. 0.1 packs the maximum number of rows into the list, 1.0 is the baseline, 3.0 is the largest readable preset. |
| cl_demo_browser_show_broken | 0=hide partial+unreadable / 1=show partial+unreadable (default) | Single toggle that governs visibility of non-OK rows. Covers BOTH partial (playable but metadata parse was incomplete — amber tint) AND unreadable (file couldn't be opened or the stream had no readable first message — red tint). Partial rows stay selectable and playable; the missing metadata may even fill in automatically once playback starts. Query term broken:1 / broken:0 still works for explicit filtering. |
| cl_demo_browser_show_details | 0=hide detail pane / 1=show detail pane (default) | Enable the right-side detail pane in the demo browser. When off, the list pane spans the full window width and the detail pane is hidden; selected-demo metadata is still reachable via the status bar and keyboard actions. |
| cl_demo_browser_show_packed | 0=hide packed entries (default) / 1=show demos from engine packs | Include demos discovered inside engine-visible pack / container sources (pak / pkx / etc.) in the browser listing. Off by default so the browser feels like the user's personal demo library rather than "everything the engine FS can see". Engine precedence is preserved — a demo that exists both on disk and in a pack shows as the on-disk entry without a packed marker. |
| cl_demo_browser_w | HUD pixels, 0 = auto | Demo browser overlay width in HUD pixels. 0 = recompute from HUD extents each open (88% wide). Updated live during resize-grip drag and clamped to the minimum usable width. |
| cl_demo_browser_x | HUD pixels, sentinel = centred | Demo browser overlay top-left X position in HUD space. Defaults to centred on first open. Updated live via header drag and on window resize; saved back to the cvar so geometry survives restart. Value INT_MIN is the sentinel for 'use centred default'. |
| cl_demo_browser_y | HUD pixels, sentinel = centred | Demo browser overlay top-left Y position in HUD space. See cl_demo_browser_x. |
| cl_demo_index_autoscan | 0=manual browser refresh / 1=refresh on each browser open (default) | Refresh the shared demo index incrementally in the background whenever the Demo Browser opens. Cached records stay visible immediately. Off disables this automatic request; manual refresh and automatic game statistics remain independent. |
| cl_demomsglen | 0..3 | Specifies default maximum message size used for demo recording. Default value is 1390. See record command description for more information on demo packet sizes. |
| cl_demoplayer_gun | 0=show gun (default) / 1=hide gun | Gun model while watching a demo or an MVD stream from the recorded player's eyes. Overrides only playback; live play keeps cl_gun. |
| cl_demoplayer_hide_draws | 0=always draw items / 1=hide items during demo playback (default) | Suppress user-supplied draw command items (e.g. draw cl_timer, draw cl_lag, draw cl_ping) while a demo is playing. When on (default), the entire draw-object list is skipped during demo playback so HUD text from live-game sessions doesn't overlay onto demo viewing. Live-game HUD is never affected. Applies to both .dm2 and .mvd2 playback. |
| cl_demoplayer_music_online_autoplay | default 0 / 0 or 1 | Demo-player online music autoplay. Global demo profile. |
| cl_demoplayer_music_online_autoplay_results | default 0 / 0 or 1 | Demo-player auto-play results. Global demo profile. |
| cl_demoplayer_music_online_base_url | default https://promodj.com/music | Demo-player online music base URL. Global demo profile. |
| cl_demoplayer_music_online_enable | default 0 / 0 or 1 | Demo-player online music master. Separate global profile (off by default). |
| cl_demoplayer_music_online_end_mode | default 0 / 0/1/2 | Demo-player end mode: 0 stop, 1 repeat all, 2 repeat one. Global demo profile. |
| cl_demoplayer_music_online_genre_mode | default 0 / 0/1/2 | Demo-player genre mode: 0 all, 1 selected, 2 random. Global demo profile. |
| cl_demoplayer_music_online_lucky_continuous | default 1 / 0 or 1 | Demo-player lucky continuous. Global demo profile. |
| cl_demoplayer_music_online_lucky_scope | default 0 / 0/1/2 | Demo-player lucky scope: 0 selected, 1 random genre, 2 all. Global demo profile. |
| cl_demoplayer_music_online_pause_with_demo | default 0 / 0 or 1 | Pause demo-player online music together with the demo. Global demo profile. |
| cl_demoplayer_music_online_preferred_genres | default empty | Demo-player preferred genres (';'-separated slugs). Global demo profile. |
| cl_demoplayer_music_online_provider | default promodj | Demo-player online music provider id. Global demo profile. |
| cl_demoplayer_music_online_queue_mode | default 0 / 0/1 | Demo-player queue mode: 0 sequential, 1 roulette. Global demo profile. |
| cl_demoplayer_music_online_random | default 0 / 0 or 1 | Demo-player random order. Global demo profile. |
| cl_demoplayer_music_online_volume | default 0.70 / 0.0..1.0 | Demo-player online music volume (s_volume stays master). Global demo profile. |
| cl_demoplayer_mvd_director | see cl_demoplayer_mvd_director_mode | Legacy alias. See cl_demoplayer_mvd_director_mode. |
| cl_demoplayer_mvd_director_lead_sec | 0.5 .. 10.0 seconds, default 3.0 | Lead time in seconds used by the next frag Director mode. The Director switches POV to the upcoming fragger this many seconds before the frag happens on the wire, so the user sees the kill from the killer's perspective rather than arriving late. Also used to size the post-manual-override cooldown: after the user hand-picks a POV the Director pauses for max(lead_sec * 3, 3 sec) so the user's pick sticks briefly before auto-switching resumes. |
| cl_demoplayer_mvd_director_mode | 0=off (default) / 1=next frag / 2=quad / 3=penta / 4=leader | MVD-only follow mode for the demo-player Director. off leaves POV under manual control. Three current-state modes follow live MVD state: quad and penta chase whoever currently holds the power-up; leader chases the current STAT_FRAGS leader. The exact future-event mode next frag uses the pre-scanned obituary timeline built at demo start (see MVD_PreScanFrags) — POV switches cl_demoplayer_mvd_director_lead_sec seconds BEFORE each frag happens on the wire. The pre-scan is seek/replay resilient and works on the first play; no watch through once step. When the scan finds zero events the Director popover shows next frag (unavailable) and leaves POV alone. |
| cl_demoplayer_nextfrag_debug | 0=off (default) / 1=tick / 2=scan (diagnostic, current session only) | Diagnostic log for the next frag Director backend. Off by default. tick prints the Director's per-tick decision (current demo time, next event, gap, lead, fire=YES/no) and dumps the full frag timeline at scan completion. scan adds per-obituary accept/reject logs from the pre-scan (which lines the parser treated as kills and why). Use this only when diagnosing a mismatch between the scan timeline and real playback — the tick log is ~2 Hz so it fills the console fast. |
| cl_demoplayer_noskins | 0=original skins (default) / 1=no skins (male/grunt) | Player skins while watching a demo: as recorded, or everyone drawn as male/grunt. Overrides only playback; live play keeps cl_noskins. |
| cl_demoplayer_overlay | 0=off / 1=on (default) | Master switch for the modern demo player overlay. When on (default), a playback control bar renders at the bottom of the HUD during every demo and the legacy scr_demobar is automatically suppressed so the two progress indicators never stack. When off, this overlay produces no output at all and the engine falls back to whatever scr_demobar is configured to do. |
| cl_demoplayer_overlay_alpha | 0.0 .. 1.0, default 0.9 | Background opacity of the demo player overlay, [0.0, 1.0]. Independent from scr_alpha. Applied on top of SCR_OledGetUiAlpha() when OLED UI-protection is enabled. |
| cl_demoplayer_overlay_autohide_sec | 0 .. 60 seconds, default 5 | Auto-hide threshold for the demo player. After this many seconds without a real key-down event the player hides entirely. Mouse motion is intentionally NOT an activity signal — raw-input sensor noise and warp echoes during grabbed playback would otherwise starve the timer. Once hidden, the player stays hidden: incidental keystrokes neither wake it nor are interpreted by the player — they go to the game as usual. It returns only via explicit reopen paths: the bound demo_player_toggle key or the menu's open interactive player... action. 0 keeps the player pinned while a demo plays. |
| cl_demoplayer_overlay_scale | 0.5 .. 3.0, default 1.2 | Text and chrome scale for the demo player overlay, [0.5, 3.0]. Independent from scr_scale. Scales the button glyphs, timeline thickness, and padding by the same multiplier. |
| cl_demoplayer_overlay_seek_jump_sec | 1 .. 600 seconds, default 50 | Seconds that the [<<] and [>>] jump-seek buttons jump by. Used for coarse scrubbing when timeline-dragging isn't precise enough. User-tuned value is saved in the global Q2PRO-X config. |
| cl_demoplayer_overlay_seek_step_sec | 1 .. 120 seconds, default 10 | Seconds that the [<] and [>] step-seek buttons jump by. Used on both single-click in interactive mode and on the keyboard Left/Right arrow shortcut. User-tuned value is saved in the global Q2PRO-X config. |
| cl_demoplayer_overlay_show_score | 0=hide [score] button / 1=show (default) | Show the MVD-only [score] button in the interactive transport row when playing an .mvd2 demo. The button runs the score command, which pops up the scoreboard if the mod supports it. Ignored for .dm2 playback. |
| cl_demoplayer_overlay_y | HUD pixels from bottom, default 0 | Vertical offset of the overlay from the bottom of the HUD, in HUD pixels. 0 = flush to the bottom. Raise this if a mod HUD element (kill feed, net graph, etc.) covers the default position. Capped at half the HUD height to keep the overlay visible. |
| cl_demoplayer_volume | 0.0 .. 1.0, default 0.7 | Demo-playback sound multiplier applied on top of the live s_volume master. Final demo gain is s_volume * cl_demoplayer_volume (and then runtime mute/fade if active). Implemented as an in-memory mixer multiplier — s_volume is NEVER rewritten, so a crash / alt+F4 / forced disconnect mid-demo cannot leak this value into the user's saved config. When a demo starts the overlay calls S_SetVolumeOverride(this_value); when the demo ends it clears the multiplier. Slider is also reachable via the vol N popover pill in the demo-player bar. |
| cl_demosnaps | 0..300 | Specifies time interval, in seconds, between saving snapshots in memory during demo playback. Snapshots enable backward seeking in demo (see seek command description), and speed up repeated forward seeks. Setting this variable to 0 disables snapshotting entirely. Default value is 10. |
| cl_demosuspendtoggle | 0/1 | Specifies if suspend both pauses and resumes demo recording or just pauses if it was recoring. Default value is 1 (toggle between pause and resume). |
| cl_demowait | 0/1 | Specifies if demo playback is automatically paused at the last frame in demo file. Default value is 0 (finish playback). |
| cl_game_stats_alpha | 0.0 .. 1.0, default 0.85 | Game Statistics overlay background opacity, [0.0, 1.0]. Independent from scr_alpha. Applied on top of SCR_OledGetUiAlpha() so the overlay dims in sync with the rest of the Q2PRO-X UI during the OLED breathe. |
| cl_game_stats_auto | 0=off (default) / 1=refresh on an eligible cold start | Refresh the Demo Library automatically on an eligible cold idle start. Off by default, and off means genuinely zero background work: no directory walk, no demo parsing, no worker job and no intro cards. A direct +map, connect, demo or URL start is never eligible, so a launch that goes straight into a game never triggers analysis. |
| cl_game_stats_days | 0 .. 3650 days, default 7 | Statistics period, in whole LOCAL CALENDAR days. 0 means today since local midnight; 7 means from local midnight seven calendar days ago, inclusive. The cutoff is converted through the OS timezone and DST rules, so a 23- or 25-hour day is handled correctly; it is never now minus N*86400 and never a date taken from the file name. Widening the window analyses only demos whose match facts are missing. Narrowing it analyses nothing at all. |
| cl_game_stats_debug | 0=off (default) / 1=summary / 2=verbose; session-only, never archived (diagnostic, current session only) | Diagnostic verbosity for the Demo Library and the statistics query. Session-only by project policy: it is accepted from the command line or console for this process, is never loaded from or written to any config, and costs nothing while it is 0. |
| cl_game_stats_detail_w | retired — always 0; see cl_game_stats_layout | Retired. The detail pane width used to be stored here in HUD pixels, which meant a layout saved at one resolution was wrong at every other. It now lives as a proportion inside cl_game_stats_layout. An existing value is converted once on the first draw, after which this is set to 0 and never read again. Nothing sets it any more; leave it alone. |
| cl_game_stats_fullscreen | 0=off (default) / 1=fullscreen | Maximize the statistics overlay to fill the whole HUD; the resize grip is hidden while this is on and the stored window geometry is left untouched. |
| cl_game_stats_h | 0 = automatic; otherwise HUD pixels | Game Statistics overlay height in HUD pixels. 0 means pick a sensible default from the current HUD size. Updated automatically when you drag the resize grip. |
| cl_game_stats_intro | 0=off / 1=on (default) | While the startup intro plays, show a short sequence of personal moments beside the main menu: ONE fact at a time, flying in, holding a single readable instant, then widening and dissolving. There is no panel, no frame and no card — typography and its own light are the whole scene, and an echo never covers the logo, the menu, the controls or the status line. On by default, but inert unless BOTH automatic statistics and the intro itself are active. Only unambiguous real matches of the current player with a proven positive contribution are counted here — never the overall session count, never another player's data. With no qualifying match, nothing is drawn at all rather than a zero-filled scene. |
| cl_game_stats_intro_combat | 0=hide / 1=show (default) | Include personal frags and deaths in the startup Intro. |
| cl_game_stats_intro_death_weapon | 0=hide / 1=show (default) | Include the weapon that killed the current player most often in the startup Intro. |
| cl_game_stats_intro_greeting | 0=hide / 1=show (default) | Include the player greeting and analysed calendar span in the startup Intro statistics sequence. |
| cl_game_stats_intro_items | 0=hide all item lines / 1=show every item line (default) | Include every strategic pickup found in accepted matches as its own cinematic line on every startup Intro. Items are never rotated between launches. |
| cl_game_stats_intro_kill_weapon | 0=hide / 1=show (default) | Include the weapon used for the most kills in the startup Intro. |
| cl_game_stats_intro_last_game | 0=hide / 1=show (default) | Include the newest counted demo date in the startup Intro statistics sequence. |
| cl_game_stats_intro_map | 0=hide / 1=show (default) | Include the most-played map in the startup Intro. |
| cl_game_stats_intro_matches | 0=hide / 1=show (default) | Include the meaningful personal match count in the startup Intro. |
| cl_game_stats_intro_mod | 0=hide / 1=show (default) | Include the favorite game mod in the startup Intro. |
| cl_game_stats_intro_opponent | 0=hide / 1=show (default) | Include the most frequent opponent in the startup Intro. |
| cl_game_stats_intro_results | 0=hide / 1=show (default) | Include wins, losses and draws in the startup Intro. |
| cl_game_stats_last_tab | summary / matches / opponents / maps / modes / data | Internal: the stable identifier of the statistics tab that was open last. Written by the overlay, read back when cl_game_stats_remember_tab is on. |
| cl_game_stats_layout | written by the overlay; game_stats_layout_reset restores defaults | The single versioned record of everything you arranged by hand in the Game Statistics overlay: column proportions, whether the detail pane is open and how wide, sort column and direction, and which mode sections are collapsed. Everything is stored as a PROPORTION, so a layout arranged at 3840x2160 still looks right at 1280x720. Search text, the selected row, scroll position and focus are deliberately NOT saved: reopening the overlay mid-search would be a bug, not a convenience. A string that does not parse is not partially applied — the overlay starts from defaults and says so once. game_stats_layout_reset clears it. |
| cl_game_stats_min_size_kb | 1 .. no maximum, in KiB, default 40 | Smallest demo, in kibibytes, that Game Statistics will look at. A few kilobytes of demo is a connect and a disconnect, not a match, and counting those distorts every rate on the Summary tab. This is a filter over facts already in memory: changing it re-answers instantly and reparses nothing, and the Demo Browser still lists every file regardless. Excluded files are counted on the Data tab rather than silently dropped. The floor is 1 KiB; there is no ceiling, because how large a real match has to be is your judgement. |
| cl_game_stats_names | empty = just the current name; otherwise up to 32 comma-separated aliases, always plus the current name | Comma-separated list of your OTHER nicknames, counted as the same person. The current name is ALWAYS tracked as well — this list extends your identity, it does not replace it, so typing one old nickname can never stop counting the matches you are playing right now. Leading and trailing spaces are trimmed, empty entries dropped, duplicates folded, and comparison ignores letter case and the high-bit form server names use. The picker beside the field offers only names your own recordings were actually made under. Changing this list is a query over facts already in memory: no demo is ever re-read because you renamed yourself. |
| cl_game_stats_pillarbox_workspace | 0=off / 1=on (default) | Use the full presentation surface, including the pillarbox bars, as the statistics overlay workspace, so the window can be dragged into the black side areas on a non-matching aspect ratio. |
| cl_game_stats_remember_tab | 0=off / 1=on (default) | Reopen the statistics overlay on whichever tab (Summary / Matches / Opponents / Maps / Modes / Data) was active last time. Off means always start on Summary. The internal cl_game_stats_last_tab stores the name. |
| cl_game_stats_row_colors | 0=off / 1=on (default) | Alternate the row background colour in the statistics lists for readability. |
| cl_game_stats_scale | 0.1 .. 3.0, default 1.5 | Game Statistics overlay text and chrome scale, [0.1, 3.0]. Independent from scr_scale; the atlas stays fixed and the overlay picks its on-screen glyph size from this multiplier. |
| cl_game_stats_show_details | 0=off / 1=on (default) | Show the detail pane beside the table. It describes the selected row instead of repeating it: where a result came from, the recorded final table, the mode-correct relation to an opponent, and a list of recent matches you can open or play. Hidden on Summary and Data, which are totals with no selected row to describe. Its width and open state are remembered per tab in cl_game_stats_layout. |
| cl_game_stats_w | 0 = automatic; otherwise HUD pixels | Game Statistics overlay width in HUD pixels. 0 means pick a sensible default from the current HUD size. Updated automatically when you drag the resize grip. |
| cl_game_stats_x | -2147483648 = auto-centre; otherwise HUD pixels | Game Statistics overlay window X position in HUD pixels. The sentinel -2147483648 means auto-centre. Updated automatically when you drag the overlay by its title bar. |
| cl_game_stats_y | -2147483648 = auto-centre; otherwise HUD pixels | Game Statistics overlay window Y position in HUD pixels. The sentinel -2147483648 means auto-centre. Updated automatically when you drag the overlay by its title bar. |
Graphics, shaders and cache
Variables in this section: 229.
| Variable | Accepted values | Description |
|---|---|---|
| gl_allow_software | 0=reject software OpenGL / 1=allow software OpenGL | Allow Windows/WGL to fall back to a software OpenGL implementation if no hardware accelerated context is available. Normally leave 0 — software OpenGL is far too slow for Quake 2. Startup/vid_restart diagnostic only. |
| gl_angle_backend | auto/d3d11/vulkan | ANGLE backend used by the win32egl video driver. auto uses the stable D3D11 path; Vulkan is an explicit experimental mode for future GLES 3.1/3.2 renderer work. Startup/vid_restart cvar. |
| gl_anisotropy | 1..16 | When set to 2 and higher, enables anisotropic filtering of world textures, if supported by your OpenGL implementation. Default value is 1 (anisotropic filtering disabled). |
| gl_beamstyle | 0=textured billboard beam / 1=flat polygonal beam | Specifies drawing style of laser beams. Default value is 0. |
| gl_bilerp_chars | 0/1 | Enables bilinear filtering of charset images. Default value is 0 (disabled). |
| gl_bilerp_pics | 0=disabled for all pictures / 1=enabled for large pictures that dont fit into the scrap / 2=enabled for all pictures, including the scrap texture itself | Enables bilinear filtering of HUD pictures. Default value is 1. |
| gl_bilerp_skies | 0/1 | Enables bilinear filtering of skybox textures. Default value is 1 (enabled). |
| gl_bloom | 0=off / 1..8=bloom enabled, blur quality/iterations | Enable re-release bloom effect. Only effective when using GLSL backend. Default value is 0 (disabled). Higher values specify number of blurring filter iterations (typical value is 1). Code clamps to 1..8 when enabled. |
| gl_bloom_ammo_percent | 0..100; default 100 | Ammunition: percentage of common bloom strength; zero skips source bloom calculations without hiding the object. |
| gl_bloom_armor_percent | 0..100; default 100 | Armour: percentage of common bloom strength; zero skips source bloom calculations without hiding the object. |
| gl_bloom_blackhole_percent | 0..100; default 100 | Black holes: percentage of common bloom strength; zero skips source bloom calculations without hiding the object. |
| gl_bloom_glints_percent | 0..100; default 100 | Other AVFX glints: percentage of common bloom strength; zero skips source bloom calculations without hiding the object. |
| gl_bloom_health_percent | 0..100; default 100 | Health: percentage of common bloom strength; zero skips source bloom calculations without hiding the object. |
| gl_bloom_keys_percent | 0..100; default 100 | Keys: percentage of common bloom strength; zero skips source bloom calculations without hiding the object. |
| gl_bloom_lava_percent | 0..100; default 100 | Lava: percentage of common bloom strength; zero skips source bloom calculations without hiding the object. |
| gl_bloom_lightning_percent | 0..100; default 100 | Lightning: percentage of common bloom strength; zero skips source bloom calculations without hiding the object. |
| gl_bloom_meteors_percent | 0..100; default 100 | Meteors / impacts: percentage of common bloom strength; zero skips source bloom calculations without hiding the object. |
| gl_bloom_models_percent | 0..100; default 100 | Other models: percentage of common bloom strength; zero skips source bloom calculations without hiding the object. |
| gl_bloom_player_weapon_percent | 0..100; default 100 | Held weapons: percentage of common bloom strength; zero skips source bloom calculations without hiding the object. |
| gl_bloom_players_percent | 0..100; default 100 | Players: percentage of common bloom strength; zero skips source bloom calculations without hiding the object. |
| gl_bloom_powerup_shell_percent | 0..100; default 100 | Active powerup shells: percentage of common bloom strength; zero skips source bloom calculations without hiding the object. |
| gl_bloom_powerups_percent | 0..100; default 100 | Powerups: percentage of common bloom strength; zero skips source bloom calculations without hiding the object. |
| gl_bloom_sigma | 0.1..10 | Specifies strength parameter of gaussian blur filter used for the bloom effect. Default value is 4. (or glowmaps disabled) is a waste of resources. |
| gl_bloom_slime_percent | 0..100; default 100 | Slime / acid: percentage of common bloom strength; zero skips source bloom calculations without hiding the object. |
| gl_bloom_snow_percent | 0..100; default 100 | Snow sparkles: percentage of common bloom strength; zero skips source bloom calculations without hiding the object. |
| gl_bloom_stars_percent | 0..100; default 100 | Stars / bright planets: percentage of common bloom strength; zero skips source bloom calculations without hiding the object. |
| gl_bloom_strength | 0..5 | bloom strength multiplier |
| gl_bloom_sun_percent | 0..100; default 100 | Sun: percentage of common bloom strength; zero skips source bloom calculations without hiding the object. |
| gl_bloom_threshold | 0..1 | bloom brightness threshold |
| gl_bloom_water_percent | 0..100; default 100 | Water: percentage of common bloom strength; zero skips source bloom calculations without hiding the object. |
| gl_bloom_weapon_fx_percent | 0..100; default 100 | Weapon effects: percentage of common bloom strength; zero skips source bloom calculations without hiding the object. |
| gl_bloom_weapons_percent | 0..100; default 100 | Map weapons: percentage of common bloom strength; zero skips source bloom calculations without hiding the object. |
| gl_bloom_world_emissive_percent | 0..100; default 100 | Emissive map textures: percentage of common bloom strength; zero skips source bloom calculations without hiding the object. |
| gl_bloom_world_percent | 0..100; default 100 | Other bright surfaces: percentage of common bloom strength; zero skips source bloom calculations without hiding the object. |
| gl_brightness | -1..1 | Specifies a brightness value that is added to each pixel of world lightmaps. Positive values make lightmaps brighter, negative values make lightmaps darker. Default value is 0 (keep original brightness). |
| gl_bsp_tess_architecture | 0=original architecture / 1=tessellated architecture (default) | Child master for tessellated relief on solid BSP level architecture: floors, slopes and walls. Turning it off routes those faces through the exact original CPU BSP geometry without changing the saved relief parameters. Geometric water and lava remain independently controlled. Requires the general gl_bsp_tessellation master. |
| gl_bsp_tess_architecture_floors | 0=off / 1=on (default) | Apply generic BSP architecture relief to floors and upward slopes. Independent from the wall lane and from Brick geometry. Requires both tessellation and architecture masters. |
| gl_bsp_tess_architecture_walls | 0=off / 1=on (default) | Apply generic BSP architecture relief to walls and ceilings. Independent from the floor lane and from Brick geometry. Requires both tessellation and architecture masters. |
| gl_bsp_tess_debug | default 0 / 0=off, >0=overlay (diagnostic, current session only) | Developer-only: WGL BSP hardware-tessellation debug visualization. 0=off. Not archived, no menu; zero cost at 0. |
| gl_bsp_tess_detail_scale | 8..256 world units (default 64) | World-space scale of the procedural solid-surface relief. Lower values create smaller bumps; higher values create broad hills and uneven walls. Three deterministic noise octaves are evaluated from world position, so the shape never follows the camera. |
| gl_bsp_tess_edge_guard | 0.5..32 world units (default 4) | World-space width of the fixed guard along every original BSP face perimeter. Displacement fades to exactly zero at the contour, preserving BSP/PVS visibility and preventing cracks or wall-through sight lines. |
| gl_bsp_tess_force_fallback | 0=off (default) / 1=force fallback (diagnostic, current session only) | Developer diagnostic: never compile the BSP tessellation shaders and draw the non-tessellated fallback, as on hardware without tessellation. |
| gl_bsp_tess_lava | 0=off / 1=on (default; requires gl_bsp_tessellation 1) | Independent WGL child master for geometric BSP lava waves. It reuses the fixed micro-triangle and sealed-shore path proven by water without changing water, slime, reflections or contact effects. |
| gl_bsp_tess_lava_height | 0..16 world units (default 3) | Maximum outward lava-wave height. Displacement fades smoothly to zero at the original union-aware shore. |
| gl_bsp_tess_lava_scale | 16..512 world units (default 128) | Average world-space wavelength for geometric lava. Four deterministic moving bands avoid a repeating geometric pattern. |
| gl_bsp_tess_lava_speed | 0..4 (default 0.55) | Animation speed multiplier for geometric lava waves. 0 freezes the current shape without disabling the lava geometry. |
| gl_bsp_tess_lod | 0=off / 1=on (default) | Distance LOD for BSP tessellation. Reduces edge factors toward 1 at long range. Factors are calculated from canonical shared-edge endpoints, so adjacent triangles agree and do not open cracks. |
| gl_bsp_tess_lod_distance | 512..8192 (default 2048) | Distance in world units where BSP tessellation LOD reaches its minimum factor. The transition begins at 55% of this distance and is smooth. |
| gl_bsp_tess_quality | 0=Performance / 1=Balanced / 2=High (default) / 3=Ultra | BSP tessellation density preset. Performance/Balanced/High/Ultra target approximately 96/64/32/16 world-unit generated edges with bounded hardware factors. Higher values increase GPU geometry work. |
| gl_bsp_tess_radius | 0..32 world units (default 12) | Maximum outward relief height in world units. Solid BSP detail is non-negative along the effective face normal, so it never retreats behind the original BSP plane and cannot expose hidden geometry. Every original face perimeter converges to zero displacement. |
| gl_bsp_tess_smoothing | 0..100 percent (default 60) | Strength of camera-invariant procedural relief generated inside solid BSP faces by WGL hardware tessellation. 0 keeps the original plane; 100 applies the full gl_bsp_tess_radius height. The former silhouette-moving Phong deformation is not used. Render-only: collision and server BSP remain unchanged. |
| gl_bsp_tess_water | 0=off / 1=on (default; requires gl_bsp_tessellation 1) | Geometric tessellated waves for BSP water on the WGL patch path. Supports both transparent and opaque water while preserving the existing material, AVFX, reflection and vertex-colour paths. Lava, slime, portals and sky materials are excluded. |
| gl_bsp_tess_water_height | 0..16 world units (default 4) | Maximum geometric wave height. Four moving directional bands are combined and their displacement fades to zero at the original shoreline. |
| gl_bsp_tess_water_scale | 16..512 world units (default 96) | Average world-space wavelength for geometric water. The additional bands use different frequencies and directions to avoid a single repeating wave train. |
| gl_bsp_tess_water_speed | 0..4 (default 1) | Animation speed multiplier for geometric water waves. 0 freezes the current wave shape without disabling tessellation. |
| gl_bsp_tessellation | 0=off (default) / 1=on | General hardware tessellation master for eligible static BSP world surfaces. Off by default. It is a renderer feature, not a cheat or a Single Player mutator: multiplayer and Single Player use the same WGL path. Capable desktop OpenGL/WGL uses patches; win32egl and unsupported WGL automatically keep the normal CPU world path without changing the requested value. |
| gl_celshading | 0=off / 0.1..10=line thickness | Enables drawing black contour lines around 3D models (aka celshading). Value of this variable specifies thickness of the lines drawn. Default value is 0 (celshading disabled). Code clamps to 0..10. |
| gl_clear | 0/1 (diagnostic, current session only) | diagnostic: clear the framebuffer each frame to expose unfilled regions |
| gl_clearcolor | #RRGGBB (diagnostic, current session only) | diagnostic clear colour used when gl_clear is on |
| gl_colorbits | 0=auto / 16 / 24=RGB8 / 30=RGB10A2 / 32 | Requested total RGB color-buffer depth, excluding alpha. On win32wgl: 0 = match the target monitor (RGB10A2 at 10+ bpc, otherwise RGB8), 24 = RGB8, 30 = exact RGB10A2 attempt; true HDR uses the separate FP16 path. Startup/vid_restart cvar. |
| gl_coloredlightmaps | 0/1 | Enables grayscaling of world lightmaps. 1 keeps original colors, 0 converts lightmaps to grayscale format, any value in between reduces colorfulness. Default value is 1 (keep original colors). |
| gl_cubemaps | 0/1 | Enables use of cubemaps for skybox drawing. Cubemaps allow multiple skybox textures per map, and help to avoid sky rendering bugs. Also enables N64 skies in re-release maps. Only effective if gl_shaders is enabled. Default value is 0 (disabled). |
| gl_cull_models | 0/1 | frustum-cull models |
| gl_cull_nodes | 0/1 | frustum-cull BSP nodes |
| gl_damageblend_frac | 0..1 | damage screen blend intensity |
| gl_debug | 0=off / 1=debug context / 2=debug context + stricter diagnostics (diagnostic, current session only) | Enable OpenGL debug context for backend diagnostics. Drivers vary in what they report; values above 1 may engage stricter diagnostics where supported. Startup/vid_restart cvar. |
| gl_debug_distfrac | 0..1 (diagnostic, current session only) | debug dist-fraction value |
| gl_debug_linewidth | 1..10 (diagnostic, current session only) | debug line width (pixels) |
| gl_depthbits | 0=auto / 16 / 24 / 32 | Requested depth buffer precision for the GL context. 0 = driver default. Startup/vid_restart cvar. |
| gl_dlight_falloff | 0..5 | Makes dynamic lights look a bit smoother, opposed to original jagged Quake 2 style. Default value is 1 (enabled). |
| gl_dotshading | 0/1/2 | Enables dotshading effect when drawing 3D models, which helps them look truly 3D-ish by simulating diffuse lighting from a fake light source. Default value is 1 (enabled). |
| gl_doublelight_entities | 0/1 | Specifies if combined modulation factor is applied to entity lighting one more time just before final lighting value is calculated, to simulate a well-known bug in the original Quake 2 renderer. Default value is 1 (apply twice). Entity lighting is calculated based on the color of the lightmap sample from the world surface directly beneath the entity. This means any cvar affecting lightmaps affects entity lighting as well (with exception of gl_modulate_world). Cvars that have effect only on the entity lighting are gl_modulate_entities and gl_doublelight_entities. Yet another cvar affecting entity lighting is gl_dotshading, which typically makes entities look a bit brighter. See also cl_noglow cvar which removes the pulsing effect (glowing) on bonus entities. |
| gl_downsample_skins | 0/1 | Specifies if skins are downsampled just like world textures are. When disabled, gl_round_down, gl_picmip cvars have no effect on skins. Default value is 1 (downsampling enabled). |
| gl_drawentities | 0/1 | draw model entities |
| gl_draworder | 0/1 | Alpha sorting treshold for transparent entitites. Entities with lower alpha are drawn in the front, while entities with higher alpha are drawn in the back. Default value is 1 (draw all entities in front). |
| gl_drawsky | 0/1 | Enables skybox texturing. 0 means to draw sky in solid black color. Default value is 1 (enabled). |
| gl_drawworld | 0/1 | draw world BSP |
| gl_dsa_paths | 0=legacy allocation / 1=auto (default) (diagnostic, current session only) | Texture allocation path: OpenGL direct state access / immutable storage when the driver fully supports it, or the exact legacy allocation. The developer-only "force when available" mode is the session-only gl_dsa_paths_debug. |
| gl_dsa_paths_debug | default 0 / 0=follow gl_dsa_paths / 1=force DSA fast paths when caps exist (session only) (diagnostic, current session only) | Session-only diagnostic force for the OpenGL direct-state-access fast paths (gl_dsa_paths). 1 forces DSA mode 2 for this session: use the DSA/immutable-texture-storage paths whenever the driver capabilities exist, overriding the saved 0/1 production choice without rewriting it. Missing capabilities are never bypassed. A live console gl_dsa_paths 2 still enables it for the current session (legacy spelling); the persisted value stays the 0/1 baseline. Never read from a config and never written by any config or preset writer; after a restart it is off again. |
| gl_dynamic | 0=all dynamic lighting is disabled / 1=all dynamic lighting is enabled / 2=most dynamic lights are disabled, but lightmap updates are still allowed for switchable lights to work | Controls dynamic lightmap updates. Default value is 1. |
| gl_dynamic_alpha | default 0.20 / range 0..1 / step 0.05 | Alpha / opacity scale for the dynamic light contribution. Multiplies the final per-texel frac (and the per-entity f) by this factor before adding to the lightmap / entity color. 1.0 = legacy full intensity. Lower values make dlight projections more transparent / subtle on receiving surfaces — you can dial all dynamic lighting from full opaque (1.0) to invisible (0.0). Does not affect dlight existence, radius, or surface marking. Default 0.20 is the accepted soft blend. |
| gl_dynamic_dark_boost | default 1.55 / range 0..10 / step 0.05 | Adaptive brightness boost for dynamic lights (blasters, rockets, explosions, lightning, flashlight engine fallback, etc.) on locally dark receivers. Inspects the static lightmap brightness at each receiving texel (and the AVFX celestial world multiplier when AVFX is on), and scales the per-dlight contribution up where the receiver is dark — so a blaster bolt next to a dark tunnel wall reads stronger, while the same bolt in a bright courtyard stays close to legacy. Also packs into the world shader's u_avfx_celestial_world.a slot so already-bright lightmap pixels (heavy dlight contribution OR static map lamps) get an anti-dim against the celestial multiplier — lets the dlight actually punch through AVFX night dimming. Independent of gl_dynamic: if gl_dynamic disables dynamic lights, this cvar does nothing. Does NOT touch radius, color, falloff, lightmap atlas, gl_modulate*, intensity, or AVFX celestial multipliers directly. Internal clamp on the per-texel boost is 1.0 .. 20.0. Set to 0 for byte-exact pre-1.4 behavior. Default 1.55 is balanced; crank up to 5..10 for dramatic cinematic effect. |
| gl_dynamic_radius | default 3.60 / range 0.2..10 / step 0.05 | Global radius scale for dynamic lights. Multiplies each dlight's effective intensity in the lightmap blocklight pass and in the per-entity light add. 1.0 = legacy. Values <1 shrink the projected glow on walls (blaster bolts make smaller spots). Values >1 stretch the glow within already-marked surfaces (the dlight cannot spread to NEW surfaces it didn't mark — that part of the engine runs earlier — but within the marked set the falloff curve extends further). Default 3.60 is the Q2PRO-X tuned dynamic-light radius. |
| gl_dynamic_softness | default 0.10 / range 0.1..5 / step 0.05 | Falloff softness for dynamic lights. Reshapes the linear frac/rad falloff (where 0 = at the dlight's radius edge, 1 = at its center) via pow(t, 1/softness). 1.0 = legacy linear. Values >1 = softer (brighter middle, more diffuse outer edge — like a flashlight's soft cone). Values <1 = harsher (concentrated pin-point bright core, sharp edge). Useful for tuning blaster/projectile glow shape without changing radius or intensity. Default 0.10 keeps the accepted crisp Q2PRO-X light shape. |
| gl_emissive_lights | default 0 / 0=off, 1=on | Master toggle for map-emissive local lighting. On map load Q2PRO-X scans visible, non-warp BSP SURF_LIGHT faces. Every light / light_* entry in the BSP entity lump is an invisible compiler marker and is rejected before both normal V_AddLight emission and AVFX material UBO generation. Accepted visible sources feed both paths. Selection is stable and has no camera-position term. The material path is gated by gl_dynamic and follows gl_dynamic_radius, gl_dynamic_softness, and gl_dynamic_alpha. Gameplay dlights keep priority. Raw player info_player_* origins are also excluded; gl_emissive_lights_spawn_points snaps starts to nearby support geometry. Optional gl_emissive_lights_pvs_gate is off by default. |
| gl_emissive_lights_dark_adapt | default 1.0 / range 0.0..3.0 / step 0.05 | Reserved for E2: amplify emissive source strength on locally dark receivers, mirroring the gl_dynamic_dark_boost formula. Currently unused (E0+E1 landing reads the cvar value but does not apply it). Will activate in the E2 AVFX-material follow-up. |
| gl_emissive_lights_debug | default 0 / 0=silent, 1=verbose (diagnostic, current session only) | Diagnostics level for emissive map lights. 0 = silent; 1 = print cache-build summary at map load. Use emissive_lights_info command for on-demand diagnostics. |
| gl_emissive_lights_fade_ms | default 275 / range 0..1000 / step 25 | Activation fade time when the active source SET changes — e.g. when you toggle a sub-cvar (_surfaces / _entities / _spawn_points) or change _max_active. With stable B-prime selection, camera motion alone does NOT trigger fades because the same static source set wins every frame. Set to 0 for hard snap. |
| gl_emissive_lights_flicker | default 0 / range 0.0..1.0 / step 0.01 | Lamp-like low-frequency flicker amplitude. 0 = stable lights. ~0.08 = subtle warm drift (like fluorescent ballast wobble). 1.0 = dramatic candle. Uses a stable per-source seed → no frame-to-frame buzzing. Default 0 keeps accepted map lamps stable. |
| gl_emissive_lights_intensity | default 0.85 / range 0.0..5.0 / step 0.05 | Global intensity multiplier applied to every emissive source's base strength before flicker and per-frame budget selection. 0 disables emission entirely (cache stays built). 5 is dramatic. |
| gl_emissive_lights_max_active | default 128 / range 0..128 / step 1 | Per-frame cap on emitted legacy V_AddLight emissive dlights. Gameplay (projectiles, muzzle flashes, sparks, explosions, flashlight) always wins the MAX_DLIGHTS slot race; emissive sources use leftovers. AVFX materials use separate static-emissive UBO families and are not limited by this value in the same way. |
| gl_emissive_lights_max_sources | default 1024 / range 0..1024 / step 16 | Hard cap on the static source cache size built per map. 1024 is the accepted high-headroom default for dense maps. Lower values reduce per-frame selection work. 0 effectively disables emission (no sources cached). |
| gl_emissive_lights_pvs_gate | default 0 / 0=no PVS gating (stable selection), 1=PVS gating (big-map mode) | Optional PVS visibility gate (big-map/debug optimization). When 1, only sources whose origin cluster is in the camera PVS mask compete for the budget and material UBOs. This can save work on huge maps, but it can also make lights appear/disappear as the camera crosses cluster boundaries. Keep 0 for the stable always-on B-prime behavior. |
| gl_emissive_lights_range | default 320 / range 64..4096 / step 32 | Per-source range cap in world units. Each cached source has an intrinsic radius derived from BSP data; this cvar caps it so a single huge lamp can't light the whole map through walls. Lower values give tighter pools of light. |
| gl_emissive_lights_range_scale | default 1.60 / range 0.1..4.0 / step 0.05 | Multiplier on each source's intrinsic radius BEFORE the global gl_emissive_lights_range cap. 1.60 = accepted tuned range. Lower values shrink ALL emissive ranges proportionally; higher values stretch them up to the cap. |
| gl_emissive_lights_spawn_points | default 1 / 0=off, 1=snapped spawn-point / destination marker lights | Sub-toggle for player spawn-point / destination marker lighting. This does NOT light the raw invisible info_player_* origin. Instead it snaps each player start to a nearby compact horizontal support surface and uses that geometry as the light source, so real spawn spots illuminate while unrelated wall lamps and stale arena-center pools are avoided. Texture names are not used. Also includes non-player destination markers such as misc_teleporter_dest. |
| gl_emissive_lights_surfaces | default 0 / 0=ignore SURF_LIGHT faces, 1=use them | Sub-toggle: include visible BSP SURF_LIGHT faces in the emissive source cache. Accepted faces have a positive light value and are not SURF_SKY, SURF_NODRAW, or SURF_WARP; water is a receiver, never a lamp. |
| gl_finish | 0/1 | call glFinish each frame (latency test) |
| gl_flarespeed | 0=instant/no smooth fade / 8=default / higher=faster fade | Specifies flare fading effect speed. Default value is 8 (0 = instant fade with no smooth interpolation, higher = faster fade). No code-side clamp beyond cvar parsing. |
| gl_fog | 0/1 | Enable re-release fog effect. Only effective when using GLSL backend. Default value is 1 (enabled). |
| gl_fontshadow | 0/1/2 | Specifies font shadow width, in pixels, ranging from 0 to 2. Default value is 0 (no shadow). |
| gl_gamma_scale_pics | 0/1 | Apply software gamma scaling not only to textures and skins, but to HUD pictures also. Default value is 0 (dont apply to pics). |
| gl_glowmap_intensity | 0..2 | Intensity factor for entity glowmaps. Default value is 0.75. |
| gl_gpu_timers | 0=off (default) / 1=on (diagnostic, current session only) | Developer diagnostic: measure per-pass GPU time with non-blocking OpenGL timer queries (also switched on by the mirror benchmark). No GL work when off. |
| gl_gpulerp | 0=disabled / 1=auto (enabled on OpenGL 4.3 and higher) / 2=force enabled | Enables alias model interpolation on GPU for potential rendering speedup. Default value is 1 (auto). If using OpenGL core profile, this option is always enabled. If not using GLSL backend, this option is always disabled. |
| gl_invert | 0/1 | Inverts colors of world textures. In combination with gl_saturation 0 effectively makes textures look like black and white photo negative. Default value is 0 (do not invert colors). |
| gl_lightgrid | 0/1 | use BSP lightgrid for entity lighting |
| gl_lightmap | 0=normal / 1=replace world textures with lightmaps / 2=also draw lightmap atlas overlay (debug build only; release acts as 1) (diagnostic, current session only) | Lightmap visualization. 0 = normal render, 1 = replace world textures with lightmaps, 2 = also draw the lightmap atlas overlay (debug builds ONLY — Draw_Lightmaps() is gated under USE_DEBUG in main.c, so in release builds 2 behaves the same as 1). |
| gl_lightmap_bits | 0=auto / 7=128 / 8=256 / 9=512 / 10=1024 | Specifies size of lightmap textures as base-2 log of edge texel count. Default 0 = auto (typically 8 for regular maps, 10 for re-release maps). Code clamps non-zero to 7..10 → 128..1024 px. Older hardware may need adjustment for optimal dynamic lighting speed. |
| gl_lockpvs | 0/1 (diagnostic, current session only) | freeze PVS at current position (debug) |
| gl_md5_distance | 0..16384 | Only use MD5 replacement model if entity is closer than this distance to the viewer, otherwise use original model. Default value is 2048. Setting this to 0 disables distance LOD. |
| gl_md5_load | 0/1 | Enables loading of MD5 replacement models as found in re-release. Default value is 1. |
| gl_md5_use | 0/1 | Enables use of MD5 replacement models as found in re-release. Only effective if gl_md5_load is enabled. Default value is 1. |
| gl_modulate | 0..4 | Specifies a primary modulation factor that each pixel of world lightmaps is multiplied by. This cvar affects entity lighting as well. Default value is 1 (identity). |
| gl_modulate_entities | 0..large multiplier, 1=identity/default | Specifies a secondary modulation factor that entity lighting is multiplied by. This cvar does not affect world lightmaps. Default value is 1 (identity). Multiplier, not boolean — typical 0..4 range, but any non-negative float. |
| gl_modulate_world | 0..large multiplier, 1=identity/default | Specifies a secondary modulation factor that each pixel of world lightmaps is multiplied by. This cvar does not affect entity lighting. Default value is 1 (identity). Multiplier, not boolean. |
| gl_multisamples | 0=off / 2 / 4 / 8 / 16 / 32 | Requested MSAA sample count for the GL context. 0 = no multisampling. Startup/vid_restart cvar. |
| gl_nobind | 0/1 (diagnostic, current session only) | debug: skip texture binding |
| gl_noscrap | 0/1 | By default, OpenGL renderer combines small HUD pictures into the single texture called scrap. This usually speeds up rendering a bit, and allows pixel precise rendering of non power of two sized images. If you dont like this optimization for some reason, this cvar can be used to disable it. Default value is 0 (optimize). |
| gl_novbo | 0/1 | disable VBO usage |
| gl_novis | 0/1 (diagnostic, current session only) | ignore PVS culling |
| gl_partscale | 0.25..8 | Specifies minimum size of particles. Default value is 2. |
| gl_partshape | 0=faded circle / 1=square / 2=fuller, less faded circle | Specifies shape of particles. Default value is 0. |
| gl_partstyle | 0=blend colors / 1=saturate colors | Specifies drawing style of particles. Default value is 0. |
| gl_picmip | 0..31 | World-texture mip reduction level. Each +1 halves both upload dimensions; reduction stops independently for each texture at 1x1. |
| gl_polyblend | 0/1 | enable screen polyblend (damage/item pickup) |
| gl_post_contrast | 0.5..2 | post-process contrast |
| gl_post_profile | 0=off / 1=neutral / 2=warm / 3=arena / 4=cinematic | Post-process colour-grading profile preset. Numeric integer 0..4; menu shows named labels but console uses numbers. |
| gl_post_temperature | -1..1 | post-process colour temperature |
| gl_post_vibrance | -1..1 | post-process vibrance |
| gl_postfx | 0/1 (master on/off) | Master switch for post-process camera/display emulation effects (applied to the 3D scene only; HUD/menus stay crisp). 0 = off (no extra pass, identical to baseline). 1 = on; the effect is chosen by gl_postfx_mode. Works independently of HDR/bloom. |
| gl_postfx_crt_chroma | 0..1 (0 = none) | CRT: horizontal chromatic aberration (RGB split). 0 = none. |
| gl_postfx_crt_curvature | 0..1 (0 = flat) | CRT: screen curvature (barrel). Borders clamp/fade. 0 = flat. |
| gl_postfx_crt_flicker | 0..1 (0 = none) | CRT: subtle temporal brightness flicker. 0 = none. |
| gl_postfx_crt_mask | 0..1 (0 = none) | CRT: RGB phosphor aperture mask strength (per-column tint). 0 = none. |
| gl_postfx_crt_scanlines | 0..1 (0 = none) | CRT: horizontal scanline darkening strength. 0 = none. |
| gl_postfx_crt_vignette | 0..1 (0 = none) | CRT: darkening toward the screen edges. 0 = none. |
| gl_postfx_debug | 0 = off (diagnostic) (diagnostic, current session only) | Diagnostic only (non-archived). Reserved for post-process debug visualization. |
| gl_postfx_film_chroma | 0..1 (0 = none) | Film: subtle chromatic aberration. 0 = none. |
| gl_postfx_film_dirt | 0..1 (0 = none) | Film: lens dirt/dust overlay. 0 = none. |
| gl_postfx_film_grain | 0..1 (0 = none) | Film: animated grain amount. Deterministic, temporally controlled (not random snow). |
| gl_postfx_film_vignette | 0..1 (0 = none) | Film: edge darkening. 0 = none. |
| gl_postfx_mix | 0..1 (1.0 = full effect) | Blend of the effect with the normal (un-processed) image. 1.0 = full effect, 0.0 = no effect, 0.5 = half blend. |
| gl_postfx_mode | 0=off 1=pixel 2=crt 3=film 4=vhs 5=noir 6=sepia | Active post-process effect when gl_postfx 1. 0 = off, 1 = Pixel Retro (pixelation + color posterize), 2 = CRT (scanlines/mask/vignette/chroma), 3 = Film (grain + vignette), 4 = VHS (jitter + chroma bleed + noise), 5 = Noir (black & white + contrast), 6 = Sepia. |
| gl_postfx_pixel_dither | 0/1 (0 = off) | Pixel Retro: ordered 4x4 dithering to soften posterize banding. 0 = off. |
| gl_postfx_pixel_filter | 0=nearest 1=softened | Pixel Retro: 0 = nearest (hard pixels), 1 = softened sampling. |
| gl_postfx_pixel_grid | 0..1 (0 = no grid) | Pixel Retro: visible grid/gap between virtual pixels (retro LCD look). 0 = none. |
| gl_postfx_pixel_levels | 2..64 (fewer = stronger posterize) | Pixel Retro: number of color quantization levels per channel (posterize). 2 = harsh, 16 = mild, 64 = subtle. |
| gl_postfx_pixel_palette | 0/1 (0 = off) | Pixel Retro: snap colors to a fixed 16-color retro palette. 0 = off. |
| gl_postfx_pixel_virtual_y | 120..1080 (lower = chunkier) | Pixel Retro: virtual vertical resolution the scene is quantized to. Lower = chunkier pixels (e.g. 120), higher = finer (e.g. 480). The grid is stable under camera/player movement. |
| gl_postfx_strength | 0..2 (1.0 = nominal) | Overall intensity of the active post-process effect. 1.0 = nominal. Also drives Film grain and VHS noise/jitter/chroma intensity. |
| gl_postfx_vhs_chroma_bleed | 0..1 (0 = none) | VHS: horizontal color bleed/smear. 0 = none. |
| gl_postfx_vhs_jitter | 0..1 (0 = none) | VHS: per-scanline horizontal jitter. 0 = none. |
| gl_postfx_vhs_noise | 0..1 (0 = none) | VHS: analog noise amount. 0 = none. |
| gl_postfx_vhs_tracking | 0..1 (0 = none) | VHS: vertical tracking distortion band. 0 = none. |
| gl_print_capabilities | default 1 / 0=silent, 1=print at startup | Print a single self-contained block to the console + log at engine startup describing the detected GL profile, GLSL version, framebuffer pixel format, and per-capability QGL_CAP_* yes/no plus the chosen AVFX real celestial sphere tier. Block content: GL_VENDOR / GL_RENDERER / GL_VERSION / GL_SHADING_LANGUAGE_VERSION (raw driver strings), detected profile (OpenGL ES X.Y or OpenGL (Desktop) X.Y) with parsed major.minor + parsed GLSL major.minor, max texture / renderbuffer / viewport size, color / Z / stencil bit depths, pipeline class (programmable shaders vs fixed-function, legacy compat flag), per-capability rows for QGL_CAP_SHADER_STORAGE (SSBO; GLES 3.1+ / OpenGL 4.3+), QGL_CAP_BUFFER_TEXTURE (skeletal mesh upload), QGL_CAP_INSTANCING (AVFX snow / foam / dust / visualfx instancing), QGL_CAP_TEXTURE_ANISOTROPY, QGL_CAP_TEXTURE_CLAMP_TO_EDGE, QGL_CAP_NON_POWER_OF_TWO, QGL_CAP_ELEMENT_INDEX_UINT, QGL_CAP_CLIENT_VA (legacy vertex arrays), and a final AVFX real celestial tier: line with the chosen tier name and star / line caps (SSBO fragment-safe cap 256/674, UBO fallback 128/160, Classic 56/27). Default 1 so the block is visible on every start without a +set line. Set to 0 to silence the startup block (the value persists via CVAR_ARCHIVE). The console command gl_capabilities reprints the same block on demand regardless of this cvar. Independent of gl_strings (legacy strings command), which prints a narrower three-line summary plus the extension list. |
| gl_profile | empty=highest compatibility/default / gl=OpenGL core default / gl3.2 / gl4.6 / es=OpenGL ES default / es3.0 / (startup/vid_restart) | Specifies custom profile and version of OpenGL context to create. Default empty = highest compatibility profile available. "gl" = core profile, "es" = OpenGL ES, optionally followed by minimum version ("gl3.2", "gl4.6", "es3.0"). Not all drivers support every value. Startup/vid_restart cvar. |
| gl_render_scale | 100..1000 (percent; 100 = native, 200 = 2x super-sampling, etc.; menu step 1%) | Internal 3D scene resolution as a percent of the display. 100 is native resolution; >100 is super-sampling (render higher, downscale for AA); <100 is not supported — set gl_render_scale to 100 to disable super-sampling. Runtime-clamped by gl_render_scale_max and the backend's max texture size. Menu step 1% (was 25% — 1% gives finer control on the SS curve). |
| gl_render_scale_applied | 100..1000 (read-only; check after setting gl_render_scale) | Read-only diagnostic: the render scale that was actually applied on the last frame after all clamps (max, backend limits, fallback). Useful when the requested value was clipped and you need to know the effective resolution. |
| gl_render_scale_filter | 0=fast single blit / 1=balanced progressive 2x / 2=quality progressive 2x + tiled guard band | Render scale upscale / downscale filter quality. Integer 0..2. 0 = single fast blit (cheap, slight blur). 1 = balanced progressive 2x downsample chain. 2 = quality progressive 2x + tiled-mode guard band (sharpest, most VRAM/perf). |
| gl_render_scale_max | 100..1000 (percent) | Maximum render scale clamp. The engine will never exceed this even if gl_render_scale is set higher — protects against accidentally setting 1000% on a 4K display and running out of VRAM. |
| gl_render_scale_mode | 0=auto / 1=texture/FBO / 2=blit / 3=tiled | Render scale pipeline mode. Integer 0..3. 0 = auto pick. 1 = render into offscreen texture / FBO (preferred for >100% SSAA). 2 = direct blit path when supported. 3 = tiled mode for very high render scales that exceed max texture size. |
| gl_render_scale_path | direct / texture / blit / tiled (read-only effective path) | Read-only effective render scale path actually in use after gl_render_scale_mode applies (auto resolves to a concrete path here). Useful diagnostic — tells you whether the renderer is in direct, texture, blit, or tiled mode right now. |
| gl_round_down | 0/1 | round texture sizes down to power of 2 |
| gl_saturation | 0=grayscale / 1=original colour | Enables grayscaling of world textures. 1 keeps original colors, 0 converts textures to grayscale (saves video memory and speeds up rendering since textures upload at 8 bpp instead of 24). Any value in between reduces colourfulness. Default 1. Code clamps to 0..1. |
| gl_shader_binary_cache | default 1 / 0=always compile from source, 1=load/save program binaries | Persistent OpenGL program-binary cache. When supported (GL_ARB_get_program_binary / GLES 3.0+), each successfully linked GL program — both stock state-bit permutations and the dedicated AVFX pass programs (stars / meteors / comets / impacts) — is saved to baseq2/q2pro-x/shcache/<digest>.bin and reloaded on later runs, skipping GLSL compile+link. The digest folds GL vendor/renderer/version, backend/API tier, storage tier and the shader source hashes, so a binary is never loaded under an incompatible driver/backend; a stale or rejected binary is deleted and the program is recompiled from source (never a black screen). Works together with gl_shader_prewarm: the prewarm pass loads binaries instead of compiling on warm runs. Default 1. See shader_cache_info / shader_cache_clear. |
| gl_shader_binary_cache_write | default 1 / 0=read-only (no new files), 1=write new binaries | Write sub-switch for gl_shader_binary_cache. When 1, newly compiled program binaries are written to baseq2/q2pro-x/shcache. Set to 0 to use the existing cache read-only — warm hits still load, but no new files are added (useful after the cache is fully populated, or on a read-only install). Default 1. Has no effect when gl_shader_binary_cache is 0 or program-binary support is absent. |
| gl_shader_compile_threads | default -1 / -1=safe CPU-scaled auto (driver max only in Aggressive), 0=none, N=fixed | Background shader-compiler thread count requested when gl_shader_parallel_compile is active. -1 Auto (default) = half the logical CPUs capped at 8 in normal EGL Auto; with Aggressive mode it requests the implementation maximum. 0 = request no background compiler threads. N = request exactly N threads. Only meaningful on a supporting backend. The requested value and the GL state are shown by shader_prewarm_info. |
| gl_shader_parallel_compile | default 1 / 0=serial, 1=safe CPU-scaled EGL auto, 2=aggressive override | Parallel shader-compile hint. When the GL backend exposes GL_ARB/KHR_parallel_shader_compile, the prewarm pass may compile/link programs on background threads, shortening a cold map-load compile. 0 Off = serial. 1 Auto (default) keeps native WGL serial and uses a bounded CPU-scaled EGL pool: half the logical CPUs, capped at 8. 2 Aggressive permits the implementation maximum when gl_shader_compile_threads is Auto, or the exact configured count. No effect without the extension. shader_prewarm_info reports the requested pool and queue. Warm runs load cached binaries. |
| gl_shader_parallel_inflight | default 0 (auto) / 0=twice the safe pool (2..16), 1..64=explicit in-flight cap | Maximum async shader programs queued at once during prewarm. 0 Auto (default) = twice the safe compiler-pool size, clamped to 2..16. N = an explicit cap, clamped 1..64. The bounded Auto queue keeps compiler workers fed without retaining dozens of heavy AVFX programs in ANGLE simultaneously. Explicit larger queues remain available for Aggressive tuning. shader_prewarm_info shows inflight_cap_resolved / peak_inflight. |
| gl_shader_prewarm | 0 Off, 1 Auto (default: AVFX or HDR), 2 Always | Shader prewarm POLICY (3-state, TZ 2026-06-05; was a boolean toggle). 0 Off = never auto-run the forced map-load / first-frame shader prewarm. 1 Auto (default) = run when the session needs it: cl_avfx is on OR a non-AVFX renderer feature such as HDR (gl_hdr) is effective (HDR-1 added — the HDR tone-map composite must be prewarmed too); unaffected players get no forced prewarm and no 'Loading shaders...' phase. 2 Always = run even with everything off (stock/world/postprocess keys only), preserving the old aggressive behaviour for diagnostics. See gl_shader_prewarm_avfx for the AVFX include/exclude sub-gate; shader_prewarm_info shows the live policy and last skip reason. |
| gl_shader_prewarm_progress | default 1 / 0=no progress UI, 1=show shader compile/cache-load progress | Show a visible progress indicator while shaders compile or load from the binary cache during a cold map load, so the client never looks frozen. The diagnostic counters (last total / updates / elapsed_ms) are visible via shader_prewarm_info regardless of this toggle. Default 1. |
| gl_shader_prewarm_verbose | default 0 / 0=silent, 1=print stats after each prewarm run (diagnostic, current session only) | Per-run prewarm diagnostics to console: reason (map_load / viewport_change / cvar_change / manual), attempted, compiled_new, already_cached, failed, time_ms, longest_program_us. Same numbers are always available on demand via the shader_prewarm_info console command. Default 0 keeps the console quiet. |
| gl_shader_variant_warmup | default 1 / 0=off, 1=auto (accepted), 2=aggressive | Production draw-variant warmup. Some ANGLE/D3D backends only materialise a shader's true draw-time output-layout variant on the FIRST real production draw, even when compile/link prewarm already finished (compiled_from_src=0) — so the first map can still stutter. This warms those variants with a tiny scoped real BSP sky/water draw (scissored to a few pixels, refdef/viewport restored) plus a post-draw binary save under the effective shader key, so the variant is cached. 0 Off = skip. 1 Auto (default) = the accepted behaviour. 2 Aggressive = widen coverage. No effect when cl_avfx is 0. shader_prewarm_info shows production_variant_warmup mode + warmed face counts. |
| gl_shaders | 0/1 | Enables GLSL rendering backend (OpenGL 3.0+). Disabling is rejected while shader-dependent features are enabled: tessellation, AVFX, HDR/output, bloom, post-processing, render scale above 100%, fog, cubemaps or glowmaps. The console lists enabled blockers in red; the current value is preserved. These features also cannot be enabled with gl_shaders 0. Default 1. |
| gl_shadows | 0=disabled / 1=hard, constant alpha / 2=hard, alpha fade with distance / 3=soft, alpha fade with distance | Controls projected shadows underneath 3D models. Mode 3 uses a softer non-stencil shadow pass. Default value is 0. |
| gl_shadows_light_occlusion | default 1 / 0=legacy gl_shadows always, 1=require open light path overhead | Suppress legacy projected model shadows (gl_shadows) when the model is under a solid ceiling with no overhead light path. After all existing cull_shadow rejection tests pass, traces 5 sample points (center + 4 cardinal offsets at clamp(radius × 0.35, 4, 48) wu) straight up by 8192 wu through the loaded BSP. Any sample that reaches a SURF_SKY brush or escapes the world (fraction=1.0) allows the shadow; if all 5 hit solid non-sky geometry, the shadow is suppressed. Independent from the accepted AVFX flashlight dynamic GPU shadows — those run their own shadow-map pass and are NOT touched by this gate. Set to 0 to restore exact legacy gl_shadows behavior. Default 1 because this is a correctness fix for the new 1.4 lighting model (it stops fake floor decals from appearing under closed ceilings in dark indoor scenes). |
| gl_sharpen | 0..1 | sharpen post-process amount |
| gl_showbloom | 0/1 (diagnostic, current session only) | debug: visualize bloom buffer |
| gl_showerrors | 0/1 (diagnostic, current session only) | print GL errors each frame |
| gl_showorigins | 0/1 (diagnostic, current session only) | draw entity origin markers |
| gl_showscrap | 0/1 (diagnostic, current session only) | debug: visualize scrap atlas |
| gl_showstats | 0/1 (diagnostic, current session only) | print render statistics each frame |
| gl_showtearing | 0/1 (diagnostic, current session only) | debug: draw tearing bar |
| gl_showtris | 0=off / 1=world / 2=models / 4=2D pics / 8=effects (bitmask, combine by sum) (diagnostic, current session only) | Bitmask debug overlay: draw triangle wireframe over various render groups. Combine flags by sum (e.g. 3 = world + models, 15 = all). |
| gl_stencilbits | 0=off / 8 | Requested stencil buffer bits for the GL context. Mostly used for stencil shadows (gl_shadows). Startup/vid_restart cvar. |
| gl_swapinterval | -1/0/1 | swap interval (VSync) |
| gl_test | int (diagnostic, current session only) | generic test cvar (debug) |
| gl_texturebits | 0=driver/default / 1..8=low precision / 9..16=16-bit-ish / 17+=8-bit/channel; common values 0,8,16,32 | Specifies bits per texel for internal texture storage. Default 0 = driver default. Common values 0, 8, 16, 32. |
| gl_texturemode | GL_NEAREST / GL_LINEAR / GL_NEAREST_MIPMAP_NEAREST / GL_LINEAR_MIPMAP_NEAREST / GL_NEAREST_MIPMAP_LINEAR / GL_LINEAR_MIPMAP_LINEAR / MAG_NEAREST | OpenGL texture filter mode for world textures and model skins (IT_WALL, IT_SKIN). Does not control HUD pictures, fonts, or skyboxes (those use gl_bilerp_pics, gl_bilerp_chars, gl_bilerp_skies). Whitelist of GL filter strings; menu labels like "nearest" / "trilinear" are NOT accepted on the console. Related: gl_anisotropy. Default GL_LINEAR_MIPMAP_LINEAR. |
| gl_upscale_pcx | 0=dont upscale / 1=upscale 2x (takes 5x more memory) / 2=upscale 4x (takes 21x more memory) | Enables upscaling of PCX images using HQ2x and HQ4x filters. This improves rendering quality when screen scaling is used. Default value is 0. |
| gl_vertexlight | 0/1 | per-vertex lighting (retro) |
| gl_vis_overlay_lite | 0=normal / 1=strip fog / 2=strip glowmap / 4=strip bloom MRT writes / 8=skip cel-shading edge pass / 16=white texture on tint pass / 31=all diagnostic strips (bitmask) (diagnostic, current session only) | Diagnostic bitmask for stripping render passes from the Option O vis-overlay path. Runtime debug only — not a graphics-quality knob, not archived. Combine flags by sum (e.g. 5 = strip fog + bloom MRT writes). |
| gl_waterwarp | 0/1 | Enable screen warping effect when underwater. Only effective when using GLSL backend. Default value is 0 (disabled). |
| gl_znear | 0.5..16 typical, default 2 | GL near clip plane (world units). Default 2. Smaller values render closer geometry but reduce z-buffer precision at distance. |
| r_diag_present | 0=off (default) / 1=on (diagnostic, current session only) | Developer diagnostic: high-resolution timing of the frame present (swap) step. |
| r_frame_spike_threshold_ms | milliseconds (default 25) (diagnostic, current session only) | Frame spike detector: a frame longer than this is recorded; frame_spike_info prints the spikes, frame_spike_reset clears them. |
| r_fullbright | 0/1 (diagnostic, current session only) | render world fullbright |
| r_glowmaps | 0/1 | Enables loading of glowmap images as found in re-release. Only effective if gl_shaders is enabled. Default value is 1. |
| r_maxfps | 0..1000 | Specifies maximum rendering frame rate if cl_async is set to 1, otherwise ignored. Default value is 0, which means no particular limit. |
| r_override_textures | 0=dont override textures / 1=override only palettized textures / 2=override all textures | Enables automatic overriding of palettized textures (in WAL or PCX format) with truecolor replacements (in PNG, JPG or TGA format) by stripping off original file extension and searching for alternative filenames in the order specified by r_texture_formats variable. Default value is 1. |
| r_texture_formats | string | Specifies the order in which truecolor texture replacements are searched. Default value is "png jpg tga". |
| r_texture_overrides | 1=HUD pictures / 2=HUD fonts / 4=skins / 8=sprites / 16=wall textures / 32=sky textures | Specifies what types of textures are affected by r_override_textures. This variable is a bitmask. Default value is -1 (all types). |
| r_vis_overlay_debug_mode | default 0 / 0=off, >0=mode (diagnostic, current session only) | Developer-only: visibility-overlay renderer debug mode. 0=off. Not archived, no menu; zero cost at 0. |
| r_vis_overlay_isolate | 0=instanced (default) / 1=single draws (diagnostic, current session only) | Developer diagnostic: draw each visibility overlay through the single-draw path instead of the instanced pipeline (to reproduce overlay flicker without instancing). |
| r_vis_overlay_quality_fuse | 0=separate passes / 1=fused (default) (diagnostic, current session only) | Visibility overlays: fuse the quality passes into one (the faster path). 0 is kept for A/B comparison. |
| vid_activation_debug | default 0 / 0=no live activation/sync lines / 1=print them (diagnostic, current session only) | Live console diagnostics for window activation and client sync mode. 0 (default) prints no spontaneous "window activation:" or "sync mode:" lines and costs nothing: the activation logger returns before it even queries the foreground window. 1 enables both live lines in their original format. The sync-transition ring keeps recording either way, so the explicit cl_sync_info command still reports recent transitions while this is off. Session-only: never written to a config or a preset, and absent from the guided menus. |
| vid_debug_fail_first_init | default 0 / 0=off, 1=fail the first driver once (diagnostic, current session only) | Developer-only: tear the primary video driver down after a successful init to exercise the real fallback path (Win32 lifecycle fixture). One-shot: consumed on use, session-only. 0=off; zero cost at 0. |
| vid_desktop_fullscreen | 0=exclusive fullscreen / 1=desktop fullscreen (default) | Fullscreen as a borderless window at the desktop mode (fast Alt-Tab) instead of an exclusive video mode change. |
| vid_desktop_fullscreen_fit | 0=fill (default) / 1=aspect | Desktop fullscreen: stretch the picture to the monitor, or keep the selected mode's aspect with black bars. |
| vid_desktop_fullscreen_margin | -1=exact size (default) / 0=fast Alt-Tab on deep-color WGL / 1..16=manual diagnostic margin | Desktop-fullscreen Alt-Tab policy. Default -1 uses the exact monitor size and preserves maximum native-WGL FPS, but Alt-Tab can be slower on desktops deeper than 8 bpc. Value 0 enables automatic fast-Alt-Tab compatibility: deep-color SDR WGL leaves a minimal right-edge margin to avoid Legacy Flip, potentially at an FPS cost. Active FP16 true HDR remains exact-size. Positive values are manual diagnostic margins. Requires vid_restart. |
| vid_desktop_fullscreen_margin_debug | default 0 / 0=follow vid_desktop_fullscreen_margin / >0=manual margin in pixels (session only) (diagnostic, current session only) | Session-only manual margin for desktop fullscreen (vid_desktop_fullscreen_margin). A positive value shrinks the borderless desktop-fullscreen window by that many pixels for this session only, overriding the stable persisted policy (-1 exact size, 0 automatic fast-Alt-Tab compatibility) without rewriting it. Used to diagnose presentation/compositor behaviour at non-exact window sizes. A startup vid_desktop_fullscreen_margin <positive> outside a config is migrated here automatically. Never read from a config and never written by any config or preset writer; after a restart it is off again. |
| vid_display_gamma | default 1 / range 0.3..3 / step 0.05 / live | Optional live final-composite gamma for programmable WGL/EGL. Default 1.0 is neutral; lower values brighten the complete frame and higher values darken it. This new control is deliberately independent from legacy vid_gamma and never inherits its persisted value. Owned by the unified global video config when global video preferences are enabled. |
| vid_driver | win32wgl=Windows WGL OpenGL (default, fast cold AVFX startup) / win32egl=Windows EGL/ANGLE (explicit capture/true-HDR choice) / wayland=native Wayland / x11=native X11 / sdl=SDL2 | Specifies which video driver to use. On Windows the default is win32wgl: native OpenGL has the fast cold AVFX startup path. win32egl remains an explicit capture-friendly ANGLE choice for NVIDIA ShadowPlay/OBS compatibility and is required for the optional true-HDR output path, but its first cold shader build can take much longer. If the chosen backend fails to initialize the engine probes the remaining drivers and rewrites vid_driver to the backend that actually started. |
| vid_flip_on_switch | 0=off (default) / 1=on | Restore the desktop video mode when you switch away from an exclusive fullscreen game (Windows). |
| vid_force_foreground_on_start | 0=off (default) / 1=activate once / 2=test keepalive | Runtime-only agent-test switch. 1 activates Q2PRO-X once after the menu/map is presented; 2 keeps the test process foreground for its lifetime. Command-line only and never saved. |
| vid_fullscreen | 0/1/2 | If set to non zero _value_, run in the specified fullscreen mode. This way, _value_ acts as index into the list of video modes specified by vid_modelist. Default value is 0, which means to run in windowed mode. |
| vid_fullscreen_type | desktop=Desktop fullscreen / exclusive=Exclusive fullscreen | Borderless desktop vs classic exclusive mode. |
| vid_gamma | default 1 / range 0.3..3 / step 0.05 / r_reload/vid_restart | Compatibility texture gamma used by existing Q2/Q2PRO configs. Default 1.0 = identity; lower values brighten texture mid-tones, higher values darken them. On programmable WGL/EGL it is baked into wall/skin texture uploads and therefore needs r_reload or vid_restart; it never changes the whole final frame. With vid_hwgamma 1, the display backend may instead consume this curve as a hardware gamma ramp. Owned by the unified global video config when global video preferences are enabled. |
| vid_geometry | string | Size and optional position of the main window on virtual desktop. Full syntax is: WxH[+X+Y]. Default value is "640x480". |
| vid_hwgamma | default 0 / 0/1 / vid_restart | Apply the legacy vid_gamma curve as a hardware gamma ramp through the display driver instead of baking it into textures. Default 0 = off; 1 = on. Registered as CVAR_REFRESH, so enabling it needs vid_restart and driver support; once active, changes to vid_gamma are live. Independent from the optional final-composite vid_display_gamma. Owned by the unified global video config when global video preferences are enabled. |
| vid_modelist | string | Space separated list of fullscreen video modes. Both _freq_ and _bpp_ parameters are optional. Full syntax is: WxH[@freq][:bpp] [...]. Default value is "640x480 800x600 1024x768". On Linux, _freq_ parameter is currently ignored. Special keyword desktop means to use default desktop video mode. |
| vid_ref | gl/soft | renderer backend |
| vid_refresh | max / rate in Hz from vid_refresh_list / empty | Fullscreen refresh rate picked from vid_refresh_list. max = the highest available; ignored in windowed and desktop fullscreen modes. |
| vid_refresh_list | list (read-only) | Read-only list of the refresh rates available for the selected resolution, for vid_refresh. |
| vid_resolution | desktop / WIDTHxHEIGHT from vid_resolution_list / empty | Fullscreen resolution picked from the list the monitor reports (vid_resolution_list). desktop = the monitor's native mode; empty = the legacy vid_modelist / vid_fullscreen choice. |
| vid_resolution_list | list (read-only) | Read-only list of the fullscreen resolutions the monitor reports, for vid_resolution. |
| vid_test_no_activate | 0=normal (default) / 1=never activate (diagnostic, current session only) | Test-harness switch: never bring the game window to the foreground or take focus. Set on the command line by automated checks. |
| vid_windowed | 0=off / 1=on | vid_windowed: run in a window instead of fullscreen. |
HDR, screenshots and display protection
Variables in this section: 47.
| Variable | Accepted values | Description |
|---|---|---|
| gl_hdr | 0=off / LDR (default) / 1=auto (HDR when supported) / 2=force (developer) | Master switch for the optional HDR / tone-mapping render pipeline. Off keeps the accepted LDR look exactly. Auto enables HDR scene rendering when the backend can actually render to a floating-point scene buffer (probed at startup — see gl_hdr_info). Force is a developer setting that requests HDR even on marginal backends. HDR keeps light in linear high-range until a final tone-map to the display, so the sun, lightning, stars and emissive effects can exceed ordinary white before being compressed instead of clipping flat. |
| gl_hdr_auto_exposure | 0=off (default) / reserved (not active yet) | RESERVED / NOT ACTIVE in this release. Automatic HDR eye-adaptation exposure is deferred to a future version (the first implementation used a per-frame GPU readback that stalled the renderer on ANGLE/D3D11; the accepted GPU-resident re-land is queued). Setting this currently does nothing; manual gl_hdr_exposure is the exposure control. The cvar is kept registered so a saved config does not error and the future build can revive it. |
| gl_hdr_auto_exposure_max_ev | reserved (default 4) | Reserved / not active in this release (see gl_hdr_auto_exposure). Upper EV clamp for the deferred auto-exposure feature; no effect yet. |
| gl_hdr_auto_exposure_min_ev | reserved (default -4) | Reserved / not active in this release (see gl_hdr_auto_exposure). Lower EV clamp for the deferred auto-exposure feature; no effect yet. |
| gl_hdr_auto_exposure_speed | reserved (default 1.0) | Reserved / not active in this release (see gl_hdr_auto_exposure). Adaptation speed for the deferred auto-exposure feature; no effect yet. |
| gl_hdr_bloom_strength | 0..3 (default 1.0) | HDR-aware bloom strength multiplier applied on top of the bloom chain in HDR mode. |
| gl_hdr_bloom_threshold_nits | 0..8 HDR units (default 2.0) | Bloom onset threshold expressed in HDR (nits-derived) scene units. Pixels brighter than this start to bloom. Higher restricts bloom to only the brightest sources. |
| gl_hdr_celestial_peak_scale | 0..8 (default 1.0) | HDR peak multiplier for celestial highlights. Currently scales the sun/moon disk peak and the accepted sun/star/planet bloom contribution. It does NOT scale direct star/planet point color (that experiment produced a diamond-fragment artifact and was reverted; a future attempt needs a non-fragmenting soft-glow approach). Only effective when gl_hdr is active. |
| gl_hdr_contrast | 0..2 (default 1.0) | Optional post-tone-map contrast adjustment. 1.0 is neutral; higher increases contrast, lower flattens it. |
| gl_hdr_debug | 0=off / 1=false-color luminance / 2=histogram / 3=overbright clip mask (diagnostic, current session only) | HDR diagnostic overlay. Off is normal rendering. False-color shows per-pixel luminance bands. Histogram shows the exposure / luminance distribution. Clip mask highlights pixels that exceed the display range. Developer aid; not archived. |
| gl_hdr_egl_app_white_max | 0.25..8.0 (default 1.1; recommended 1.1 for win32egl HDR) | win32egl-only true-HDR output limiter for the app-side scRGB white scale. It caps the EGL app buffer before Windows composition applies its HDR SDR-white presentation scale. Lower values protect bright lamp/sun/moon detail from EGL overexposure; higher values make EGL HDR brighter but can blow out highlights. win32wgl ignores this setting. |
| gl_hdr_emissive_peak_scale | 0..8 (default 1.0) | HDR-only peak multiplier for emissive MAP and SPAWN light contributions (the static emissive-light channel). 1.0 = neutral; higher makes those sources read brighter before tone mapping. Only effective when gl_hdr is active. (HDR-3b wires map/spawn emissive only; lightning/sparks/projectile peak scaling is deferred to a later phase.) |
| gl_hdr_exposure | -4..+4 EV (default 0) | Manual exposure compensation in EV stops applied to the HDR scene before tone mapping. 0 is neutral; +1 doubles scene brightness, -1 halves it. |
| gl_hdr_fx_peak_scale | 0..8 (default 1.0) | HDR-only peak multiplier for the AVFX LIGHTNING visual family. 1.0 = neutral; higher writes true overbright so lightning blooms past white through the tone-map instead of clipping flat. Only effective when gl_hdr is active. HDR-4b scales only the AVFX-lightning paths explicitly marked for lightning HDR peak: sky flash, force-bloom lightning beam/halo/surface-arc segments, and cloud illumination. Model/powerup shells, item vis-tints, snow glints, plain grapple/BFG beams, weapon sparks, projectile lights and static emissive map lights are NOT scaled by this knob. Future non-lightning FX peak routing is deferred. |
| gl_hdr_output | 0=SDR tone-mapped (default) / 1=true HDR (live on active native WGL) | True HDR display output (HDR-6B/HDRLIVE-1). 0 = SDR tone-mapped output. 1 = request a real FP16 scRGB presentation surface. On native win32wgl, changing this while a map or demo is active runs one bounded live transaction: retire the old renderer, settle Advanced Color on the captured monitor if needed, recreate once, then verify the first presented backbuffer. A failed gate or proof rolls back to readable SDR; Windows HDR is restored only when this game enabled it. The selected desktop-fullscreen margin policy is preserved across the transition. Startup, disconnected menus and loading stay on the regular surface. The established win32egl/ANGLE path still applies the change through its normal refresh. gl_hdr_info and gl_hdr_transition_info report requested versus actual state and the exact fallback. The app buffer uses linear scRGB units; Windows composition may additionally apply its SDR-reference-white scale. screenshotjxr is presentation-matched and screenshotjxr_raw is app-exact. |
| gl_hdr_output_debug | 0=off (default) / 2=above-paper-white heatmap (diagnostic, current session only) | True-HDR output developer diagnostic (not archived). 0 = off. 2 = heatmap: pixels brighter than paper white are tinted magenta in the final scRGB encode — verifies every terminal pass goes through the encode and shows where extended highlights actually exceed paper white. |
| gl_hdr_output_mode | 0=paper-white parity (default) / 1=extended highlights | True-HDR output mapping mode (only acts on a live FP16 surface). 0 = paper-white parity: the picture matches the accepted SDR look anchored at gl_hdr_paper_white_nits (UI white == scene white == paper white; nothing exceeds it). 1 = extended highlights: the final clamp is lifted to peak/paper, so tone-curve values above 1.0 (sun/moon discs, lightning, dialed emissive peaks, exposure) survive as REAL above-paper-white brightness on the HDR display. UI is never boosted in either mode. scRGB mapping per spec: value = nits / 80 in the APP buffer; Windows composition may scale that by the system SDR-reference-white on screen (see gl_hdr_output / gl_hdr_info). |
| gl_hdr_paper_white_nits | 100..400 nits (default 200) | Brightness assigned to ordinary white world / UI surfaces inside the HDR scene. Raising it lifts mid-tones; lowering it gives more tonal headroom to very bright sources before they clip. |
| gl_hdr_peak_nits | 100..2000 nits (default 1000) | Target peak display brightness in nits that the tone-mapper aims for. Higher values let bright sources stay brighter before rolling off. On an SDR display this acts as the upper anchor of the tone curve rather than a literal panel brightness. |
| gl_hdr_saturation | 0..2 (default 1.0) | Optional post-tone-map saturation adjustment. 1.0 is neutral; lower desaturates, higher boosts color. |
| gl_hdr_scene_format | 0=auto (default) / 1=RGBA16F / 2=R11F_G11F_B10F (no alpha) / 3=RGBA8 (LDR/debug) | Pixel format for the HDR scene buffer. Auto picks the best format that actually passes a framebuffer-completeness probe on this backend. RGBA16F is the safe default and keeps the alpha channel that the sky / god-ray masking relies on. R11F_G11F_B10F is faster and uses less memory but has NO alpha, so it is only valid once the alpha-marker users are moved. RGBA8 forces the legacy LDR buffer (debug). Unsupported choices fall back to RGBA8 with a reason shown in gl_hdr_info. |
| gl_hdr_tonemap | 0=linear/clamp (debug) / 1=Reinhard / 2=ACES filmic (default) / 3=Uncharted filmic | Tone-mapping curve used to compress HDR scene light to the display. Linear/clamp is a debug passthrough. Reinhard is a simple safe roll-off. ACES filmic is the recommended quality curve. Uncharted is an alternative filmic curve. |
| gl_screenshot_async | 0=save screenshots synchronously / 1=save PNG screenshots in background thread / 2=save JPG and PNG screenshots in background thread | Specifies if screenshots are saved in background thread to avoid pausing the client. Default value is 1. |
| gl_screenshot_compression | 0..9 | Specifies compression level of PNG screenshots. Values range from 0 (no compression) to 9 (best compression). Default value is 6. |
| gl_screenshot_format | tga/png/jpg | Specifies image format screenshot command uses. Possible values are "png", "jpg" and "tga". Default value is "jpg". |
| gl_screenshot_quality | 0..100 | Specifies image quality of JPG screenshots. Values range from 0 (worst quality) to 100 (best quality). Default value is 90. |
| gl_screenshot_template | string | Specifies filename template in "fileXXX" format for screenshot command. Template must contain at least 3 and at most 9 consecutive X in the last component. Template may contain slashes to save under subdirectory. Default value is "quakeXXX". |
| vid_hdr_transition_fault | 0=off / 1..7=controlled RED modes | Session-only controlled fault for the native-WGL HDR live-transition guards. 0 = normal; non-zero values simulate settle, FP16, intent, dimension, content or legacy double-owner failures. Developer validation only; never archived. |
| vid_oled_bar_active_min | 0..3600 (seconds) | Minimum active session time (in seconds) before bar animation is allowed to start. Prevents brief sessions from triggering it unnecessarily. |
| vid_oled_bar_color_a | #RRGGBB | Primary colour for the bar animation (one end of the breathing cycle). |
| vid_oled_bar_color_b | #RRGGBB | Secondary colour for the bar animation (other end of the breathing cycle). |
| vid_oled_bar_delay_sec | 0..600 (seconds) | Delay before the first bar colour transition, in seconds. Lets the bars settle at their initial colour before animation starts. |
| vid_oled_bar_interval_min | 0..60 (minutes) | Minimum interval between bar colour transitions, in minutes. Slower values are less distracting. |
| vid_oled_bar_preset | subtle=low contrast / neutral=default / bold=high contrast | Predefined bar animation preset. subtle is slow and low-contrast. neutral is moderate (default). bold is more noticeable — use when you want the effect clearly visible. |
| vid_oled_bar_protection | 0=static bars / 1=animated bars | Animate the aspect-fit pillarbox / letterbox bars with a slow colour transition so the bars never stay at a static dark grey. Reduces OLED burn-in risk on the bars. |
| vid_oled_enable | 0=all OLED features off / 1=suite active | Master switch for the Q2PRO-X OLED protection suite. When off, the entire suite (bar animation + idle dim + UI breathing) is disabled regardless of the sub-switches below. Intended for OLED displays where static UI can cause burn-in, but safe to leave on for any display. |
| vid_oled_idle_delay_sec | 0..3600 (seconds) | Idle delay before dimming starts, in seconds. Typical: 60-300. |
| vid_oled_idle_fade_sec | 0..60 (seconds) | Fade-to-dark duration, in seconds. |
| vid_oled_idle_hold_sec | 0..3600 (seconds) | How long the screen stays fully dim (HOLD_DARK phase) before optionally transitioning the monitor to DPMS off. |
| vid_oled_idle_monitor_off | 0=stay dim but monitor on / 1=DPMS monitor off during HOLD_DARK | During HOLD_DARK, issue DPMS monitor-off so the panel fully powers down. Opt-in because some desktop setups handle DPMS poorly. Safe on modern Windows monitors. |
| vid_oled_idle_mute_audio | 0=keep audio / 1=mute audio while idle | Mute audio while idle-dim is active (PULSING_DOWN / HOLD_DARK / PULSING_UP). Prevents background music or ambient loops from playing to an empty chair. |
| vid_oled_idle_protection | 0=no idle dimming / 1=dim after inactivity | Dim the screen after a period of inactivity. Three-phase state machine: WAITING (normal) -> PULSING_DOWN (fading) -> HOLD_DARK (steady dim, optionally monitor-off). User activity transitions through RESTORING back to WAITING. |
| vid_oled_idle_restore_sec | 0..60 (seconds) | Fade-to-restore duration when user activity resumes, in seconds. |
| vid_oled_ui_cycle_sec | 0..60 (seconds) | UI alpha breathe cycle duration, in seconds. |
| vid_oled_ui_max_alpha | 0..1 | UI alpha breathe upper bound — the brightest point of the breathe cycle. |
| vid_oled_ui_min_alpha | 0..1 | UI alpha breathe lower bound — the dimmest point of the breathe cycle. |
| vid_oled_ui_protection | 0=static UI alpha / 1=breathing UI alpha | Breathing alpha on protected UI overlays (laghax HUD, server browser, cvar browser). Modulates their background alpha with a slow sine so static UI elements do not sit at the same pixel for extended periods. The breathing factor is exposed via SCR_OledGetUiAlpha() for any overlay that wants to participate. |
Highlights and visibility
Variables in this section: 146.
| Variable | Accepted values | Description |
|---|---|---|
| cl_pickup_icon_debug | 0=silent (default) / 1=print classification decisions (diagnostic, current session only) | Diagnostic logging for the client-side pickup icon override. When 1, prints which pickup-notify icon / text was observed from the server, which pickup sound was matched (s_health / n_health / l_health / m_health), and which subtype the override resolved to. Off by default; enable temporarily when investigating mis-classification. Does not modify rendering — log lines only. |
| cl_pickup_icon_override | 0=use exact server icons / text (no client-side override) / 1=apply override when subtype is identifiable (default) | Client-side override of pickup-notify and selected-weapon icons / text for items that the server treats as a single shared entry: distinct subtype icons for Stimpack / Health +10 / Health +25 / Mega Health (when assets are installed in baseq2/pics/), i_armorshard for Armor Shard (instead of the green jacket-armor icon), and w_grenades for hand grenades selected as a weapon (so the selected-weapon HUD slot doesn't look identical to ammo). Pure render decoration: cl.frame.ps.stats[] and cl.configstrings[] are not modified, so demo / MVD recording captures exactly what the server sent and playback applies the override decoration on top. When PNG / PCX / TGA assets aren't installed under baseq2/pics/, the icon override silently falls back to the server-supplied icon, but the text override (Health → Stimpack / Health +10 / +25 / Mega Health) keeps working. |
| cl_vis_ammo | 0=off / 1=on | Highlight ammo pickups. |
| cl_vis_ammo_color | #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | Highlight color: ammo. |
| cl_vis_armor_body | 0=off / 1=on | Highlight body (red) armor. |
| cl_vis_armor_body_color | #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | Highlight color: body (red) armor. |
| cl_vis_armor_combat | 0=off / 1=on | Highlight combat (yellow) armor. |
| cl_vis_armor_combat_color | #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | Highlight color: combat (yellow) armor. |
| cl_vis_armor_jacket | 0=off / 1=on | Highlight jacket (green) armor. |
| cl_vis_armor_jacket_color | #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | Highlight color: jacket (green) armor. |
| cl_vis_armor_screen | 0=off / 1=on | Highlight the Power Screen pickup. |
| cl_vis_armor_screen_color | #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | Highlight color: Power Screen. |
| cl_vis_armor_shard | 0=off / 1=on | Highlight armor shards. |
| cl_vis_armor_shard_color | #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | Highlight color: armor shards. |
| cl_vis_armor_shield | 0=off / 1=on | Highlight the Power Shield pickup. |
| cl_vis_armor_shield_color | #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | Highlight color: Power Shield. |
| cl_vis_enable | 0=layer off (no highlights) / 1=layer active | Master enable for the Q2PRO-X visibility / highlight layer. Controls item, weapon, and player highlighting as a single gate. When off, the layer is completely neutral (no shells, no tints, no scale changes). |
| cl_vis_health_large | 0=off / 1=on | Highlight large health pickups. |
| cl_vis_health_large_color | #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | Highlight color: large health. |
| cl_vis_health_medium | 0=off / 1=on | Highlight medium (10) health pickups. |
| cl_vis_health_medium_color | #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | Highlight color: medium health. |
| cl_vis_health_mega | 0=off / 1=on | Highlight megahealth pickups. |
| cl_vis_health_mega_color | #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | Highlight color: megahealth. |
| cl_vis_health_small | 0=off / 1=on | Highlight small health pickups (stimpacks). |
| cl_vis_health_small_color | #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | Highlight color: small health. |
| cl_vis_highlight_fixture | 0=off (default) / 1=test model (diagnostic, current session only) | Session-only highlight test: display a combat armor model in front of the camera when that model is registered on the map. |
| cl_vis_items | 0=no item highlight / 1=highlight items | Highlight pickup items (weapons, ammo, health, armour, power-ups). Drives the cl_vis_items_style path — shell overlay, colour tint, or both. |
| cl_vis_items_alpha | 0..1 | Item highlight overlay alpha (transparency of the applied tint / shell). |
| cl_vis_items_brightness | 0..4 (1 = neutral) | Item highlight brightness multiplier; >1 boosts saturation of the tint / shell. |
| cl_vis_items_scale | 0.5..3.0 (1 = stock size) | Pickup item scale boost applied before submission. 1.0 keeps stock size; larger = more visible from distance. |
| cl_vis_items_shell_alpha | 0..1 | Alpha of the colour-shell pass (RF_SHELL_*) for highlighted items. |
| cl_vis_items_shell_scale | 0.5..3.0 | Scale of the colour-shell pass (ent.scale multiplier applied to the shell entity copy). |
| cl_vis_items_style | 0=off / 1=shell overlay / 2=base-model tint / 3=shell + tint | Item highlight style. 0 disables. 1 draws a coloured shell only (classic visual look). 2 tints the base model colour. 3 does both. |
| cl_vis_keys | 0=off / 1=on | Highlight keys and mission items. |
| cl_vis_keys_color | #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | Highlight color: keys. |
| cl_vis_overlay_batch | 0/1 (0 = High, 1 = Performance) | Graphics quality vs performance for item highlight overlays. 0 = High: stable legacy renderer (default). 1 = Performance: batched glDrawElementsInstanced renderer for higher FPS. Current Performance mode is opt-in and may show frame-to-frame flicker with cl_vis_items_style 3 (shell+tint) until the redesigned combined-safe renderer lands. Local CVAR_Q2PROXCFG_LOCAL — mod-local during normal play, routes to demo_visual cfg during .dm2/.mvd2 playback. |
| cl_vis_overlay_batch_debug | default 0 / 0=not requested / 1=batch path was requested at startup outside a config (session only) (diagnostic, current session only) | Session-only marker of the experimental item-highlight batch request. When cl_vis_overlay_batch is enabled at startup from the command line, the archived value is reset to the accepted 0 baseline and this diagnostic records the request for the current session. The experimental batched renderer itself is toggled live with cl_vis_overlay_batch; this marker carries no additional behaviour of its own. Never read from a config and never written by any config or preset writer; after a restart it is off again. |
| cl_vis_player_model_color_<model> | #RRGGBB or empty (auto palette fallback) | DYNAMIC cvar prefix. For each player model directory (male / female / cyborg / custom players/<model>) you can set an override color used by cl_vis_players_mode = 6 (model). Created lazily — only when you assign a color via the menu, console command, or a pre-loaded cfg. Missing / empty value means: use the automatic palette fallback derived from the model name. Local CVAR_Q2PROXCFG_LOCAL — routes to mod-local cfg during normal play and to demo_visual cfg during .dm2/.mvd2 playback. Commands: cl_vis_player_models_info (list), cl_vis_player_model_color <model> <#RRGGBB/preset/reset> (set/reset one), cl_vis_player_model_colors_reset (clear all overrides). |
| cl_vis_player_parts | legacy; use cl_vis_players_mode 7 | Legacy compatibility cvar from the first body-part tint prototype. Runtime activation is now controlled by cl_vis_players_mode = 7 (model parts), so cl_vis_players_mode = 6 always remains the old uniform model-colour mode. |
| cl_vis_player_parts_<male/female/cyborg>_<part>_color | Global or named colour | Per-model colour choice for male/female/cyborg body parts. <part> is head, arms, torso, legs or weapon. Effective when the colour set is Per model; choosing Global reuses the shared colour for that part. |
| cl_vis_player_parts_alpha | 0..1; step 0.05 | Part fill opacity; 0 hides the fill while keeping bloom. |
| cl_vis_player_parts_arms | 0=off / 1=on (default) | Player part tint: colour the arms zone. The master switch is cl_vis_player_parts; the colour comes from cl_vis_player_parts_arms_color (or the per-model choice). |
| cl_vis_player_parts_arms_color | #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | Shared arms color. |
| cl_vis_player_parts_arms_side | 0..1 (default 0.58) | Player part tint (procedural zones): how far from the body axis (normalized radius) a point inside the arms height band counts as arm rather than torso. |
| cl_vis_player_parts_arms_softness | 0..1 (default 0.12) | Player part tint (procedural zones): width of the soft edges at the bottom and top of the arms zone (cl_vis_player_parts_arms_z_min / _z_max). |
| cl_vis_player_parts_arms_value | multiplier (default 1.05); no effect in this build | Player part tint: brightness shift of the arms colour for the derived colour source. Reserved: the current sources (global / per model) do not read it. |
| cl_vis_player_parts_arms_z_max | 0..1 (default 0.78) | Player part tint (procedural zones): normalized height where the arms zone ends. |
| cl_vis_player_parts_arms_z_min | 0..1 (default 0.38) | Player part tint (procedural zones): normalized height where the arms zone starts. |
| cl_vis_player_parts_brightness | 0..10 (default 1.0) | Player part tint: brightness gain of the part colours (1 = as chosen; higher is brighter). |
| cl_vis_player_parts_cyborg_arms_color | global=Global / #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | cyborg arms color. |
| cl_vis_player_parts_cyborg_head_color | global=Global / #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | cyborg head color. |
| cl_vis_player_parts_cyborg_legs_color | global=Global / #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | cyborg legs color. |
| cl_vis_player_parts_cyborg_torso_color | global=Global / #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | cyborg torso color. |
| cl_vis_player_parts_cyborg_weapon_color | global=Global / #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | cyborg carried-weapon color override. |
| cl_vis_player_parts_debug | default 0 / 0=off, >0=overlay (diagnostic, current session only) | Developer-only: player-part visibility (highlights) diagnostic overlay. 0=off. Not archived, no menu; zero cost at 0. |
| cl_vis_player_parts_female_arms_color | global=Global / #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | female arms color. |
| cl_vis_player_parts_female_head_color | global=Global / #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | female head color. |
| cl_vis_player_parts_female_legs_color | global=Global / #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | female legs color. |
| cl_vis_player_parts_female_torso_color | global=Global / #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | female torso color. |
| cl_vis_player_parts_female_weapon_color | global=Global / #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | female carried-weapon color override. |
| cl_vis_player_parts_fullbright | 0=off / 1=on | Use raw part colours without multiplying by the skin texture. |
| cl_vis_player_parts_head | 0=off / 1=on (default) | Player part tint: colour the head zone. The master switch is cl_vis_player_parts; the colour comes from cl_vis_player_parts_head_color (or the per-model choice). |
| cl_vis_player_parts_head_color | #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | Shared head color. |
| cl_vis_player_parts_head_color / arms_color / torso_color / legs_color / weapon_color | named colour | Shared colours for the head, arms, torso, legs and carried weapon. The guided menu shows these as named colour choices and applies them live. The weapon colour is used only when cl_vis_player_parts_weapon_source = 1; default carried-weapon tint comes from the existing weapon-highlight palette. |
| cl_vis_player_parts_head_start | default 0.86 / range 0.60..0.98 | Normalized height where the head tint starts. Increase this when the head colour leaks onto shoulders; decrease it if the lower head/neck is not coloured enough. Default 0.86 is tighter than the first Phase-A prototype. |
| cl_vis_player_parts_head_value | multiplier (default 1.20); no effect in this build | Player part tint: brightness shift of the head colour for the derived colour source. Reserved: the current sources (global / per model) do not read it. |
| cl_vis_player_parts_identity | 0=slot / 1=name (default) / 2=model / 3=off; no effect in this build | Player part tint: which identity picks a head colour for the identity-head source (slot, name or model). Reserved: the current sources (global / per model) do not read it. |
| cl_vis_player_parts_legs | 0=off / 1=on (default) | Player part tint: colour the legs zone. The master switch is cl_vis_player_parts; the colour comes from cl_vis_player_parts_legs_color (or the per-model choice). |
| cl_vis_player_parts_legs_color | #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | Shared legs color. |
| cl_vis_player_parts_legs_end | 0.20..0.65; step 0.005 | Normalized top of the legs zone. |
| cl_vis_player_parts_legs_value | multiplier (default 0.90); no effect in this build | Player part tint: brightness shift of the legs colour for the derived colour source. Reserved: the current sources (global / per model) do not read it. |
| cl_vis_player_parts_male_arms_color | global=Global / #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | male arms color. |
| cl_vis_player_parts_male_head_color | global=Global / #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | male head color. |
| cl_vis_player_parts_male_legs_color | global=Global / #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | male legs color. |
| cl_vis_player_parts_male_torso_color | global=Global / #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | male torso color. |
| cl_vis_player_parts_male_weapon_color | global=Global / #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | male carried-weapon color override. |
| cl_vis_player_parts_mask_mode | 0=procedural / 1=mask or procedural (default) / 2=mask only | Player part tint: how body zones are found. Procedural = height/shape thresholds; mask-or-procedural = a model's part mask when it exists, else procedural; mask only = models without a mask are not part-tinted. |
| cl_vis_player_parts_no_shell | 0=keep outline (default) / 1=disable outline | In Model+parts mode, suppress the whole-model outline and its additive emission. Part colours and their bloom remain active. Independent of Replace tint; ignored in other player colour modes. |
| cl_vis_player_parts_replace_tint | 0=off / 1=on | Replace the legacy whole-player tint with part tint instead of stacking both. |
| cl_vis_player_parts_softness | default 0.035 / range 0.005..0.20 | Soft transition width for head/torso/legs classifier. Smaller values produce cleaner borders; larger values blend colours more gradually. Default 0.035 reduces head colour bleed on shoulders. |
| cl_vis_player_parts_source | 0=global / 3=per model | Colour set for player part tinting. Global uses one shared set of head/arms/torso/legs/weapon colours. Per-model lets male/female/cyborg use their own colour choices, with Global as the fallback choice for any part. |
| cl_vis_player_parts_torso | 0=off / 1=on (default) | Player part tint: colour the torso zone. The master switch is cl_vis_player_parts; the colour comes from cl_vis_player_parts_torso_color (or the per-model choice). |
| cl_vis_player_parts_torso_color | #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | Shared torso color. |
| cl_vis_player_parts_torso_value | multiplier (default 1.00); no effect in this build | Player part tint: brightness shift of the torso colour for the derived colour source. Reserved: the current sources (global / per model) do not read it. |
| cl_vis_player_parts_view_weapon | 0=off (default) / 1=on; no effect in this build | Player part tint: tint your own first-person weapon too. Reserved: not used in this build. |
| cl_vis_player_parts_weapon | 0=off / 1=on (default) | Player part tint: colour the weapon zone. The master switch is cl_vis_player_parts; the colour comes from cl_vis_player_parts_weapon_color (or the per-model choice). |
| cl_vis_player_parts_weapon_color | #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | Carried weapon custom color. |
| cl_vis_player_parts_weapon_source | 0=weapon palette / 1=custom | Carried-weapon colour source for model-parts mode. 0 uses the existing weapon-highlight palette (railgun colour from cl_vis_weapon_railgun_color, rocket launcher from cl_vis_weapon_rocket_color, etc.). 1 uses the custom weapon colour from cl_vis_player_parts_weapon_color / per-model weapon colour. |
| cl_vis_player_parts_weapon_value | multiplier (default 1.10); no effect in this build | Player part tint: brightness shift of the weapon colour for the derived colour source. Reserved: the current sources (global / per model) do not read it. |
| cl_vis_players | 0=no player highlight / 1=highlight players | Highlight other players with a colour shell / tint, classified per cl_vis_players_mode. Works with all / random-FFA / duel / auto / team / model colouring modes. Off by default. Local CVAR_Q2PROXCFG_LOCAL — mod-local during normal play, routes to demo_visual cfg during .dm2/.mvd2 playback. |
| cl_vis_players_alpha | 0..1 | Player highlight alpha. |
| cl_vis_players_auto_fallback | 1=all / 2=random FFA (default) | Fallback mode used when cl_vis_players_mode = auto and neither team nor duel can be committed. Stored numerically. Default 2. |
| cl_vis_players_brightness | 0..4 (1 neutral) | Player highlight brightness multiplier. |
| cl_vis_players_color | #RRGGBB | Solid-mode player highlight colour. |
| cl_vis_players_duel_hold_ms | 0..10000 (ms) | Duel-mode pair-hold time in ms — once the two duelling players are identified, that pair stays locked for this many ms even across brief identification gaps. |
| cl_vis_players_duel_primary_color | #RRGGBB | Duel-mode primary colour (first of the two duelling players identified). |
| cl_vis_players_duel_secondary_color | #RRGGBB | Duel-mode secondary colour (second of the two duelling players). |
| cl_vis_players_mode | 0=off / 1=all / 2=random FFA / 3=duel / 4=auto / 5=team / 6=model / 7=model parts | Player highlight classification mode. 0=off; 1=all; 2=random FFA; 3=duel; 4=auto; 5=team; 6=model (old uniform colour per resolved player-model directory); 7=model parts (separate head/arms/torso/legs/weapon colours, with detailed controls in Player part colors). |
| cl_vis_players_scale | 0.1..5.0 (default 1.0 = stock size) | Q2PRO-X player model scale boost. Multiplies ent.scale for every player entity before submission, so players appear larger/smaller than stock. Applied ONLY in single-player (cl.maxclients == 1) or during .dm2/.mvd2 demo playback — on a live deathmatch server (deathmatch >= 1) the value is silently ignored and the stock size is used, preserving competitive parity. In demo playback the recorded match's deathmatch setting does NOT matter: the user is watching, not competing, so the boost applies even for dm recordings. Culling is kept honest by setting ent.cull_scale to the base size so frustum culling still uses the stock bounds. Local CVAR_Q2PROXCFG_LOCAL — during demo playback, edits autosave to baseq2/q2pro-x/demo_visual/q2pro-x.demo.cfg (the same dedicated visual profile as every other local visual cvar). |
| cl_vis_players_self | 0=do not tint self / 1=tint self | Also highlight the local player (visible in third-person / chasecam only). |
| cl_vis_players_shell_alpha | 0..1 | Alpha of the colour-shell pass for player highlights. |
| cl_vis_players_shell_scale | 0.5..3.0 | Scale of the colour-shell pass for player highlights. |
| cl_vis_players_style | 0=off / 1=shell overlay / 2=base-model tint / 3=shell + tint | Player highlight render style — same taxonomy as cl_vis_items_style. |
| cl_vis_players_team_enemy_color | #RRGGBB | Team-mode enemy player colour. |
| cl_vis_players_team_fallback | 1=all / 2=random FFA / 3=duel (default) | Fallback mode used when cl_vis_players_mode = team and the team adapter cannot commit an assignment (source off, spectators mid-connect, warmup). Stored numerically. Default 3. |
| cl_vis_players_team_friendly_color | #RRGGBB | Team-mode friendly player colour. |
| cl_vis_players_team_hold_ms | 0..10000 (ms) | Team-mode assignment hold time in ms — keeps the assigned side visible for this long even if the team data source briefly goes stale. |
| cl_vis_players_team_source | 0=off / 1=auto (skin-based) / 2=opentdm | Team-mode team detection source. 0 disables the team adapter entirely (team mode then immediately falls back via cl_vis_players_team_fallback). 1 runs the generic auto adapter that infers teams from skin group names (red/blue, team1/team2, tagged skins). 2 targets OpenTDM specifically — reads OpenTDM's team assignment protocol when the server identifies as OpenTDM. Stored numerically. |
| cl_vis_powerups | 0=off / 1=on | Highlight powerups (Quad, Invulnerability, etc.). |
| cl_vis_powerups_color | #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | Highlight color: powerups. |
| cl_vis_singleplayer | 0=multiplayer only / 1=also singleplayer | Also apply the visibility layer in singleplayer. When off, the highlight system only activates in multiplayer maps (cl.maxclients > 1) since most classic SP players dislike shell overlays on AI. |
| cl_vis_weapon_bfg | 0=off / 1=on | Highlight BFG10K pickups. |
| cl_vis_weapon_bfg_color | #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | Highlight color: BFG10K. |
| cl_vis_weapon_chaingun | 0=off / 1=on | Highlight Chaingun pickups. |
| cl_vis_weapon_chaingun_color | #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | Highlight color: Chaingun. |
| cl_vis_weapon_grenade | 0=off / 1=on | Highlight Grenade Launcher pickups. |
| cl_vis_weapon_grenade_color | #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | Highlight color: Grenade Launcher. |
| cl_vis_weapon_hyperblaster | 0=off / 1=on | Highlight HyperBlaster pickups. |
| cl_vis_weapon_hyperblaster_color | #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | Highlight color: HyperBlaster. |
| cl_vis_weapon_machinegun | 0=off / 1=on | Highlight Machinegun pickups. |
| cl_vis_weapon_machinegun_color | #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | Highlight color: Machinegun. |
| cl_vis_weapon_railgun | 0=off / 1=on | Highlight Railgun pickups. |
| cl_vis_weapon_railgun_color | #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | Highlight color: Railgun. |
| cl_vis_weapon_rocket | 0=off / 1=on | Highlight Rocket Launcher pickups. |
| cl_vis_weapon_rocket_color | #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | Highlight color: Rocket Launcher. |
| cl_vis_weapon_shotgun | 0=off / 1=on | Highlight Shotgun pickups. |
| cl_vis_weapon_shotgun_color | #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | Highlight color: Shotgun. |
| cl_vis_weapon_sshotgun | 0=off / 1=on | Highlight Super Shotgun pickups. |
| cl_vis_weapon_sshotgun_color | #1f1f1f=Dark / #999999=Grey / #cc9933=Brown / #993333=Dark red / #ff0000=Red / #ff6633=Orange / #ffcc00=Gold / #ffff00=Yellow / #99cc33=Green-yellow / #00ff00=Green / #33ff33=Lime / #00ff00=Pure green / #00ff66=Mint / #00ffff=Cyan / #10ccff=Sky / #66ffff=Aqua / #0000ff=Blue / #3399ff=Azure / #ff00ff=Magenta / #af00ff=Violet / #ffffff=White; custom #RRGGBB | Highlight color: Super Shotgun. |
| cl_vis_weapons | 0=no dropped-weapon highlight / 1=highlight dropped weapons | Highlight dropped weapon pickups specifically (subset of items, controlled independently for finer control). |
| cl_vis_weapons_scale | 0.5..3.0 (1 = stock size) | Dropped weapon scale boost applied before submission. |
| cl_weaponfx_vis_enable | 0=WFX layer neutral, legacy cvars only / 1=WFX layer active (default) | Master toggle for the Q2PRO-X Weapon Parts Visibility filter. When off the entire WFX layer is neutral (legacy cvars alone decide), so there is zero behavioural drift for users who never touch the new submenu. When on, the source and component toggles below become active. |
| cl_weaponfx_vis_explosion_light | 0=hide explosion dynamic light / 1=show explosion dynamic light (default) | Dynamic light from explosions (the ex->light field on the explosion_t). When off, the explosion model still draws if cl_weaponfx_vis_explosion_visual is on, but the bright dlight contribution is suppressed. |
| cl_weaponfx_vis_explosion_particles | 0=hide explosion particles / 1=show explosion particles (default) | Explosion debris / smoke particles (CL_ExplosionParticles). Independent from the main explosion sprite — you can keep the bright flash but drop particles, or vice versa. Legacy cl_disable_particles still applies. |
| cl_weaponfx_vis_explosion_visual | 0=hide explosion sprite / 1=show explosion sprite (default) | Explosion sprite / model (ex_poly / ex_misc). Gates predicted explosion visuals (CL_GhostRocketExplosion, CL_GhostHBImpact glow) and TE_ROCKET_EXPLOSION / TE_GRENADE_EXPLOSION server visuals. Independent from explosion particles and explosion light below. |
| cl_weaponfx_vis_hit_markers | 0=hide HUD hit marker / 1=show HUD hit marker (default) | HUD hit marker visibility (the crosshair cross/ring that flashes when you land a hit). When off, the HUD marker no longer appears for TE_DAMAGE_DEALT events. The hit-marker sound level stays controlled by cl_hit_markers (0 none, 1 marker only, 2 marker + sound) so you can keep the sound confirmation while hiding the on-screen element. |
| cl_weaponfx_vis_hitscan | 0=hide hitscan beam/tracer / 1=show hitscan beam/tracer (default) | Rail beam and any other tracer-like direct-fire visual path. Gates CL_GhostRailTrail for the predicted side and the TE_RAILTRAIL[2] handler for the server side. Sounds (rail fire / impact) stay unaffected. |
| cl_weaponfx_vis_impact_flesh | 0=hide blood/flesh impacts / 1=show blood/flesh impacts (default) | Blood / flesh-hit visuals. Gates the predicted side (ghost_shotgun_pellet / ghost_cg_bullet flesh particles) and the TE_BLOOD server handler. Kept separate from wall impacts so blood visuals can be hidden independently for screenshot / recording use. |
| cl_weaponfx_vis_impact_wall | 0=hide wall impacts / 1=show wall impacts (default) | Wall / world impact visuals: bullet sparks, shotgun puffs, blaster wall flash, HB impact glow. Gates both predicted (ghost_bullet_hit_wall, CL_GhostShotgunHit, CL_GhostHBImpact) and server TE handlers (TE_GUNSHOT, TE_SHOTGUN, TE_BLASTER[2]). Ricochet / impact sounds always fire. |
| cl_weaponfx_vis_muzzle | 0=hide muzzle flash / 1=show muzzle flash (default) | Muzzle flash model / sprite visual. Gates the CL_AddWeaponMuzzleFX / CL_AddPredictedWeaponMuzzleFX / CL_AddMuzzleFX helpers so the muzzle model is drawn only when on. Legacy cl_muzzleflashes still applies on top — setting it to 0 hides muzzles regardless of this cvar. |
| cl_weaponfx_vis_muzzle_light | 0=hide muzzle dynamic light / 1=show muzzle dynamic light (default) | Dynamic light spawned alongside the muzzle flash (cdlight slot). Independent from the muzzle visual so you can keep the flash model but drop the bright dlight. When off, CL_MuzzleFlash / CL_MuzzleFlash2 zero the dlight slot after the per-weapon switch has set colour and radius. |
| cl_weaponfx_vis_other | 0=hide other players' FX / 1=show other players' FX (default) | Show weapon FX from other players, monsters, and any foreign source that cannot be confidently classified as our own fire path. Turning this off hides remote projectiles/trails/impacts/explosions while leaving your own unaffected — useful for screenshot captures or low-distraction play. |
| cl_weaponfx_vis_own_predicted | 0=hide own predicted FX / 1=show own predicted FX (default) | Show local ghost / predicted weapon FX emitted immediately by the Q2PRO-X weapon-predict subsystem (muzzles, projectile ghosts, predicted impacts, predicted explosions). Turning this off hides predicted visuals while keeping the admission gate and suppress-bail untouched — the server copy then passes through per the predict-aware handoff rule (TZ §9.1). |
| cl_weaponfx_vis_own_server | 0=hide own server FX / 1=show own server FX (default) | Show authoritative server FX that belong to the local player's own fire path (your muzzle flashes, your rocket entity, your rail beam as sent by the server). Turning this off hides your own server copy entirely; combined with own_predicted off, fully silences your own visible fire without breaking sound. |
| cl_weaponfx_vis_projectiles | 0=hide projectile models / 1=show projectile models (default) | Projectile model and its inherent glow (rocket, blaster bolt, hyperblaster bolt, grenade, BFG ball). Gates both the predicted ghost model (Ghost_AddToScene, ghost_hb_bolts_add_to_scene) and the server entity render path in entities.c. Trails are controlled separately by cl_weaponfx_vis_trails. |
| cl_weaponfx_vis_trails | 0=hide projectile trails / 1=show projectile trails (default) | Projectile trails for rocket, grenade, blaster, BFG. Gates both predicted (ghost rocket trail in Ghost_AddToScene) and server-side trails (EF_ROCKET/EF_BLASTER/EF_GRENADE/EF_BFG branches in entities.c). Legacy cl_disable_particles bits still apply on top. |
Item timers
Variables in this section: 53.
| Variable | Accepted values | Description |
|---|---|---|
| cl_demo_item_timers_adaptive_colors | 0=off (default) / 1=on | Adaptive timer colours — when on, world labels / strip text / countdown rings borrow the configured item-highlight palette (cl_vis_*_color) instead of the legacy hardcoded colours. Off by default. Adaptive mode is render-time only — does NOT rewrite or reset the per-item manual colour cvars (cl_demo_item_timers_*_text_color / *_ring_color). Demo-only — has no effect outside demo playback. LOCAL scope (demo_visual cfg). |
| cl_demo_item_timers_adrenal_ring_color | inherit (default) / #RRGGBB | Manual timer ring colour for Adrenaline. |
| cl_demo_item_timers_adrenal_text_color | inherit (default) / #RRGGBB | Manual timer text colour for Adrenaline. |
| cl_demo_item_timers_armor_body_ring_color | inherit (default) / #RRGGBB | Manual timer ring colour for the red body armor. |
| cl_demo_item_timers_armor_body_text_color | inherit (default) / #RRGGBB | Manual timer text colour for the red body armor. |
| cl_demo_item_timers_armor_combat_ring_color | inherit (default) / #RRGGBB | Manual timer ring colour for the yellow combat armor. |
| cl_demo_item_timers_armor_combat_text_color | inherit (default) / #RRGGBB | Manual timer text colour for the yellow combat armor. |
| cl_demo_item_timers_armor_jacket_ring_color | inherit (default) / #RRGGBB | Manual timer ring colour for the green jacket armor. Same rules as the matching *_text_color. |
| cl_demo_item_timers_armor_jacket_text_color | inherit (default) / #RRGGBB | Manual timer text colour for the green jacket armor. inherit (default) = use the legacy text colour (gold for armor) for that draw path. Any other value parses as #RRGGBB or named colour and overrides the legacy colour. Beaten by cl_demo_item_timers_adaptive_colors=1. Demo-only LOCAL. |
| cl_demo_item_timers_bfg_ring_color | inherit (default) / #RRGGBB | Manual timer ring colour for BFG10K. |
| cl_demo_item_timers_bfg_text_color | inherit (default) / #RRGGBB | Manual timer text colour for BFG10K. |
| cl_demo_item_timers_breather_ring_color | inherit (default) / #RRGGBB | Manual timer ring colour for Rebreather. |
| cl_demo_item_timers_breather_text_color | inherit (default) / #RRGGBB | Manual timer text colour for Rebreather. |
| cl_demo_item_timers_enviro_ring_color | inherit (default) / #RRGGBB | Manual timer ring colour for Environment Suit. |
| cl_demo_item_timers_enviro_text_color | inherit (default) / #RRGGBB | Manual timer text colour for Environment Suit. |
| cl_demo_item_timers_invuln_ring_color | inherit (default) / #RRGGBB | Manual timer ring colour for Invulnerability / pent. |
| cl_demo_item_timers_invuln_text_color | inherit (default) / #RRGGBB | Manual timer text colour for Invulnerability / pent. |
| cl_demo_item_timers_megahealth_ring_color | inherit (default) / #RRGGBB | Manual timer ring colour for Mega Health. |
| cl_demo_item_timers_megahealth_text_color | inherit (default) / #RRGGBB | Manual timer text colour for Mega Health. |
| cl_demo_item_timers_power_screen_ring_color | inherit (default) / #RRGGBB | Manual timer ring colour for Power Screen. |
| cl_demo_item_timers_power_screen_text_color | inherit (default) / #RRGGBB | Manual timer text colour for Power Screen. |
| cl_demo_item_timers_power_shield_ring_color | inherit (default) / #RRGGBB | Manual timer ring colour for Power Shield. |
| cl_demo_item_timers_power_shield_text_color | inherit (default) / #RRGGBB | Manual timer text colour for Power Shield. |
| cl_demo_item_timers_quad_ring_color | inherit (default) / #RRGGBB | Manual timer ring colour for Quad Damage. |
| cl_demo_item_timers_quad_text_color | inherit (default) / #RRGGBB | Manual timer text colour for Quad Damage. Adaptive uses the shared powerup colour. |
| cl_demo_item_timers_railgun_ring_color | inherit (default) / #RRGGBB | Manual timer ring colour for Railgun. |
| cl_demo_item_timers_railgun_text_color | inherit (default) / #RRGGBB | Manual timer text colour for Railgun. |
| cl_demo_item_timers_rocket_launcher_ring_color | inherit (default) / #RRGGBB | Manual timer ring colour for Rocket Launcher. |
| cl_demo_item_timers_rocket_launcher_text_color | inherit (default) / #RRGGBB | Manual timer text colour for Rocket Launcher. |
| cl_demo_item_timers_show_adrenal | 0=hide / 1=show (default) | Track and draw Adrenaline (items/adrenal). |
| cl_demo_item_timers_show_armor_green | 0=hide / 1=show (default) | Track and draw the green jacket armor (items/armor/jacket). Applies to ghost model, 3D countdown label, and demo player items strip. |
| cl_demo_item_timers_show_armor_red | 0=hide / 1=show (default) | Track and draw the red body armor (items/armor/body). |
| cl_demo_item_timers_show_armor_yellow | 0=hide / 1=show (default) | Track and draw the yellow combat armor (items/armor/combat). |
| cl_demo_item_timers_show_bfg | 0=hide (default) / 1=show | Track and draw BFG10K pickups (g_bfg). Off by default. |
| cl_demo_item_timers_show_breather | 0=hide / 1=show (default) | Track and draw Rebreather (items/breather). |
| cl_demo_item_timers_show_enviro | 0=hide / 1=show (default) | Track and draw Environment Suit (items/enviro). |
| cl_demo_item_timers_show_invuln | 0=hide / 1=show (default) | Track and draw Invulnerability / pent (items/invulner). |
| cl_demo_item_timers_show_megahealth | 0=hide / 1=show (default) | Track and draw Mega Health (items/mega_h) — timed pickup, strategically valuable in duels. |
| cl_demo_item_timers_show_power_screen | 0=hide / 1=show (default) | Track and draw Power Screen (items/armor/screen) — defensive pickup with respawn. |
| cl_demo_item_timers_show_power_shield | 0=hide / 1=show (default) | Track and draw Power Shield (items/armor/shield) — defensive pickup with respawn. |
| cl_demo_item_timers_show_quad | 0=hide / 1=show (default) | Track and draw Quad Damage (items/quaddama). |
| cl_demo_item_timers_show_rail | 0=hide (default) / 1=show | Track and draw Railgun pickups (g_rail). Off by default. |
| cl_demo_item_timers_show_rl | 0=hide (default) / 1=show | Track and draw Rocket Launcher pickups (g_rocket). Off by default — weapon respawns are less often the focus of analytic viewing. |
| cl_demo_item_timers_show_silencer | 0=hide / 1=show (default) | Track and draw Silencer (items/silencer). |
| cl_demo_item_timers_silencer_ring_color | inherit (default) / #RRGGBB | Manual timer ring colour for Silencer. |
| cl_demo_item_timers_silencer_text_color | inherit (default) / #RRGGBB | Manual timer text colour for Silencer. |
| cl_demo_item_timers_strip_alpha | float 0..1, default 0.9 | Item-timer strip background opacity (0 = invisible, 1 = fully opaque). Controls only the strip cells; 3D ghost/label opacity lives in cl_demo_item_timers_world_alpha. |
| cl_demo_item_timers_strip_pillarbox_workspace | 0=viewport only (default) / 1=full window incl. pillarbox | When on (1), the strip's drag-position coordinates are measured from the full window including letterbox / pillarbox bars. When off (0, default), coordinates are relative to the game viewport only. Useful on ultrawide displays with pillarbox rendering to park the strip in the black bars. |
| cl_demo_item_timers_strip_x | integer, -1 = auto (default) | Item-timer strip X position in HUD-pixel coordinates. Normally set automatically by the demo_item_timers_strip_edit drag command; -1 means use the default placement (above the demo player transport bar). Global scope — UI placement survives across demos and is not part of the demo-visual profile. |
| cl_demo_item_timers_strip_y | integer, -1 = auto (default) | Item-timer strip Y position in HUD-pixel coordinates. See cl_demo_item_timers_strip_x for details. |
| cl_demo_item_timers_world | 0=off (default) / 1=world only / 2=strip only / 3=both | Master switch for the demo item respawn timer layer. 0 = off. 1 = world only (translucent ghost models of the real items + projected 3D countdown labels — NO demo player strip). 2 = strip only (demo player items strip with per-item icon + countdown — NO 3D ghosts / labels). 3 = both (world layer + strip layer together). Respawn intervals are derived from observed hidden->visible cycles in the MVD pre-scan — no hardcoded item timers. If no complete cycle has been observed yet, the countdown renders ? instead of a fake value. Ready items never get a 3D overlay — their real model is already drawn by the server. Each item type has its own toggle (cl_demo_item_timers_show_*); armor and powerups default on, weapons default off. MVD2 demos only; .dm2 demos show the honest MVD-only status with no data. |
| cl_demo_item_timers_world_alpha | float 0..1, default 0.4 | Opacity of ghost item models and projected countdown labels in the 3D scene (modes 1 and 3). 0 = invisible (also disables the world layer entirely for performance). 1 = fully opaque. Does NOT affect the demo player items strip — the strip has its own independent opacity in cl_demo_item_timers_strip_alpha. |
| cl_demo_item_timers_world_scale | float 0.25..3.0, default 1.0 | Size multiplier for the translucent ghost model in the 3D scene. 0.25 = quarter size, 1.0 = real item size (default), 3.0 = triple size. Text label scale is not affected by this cvar. |
Mods, HUD and overlays
Variables in this section: 64.
| Variable | Accepted values | Description |
|---|---|---|
| cl_hud_font_mode | 0=legacy / 1=Iskra Cyrillic (default) | Q2PRO-X HUD/local-overlay typography. 0 = legacy conchars. 1 = Iskra Cyrillic fixed-cell (default). Wired trusted surfaces: net autoport indicator, demo item timer screen labels, demo analytics overview panel, screen.c local labels (demo bar progress + time stamp, LAGHAX overlay rows, pred:/phys: extra-line stats), OpenTDM team HUD trusted chrome (title, column headers, '(no teammates)' empty-state, internally-formatted HP/AR/PA/AGE numeric stats). Untrusted/raw paths stay byte-exact: server-supplied layout strings, MVD raw bytes, scoreboard player names, configstring-derived weapon strings, last-message chat, voted strings, server centerprints — these are explicitly NOT routed through Iskra and continue to use the existing legacy / SCR_DrawStringDual UTF-8 safety paths. Atlas-load failure falls back to legacy. |
| cl_mod_skin_override | 0=off (default, real server skins) / 1=local override active | Q2PRO-X mod-local player skin override (master enable). When on, the local render path and local sexed-sound resolver can substitute a chosen model/skin for the local player and/or for everyone else, without modifying server userinfo or rewriting CS_PLAYERSKINS. Other clients on the server never see the substitution; scoreboard names and player slots are unchanged; server-side mod gender logic is untouched (mods still derive gender from real userinfo). Local jump / pain / death sexed sounds follow the override when matching assets exist, with legacy fallback. Per-side gates (cl_mod_skin_override_apply_self / _apply_others) refine when each substitution applies. Saved at the active mod level (CVAR_Q2PROXCFG_LOCAL -> <gamedir>/q2pro-x/q2pro-x.cfg), so OpenFFA and OpenTDM keep separate overrides. When the master is on AND the override target model+skin resolves successfully, the chosen clientinfo wins over cl_noskins for that side — the user explicitly opted in. |
| cl_mod_skin_override_apply_others | 0=skip others override / 1=apply others override (default) | Q2PRO-X mod-local skin override — per-side gate for ALL OTHER players. Default 1. Setting to 0 disables the others substitution while the master cl_mod_skin_override stays on — useful for quickly seeing only the self override. |
| cl_mod_skin_override_apply_self | 0=skip self override / 1=apply self override (default) | Q2PRO-X mod-local skin override — per-side gate for the LOCAL player. Default 1. Setting to 0 disables the self substitution while the master cl_mod_skin_override stays on — useful for quickly comparing how the others-override looks while keeping the toggle armed. |
| cl_mod_skin_override_others | <empty> (default) / <model>/<skin> (e.g. male/grunt) | Q2PRO-X mod-local skin override — value for ALL OTHER players (every entity that is not the local player slot). Format is Quake II's standard <model>/<skin> (e.g. male/grunt). Empty string = no override for other players (real server skins and local sexed sounds kept). Applied when cl_mod_skin_override 1 AND cl_mod_skin_override_apply_others 1 AND the model+skin resolves on disk. This is one global substitution — every non-self player appears and sounds locally as the chosen model+skin/model; per-slot per-player overrides are intentionally out of scope for the first pass. Saved at the active mod level (CVAR_Q2PROXCFG_LOCAL). |
| cl_mod_skin_override_self | <empty> (default) / <model>/<skin> (e.g. female/athena) | Q2PRO-X mod-local skin override — value for the LOCAL player. Format is Quake II's standard <model>/<skin> (e.g. female/athena, male/grunt, cyborg/oni911). Empty string = no override for the local player (real server-resolved skin and local sexed sounds kept). Applied when cl_mod_skin_override 1 AND cl_mod_skin_override_apply_self 1 AND the model+skin resolves on disk; otherwise the local player keeps the real clientinfo and the snapshot prints no error. Useful for the TZ scenario cl_mod_skin_override_self female/athena paired with cl_mod_skin_override_others male/grunt on OpenFFA DM. Saved at the active mod level (CVAR_Q2PROXCFG_LOCAL). |
| cl_modhelp_alpha | 0..1 (0 = fully transparent, 1 = fully opaque) | Opacity of the mod command overlay background. Lower values make the overlay more transparent so you can see the game behind it. |
| cl_modhelp_compact | 0=full row spacing / 1=compact spacing | Use a compact row layout for the overlay so more entries fit on screen at once (tighter vertical spacing, shorter badges). |
| cl_modhelp_confirm_dangerous | 0=dispatch immediately / 1=confirm dangerous commands (default) | Ask for confirmation before executing commands flagged as dangerous (kickban, map reload, etc.). The overlay shows an inline yes/no prompt on the row before dispatching. |
| cl_modhelp_fullscreen | 0=compact pane / 1=fullscreen overlay | Expand the overlay to fill the whole screen instead of a compact pane. Useful for reading long descriptions or showing the pinned list alongside the active page. |
| cl_modhelp_keep_page | 0=return to default page / 1=remember last page | Remember the last opened page when the overlay is closed and re-opened within the same session. Off returns to the default landing page each time. |
| cl_modhelp_pins | string (comma-separated command names) | Comma-separated list of pinned command names the pinned-commands page always shows at the top, regardless of section visibility. Edited via the overlay UI; manual editing is supported. |
| cl_modhelp_prefer_context_page | 0=use last-viewed page / 1=auto-pick context page on open | When opening the overlay, auto-pick the page that matches the player's current context (team / spectator / admin) instead of the last-viewed page. |
| cl_modhelp_role | auto=detect from server / admin / player / spectator / caster / captain | Player role filter. auto detects role from server state (scoreboard, userinfo). admin / player / spectator / caster / captain force the overlay into that role view for previewing the commands available to that class. |
| cl_modhelp_scale | 0.5..3.0 (1.0 = default) | Overlay font and UI scale multiplier. Lower than 1.0 fits more content, higher than 1.0 is easier to read on 4K displays. |
| cl_modhelp_show_admin | 0=hide / 1=show | Show the admin commands page in the overlay (server management commands). |
| cl_modhelp_show_aliases | 0=hide / 1=show | Show the command aliases page listing alternative names for commands. |
| cl_modhelp_show_badges | 0=no badges / 1=show badges | Show role / danger / category badges next to each command row in the overlay. |
| cl_modhelp_show_general | 0=hide / 1=show | Show the general commands page (commands available to any connected player). |
| cl_modhelp_show_pinned | 0=normal first page / 1=pinned first | Show the pinned commands page first when the overlay opens. |
| cl_modhelp_show_spectator | 0=hide / 1=show | Show the spectator commands page (observer / chase-cam / scoreboard commands). |
| cl_modhelp_show_stats | 0=hide / 1=show | Show the stats commands page (personal and match statistics). |
| cl_modhelp_show_team | 0=hide / 1=show | Show the team / captain commands page (team join, captain actions, weapon drops). |
| cl_modhelp_show_voting | 0=hide / 1=show | Show the voting commands page (callvote / vote options / remaining time). |
| cl_modhelp_unavailable | show=always visible / gray=dimmed / hide=omitted | How the overlay displays commands that are currently unavailable in the active role / state. show always displays them normally. gray displays them dimmed. hide omits them entirely. |
| cl_modhelp_use_local | 0=server-provided help wins / 1=local override wins | Prefer local command database (q2pro.modhelp.local override file) over server-provided help. Useful when you maintain your own curated list or want to override an outdated server-provided entry. |
| cl_opentdm_team_hud | 0=hidden / 1=show HUD when on an OpenTDM team | Master enable for the passive OpenTDM Team HUD. Draws a compact same-team overlay showing each teammate's last-seen health/armor/power cells (from OpenTDM ID view), current weapon (decoded passively from the teammate's player entity, independent of cl_vwep), and optionally the last already-visible say_team line mirrored beside that teammate. Strictly client-only and strictly passive — never auto-issues console commands and never suppresses or alters the original console/chat output. Active only on OpenTDM while the local player is on TEAM_A/TEAM_B (not as spectator). |
| cl_opentdm_team_hud_alpha | 0..1 (0.85 default) | Team HUD opacity. Independent from scr_alpha. Final alpha is this value multiplied by the OLED UI-protection alpha (so the HUD respects user-level brightness protection identically to the laghax HUD). |
| cl_opentdm_team_hud_fresh_sec | 1..120 (default 10, never more than stale threshold) | How long passive teammate values remain in the fresh (green) stage before transitioning into yellow and then red. This value is clamped so it never exceeds the stale threshold. |
| cl_opentdm_team_hud_pillarbox_workspace | 0=HUD clamped to content rect / 1=allow placement in pillarbox bars | Allow the OpenTDM Team HUD to be placed into the pillarbox side bars (aspect-fit free area outside the content rect). Same semantics as the laghax pillarbox toggle. |
| cl_opentdm_team_hud_scale | 0.5..2.0 (1 = default) | Team HUD text scale multiplier. Independent from scr_scale: higher values make the overlay text larger and easier to read without changing the saved HUD position model. |
| cl_opentdm_team_hud_show_freshness | 0=hide freshness / 1=show freshness | Show a freshness / age indicator for passive teammate values. Fresh values are green, then transition to yellow and red as they age; once they pass the stale threshold they disappear from the HUD entirely. Useful because the HUD stays honest about what is still current vs. what has already expired. |
| cl_opentdm_team_hud_show_powerarmor | 0=H/A only / 1=H/A/P | Include power-armor cells (P) in the H/A/P column when the last ID-view update reported them. When off, the HUD shows only H/A. |
| cl_opentdm_team_hud_show_teamchat | 0=hide team-chat column / 1=show last teammate say_team line | Show the last already-visible say_team message beside the teammate who sent it. Passive HUD mirror only: uses normal PRINT_CHAT delivery, does not inject commands, and does not suppress the original console/chat output. |
| cl_opentdm_team_hud_show_weapon | 0=hide weapon column / 1=show weapon | Show the current-weapon column for each teammate. The weapon is decoded passively from the teammate's player-entity modelindex2/skinnum. This decoder works independently of cl_vwep — you do NOT need to render teammate vweps to get this column. |
| cl_opentdm_team_hud_stale_sec | 4..120 (default 20) | Seconds after which passive teammate values expire and are removed from the HUD. Before that they progress through green, yellow, and red freshness stages. |
| cl_opentdm_team_hud_width | 12..48 (18 default) | Width of the trailing LAST MSG area in character cells. Lets you stretch the overlay horizontally for longer teammate callouts without changing its position. |
| cl_opentdm_team_hud_x | any int (signed), -1 = default | OpenTDM Team HUD X position in HUD-pixel coordinates. Normally set automatically by the opentdm_team_hud_edit drag command; -1 means use the default placement. |
| cl_opentdm_team_hud_y | any int (signed), -1 = default | OpenTDM Team HUD Y position in HUD-pixel coordinates. Normally set automatically by the opentdm_team_hud_edit drag command; -1 means use the default placement. |
| cl_perf_hud | 0=off (default) / 1=show the HUD | Master switch for the Performance & Budget HUD: a compact column of live occupancy bars and measured CPU/GPU costs for the general frame, dynamic lighting and the AVFX families that are actually enabled. Informative only — it changes no visual quality, no budget and no game or network state. OFF is genuinely off: with 0 the HUD performs no timing call, issues no GPU query, increments no counter, builds no snapshot and draws nothing. It never enables cl_avfx_perf or gl_gpu_timers, and never reads or parses cl_avfx_info. |
| cl_perf_hud_active_only | 0=show every selected metric / 1=only active metrics (default) | Show only the metrics that are actually doing something right now. A family that is switched off, blocked by a parent, has no valid sample yet, or is simply empty this second is hidden — so puddle, runoff and snow rows disappear when it is neither raining nor snowing, instead of sitting there at zero. This is a PRESENTATION filter, not a collection one: a hidden metric is still measured, so it reappears the moment it becomes active, and a row survives a few seconds of idleness so the column does not blink. Turn it off to see the full selected set including the empty rows. |
| cl_perf_hud_alpha | 0..1 (0.85 default) | Opacity of the HUD background and text. Independent of scr_alpha: the widget owns its opacity, exactly like the laghax and OpenTDM HUDs. When OLED UI protection is active the final alpha is additionally modulated by it. |
| cl_perf_hud_ingame_only | 0=draw everywhere / 1=only on a loaded map (default) | Draw the Performance HUD only on a loaded, playing map. With it on the widget stays out of the main menu, the loading screen and the disconnected console, which is where its numbers describe nothing anyway. Visibility and collection are the same decision here: while the HUD is hidden by this option it also stops sampling, so it costs nothing outside a game. |
| cl_perf_hud_interval | 0.5..10.0 seconds (1.0 default) | How often the HUD publishes a new snapshot, in seconds. Each interval schedules one bounded four-frame sample burst plus a short GPU harvest window; between publications the cached snapshot is drawn as-is, with its age shown in the title. A longer interval is calmer and cheaper; a shorter one reacts faster. |
| cl_perf_hud_metrics_blackhole | 0=exclude the group / 1=include the group (default) | Include the black-hole group in the AVFX section: the black-hole and consumption masters plus the stage, field and composite GPU intervals. Deselecting the group unsubscribes those query slots entirely. |
| cl_perf_hud_metrics_fog_clouds | 0=exclude the group / 1=include the group (default) | Include the fog and clouds group in the AVFX section: volumetric fog state, volumetric clouds state and the clouds GPU interval. Volumetric fog has no isolated pass timer and is labelled shared with the world. |
| cl_perf_hud_metrics_player_contact | 0=exclude the group / 1=include the group (default) | Include the Player Contact group in the AVFX section: how many contact records are live out of the record pool, plus the separate GPU intervals for the contact surface pass, its model reflection replay and the wound batch. Deselecting the group unsubscribes those query slots entirely. |
| cl_perf_hud_metrics_postprocess_misc | 0=exclude the group / 1=include the group (default) | Include the postprocess and miscellaneous group in the AVFX section: the overlay and postprocess GPU intervals, active ambient audio loops and the atlas upload volume in KiB. Deselecting the group unsubscribes those query slots entirely. |
| cl_perf_hud_metrics_reflections | 0=exclude the group / 1=include the group (default) | Include the reflection group in the AVFX section: mirror surfaces plus the mirror SSR, planar capture and composite GPU intervals, and the reflection capture, puddle and water model-reflection intervals. Deselecting the group unsubscribes those query slots entirely. |
| cl_perf_hud_metrics_sky_celestial | 0=exclude the group / 1=include the group (default) | Include the sky group in the AVFX section: meteors, meteor trains and particles, meteor impacts and comets against their pool capacities, plus the spaceship, star and god-ray masters. Deselecting the group also stops collecting its probes. |
| cl_perf_hud_metrics_surface_materials | 0=exclude the group / 1=include the group (default) | Include the surface group in the AVFX section: the Surface Materials master (including wildlife) and the number of packed grass instances submitted this frame. Their shader cost runs inside the world and material passes and is labelled shared. |
| cl_perf_hud_metrics_water_puddles | 0=exclude the group / 1=include the group (default) | Include the water group in the AVFX section: puddles, puddle rings, runoff streams, foam bubbles, ripples, splashes, surface flow segments and the enhanced-water master, each against its real pool capacity. Deselecting the group also stops collecting its probes. |
| cl_perf_hud_metrics_weather_particles | 0=exclude the group / 1=include the group (default) | Include the weather group in the AVFX section: rain streaks and close drops, rain impacts, snow flakes and accumulated snow patches, ash and mist, lava steam and the per-frame contact events. Deselecting the group also stops collecting its probes, not just drawing its rows. |
| cl_perf_hud_pillarbox_workspace | 0=clamp to content rect / 1=allow the pillarbox bars | Allow the HUD to be placed into the pillarbox side bars (the aspect-fit free area outside the content rect). Same semantics as the laghax and OpenTDM pillarbox toggles. |
| cl_perf_hud_scale | 0.5..2.0 (1.0 default) | Text-size multiplier for this HUD only. Independent of scr_scale: a larger value makes the widget's glyphs bigger without changing the saved position model or any other HUD. |
| cl_perf_hud_show_budget | 0=hide the bars / 1=show the bars (default) | Draw the segmented occupancy bar column. Each bar has twelve fixed cells: filled cells grow left to right, unused cells stay neutral grey, zero fills none and any positive value fills at least one. Setting rows carry an explicit SET marker so a slider position is never mistaken for a resource budget. |
| cl_perf_hud_show_cost | 0=hide the cost column / 1=show it (default) | Show the whole cost column - everything to the right of the segmented bars, where each row states what it costs the CPU and the GPU or why that cost cannot honestly be attributed. Off leaves a compact list of names and values, which is what most people want once they have seen the costs a few times. The CPU and GPU switches below are refinements inside this column and do nothing while it is off. |
| cl_perf_hud_show_cpu | 0=hide CPU costs / 1=show CPU costs (default) | Show the measured CPU cost column. A cost is shown only where a producer owns a real timed interval; everything else prints a dash rather than a fabricated zero. Turning this off also stops the HUD from asking those producers to time themselves at all. |
| cl_perf_hud_show_general | 0=hide the section / 1=show the section (default) | Show the General / Frame section: frame time and FPS, scene entities and particles against their hard capacities, the AVFX overlay queue, worker threads, and the world/material GPU intervals. The section accent colour is cyan. |
| cl_perf_hud_show_gpu | 0=hide GPU costs / 1=show GPU costs (default) | Show the GPU cost column. Values come from the existing nonblocking GL_TIME_ELAPSED query ring: availability is checked before every read and the HUD never waits on the GPU. A pass with no isolated interval is labelled shared or not isolated, and a pass with no ready result reads warming or unsupported — never 0.000 ms. Turning this off stops the HUD subscribing to any query slot. |
| cl_perf_hud_show_in_menu | 0=hide while a menu is open / 1=stay visible over the menu (default) | Keep the Performance HUD visible while a menu is open. The widget draws after the menu, so by default it stays on top of it. Turn this off and the HUD steps aside whenever a menu is open - even on a loaded map - and comes back when the menu closes. While hidden this way it also stops sampling. |
| cl_perf_hud_show_lighting | 0=hide the section / 1=show the section (default) | Show the Dynamic Lighting section: the effective gl_dynamic mode, dynamic lights against MAX_DLIGHTS, the moving/lightning/map/spawn light slots against their real UBO capacities, flashlight and shadow-caster state, and the radius/softness/alpha/dark-boost settings. Its shader cost is shared with the world and material passes and is labelled as such. The section accent colour is amber. |
| cl_perf_hud_x | any int, -1 = default placement | HUD X position in HUD-pixel coordinates. Normally set automatically by dragging in perf_hud_edit; -1 means the default placement. |
| cl_perf_hud_y | any int, -1 = default placement | HUD Y position in HUD-pixel coordinates. Normally set automatically by dragging in perf_hud_edit; -1 means the default placement. |
Mouse, zoom and controls
Variables in this section: 25.
| Variable | Accepted values | Description |
|---|---|---|
| cl_mouse_behavior_mode | 0=q2pro (current default) / 1=r1q2 (compatibility, backend from m_directinput) | Global mouse behaviour mode. 0 (q2pro, default) keeps the current Q2PRO-X path: raw-input backend on Windows, transform = m_filter + (sensitivity + length(delta)*m_accel) + optional m_autosens FOV scaling, lookstrafe && !in_mlooking semantics. 1 (r1q2) is a compatibility mode for players migrating from R1Q2: classic transform (m_filter then sensitivity only, no m_accel, no m_autosens), R1Q2 lookstrafe && in_mlooking semantics. In r1q2 mode the backend is selected by m_directinput: 0 = legacy cursor-centered (GetCursorPos + recenter), 1/2 = DirectInput-like relative (raw-input accumulator, same source as q2pro). Changes are applied live; the backend switches on the next frame and clears any pending delta so the two sources never blend. |
| cl_zoom_ch_alpha | 0..1 (default 1.0) | Alpha channel (opacity) of the zoom crosshair. Applies whether the color is static or health-driven — the health path fills RGB but leaves alpha to this cvar. Default 1.0 (fully opaque). |
| cl_zoom_ch_blue | 0..1 (default 1.0) | Blue channel of the static zoom-crosshair color. Ignored when cl_zoom_ch_health is on. Default 1.0. |
| cl_zoom_ch_green | 0..1 (default 1.0) | Green channel of the static zoom-crosshair color. Ignored when cl_zoom_ch_health is on. Default 1.0. |
| cl_zoom_ch_health | 0=static color (default) / 1=color by current health | When enabled, colors the zoom crosshair by current player health — same gradient as the base ch_health (red at low HP, green-amber at mid HP, white/blue at full HP). Health lookup happens per-frame in SCR_SetCrosshairColor alongside the base-crosshair update, so the zoom cache is always in step with the live health and no stale frame is ever rendered. When this cvar is off (default), the static color from cl_zoom_ch_red/green/blue is used instead. |
| cl_zoom_ch_red | 0..1 (default 1.0) | Red channel of the static zoom-crosshair color. Ignored when cl_zoom_ch_health is on. Default 1.0 (full red, matching the base ch_red default) so a freshly-enabled zoom crosshair is immediately visible without tuning. |
| cl_zoom_ch_scale | 0.25..10.0 (default 1.0 = native pic size; menu step 0.1) | Scale of the zoom crosshair image, in the same units as ch_scale. Computed into a parallel width/height cache via an R_GetPicSize + Q_rint pass when the cvar changes — no per-frame cost at draw time. Only has visible effect when cl_zoom_crosshair_enable = 1 and +zoom is held. Menu range 0.25..10.0, step 0.1. |
| cl_zoom_crosshair | 0=none / 1=cross / 2=dot / 3=angle | Crosshair style used while zoomed. Identical semantics to the base crosshair cvar (0=none, 1=cross, 2=dot, 3=angle) — loads pics/chN.pcx. Consulted only when cl_zoom_crosshair_enable = 1 and +zoom is held; otherwise the base crosshair is drawn. Value 0 renders nothing for the crosshair during zoom (clean scoping) while still drawing the hit-marker overlay if a hit happens — hit feedback is independent of the reticle. |
| cl_zoom_crosshair_enable | 0=off (default; base crosshair stays) / 1=use zoom crosshair while +zoom held | Master toggle for the Q2PRO-X zoom crosshair override. When off (default), the regular crosshair (crosshair / ch_scale / ch_health / ch_red/green/blue/alpha) stays on during zoom and none of the cl_zoom_ch_* cvars below have any effect — useful for users who want zoom to be a pure FOV + sensitivity change without visual reticle swap. When on, the seven cl_zoom_ch_* cvars below fully override the base crosshair for as long as +zoom is physically held. The swap is edge-driven (tied to the +zoom key state, NOT to the smooth FOV transition) so it flips instantly on key down/up — crosshair style transitions between none/cross/dot/angle don't blend meaningfully, so interpolation would just produce visual garbage. |
| cl_zoom_fov | 10..170 (degrees, default 40) | Target horizontal FOV used while the +zoom bind is held. The view lerps from the current cl.fov_x down to this value over cl_zoom_time seconds; on release it lerps back. Render-local — does not rewrite the fov cvar and does not persist into saved games. Clamped at runtime so the zoom target never exceeds the current base FOV (zoom-in only; attempting to zoom-out via a larger value is ignored). Works identically in both cl_mouse_behavior_mode = 0 (q2pro) and = 1 (r1q2). The FOV shrink uses a single shared transition clock with the sensitivity scale so the two never desync mid-lerp. |
| cl_zoom_sensitivity | 0.1..30 (same units as sensitivity, default 1.0) | Target mouse sensitivity when fully zoomed, used only if cl_zoom_sensitivity_mode = 1 (manual). The mouse multiplier lerps from 1.0 at base FOV to (cl_zoom_sensitivity / sensitivity) at the zoomed FOV, so setting this equal to sensitivity leaves the mouse unchanged during zoom, while a smaller value slows the mouse proportionally. Has no effect when cl_zoom_sensitivity_mode = 0 (auto). |
| cl_zoom_sensitivity_mode | 0=auto (tangent-ratio, default) / 1=manual (lerp to cl_zoom_sensitivity) | Selects how mouse sensitivity is scaled while zoomed. 0 (auto) preserves the on-screen angular feel: per-axis mouse multipliers are computed as tan(eff_fov/2) / tan(base_fov/2) on X and Y independently — a geometrically correct projection ratio that keeps a given mouse movement cover the same visible arc before and after zoom. 1 (manual) linearly interpolates the multiplier from 1.0 at base FOV to (cl_zoom_sensitivity / sensitivity) at the zoomed FOV, giving you a fixed target sensitivity you can dial in by feel. In both modes the scale shares a single transition clock with the FOV lerp so sensitivity and FOV always arrive at their destinations together. |
| cl_zoom_time | 0..1.0 (seconds, default 0.0 = instant) | Duration in seconds of the smooth zoom-in / zoom-out transition. 0 means instant snap (no lerp). A single transition clock drives both the FOV lerp and the sensitivity-scale lerp so they always move together; if you tap the bind shorter than cl_zoom_time the transition reverses from its current position (no overshoot, no teleport). Capped at a reasonable upper bound at runtime to avoid unusably slow transitions. |
| cl_zoom_walk | 0=off (default) / 1=+speed is engaged while +zoom is held | When enabled, holding +zoom also virtually holds +speed for as long as the zoom bind is down, releasing it on +zoom release. Reproduces the classic alias +walkon "+speed; +zoom" pattern without forcing the user to wrap the bind in an alias. The injection targets an internal sentinel slot on in_speed rather than stomping the state directly, so it coexists correctly with a real +speed bind held in parallel (e.g. SHIFT): if both the real key and the zoom-injected slot are live, the walk state stays engaged until both are released. Engages on the +zoom press edge — toggling this cvar on while +zoom is already held does not retroactively engage walk; the next +zoom press picks it up. Toggling it off mid-hold still correctly releases the injected +speed on +zoom release (idempotent). Whether walk means slower movement depends on cl_run (the standard Q2 walk/run inversion): with cl_run 1 this gives the expected shift-to-walk feel. |
| in_enable | 0/1 | enable the input subsystem |
| in_grab | 0=dont grab mouse / 1=normal grabbing policy / 2=smart grabbing policy | Specifies mouse grabbing policy in windowed mode. Normally, mouse is always grabbed in-game and released when console or menu is up. In addition to that, smart policy mode automatically releases the mouse when its input is not needed (playing a demo, or spectating a player). Default value is 1. |
| m_accel | 0..5 | Specifies mouse acceleration factor. Default value is 0 (acceleration disabled). |
| m_autosens | 0/1 | Enables automatic scaling of mouse sensitivity proportional to the current player field of view. Values between 90 and 179 specify the default FOV value to scale sensitivity from. Zero disables automatic scaling. Any other value assumes default FOV of 90 degrees. Default value is 0. |
| m_directinput | 0=legacy cursor-centered (donor default) / 1/2=DirectInput-like relative | R1Q2 compatibility cvar. Active only when cl_mouse_behavior_mode = 1 (r1q2). Selects the mouse backend within r1q2 mode: 0 = legacy cursor-centered backend (GetCursorPos relative to window centre + recenter on non-zero delta, same as R1Q2 non-DirectInput path; donor R1Q2 default); 1 or 2 = DirectInput-like relative backend (raw-input accumulator + classic R1Q2 transform, no Windows cursor position involved). Importing an R1Q2 cfg that sets m_directinput will automatically route to the correct backend without any manual sensitivity retune. |
| m_filter | 0/1 | When enabled, mouse movement is averaged between current and previous samples. Default value is 0 (filtering disabled). |
| m_fixaccel | 0=off / 1=suppress Windows mouse accel (legacy path only) | R1Q2 compatibility cvar. Active only when cl_mouse_behavior_mode = 1 (r1q2) and m_directinput = 0 (legacy cursor-centered path). When non-zero, suppresses Windows mouse acceleration curves while the mouse is grabbed by saving the current SPI_GETMOUSE parameters and writing {0,0,0}, then restoring them on ungrab or mode change. Has no effect on DirectInput-like paths (m_directinput 1/2) because raw-input bypasses Windows pointer precision entirely. |
| m_forward | 0..2 | mouse forward motion factor |
| m_pitch | any float | mouse pitch factor |
| m_side | 0..2 | mouse side motion factor |
| m_yaw | any float | mouse yaw factor |
Music and sound
Variables in this section: 119.
| Variable | Accepted values | Description |
|---|---|---|
| al_binaural | 0/1 | enable binaural 3D sound path |
| al_binaural_crossfeed | 0..1 | binaural crossfeed amount |
| al_binaural_encoding | auto/stereo/hrtf | binaural encoding backend |
| al_binaural_hrtf_mode | auto/on/off | HRTF mode for binaural rendering |
| al_binaural_hrtf_size | small/medium/large | HRTF dataset size |
| al_binaural_profile | string | binaural tuning profile |
| al_device | string | Specifies the name of OpenAL device to use. Format of this value depends on OpenAL implementation. Empty value means default sound output device. Can be set to "?" to list available output devices. |
| al_eax | 0/1 | enable EAX reverb subsystem |
| al_eax_debug | 0=no prints / 1=verbose EAX prints (diagnostic, current session only) | Print EAX reverb diagnostics on every preset change — shows the classified zone, preset name, and parameter values being applied. Noisy; use only when tuning presets. |
| al_eax_explosion_decay | 0.1..20 (seconds) | EAX decay-time override for explosions, in seconds. Longer decay on explosions makes them sound grander. |
| al_eax_explosion_late | 0..10 | EAX late-reflection gain override for explosions — bumps the tail gain on large booms so they feel bigger. |
| al_eax_explosion_wet | 0..1 | EAX wet gain override for explosions so large explosions have a different reverb balance than regular sounds. |
| al_eax_local_wet | 0..1 | EAX wet gain override for locally-emitted sounds (your own footsteps, jumps, land sounds). Usually lower than environmental sound wet — your own sounds should feel present, not echoed. |
| al_eax_occlusion | 0=no occlusion / 1=EAX occlusion active | Enable EAX occlusion: sounds behind walls / blocking geometry are muffled with a low-pass filter simulating the occluding material. Adds realism but costs a bit of audio CPU. |
| al_eax_preset | auto=classifier-driven (default) / indoor / outdoor / generic | EAX preset for the current map / zone. auto runs the internal classifier per zone. indoor / outdoor / generic override the classifier with a fixed preset for cases where the classifier misreads a level. |
| al_eax_transport_wet | 0..1 | EAX wet gain override for transport / broadcast sounds (centerprint beeps, item pickups, UI bells). Usually bypassed so UI audio cues stay crisp regardless of room acoustics. |
| al_eax_wet | 0..1 (0 = dry, 1 = wet) | EAX wet gain: master volume of the reverb send. 0 = no reverb, 1 = full reverb. |
| al_hrtf | 0=force HRTF off / 1=use OpenAL Soft default setting (typically auto) / 2=force HRTF on | Specifies if HRTF mixing is allowed when using OpenAL Soft. Default value is 0. |
| al_merge_looping | 0=force off / 1=auto (disabled if output mode is not basic stereo) / 2=force on | Enables merging of looped OpenAL sources to make them play at similar volume compared to DMA sound engine. Default value is 1 (auto). If disabled, each source is played discretely, but overlapping sources can be too loud and/or desynchronized. Merging sources only works in basic stereo output mode. |
| al_profile | string | OpenAL tuning profile preset |
| al_resampler | default/linear/cubic | OpenAL resampler |
| al_reverb | 0=dry OpenAL (no reverb) / 1=room-acoustics reverb (default) | Master switch for the Q2PRO-X OpenAL EFX room-acoustics reverb layer. When on, each level zone is classified and a matching reverb preset is applied with smooth parameter lerp on transitions. When off, OpenAL still runs but without reverb — dry sound. |
| al_reverb_decay | 0.1..20 (seconds) | Reverb tail decay time, in seconds — larger = longer echo tail (cathedral). Smaller = shorter tail (small room). |
| al_reverb_delay | 0..0.1 (seconds) | Reverb pre-delay (sec). Delay between the dry sound and the first reflections. |
| al_reverb_diffusion | 0..1 | Reverb diffusion — density of reflections. 0 = sparse / flutter; 1 = smooth dense reverb. |
| al_reverb_hf | 0..1 | Reverb high-frequency gain. Lower values attenuate high frequencies in the reverb tail (simulates soft surfaces / carpeting). |
| al_reverb_late | 0..10 | Reverb late-reflection gain — controls the volume of the 'tail' portion of the reverb after the early reflections. |
| al_reverb_lerp_time | 0..5 (seconds) | Reverb parameter smoothing time on preset change, in seconds. Higher = smoother but more audible lag between zones. |
| al_reverb_reflections | 0..10 | Reverb early-reflection gain — volume of the 'early' portion (first few bounces) of the reverb response. |
| al_sound_profile | string | sound profile preset (acoustic target) |
| cl_music_health_ambient | 0=off / 1=on | Adaptive ambient scope; explicit online tracks take priority. |
| cl_music_health_ambient_deathmatch | 0=off / 1=on | Adaptive ambient scope; explicit online tracks take priority. |
| cl_music_health_ambient_min_calm | 1..10000; integer; strictly increasing boundaries | Integer lower boundary; strictly increasing. Below first: critical. |
| cl_music_health_ambient_min_divine | 1..10000; integer; strictly increasing boundaries | Integer lower boundary; strictly increasing. Below first: critical. |
| cl_music_health_ambient_min_fear | 1..10000; integer; strictly increasing boundaries | Integer lower boundary; strictly increasing. Below first: critical. |
| cl_music_health_ambient_min_heroic | 1..10000; integer; strictly increasing boundaries | Integer lower boundary; strictly increasing. Below first: critical. |
| cl_music_health_ambient_min_panic | 1..10000; integer; strictly increasing boundaries | Integer lower boundary; strictly increasing. Below first: critical. |
| cl_music_health_ambient_min_tense | 1..10000; integer; strictly increasing boundaries | Integer lower boundary; strictly increasing. Below first: critical. |
| cl_music_health_ambient_min_triumphant | 1..10000; integer; strictly increasing boundaries | Integer lower boundary; strictly increasing. Below first: critical. |
| cl_music_health_ambient_min_uneasy | 1..10000; integer; strictly increasing boundaries | Integer lower boundary; strictly increasing. Below first: critical. |
| cl_music_health_ambient_profile | 0=Normal / 1=Energy / 2=Mixed | Protection estimate: normal, energy or mixed damage. |
| cl_music_health_ambient_singleplayer | 0=off / 1=on | Adaptive ambient scope; explicit online tracks take priority. |
| cl_music_health_ambient_status | Read-only text; not saved (diagnostic, current session only) | Read-only adaptive ambient status: playback priority, estimated health/armor score and selected track. Updated during gameplay. |
| cl_music_health_ambient_transition | 2..3; step 0.1 | Smooth state and end-to-start transitions, seconds. |
| cl_music_health_ambient_volume | 0..1; step 0.05 | Ambient volume. Zero keeps auto online music inhibited in enabled modes. |
| cl_music_online_allow_m3u_fallback | default 1 / 0 or 1 | Allow M3U->CDN fallback when direct prelisten is unavailable. Mod-local. |
| cl_music_online_autopause_game | default 1 / 0 or 1 | Pause online music during an active map/game session. Mod-local. |
| cl_music_online_autoplay | default 0 / 0 or 1 | Auto-start playback when enabled. Mod-local. |
| cl_music_online_autoplay_results | default 0 / 0 or 1 | Auto-play loaded search/genre results. Mod-local. |
| cl_music_online_base_url | default https://promodj.com/music | Provider base URL (PROMODJ-compatible). http/https only. Mod-local. |
| cl_music_online_buffer_seconds | default 12 / seconds | Target RAM buffer seconds for streaming. Mod-local. |
| cl_music_online_connect_timeout_sec | default 5 / seconds | Connection timeout. Mod-local. |
| cl_music_online_console_status | default 0 / 0 or 1 | Show online-player status/debug messages in the console. Off keeps routine playback silent. Mod-local. |
| cl_music_online_debug | default 0 / 0/1/2/3 (diagnostic, current session only) | Online music debug verbosity: 0 quiet, 1 lifecycle, 2 provider, 3 stream/FFmpeg. Global. |
| cl_music_online_enable | default 0 / 0 or 1 | Online music master on/off. Off = zero network, no stream/decode. Mod-local. |
| cl_music_online_end_mode | default 0 / 0/1/2 | End-of-list: 0 stop, 1 repeat all, 2 repeat one. Mod-local. |
| cl_music_online_genre_mode | default 0 / 0/1/2 | Genre mode: 0 all/current, 1 selected, 2 random preferred. Mod-local. |
| cl_music_online_lucky_continuous | default 1 / 0 or 1 | Lucky continuous: keep finding a new random track when one ends. Mod-local. |
| cl_music_online_lucky_scope | default 0 / 0/1/2 | Lucky scope: 0 selected/current genre, 1 random genre, 2 all music. Mod-local. |
| cl_music_online_max_track_minutes | default 180 / minutes | Maximum track length accepted (minutes). Mod-local. |
| cl_music_online_network_timeout_sec | default 10 / seconds | Overall network/stream timeout. Mod-local. |
| cl_music_online_overlay_alpha | default 0.90 / 0.1..1.0 | Overlay window opacity. Global UI preference. |
| cl_music_online_overlay_autohide_sec | default 0 / seconds (0 = off) | Overlay autohide seconds (0 = off). Global UI preference. |
| cl_music_online_overlay_compact | default 0 / 0 or 1 | Overlay compact mode. Global UI preference. |
| cl_music_online_overlay_h | HUD pixels / 0 = default | Overlay height (HUD pixels). 0 = default. Global; live resize. |
| cl_music_online_overlay_scale | default 1.20 / 0.5..4.0 | Overlay window/font scale. Global UI preference. |
| cl_music_online_overlay_show_styles | default 1 / 0 or 1 | Show track styles/genres in the overlay. Global UI preference. |
| cl_music_online_overlay_w | HUD pixels / 0 = default | Overlay width (HUD pixels). 0 = default. Global; live resize. |
| cl_music_online_overlay_x | HUD pixels / sentinel = centred | Overlay X position (HUD pixels). INT_MIN = centred. Global; live drag. |
| cl_music_online_overlay_y | HUD pixels / sentinel = centred | Overlay Y position (HUD pixels). INT_MIN = centred. Global; live drag. |
| cl_music_online_preferred_genres | default empty / e.g. trance;deep_house | Selected genres as ';'-separated PROMODJ slugs (multi-select). Mod-local. |
| cl_music_online_provider | default promodj | Online music provider id (first provider: promodj). Mod-local. |
| cl_music_online_queue_mode | default 0 / 0/1 | Queue mode: 0 sequential, 1 roulette/shuffle. Mod-local. |
| cl_music_online_random | default 0 / 0 or 1 | Random order through results. Mod-local. |
| cl_music_online_resume_after_game | default 1 / 0 or 1 | Resume online music after returning to menu/disconnected. Mod-local. |
| cl_music_online_volume | default 0.70 / 0.0..1.0 | Online music volume. Final loudness = s_volume (master) * this. Mod-local. |
| ogg_enable | 0/1 | Enables automatic playback of background music in supported formats. Default value is 1. |
| ogg_menu_track | 0..99 | Specifies track number that is played while disconnected from server. Default value is 0 (dont play anything). |
| ogg_remap_tracks | 0/1 | Remap track numbers for rogue and xatrix addons according to GOG naming scheme. Default value is 1 (enabled). |
| ogg_shuffle | 0/1 | Play _all_ supported files from the music directory in random order, ignoring track numbers. Default value is 0 (disabled). |
| ogg_volume | 0..1 | Background music volume, relative to master volume. Default value is 1. |
| s_ambient | 0=all ambient sounds are disabled / 1=all ambient sounds are enabled / 2=only ambient sounds from visible entities are enabled (rocket flybys, etc) / 3=only ambient sounds from player entity are enabled (railgun hum, hand grenade ticks, etc) | Specifies if ambient sounds are played. Default value is 1. |
| s_ambient_volume | 0..100; step 5 | Ambient world loops (movers, hums, teleports). 50 = default; not the master (s_volume is). |
| s_announcer_volume | 0..100; step 5 | Game announcer (computer voice, secrets). 50 = default, 0 = mute. |
| s_auto_device | 0=stay on the current device / 1=follow OS default output live (default) | Follow the OS default audio output device live. When ON (default), Q2PRO-X watches the Windows default RENDER endpoint (queried via WASAPI with the eRender/eMultimedia role, matching the bundled OpenAL Soft backend) about once a second; if you switch the Windows output — plug in headphones, unplug a USB DAC, or pick a different device in the mixer — it auto-queues a snd_restart onto the new default so audio moves with you without typing anything. Only active on the OpenAL backend while riding the OS default (a specific al_device you pinned is left alone). At most one restart is queued per switch (pending-restart guard); soundinfo prints the follow state, the current default endpoint hash/tail, the last endpoint query status, and the last failure. Windows-only; on other platforms the toggle is inert. Stored in Q2PRO-X global config scope (CVAR_Q2PROXCFG_GLOBAL). |
| s_auto_focus | 0=sound is always activated / 1=sound is activated when main window is visible, and deactivated when it is iconified, or moved to another desktop / 2=sound is activated when main window has input focus, and deactivated when it loses it | Specifies the minimum focus level main Q2PRO window should have for sound to be activated. Default value is 0. |
| s_driver | dsound=DirectSound / wave=Windows waveform audio / sdl=SDL2 audio | Specifies which DMA sound driver to use. Default value is empty (detect automatically). Possible sound drivers are (not all of them are typically available at the same time, depending on how client was compiled): |
| s_enable | 0=sound is disabled / 1=use DMA sound engine / 2=use OpenAL sound engine | Specifies which sound engine to use. Default value is 1. |
| s_environment_volume | 0..100; step 5 | World sounds (doors, glass, platforms, debris). 50 = default, 0 = mute. |
| s_interface_volume | 0..100; step 5 | Menu navigation and UI sounds. 50 = default, 0 = mute. |
| s_khz | 11/22/44/48 | sound output sample rate (kHz) |
| s_maxchannels | default 64 / range 1..512 / step 1 / requires snd_restart | Maximum simultaneous sound voices the engine will try to allocate at sound init. Default 64 preserves pre-2026-05-22 behavior; raise up to the hard compile-time cap of 512 if sounds drop during heavy rain/storm/AVFX cocktail (PO observation 2026-05-22 — «кажется часть звуков пропадает»). DMA backend (CPU mixer) honors the value exactly; OpenAL backend requests the cvar value from qalGenSources and accepts whatever the driver gave — when the driver caps below the request, soundinfo prints a NOTE «driver limited the count below the requested value». To actually let OpenAL Soft go above its 256-source default, the release alsoft.ini must include sources = 512 (the Q2PRO-X binaural config writer emits this line automatically; release packaging must ship this alsoft.ini). Changes apply only after snd_restart (or any sound system re-init); soundinfo shows cvar value, requested-at-init value, and effective count so the user can see all three. Stored in Q2PRO-X global config scope (CVAR_Q2PROXCFG_GLOBAL). |
| s_mixahead | 0.05..0.3 | sound mix-ahead time (sec) |
| s_monster_volume | 0..100; step 5 | Monster / enemy sounds (voice, weapons, movement). 50 = default, 0 = mute. |
| s_mute_when_inactive | 0=use s_auto_focus (default) / 1=mute when inactive regardless of s_auto_focus | Mute the sound engine when the game window loses focus (Alt+Tab or clicking away). Prevents Q2PRO-X from bleeding audio into other applications. |
| s_other_volume | 0..100; step 5 | All other unclassified sounds. 50 = default, 0 = mute. |
| s_pickup_volume | 0..100; step 5 | Item pickup sounds (health, armor, ammo, weapons). 50 = default, 0 = mute. |
| s_player_volume | 0..100; step 5 | Player movement sounds (jump, land, fall, steps). 50 = default, 0 = mute. |
| s_q2px_fade_thread | 0=off / 1=on (default) (diagnostic, current session only) | Music fades during a map load run on a background worker, so the load never waits for the music. Session-only safety switch (not saved). |
| s_resampler | linear/cubic | software sound resampler |
| s_sampleformat | u8/s16/f32 | sample format |
| s_show | 0/1/2 (diagnostic, current session only) | print each sound that starts |
| s_swapstereo | 0/1 | Swap left and right audio channels. Only effective when using DMA sound engine. Default value is 0 (dont swap). |
| s_testsound | 0/1 | play a test tone |
| s_underwater | 0/1 | Enables lowpass sound filter when underwater. Default value is 1 (enabled). |
| s_underwater_gain_hf | 0..1 | Specifies HF gain value for lowpass sound filter. Default value is 0.25. |
| s_voice_volume | 0..100; step 5 | Player voice (pain, death, taunts). 50 = default, 0 = mute. |
| s_volume | 0..1 | master sound volume |
| s_weapon_bfg_volume | 0..100; step 5 | Playback volume of the BFG10K firing sound. 50 = default, 0 = mute, 100 = 2x louder. |
| s_weapon_blaster_volume | 0..100; step 5 | Playback volume of the Blaster firing sound. 50 = default, 0 = mute, 100 = 2x louder. |
| s_weapon_chaingun_volume | 0..100; step 5 | Playback volume of the Chaingun firing sound. 50 = default, 0 = mute, 100 = 2x louder. |
| s_weapon_grenadelauncher_volume | 0..100; step 5 | Playback volume of the Grenade Launcher firing sound. 50 = default, 0 = mute, 100 = 2x louder. |
| s_weapon_handgrenade_volume | 0..100; step 5 | Playback volume of hand-grenade sounds. 50 = default, 0 = mute, 100 = 2x louder. |
| s_weapon_hyperblaster_volume | 0..100; step 5 | Playback volume of the Hyperblaster firing sound. 50 = default, 0 = mute, 100 = 2x louder. |
| s_weapon_machinegun_volume | 0..100; step 5 | Playback volume of the Machinegun firing sound. 50 = default, 0 = mute, 100 = 2x louder. |
| s_weapon_railgun_volume | 0..100; step 5 | Playback volume of the Railgun firing sound. 50 = default, 0 = mute, 100 = 2x louder. |
| s_weapon_rocketlauncher_volume | 0..100; step 5 | Playback volume of the Rocket Launcher firing sound. 50 = default, 0 = mute, 100 = 2x louder. |
| s_weapon_shotgun_volume | 0..100; step 5 | Playback volume of the Shotgun firing sound. 50 = default, 0 = mute, 100 = 2x louder. |
| s_weapon_supershotgun_volume | 0..100; step 5 | Playback volume of the Super Shotgun firing sound. 50 = default, 0 = mute, 100 = 2x louder. |
Network God and Ping Adaptation
Variables in this section: 63.
| Variable | Accepted values | Description |
|---|---|---|
| cl_network_god_auto_autoport | 0=deny (default) / 1=allow | Automatic permission: allow scheduling the existing fast RTT port probe for the NEXT connection. It never starts a live-session port scan and never runs during a match. |
| cl_network_god_auto_confirmed | 0=not confirmed (default) / 1=permissions confirmed | Records that you have seen and accepted the Automatic permission list. Automatic mode refuses to start until this is set, and only the permission dialog sets it — that is why editing a config alone can never arm automation. Open Network God, Permissions, and use Review and enable Automatic to grant it. |
| cl_network_god_auto_guardian | 0=deny (default) / 1=allow | Automatic permission: allow bounded connection recovery after an exact, confident link failure. The Guardian's own limits still apply, and its forbidden reasons — a kick, a ban, a password refusal, your own disconnect, a local stall — are never overridden. |
| cl_network_god_auto_jitter_shield | 0=deny (default) / 1=allow | Automatic permission: allow the remote presentation buffer to be sized automatically. It never exceeds cl_network_god_jitter_max_ms and never touches your own player. |
| cl_network_god_auto_laghax | 0=deny / 1=allow (default) | Automatic permission: allow the accepted adaptive Laghax mode to be enabled for the session while prediction corrections grow. The change is session-only — your own cl_laghax value returns on disconnect or when the mode leaves Automatic — unless you explicitly keep it. |
| cl_network_god_auto_packetdup | 0=deny / 1=allow (default) | Automatic permission: allow Q2PRO command redundancy (cl_packetdup) to be raised inside the protocol bounds, and only on exact evidence that commands are being lost. Session-only like every other automatic change. |
| cl_network_god_auto_rebaseline | 0=keep the old window / 1=restart measurements (default) | When a critical LOCAL network setting really changes, or the player runs net_restart, discard the entire older measurement window and learn the connection again. This prevents a socket transition, packet-schedule change, ping adaptation change or prediction-model change from being misdiagnosed as a real network incident. Server commands and ordinary network fluctuations never trigger it. |
| cl_network_god_cooldown_sec | 5 .. 300 seconds, default 30 | Minimum pause between two applied changes, in seconds. It prevents oscillation: after an action is applied and verified, nothing new may be applied until this time has passed. |
| cl_network_god_debug | 0=off (default) / 1=log Network God events to console (diagnostic, current session only) | Event-based diagnostic logging for Network God: mode changes, connection generations, governor transitions and transport attach/detach. Never prints per packet. 0 = off (default) and costs nothing; the complete current state is always available on demand through network_god_info. |
| cl_network_god_guardian | 0=off (default) / 1=on | Connection Guardian master. Attempts a bounded reconnection to the SAME server when the connection goes silent while the game itself is still running normally. It never reacts to a kick, a ban, a password refusal, your own disconnect, demo playback, a local freeze, an armed Network Lab or a running port scan, and an explicit refusal stops it for that incident for good. Requires Network God to be on. |
| cl_network_god_guardian_attempts | 1 .. 10, default 3 | Maximum recovery attempts for one incident. After the last one the guardian stops and reports why instead of looping. |
| cl_network_god_guardian_backoff_ms | 250 .. 10000 ms, default 1000 | Pause before the first recovery attempt, in milliseconds. Each further attempt doubles it up to a hard internal cap, so a server that stays down is not hammered. |
| cl_network_god_guardian_debug | 0=off (default) / 1=log guardian events to console (diagnostic, current session only) | Log Connection Guardian incidents to the console: the measured silence, the threshold that was used, every refusal reason and every attempt. Never prints per packet. |
| cl_network_god_guardian_silence_ms | 0 = derive a safe threshold (default), otherwise 1000 .. 30000 ms | How long the server must be silent before recovery may start, in milliseconds. 0 derives a safe threshold from the measured server rate and your round-trip time, which is the recommended setting. A non-zero value below 1000 is raised to 1000 so a single lost burst can never trigger a reconnect. |
| cl_network_god_history_sec | 30 .. 600 seconds, default 180 | How much recent history the incident timeline and the reports keep, in seconds. It bounds what is displayed and exported; it does not change how the connection is measured. |
| cl_network_god_hud | 0=off (default) / 1=status strip / 2=text / 3=strip + text | The optional in-game Network God status. 0 = off (default): no layout and no drawing at all. 1 = the status strip, a chain of seven circles showing the current stage of the control cycle. 2 = one or two localized text lines. 3 = both. The two presentations are independent; neither requires the other. With Network God itself off, an enabled status draws only a static OFF state and starts nothing. |
| cl_network_god_hud_alpha | 0.2 .. 1.0, default 0.90 | Opacity of the status. The state colours keep their meaning at every value, and every state also carries its own glyph. |
| cl_network_god_hud_anchor | 0..8: 0=top left, 1=top center, 2=top right, 3=middle left, 4=middle, 5=middle right, 6=bottom left, 7=bottom center, 8=bottom right (default) | Screen corner or edge the status is attached to. The offsets are counted from this anchor, so changing the anchor moves the status without losing your fine positioning. |
| cl_network_god_hud_auto_hide | 0=always show / 1=auto-hide when healthy (default) | Automatically hide the Network God status after the connection check completes without a problem. A new connection, net_restart, a changed critical client network setting, or a newly detected warning/problem reveals it immediately. Routine periodic background scans do not reopen a settled healthy status. When a real problem clears, a fresh hide delay starts. Opening the Network God overlay or HUD edit mode keeps the status visible for comparison. |
| cl_network_god_hud_auto_hide_sec | 1 .. 60 seconds, default 5 | How many seconds a completed healthy connection result remains visible before automatic hiding. The delay restarts after an explicit connection/rebaseline trigger or after a recovered real problem. Warnings and errors remain visible; routine background collection does not reopen an already hidden healthy status. |
| cl_network_god_hud_labels | 0=glyphs only / 1=stage captions (default) | Write a short stage name under every circle of the status strip (LINK, OBSRV, DIAG, PLAN, APPLY, VERIFY, GUARD), coloured by that stage's state. The glyphs mean: '-' waiting, '>' working, '+' fine or verified, '!' attention, 'x' trouble or rollback, and a purple 'S' marks synthetic Lab evidence. With captions off only the compact glyph strip remains. The full legend is always available on the overlay's Help tab. |
| cl_network_god_hud_motion | 0=static / 1=reduced / 2=smooth (default) | How the status animates. Static removes the pulse and the smoothing while keeping every glyph, colour and value. Animation is presentation only: it can never change how often the connection is analysed, and packet arrival can never make the strip blink. |
| cl_network_god_hud_orientation | 0=horizontal (default) / 1=vertical | Draw the status strip as a horizontal row or a vertical column. A narrow layout is the usual reason to choose the vertical form. |
| cl_network_god_hud_palette | 0=default / 1=high contrast / 2=colour-vision-safe | Colour palette of the status. Colour is never the only carrier of meaning — every state also has a stable glyph — so all three palettes convey exactly the same information. |
| cl_network_god_hud_scale | 0.5 .. 2.0, default 1.0 | Size of the status strip, its glyphs and the text line, independent of scr_scale and of every other overlay. |
| cl_network_god_hud_text_detail | 0=compact (default) / 1=detailed | Compact is one localized line: mode, health, real and effective ping, observation progress and whether the evidence is real or synthetic. Detailed adds a second line with confidence, the governor state, the active override and the presentation buffer. |
| cl_network_god_hud_x | bounded screen offset, default 0 | Horizontal shift of the status from its anchor. Dragging in edit mode writes the same value. The status is kept inside the visible area whatever the value is, at any aspect ratio, resolution or UI scale. |
| cl_network_god_hud_y | bounded screen offset, default 0 | Vertical shift of the status from its anchor, with the same safe-area clamping as the horizontal one. |
| cl_network_god_jitter_debug | 0=off (default) / 1=log jitter shield events to console (diagnostic, current session only) | Log Jitter Shield transitions to the console: buffer changes and the safe snaps taken on a teleport, a respawn, a model change or entity reuse. Never prints per packet or per entity. |
| cl_network_god_jitter_fixed_ms | 0 .. 200 ms, default 20 | The presentation buffer used in Fixed mode, in milliseconds. 0 shows other players exactly as the accepted interpolation does. |
| cl_network_god_jitter_max_ms | 0 .. 200 ms, default 60 | Hard ceiling for the buffer, in milliseconds. It caps the automatic sizing and is also the ceiling the Automatic permission may never exceed. |
| cl_network_god_jitter_mode | 0=auto (default) / 1=fixed | Auto sizes the presentation buffer from the measured spread of packet arrival and keeps it within the maximum. Fixed always uses cl_network_god_jitter_fixed_ms. |
| cl_network_god_jitter_percentile | 90, 95 (default) or 99 | Which part of the measured arrival spread the automatic buffer aims to cover. A higher percentile is smoother and slightly later. |
| cl_network_god_jitter_shield | 0=off (default) / 1=on | Jitter Shield master. Shows other players a few milliseconds later so uneven packet arrival cannot tear their movement apart. It only affects how remote players are DRAWN: your own player, view, weapon, aim, hit registration, the commands you send and the frames you receive are untouched, and it never extrapolates a player into the future. Requires Network God to be on. |
| cl_network_god_local_off | 0=work on local servers too / 1=stay silent on local servers (default) | Do not run Network God on a LOCAL server. Single player (a local server with deathmatch 0) is always excluded regardless of this value: there is no network path to diagnose there. With this on, a local deathmatch server behaves exactly like mode 0 - no facts, no diagnosis, no surfaces - and your chosen mode returns the moment you join a real server. |
| cl_network_god_mode | 0=off (default) / 1=diagnosis / 2=guided / 3=automatic | Network God master. 0 = off (default): no measurement, no analysis, no queue, no override and no extra work of any kind — the client behaves exactly as it did without the feature. 1 = Diagnosis: measure and explain only; nothing is ever changed. 2 = Guided: propose one change at a time and wait for your explicit confirmation in the overlay. 3 = Automatic: apply only the changes you permitted under Permissions, verify each one against the measured result and revert it if it did not help. Automatic cannot start without its one-time permission confirmation, so editing a config alone never arms it. |
| cl_network_god_observe_sec | 5 .. 120 seconds, default 20 | Minimum time a connection must be observed before any change may be proposed, in seconds. A minimum number of valid samples is required as well, so a quiet connection simply waits longer instead of acting on thin evidence. The OBSERVE node on the status strip fills against exactly this window. |
| cl_network_god_overlay | 0=closed (default) / 1=open | Whether the interactive Network God overlay is open. It follows the overlay itself, so it is normally toggled by the network_god_toggle command, its bound key or the menu rather than typed directly. |
| cl_network_god_overlay_alpha | 0.2 .. 1.0, default 0.92 | Background opacity of the overlay window. Text keeps full contrast at every value. |
| cl_network_god_overlay_h | 0 = default height, otherwise a bounded height | Remembered height of the overlay window; 0 means the default height for the current resolution. |
| cl_network_god_overlay_hints | 0=no hover hints / 1=hover hints (default) | Hover hints inside the Network God overlay: pointing the mouse at any metric pops a detailed localized explanation of what that number means and why it matters. On by default — the dashboard is designed to be readable by someone who has never seen it before. Off leaves the bare values for players who already know them. |
| cl_network_god_overlay_local_off | 0=show the surfaces on local servers / 1=hide them (default) | Hide the Network God overlay and status strip on a local server while the feature itself keeps measuring. Independent of cl_network_god_local_off, which silences the whole feature. |
| cl_network_god_overlay_scale | 0.5 .. 2.0, default 1.0 | Text and interface scale of the overlay window only, independent of scr_scale and of every other overlay. |
| cl_network_god_overlay_w | 0 = default width, otherwise a bounded width | Remembered width of the overlay window, written when you finish resizing it. 0 means the default width for the current resolution. |
| cl_network_god_overlay_x | -1 = centred (default), otherwise a screen coordinate | Remembered horizontal position of the overlay window. It is written when you finish dragging the window; -1 means centred. The window is clamped to the visible area on every frame, so a stale value can never hide it off-screen. |
| cl_network_god_overlay_y | -1 = centred (default), otherwise a screen coordinate | Remembered vertical position of the overlay window; -1 means centred. Same clamping as the horizontal position. |
| cl_network_god_policy | 0=cautious (default) / 1=balanced / 2=responsive | How eagerly Network God proposes a change. Cautious needs stronger evidence and waits longer; Responsive reacts sooner. The policy shifts thresholds only — it never widens what may be changed, so a responsive policy has exactly the same permissions as a cautious one. |
| cl_network_god_report_include_server | 0=redacted pseudonym (default) / 1=literal server address | Put the literal server address into copied and saved reports. Off writes a stable pseudonym instead, so the same server stays recognisable across reports without publishing its address. |
| cl_network_god_traffic_app_scan | 0=off (default) / 1=look for possible application sources | Optional application-source analysis for the continuous traffic monitor. It stays idle unless continuous monitoring is on and sustained receive or transmit pressure was already measured. Then a sleeping worker may check whether Steam, a known torrent client or Windows Update owns an open network endpoint. This is only a possible source, never exact per-process byte attribution. Off (default) performs no process, service or endpoint scan. |
| cl_network_god_traffic_monitor | 0=off (default) / 1=continuous monitoring | Optional continuous background-traffic monitor for long live matches. It measures receive and transmit across routed physical Internet carriers, including a VPN's physical underlay, subtracts the client's physical datagrams and requires sustained load before warning. Route-less hardware devices are excluded. Application discovery is controlled separately. It never captures content, closes an app or changes another program. Off (default) performs no repeated traffic sampling. |
| cl_network_god_traffic_rx_kbps | 64 .. 65536 KiB/s, default 1024 | Sustained non-game receive threshold in KiB/s. The value is derived from routed physical-carrier byte deltas after the client's own physical inbound datagrams are subtracted; it is an approximate contention signal, not ISP bandwidth. |
| cl_network_god_traffic_sustain_sec | 5 .. 60 seconds, default 10 | How long the receive or transmit threshold must remain exceeded before it becomes a warning. Short background bursts are ignored; an active warning also clears with hysteresis so it does not flicker. |
| cl_network_god_traffic_tx_kbps | 16 .. 65536 KiB/s, default 256 | Sustained non-game transmit threshold in KiB/s. Upload is tracked separately because a saturated upstream often raises latency and loss before a large downstream does. |
| cl_ping_adapt_auto_source | 0=range (default) / 1=players | Where Automatic mode gets its target. 0 = Range: if your real ping is below cl_ping_adapt_range_min_ms, one target is chosen at random inside the configured band and then held stable for the whole session — it is not rerolled per packet or per evaluation. 1 = Players: follow the active opposing roster (OpenTDM: the other team, one player in duel and the mean in TDM; OpenFFA: the mean of all other active players). Spectators and you are always excluded. Range works on any mod; Players needs an exact roster adapter and otherwise adds nothing. |
| cl_ping_adapt_check_interval_ms | 250 .. 10000 ms, default 1000 | How often Automatic mode recomputes its target and refreshes the opposing roster, in milliseconds. Server status probes are coalesced and never sent faster than once per second, so a shorter interval simply reuses the newest sample instead of adding traffic. Peer pings older than max(5000, 3 x interval) are treated as stale and adaptation falls back to zero added delay. |
| cl_ping_adapt_debug | 0=off (default) / 1=log ping adaptation events to console (diagnostic, current session only) | Event-based diagnostic logging for Ping adaptation: mode transitions, target changes, roster invalidations, capacity fail-open and connection-generation resets. Never prints per packet. 0 = off (default) and costs nothing; the full current state is always available on demand through the ping_adapt_info command. |
| cl_ping_adapt_manual_ms | 0 .. 1000 ms, default 30 | Absolute target ping for Manual mode, in milliseconds. The client injects max(0, target - real RTT); it can never make a link faster, so a target below your real ping simply adds nothing and the state reads baseline limited. The automatic cap cl_ping_adapt_max_ms deliberately does NOT apply here — a manual target is your explicit instruction. |
| cl_ping_adapt_max_ms | 1 .. 1000 ms, default 200 | Hard ceiling on the final target ping in Automatic mode, in milliseconds. It applies to both automatic sources (Range and Players) and never to Manual. If the computed target exceeds it the target is clamped and ping_adapt_info reports it as capped. |
| cl_ping_adapt_min_difference_ms | 0 .. 500 ms, default 15 | Minimum gap that must exist between your real ping and the opposing reference ping before Automatic/Players adapts at all. Adaptation runs only while real < (opponent - this value); otherwise nothing is added. Example: opponent 40 and a minimum difference of 15 means a real ping of 30 is left alone, while a real ping of 10 is adapted. |
| cl_ping_adapt_mode | 0=off (default) / 1=manual / 2=automatic | Ping adaptation master. 0 = off (default): no send adapter, no queue, no probes, no roster scans and no added latency at all. 1 = Manual: hold an absolute target ping of cl_ping_adapt_manual_ms. 2 = Automatic: pick the target from cl_ping_adapt_auto_source (a configured range, or the active opposing players on OpenTDM / OpenFFA). The target is ABSOLUTE, never added on top of your real ping: with a real 10 ms and a target of 30 the client injects about 20 ms, and if your real ping is already 40 nothing is added. Latency is produced by FIFO-delaying complete outgoing datagrams, so no packet is dropped, reordered or rewritten. |
| cl_ping_adapt_offset_ms | -200 .. 200 ms, default 0 | Signed offset applied to the opposing players' reference ping in Automatic/Players mode: the target is (opponent ping + offset), then capped by cl_ping_adapt_max_ms. Negative values aim below the opponent, positive values above. Example: opponent 40, offset -10 gives a target of 30. |
| cl_ping_adapt_range_max_ms | 0 .. 1000 ms, default 30 | Upper bound of the Automatic/Range band, in milliseconds. Both bounds are additionally capped by cl_ping_adapt_max_ms; if that cap is below the configured minimum, the effective choice collapses to the cap. |
| cl_ping_adapt_range_min_ms | 0 .. 1000 ms, default 20 | Lower bound of the Automatic/Range band, in milliseconds. Range adapts only while your real ping is BELOW this value; at or above it nothing is added, because latency cannot be removed. If minimum and maximum are entered reversed they are normalized (swapped) deterministically and ping_adapt_info shows the effective pair. |
Network, prediction and LagHax
Variables in this section: 98.
| Variable | Accepted values | Description |
|---|---|---|
| cl_async | 0=run synchronous, like original Quake 2 does / 1=run asynchronous / 2=run asynchronous, sync rendering to GPU (experimental, requires OpenGL 3.2 or higher) | Controls rendering frame rate and physics frame rate separation. Default value is 1. Influence of cl_async on client framerates is summarized in the table below. |
| cl_fixedmove | 0=native command clock / 1=fixed 10 ms movement command tick | Normalize the movement command clock to 10 ms ticks so input command timing is independent of rendering frame rate. Reduces movement-feel variance on high-fps and variable-fps setups; recommended for consistent strafing. |
| cl_fixedmove_debug | 0=no prints / 1=per-frame fixedmove timing prints (diagnostic, current session only) | Print the finalized fixedmove command timing on each frame (accumulator, tick count, pending ms). Helpful for verifying that fixedmove is actually producing 10 ms ticks under a given fps setup. |
| cl_fixedmove_wait_debug | 0=no prints / 1=interesting events only / 2=verbose (every sub-cmd) (diagnostic, current session only) | Diagnostic prints for the cl_fixedmove_wait_mode path: wait count before/after decrement, queued command-buffer size, drain flag, current upmove, and in_up held flag. Level 1 only prints sub-cmds where the wait counter was non-zero or the queue had pending commands (silent baseline so the console doesn't flood at 200 prints/sec). Level 2 is verbose — print every sub-cmd including idle. |
| cl_fixedmove_wait_mode | 0=legacy outer-frame wait / 1=fixedmove-aware 10 ms wait for cmd_buffer (default) | Make the gameplay command-buffer wait advance on each 10 ms fixedmove tick instead of once per outer render frame, so movement aliases like double-jump (alias +2j "+moveup; wait; wait; wait; -moveup; wait; wait; wait; +moveup") keep their +moveup / -moveup edges on the 10 ms movement clock regardless of FPS. Default 1 — recommended together with cl_fixedmove (which is already the Q2PRO-X default movement clock). Only takes effect when cl_fixedmove is 1, cl_movement_feel_mode is NOT 1, and the client is in active gameplay; otherwise behaves like the legacy outer-frame wait. Set to 0 only for legacy outer-frame wait timing. |
| cl_http_blocking_timeout | 0..60 | HTTP blocking-op timeout (sec) |
| cl_http_debug | 0/1 (diagnostic, current session only) | print HTTP download diagnostics |
| cl_http_default_url | url | Default download URL to use when server doesnt provide one. Client will fall back to UDP downloading as soon as 404 is returned from default repository. Default value is "". |
| cl_http_downloads | 0/1 | Enables HTTP downloads, if server advertises download URL. Default value is 1 (enabled). |
| cl_http_filelists | 0/1 | When a first file is about to be downloaded from HTTP server, send a filelist request, and download any additional files specified in the filelist. Filelists provide a pushing mechanism for server operator to make sure all clients download complete set of data for the particular mod, instead of requesting files one-by-one. Default value is 1 (request filelists). |
| cl_http_insecure | 0/1 | Disable checking of server certificate when using HTTPS. Default value is 0. |
| cl_http_max_connections | 1..16 | Maximum number of simultaneous connections to the HTTP server. Default value is 2. |
| cl_http_proxy | url | HTTP proxy server to use for downloads. Default value is empty (direct connection). |
| cl_laghax | 0=off (no smoothing) / 1=fixed window (cl_laghax_maxms) / 2=adaptive (stress-weighted window) | Laghax mode: adaptive smoothing of prediction-error corrections so small authority-vs-local deltas are blended over time instead of snapping. 0 disables laghax entirely (legacy snap-to-server behaviour). 1 uses a fixed window controlled by cl_laghax_maxms. 2 is adaptive mode — the smoothing window varies with ping / jitter / loss / debt / gap stress per the weighting cvars. |
| cl_laghax_debt_weight | 0..1 (weight) | Contribution of prediction debt (accumulated uncorrected error) to the adaptive stress function. Higher weight = more aggressive smoothing when the error backlog grows. |
| cl_laghax_debug | 0=no prints / 1=per-server-frame stats (diagnostic, current session only) | Print laghax smoothing statistics on every server frame (current window, stress terms, applied error, blended output). Noisy — use only when tuning weights or investigating a specific case. |
| cl_laghax_gap_weight | 0..1 (weight) | Contribution of authority-gap signal (delay between expected and actual authoritative frame) to the adaptive stress function. |
| cl_laghax_hud | 0=hide HUD / 1=show HUD | Draw the real-time laghax HUD overlay in the top-right corner (or wherever you dragged it via laghax_hud_edit). Shows current mode, window size, stress terms, and optionally enabled-predict / physics-mode rows. |
| cl_laghax_hud_alpha | 0..1 | Opacity of the laghax HUD background and text. Independent from scr_alpha: laghax HUD uses its own opacity policy. If OLED UI breathing is enabled, the final alpha is modulated only by SCR_OledGetUiAlpha(). |
| cl_laghax_hud_auto_hide | 0=HUD always visible / 1=auto-hide when unchanged | Hide the laghax HUD automatically when nothing changes for cl_laghax_hud_auto_hide_sec seconds: the network side of the stress model stays green and no predict switches on or off. A non-green network reading or a predict change (a user toggle or the automatic ping gate) shows it again. Prediction-error spikes (e.g. riding lifts) are deliberately NOT triggers. |
| cl_laghax_hud_auto_hide_sec | 1..60 seconds | How many seconds without changes before the laghax HUD hides (used only when cl_laghax_hud_auto_hide is 1). Any trigger shows the HUD again and restarts the countdown. |
| cl_laghax_hud_hide_deathmatch0 | 0=always honour cl_laghax_hud / 1=auto-hide HUD in deathmatch 0 (default) | Visibility policy for the laghax HUD widget. When on (default), the on-screen widget auto-hides in deathmatch 0 contexts (single-player, coop, local maps) where a ping/jitter indicator is usually irrelevant. This affects ONLY the drawn widget; cl_laghax smoothing itself is unchanged. To see the HUD in single-player despite the default, turn this off. |
| cl_laghax_hud_hide_demo | 0=always honour cl_laghax_hud / 1=auto-hide HUD during demo playback (default) | Visibility policy for the laghax HUD widget during demo playback (.dm2 and .mvd2). When on (default), the widget auto-hides while a demo is playing. This affects ONLY the drawn widget; cl_laghax smoothing itself is unchanged. The same toggle is mirrored on the Demo Player settings page for convenience — it's the same cvar, not a separate setting. |
| cl_laghax_hud_hide_local | 0=always show / 1=hide while a local server runs (default) | Auto-hide the laghax HUD while a local server is running - your own sandbox does not need the widget. Affects the WIDGET only: cl_laghax smoothing keeps working exactly as configured. |
| cl_laghax_hud_pillarbox_workspace | 0=HUD clamped to content rect / 1=allow placement in pillarbox bars | Allow the laghax HUD to be placed into the pillarbox side bars (the aspect-fit free area outside the content rect). When on, positions in the bars are accepted. When off, the HUD is clamped to the content rect. |
| cl_laghax_hud_scale | 0.5 .. 2.0, default 1.0 | Text-size multiplier for the laghax HUD widget only, independent of scr_scale and of every other overlay. 1.0 is the historical size; below 1.0 shrinks it, above 1.0 enlarges it. The widget frame, the error bar and the settings gear scale with the text, and the drag / hit-test area follows, so moving the HUD keeps working at any size. |
| cl_laghax_hud_show_physics_params | 0=no physics row / 1=show physics row | Add a compact row to the laghax HUD showing the current movement feel mode, step smoothing mode (always visible including the q2pro default), plus legacy predict and fixedmove flags when effective. |
| cl_laghax_hud_show_ping_adapt | 0=hide the ping adaptation rows / 1=show them (default) | Add the Ping adaptation rows to the laghax HUD: real ping, adapted ping, the delay actually being added, the configured mode with an explicit ON/OFF and its reason, the countdown to the next evaluation, and the opposing peer count and mean in Players mode. On by default. The rows appear only while Ping adaptation itself is enabled (cl_ping_adapt_mode is not 0), so leaving this on costs nothing if you never use the feature. |
| cl_laghax_hud_show_predict_params | 0=no predicts row / 1=show predicts row | Add a compact row to the laghax HUD listing the weapon and player predicts that are currently enabled and effective. Updates live when you toggle a predict cvar in another menu. |
| cl_laghax_hud_show_predict_runtime | 0=no runtime row / 1=show runtime rows (diagnostic, current session only) | Diagnostic HUD toggle. Adds live runtime rows to the laghax HUD that visualise the internal state of the weapon predictor (ghost layer): ammo admission counters, weapon switch gate, predicted gun animation frame, rocket and hyperblaster handoff/suppress counters, and muzzle-flash suppress counters for chaingun / machinegun / hyperblaster. When enabled and nothing is active, shows a compact rt: idle line. Does NOT affect weapon prediction behaviour — pure read-only visualisation of ghost bookkeeping. |
| cl_laghax_hud_x | any int (signed) | Laghax HUD X position in HUD-pixel coordinates. Positive = offset from left edge; negative = offset from right edge. Set automatically by laghax_hud_edit drag; edit manually for scripted layouts. |
| cl_laghax_hud_y | any int (signed) | Laghax HUD Y position in HUD-pixel coordinates. Positive = offset from top edge; negative = offset from bottom edge. Usually driven by laghax_hud_edit. |
| cl_laghax_jitter_weight | 0..1 (weight) | Contribution of ping jitter (variance) to the adaptive stress function. Higher weight = bigger smoothing window when the connection is jittery. |
| cl_laghax_loss_weight | 0..1 (weight) | Contribution of packet loss / disturbance / drops to the adaptive stress function. Higher weight = more smoothing when packets are being dropped. |
| cl_laghax_maxms | 0..150 (milliseconds) | Hard safety cap for the smoothing window in milliseconds — no matter how high the adaptive stress gets, the window will not exceed this value. Protects against pathological cases with very high ping or stuck correction state. |
| cl_laghax_maxwindow | 0..120 (milliseconds) | Adaptive-mode target cap before the hard clamp kicks in. Controls the ceiling of the adaptive stress function; cl_laghax_maxms is the final safety clamp on top. |
| cl_laghax_minerror | 0..8 (quake units) | Errors below this threshold (in quake-world units) snap instantly instead of being smoothed. Prevents laghax from chasing sub-pixel noise. |
| cl_laghax_ping_weight | 0..1 (weight) | Contribution of ping to the adaptive stress function. Higher weight = bigger smoothing window under higher ping. Part of the weighted sum that determines the adaptive window. |
| cl_maxfps | 0..1000 | Specifies client physics frame rate if cl_async 1 or 2 is used. Otherwise, limits both rendering and physics frame rates. Default value is 60. |
| cl_net_clientport_autoprobe | 0=off (default) / 1=pre-connect challenge-RTT probe / 2=live-session scan (XQ3E-exact) | Client UDP source-port auto-selection. Three modes. 0 = off (default). 1 = bounded pre-connect probe: opens independent probe sockets, fires getchallenge in parallel, scores each by reply RTT, picks the winner, then enters the real connect. Fast and safe but the metric is challenge RTT, NOT the gameplay ping the HUD shows. 2 = XQ3E-exact live-session scan (Q2PRO-X adaptation of XQ3E's x_net_port_renew machine): on ca_active, scans a fixed 20 candidate slots — slot 0 = current port, slots 1..19 = XQ3E's random formula (rand%320)*(rand%100)+10000. For each slot, it rebinds NS_CLIENT, drops the first 5 post-switch server frames (XQ3E skipSnaps), averages the next 16 per-snapshot RTTs (the closest Q2 analog of XQ3E's snapshot->ping), and moves on. On 2 s of no-progress the slot's port is REPLACED with a fresh XQ3E random draw and retried — not skipped. After all 20 slots settle, the lowest-average port wins. Deliberately intrusive: the gameplay socket rebinds up to 20 times and the player feels jitter until the scan finishes. qport preserves the session across rebinds. cl_net_clientport_autoprobe_ports is mode-1 only; mode 2 is always 20 slots. cl_net_clientport_autoprobe_time is a safety watchdog only for mode 2 — it does NOT trim the candidate set. connect_autoport <server> forces a one-shot mode-1 probe regardless of this cvar. |
| cl_net_clientport_autoprobe_indicator | 0=off / 1=show (default) | On-screen blinking AUTO-PORT SCAN indicator while mode 2 (XQ3E-like live-session scan) is actively running. 0 = off. 1 = show (default). The indicator appears only during mode-2 scanning and disappears on finish, abort, or disconnect. Has no effect on mode 1 which runs before the real connect and is not long enough to benefit from an overlay. |
| cl_net_clientport_autoprobe_ports | 2 .. 60, default 6 (mode 1 only; mode 2 is fixed at 20 XQ3E slots) | Mode-1 candidate count. Does NOT apply to mode 2 — mode 2 always scans 20 XQ3E slots. In mode 1 this is split into ~1/3 OS-ephemeral PORT_ANY probes and ~2/3 explicit spread-out random high ports in [10000, 30000]. Clamped to [2, 60]. Default 6 is conservative; mode 1 is fast and parallel, so wider sweeps (up to 60) do not meaningfully slow it down. |
| cl_net_clientport_autoprobe_settle_ms | 0 .. 10000 ms, default 0 (XQ3E-exact) | Optional pre-scan grace window before mode 2 applies its first slot, in milliseconds. Default 0 = XQ3E-exact (no pre-scan delay; XQ3E relies on its 5-skip-samples post-switch rule to drop early noise). Range [0, 10000]. Raise this only if your target mod has unusually slow precache and you observe the first mode-2 slot landing inside a precache stall; most users should leave it at 0. Counts inside cl_net_clientport_autoprobe_time. |
| cl_net_clientport_autoprobe_time | 0.1 .. 180 seconds, default 2.5 (mode 2 realistically needs 60..180) | Overall safety watchdog for the probe/scan, in seconds. Hard upper bound — the run will not exceed this. Mode 1 (pre-connect challenge-RTT) is parallel and usually finishes in a fraction of the budget as soon as replies arrive; the ceiling mostly protects against a silent server. Mode 2 (XQ3E-exact live-session scan) attempts the FULL 20-slot scan regardless of this value — the watchdog only fires as an abort ceiling if the whole scan takes longer than allowed, in which case the best-scored slot so far is applied. The cvar does NOT trim mode-2 breadth; a small value just means the scan may be cut short. A realistic full 20-slot mode-2 run wants ~60..180 s depending on ping / server snapshot rate; values below ~30 s emit a console warning at arm time. Default 2.5 s is sized for mode 1; mode 2 users should raise it. |
| cl_net_clientport_autoprobe_verbose | 0=off (default) / 1=print autoport progress to console (diagnostic, current session only) | Controls whether the autoport probe/scan prints progress lines to the console. 0 = off (default): mode 1 and mode 2 still run exactly the same, just silently. 1 = on: every 'autoport:' status line is printed — start banner, candidate switches, per-candidate samples, winner, abort/fallback. Use this when you want to see what the probe actually did; leave it off for a clean console during normal play. |
| cl_network_lab_allow_remote | 0=local servers only (default) / 1=may ask on a real server | Allow the lab to ASK to be armed while you are on a real server. It only permits the question — arming still requires your explicit confirmation, and the lab never arms itself. On a local server no permission is needed. |
| cl_network_lab_bandwidth_kbps | 0 = unlimited (default), otherwise 8 .. 100000 kbit/s | Synthetic bandwidth cap for the selected direction, in kilobits per second. 0 leaves the rate unlimited. Pacing is bounded and never blocks the game loop. |
| cl_network_lab_burst_mean | 1 .. 32 packets, default 3 | Average length of one loss burst, in packets. Used only by the Burst loss model. |
| cl_network_lab_debug | 0=off (default) / 1=log network lab events to console (diagnostic, current session only) | Log Network Lab transitions to the console: arming, stopping, queue limits and fail-open. Never prints per packet. |
| cl_network_lab_delay_ms | 0 .. 1000 ms, default 0 | Base synthetic delay added in the selected direction, in milliseconds. It is clearly reported as artificial and is excluded from the real measured baseline. |
| cl_network_lab_direction | 0=outgoing / 1=incoming / 2=both (default) | Which direction the synthetic impairment is applied to. Outgoing affects the datagrams you send, Incoming the ones you receive, Both applies the configured impairment to each direction independently. |
| cl_network_lab_jitter_distribution | 0=uniform (default) / 1=normal / 2=long tail | Shape of the synthetic delay variation. Uniform spreads it evenly, Normal concentrates it around the base value, Long tail produces rare large spikes like a loaded link. |
| cl_network_lab_jitter_ms | 0 .. 500 ms, default 0 | How much the synthetic delay varies around its base value, in milliseconds. |
| cl_network_lab_loss_model | 0=independent (default) / 1=burst | Independent drops single packets at random. Burst drops several consecutive packets, which is how a genuinely bad link usually behaves and is the harder case for prediction. |
| cl_network_lab_loss_pct | 0 .. 50 %, default 0 | Share of packets dropped on purpose, in percent. Synthetic loss is counted separately from real loss and never becomes part of the real baseline. |
| cl_network_lab_reorder_pct | 0 .. 50 %, default 0 | Share of packets delivered out of order, in percent. A reordered packet is delayed, never duplicated and never corrupted. |
| cl_network_lab_reorder_window | 2 .. 8 packets, default 2 | How far a packet may be moved out of its place, in packets. |
| cl_network_lab_seed | 0 = pick and show a session seed, otherwise 1 .. 2147483647, default 1 | The repeat code (seed) the impairment generator unrolls its randomness from. Two runs with the same code get exactly the same impairment for the same traffic, so results compare fairly. 0 picks a random code once per session and shows it in network_lab_info. |
| cl_packetdup | 0..5 | Number of backup movement commands client includes in each new packet, directly impacts upload rate. Unless connected using Q2PRO protocol, hardcoded value of 2 backups per packet is used. Default value is 1. |
| cl_predict | 0/1 | client-side player prediction |
| cl_predict_blaster | 0=no blaster prediction / 1=predict blaster muzzle (default) | Predict blaster projectile and muzzle feedback. Fires a predicted muzzle + sound on attack; the authoritative blaster bolt from the server still flies, so this mostly eliminates the audible muzzle delay. |
| cl_predict_chaingun | 0=no chaingun prediction / 1=predict chaingun local fire (default) | Predict chaingun local fire feedback with ramp-up-aware shot counts (1 shot for ticks 1-5, 2 shots for 6-10, 3 shots for 11+). Server MZ_CHAINGUN1/2/3 events suppressed via cg_mz_suppress_count. Covers both wall impacts and flesh hits. |
| cl_predict_debug | 0=production (dedup, silent) / 1=show both predicted and server streams / 2=show both + verbose prints / 3=suppression ON + diagnostic prints (diagnostic, current session only) | Weapon-predict diagnostics level. 0 is production (predicted and server streams deduplicate correctly, no prints). 1 and 2 disable the duplicate-suppression gate so both the ghost and the real server event are visible on screen at the same time, for comparing timing and placement. 2 adds verbose per-frame diagnostic prints. 3 keeps suppression active AND prints classifier diagnostics (SUPPRESS:, HB_CLASS:, ammo gate blocks) so production-mode behaviour can be traced without losing dedup. |
| cl_predict_grenades | 0=no grenade launcher prediction / 1=predict grenade launcher muzzle (default) | Predict grenade launcher projectile feedback (muzzle + sound). Grenade flight itself is not ghosted — the server projectile is authoritative — so only the fire-input latency is masked. |
| cl_predict_hand_grenades | 0=no hand grenade prediction / 1=predict hand-grenade throw feedback (default) | Predict hand-grenade throw feedback: immediate pin-pull and throw sound on attack input, without waiting for the server to echo. The grenade entity itself remains server-authoritative. |
| cl_predict_hyperblaster | 0=no hyperblaster prediction / 1=predict hyperblaster local fire (default) | Predict hyperblaster local fire feedback: per-tick ghost HB bolt with BSP-traced impact point (CL_GhostHBImpact). FIFO handoff matches server bolts by firing order so pairings are deterministic with ~10 bolts in flight. Server MZ_HYPERBLASTER suppressed via hb_mz_suppress_count. |
| cl_predict_machinegun | 0=no machinegun prediction / 1=predict machinegun local fire (default) | Predict machinegun local fire feedback: per-tick ghost_mg_spawn with trace-driven bullet hits (ghost_cg_bullet reused for MG). Server muzzle flashes are suppressed via mg_mz_suppress_count matched to the number of predicted ticks. |
| cl_predict_move_mode | modern=new Q2PRO/Q2PRO-X engine / legacy=q2pro-m/q2pro r1826 backend | Client prediction backend. modern is the current new Q2PRO / Q2PRO-X prediction engine. legacy selects the old q2pro-m / q2pro r1826 behaviour — useful when a mod relies on the older prediction timing. |
| cl_predict_ping_dwell_sec | 0=instant gate flip / 1..30=seconds ping must hold before gate changes state (default 5) | Dwell (hold) time in seconds that the ping must stay continuously on one side of the cl_predict_ping_min_ms threshold before the shared adaptive predict gate flips. The same gate governs both weapon predicts and player predict. A value of 0 means the gate flips instantly on any threshold crossing (useful for testing). The default of 5 seconds prevents rapid on/off thrash when ping oscillates around the threshold. Has no effect when cl_predict_ping_min_ms is 0. |
| cl_predict_ping_min_ms | 0=adaptive gate disabled (raw/master toggles only) / 1..200=minimum ping in ms required for predict admission (default 20) | Minimum ping threshold in milliseconds for the shared adaptive predict gate. When 0, adaptive ping gating is disabled: weapon predicts are then governed only by cl_predict_weapons_enable plus the per-weapon toggles, and player predict is governed only by cl_predict_player. When > 0, the gate opens only after the measured ping (cls.measure.ping) has stayed at or above this value continuously for cl_predict_ping_dwell_sec seconds. The gate governs both weapon predicts (subject to cl_predict_weapons_enable and per-weapon toggles) and player predict (cl_predict_player). On a low-ping session the gate stays closed; on a high-ping session it opens after the dwell period. Closing the gate stops new weapon-predict admissions but does not wipe already-active in-flight ghosts — they drain normally. |
| cl_predict_player | 0=off / 1=local jump/fall prediction (gated by ping when min_ms>0) / 2=debug prints | Local player prediction mode for jump / fall motion. 0 disables player prediction entirely. 1 enables local jump and fall prediction (default). 2 adds debug prints showing predicted vs authoritative trajectories. When cl_predict_ping_min_ms > 0, player predict is additionally governed by the shared adaptive ping gate: it becomes effective only after ping has stayed at or above the threshold for the dwell period, and deactivates when ping drops below the threshold for the same period. This gate is independent of cl_predict_weapons_enable — turning off the weapon master does not suppress player predict. Set cl_predict_ping_min_ms to 0 to disable the adaptive gate and restore a raw always-on toggle. |
| cl_predict_player_debug | default 0 / 0=silent / 1=print predicted and suppressed jump/fall events (session only) (diagnostic, current session only) | Session-only diagnostic for the local jump/landing sound prediction (cl_predict_player). 1 prints one console line per event: each predicted landing class (EV_FALLSHORT / EV_FALL / EV_FALLFAR) with the computed fall delta and vertical speed, and every server-confirmed duplicate jump/fall sound the module suppressed. A live console cl_predict_player 2 still enables it for the current session (legacy spelling); the persisted value stays the 0/1 baseline. Never read from a config and never written by any config or preset writer; after a restart it is off again. |
| cl_predict_railgun | 0=no rail prediction, server copy only / 1=client-side ghost rail beam (default) | Predict the rail beam instantly on fire with a client-side CL_GhostRailTrail. Duplicate server TE_RAILTRAIL is suppressed via GhostRail_ShouldSuppress. Rail fire and impact sounds always fire on the authoritative path. |
| cl_predict_rockets | 0=no rocket prediction, server copy only / 1=client-side ghost with handoff (default) | Predict the local player's own rocket launcher projectile immediately on fire, rendering a client-side ghost rocket with a matching trail and light. The authoritative server rocket is suppressed on handoff so the player sees only one visible stream. Hides the RTT-ms gap between fire input and visible rocket. |
| cl_predict_rockets_explosion | 0=no predicted explosion / 1=predict rocket explosion at BSP hit point (default) | Also predict the rocket impact explosion at the BSP-traced hit point the moment the ghost rocket reaches that distance. Fires particles + explosion sprite + dynamic light locally without waiting for the server TE_ROCKET_EXPLOSION. Requires cl_predict_rockets to have any effect. |
| cl_predict_shotgun | 0=no shotgun prediction / 1=predict shotgun muzzle + pellet hits (default) | Predict shotgun muzzle and pellet hit visuals for the local player. Per-pellet BSP traces drive ghost_shotgun_pellet -> CL_GhostShotgunHit (particles + smoke for solid hits, fluid-colour splash for water). Legacy TE_SHOTGUN from the server is de-duplicated by GhostShotgun_ShouldSuppress. |
| cl_predict_super_shotgun | 0=no super shotgun prediction / 1=predict super shotgun muzzle + pellet hits (default) | Predict super-shotgun muzzle and pellet hit visuals. Uses the same ghost pellet machinery as cl_predict_shotgun, just with the super-shotgun pellet count and spread. |
| cl_predict_weapons_enable | 0=all weapon predicts off (master disabled) / 1=weapon predict system active (default) | Master switch for the entire weapon-predict system. When 0, all weapon predicts are disabled regardless of individual cl_predict_* toggles, weapon-side admissions are blocked, and weapon-predict telemetry disappears from the LAGHAX overlay. The shared adaptive ping gate itself still exists and may continue to govern player predict. When 1, the weapon system is active and admission is controlled by each per-weapon toggle plus the shared adaptive ping gate (cl_predict_ping_min_ms / cl_predict_ping_dwell_sec). Per-weapon settings are preserved when the master is off and resume immediately when it is turned back on. |
| cl_serverbrowser_alpha | 0..1 | Opacity of the modern server browser overlay window background. |
| cl_serverbrowser_compact | 0=full row spacing / 1=compact spacing | Use compact row layout in the server list so more servers fit on screen at once. |
| cl_serverbrowser_custom_source | URL / composite source string | URL for the 'Custom' source tab. Supports the same composite syntax as the internal favorites pipeline — e.g. 'favorites:// file:///servers.lst broadcast://' to override the default. |
| cl_serverbrowser_default_sort | ping / players / map / name | Default sort column used when the browser opens. Changes take effect on the next open; click a column header to re-sort live. |
| cl_serverbrowser_default_source | 0=q2servers.com / 1=Favorites / 2=LAN / 3=Custom / 4=History | Default source tab used on every browser open. Stable archived numeric IDs are preserved even though History is drawn after Favorites. |
| cl_serverbrowser_fullscreen | 0=compact window / 1=fullscreen | Expand the browser overlay to fill the whole screen instead of the compact centred window. |
| cl_serverbrowser_hide_empty | 0=show empty servers / 1=hide empty servers | Hide servers that currently have zero human players (bots do not count as players for this filter). |
| cl_serverbrowser_hide_full | 0=show full servers / 1=hide full servers | Hide servers that are at capacity (current players >= max players, ignoring reserved slots). |
| cl_serverbrowser_max_ping | 0..999 (0 = no cap) | Hide servers whose measured ping exceeds this threshold (in milliseconds). 0 disables the filter. |
| cl_serverbrowser_only_players | 0=show all servers / 1=only servers with humans | Only show servers that have at least one human player (excludes empty servers AND bot-only servers). |
| cl_serverbrowser_pillarbox_workspace | 0=clamp to content rect / 1=allow pillarbox bars | Allow the browser overlay to be placed into the pillarbox side bars (aspect-fit free area). When off, the overlay is clamped to the content rect like any other HUD element. |
| cl_serverbrowser_row_colors | 0=uniform rows / 1=zebra stripes | Use alternate row colouring (zebra stripes) for easier vertical scanning through long server lists. |
| cl_serverbrowser_scale | 0.5..3.0 (1.0 = default) | Overlay font and UI scale multiplier. Match to your display DPI; 1.0 is default. |
| cl_serverbrowser_show_badges | 0=no badges / 1=show badges | Show game-mode / role / mod badges next to each server row (e.g. CTF, DM, OpenTDM, OpenFFA). |
| cl_serverbrowser_show_details | 0=hide detail panel / 1=show detail panel | Show the expanded server detail panel on the right side of the browser (player list, rules, ruleset, mod info). Off collapses the browser to just the list for more scanning room. |
| cl_serverbrowser_show_down | 0=hide down servers / 1=show greyed | Show unreachable / down servers greyed in the list instead of hiding them. Useful for spotting a favourite that just went offline. |
| cl_serverbrowser_show_passworded | 0=hide password-protected / 1=show password-protected | Show password-protected servers in the list (you can still join; you just need the password). |
| cl_serverbrowser_ui | modern=Q2PRO-X overlay / legacy=classic q2pro browser | Preferred UI variant. modern is the Q2PRO-X overlay added in this engine. legacy opens the classic q2pro address-book-driven browser (mostly for comparison). |
| cl_updaterate | 1..100 | Specifies the perferred update rate requested from Q2PRO servers. Only used when server is running in variable FPS mode, otherwise default rate of 10 packets per second is used. Specified rate should evenly divide native server frame rate. Default value is 0, which means to use the highest update rate available (that is, native server frame rate). |
| rate | 1000..1000000 | client bandwidth rate (bytes/sec) |
Other
Variables in this section: 1027.
| Variable | Accepted values | Description |
|---|---|---|
| _q2prox_cfg_do_defaults | 0/1 (internal, transient) | Internal transient flag set by the menu when the user confirms a Defaults action; consumed by the config loader on the next tick to apply the chosen scope's defaults. Not intended to be written by hand. |
| _vid_fullscreen | 0/1 (internal) | cached fullscreen mode (internal) |
| adr0 | host[:port] (default empty) | Server address book entry 0: a favourite server address (host[:port]) shown in the server browser. |
| adr1 | host[:port] (default empty) | Server address book entry 1: a favourite server address (host[:port]) shown in the server browser. |
| adr10 | host[:port] (default empty) | Server address book entry 10: a favourite server address (host[:port]) shown in the server browser. |
| adr11 | host[:port] (default empty) | Server address book entry 11: a favourite server address (host[:port]) shown in the server browser. |
| adr12 | host[:port] (default empty) | Server address book entry 12: a favourite server address (host[:port]) shown in the server browser. |
| adr13 | host[:port] (default empty) | Server address book entry 13: a favourite server address (host[:port]) shown in the server browser. |
| adr14 | host[:port] (default empty) | Server address book entry 14: a favourite server address (host[:port]) shown in the server browser. |
| adr15 | host[:port] (default empty) | Server address book entry 15: a favourite server address (host[:port]) shown in the server browser. |
| adr2 | host[:port] (default empty) | Server address book entry 2: a favourite server address (host[:port]) shown in the server browser. |
| adr3 | host[:port] (default empty) | Server address book entry 3: a favourite server address (host[:port]) shown in the server browser. |
| adr4 | host[:port] (default empty) | Server address book entry 4: a favourite server address (host[:port]) shown in the server browser. |
| adr5 | host[:port] (default empty) | Server address book entry 5: a favourite server address (host[:port]) shown in the server browser. |
| adr6 | host[:port] (default empty) | Server address book entry 6: a favourite server address (host[:port]) shown in the server browser. |
| adr7 | host[:port] (default empty) | Server address book entry 7: a favourite server address (host[:port]) shown in the server browser. |
| adr8 | host[:port] (default empty) | Server address book entry 8: a favourite server address (host[:port]) shown in the server browser. |
| adr9 | host[:port] (default empty) | Server address book entry 9: a favourite server address (host[:port]) shown in the server browser. |
| aimfix | 0=stock (default) / 1=fixed | Game library: fire from the exact view origin, fixing the stock aiming offset of weapon traces. |
| allow_download | -1=downloads are permanently disabled (once this value is set, it cant be modified) / 0=downloads are disabled / 1=downloads are enabled | Globally allows or disallows client downloads. Remaining variables listed below are effective only when downloads are globally enabled. Default value is 1. |
| allow_download_maps | 0/1 | Enables downloading of files from maps/ subdirectory. Default value is 1. |
| allow_download_models | 0/1 | Enables automatic downloading of non-player models, sprites and skins. Default value is 1. |
| allow_download_others | 0/1 | Enables downloading of files from any subdirectory other than those listed above. Default value is 0. |
| allow_download_pics | 0/1 | Enables downloading of files from pics/ subdirectory. Default value is 1. |
| allow_download_players | 0/1 | Enables automatic downloading of player models, skins, sounds and icons. Default value is 1. |
| allow_download_sounds | 0/1 | Enables downloading of files from sound/ subdirectory. Default value is 1. |
| allow_download_textures | 0/1 | Enables automatic downloading of map textures. Default value is 1. It is possible to specify a list of paths in download-ignores.txt file that are known to be non-existent and should never be downloaded from server. This file accepts wildcard patterns one per line. Empty lines and lines starting with # or / characters are ignored. |
| basedir | path (read-only after start) | Directory with the game data (baseq2 and mods). Command-line only (+set basedir). |
| bob_pitch | default 0.002 | Game library: view pitch bob amount while walking. |
| bob_roll | default 0.002 | Game library: view roll bob amount while walking. |
| bob_up | default 0.005 | Game library: vertical view bob amount while walking. |
| ch_alpha | 0..1 | Opacity level of crosshair image. Default value is 1 (fully opaque). |
| ch_blue | 0..1 | These variables specify the intensity levels of crosshair image color channels. Default values are 1 (use original color). Ignored if ch_health is enabled. images. |
| ch_green | 0..1 | crosshair green component |
| ch_health | 0/1 | Enables dynamic crosshair coloring based on the health statistic seen in the players HUD. Default value is 0 (use static color). |
| ch_red | 0..1 | crosshair red component |
| ch_scale | 0.25..10.0 (menu step 0.1) | Scaling factor of the crosshair image. Default value is 1 (original size). Menu step 0.1. |
| ch_x | int | crosshair X offset (pixels) |
| ch_y | int | These variables specify the crosshair image offset, counted in pixels from the default position in center of the game screen. Default values are 0 (draw in center). |
| cheats | 0/1 | server cheat permission |
| cl_adjustfov | 0/1 | Specifies if horizontal field of view is automatically adjusted for screens with aspect ratio different from 4/3. Default value is 1 (enabled). |
| cl_allow_vid_restart | 0/1 | allow automatic vid_restart on video-cvar change |
| cl_altf4_exit | 0=swallow Alt+F4 / 1=Alt+F4 quits (default) | Alt+F4 quits the game. When off, the OS close shortcut is swallowed so accidental Alt+F4 does not exit a running match. Intentionally defaults to on to match expected Windows behaviour. |
| cl_anglespeedkey | 0..5 | angle speed multiplier when +speed held |
| cl_autopause | 0/1 | Specifies if single player game or demo playback is automatically paused once client console or menu is opened. Default value is 1 (pause game). |
| cl_batchcmds | 0/1 | batch user commands per client frame |
| cl_beginmapcmd | string | Specifies command to be executed each time client enters a new map. Default value is empty. |
| cl_blend | 0/1 | apply screen blends (damage, picks) |
| 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_changemapcmd | string | Specifies command to be executed each time client begins loading a new map. Default value is empty. |
| cl_chat_filter | bitmask | Specifies if unprintable characters are filtered from incoming chat messages, to prevent common exploits like hiding player names. Default value is 0 (dont filter). |
| cl_chat_notify | 0/1 | Specifies whether to display chat lines in the notify area. Default value is 1 (enabled). |
| cl_chat_sound | 0=dont play chat sound / 1=play normal sound (misc/talk.wav) / 2=play alternative sound (misc/talk1.wav) | Specifies sound effect to play each time chat message is received. Default value is 1. |
| cl_disable_explosions | 1=grenade explosions / 2=rocket explosions | Disables rendering of animated models for the following effects. This variable is a bitmask. Default value is 0. |
| cl_disable_particles | 1=grenade explosions / 2=grenade trails / 4=rocket explosions / 8=rocket trails / 16=blood splashes / 32=blaster trails | Disables rendering of particles for the following effects. This variable is a bitmask. Default value is 0. |
| cl_disconnectcmd | string | Specifies command to be executed each time client disconnects from the server. Default value is empty. See also trigger client command description. |
| cl_dlight_hacks | 1=make rocket projectile light red instead of yellow / 2=make rocket/grenade explosion light radius smaller / 4=disable muzzleflash lights for machinegun and chaingun | Toggles miscellaneous dynamic light effects options. This variable is a bitmask. Default value is 0. |
| cl_entities | 0/1 | draw world/map entities |
| cl_flares | 0/1 | Controls rendering of entities with RF_FLARE flag set. When using Q2PRO protocol, disabling this saves some bandwidth since the server stops sending these entities at all. Default value is 1 (enabled). |
| cl_footsteps | 0=footsteps disabled / 1=use custom footsteps per surface (if found) / 2=use default footstep sound | Controls footstep sounds. When using Q2PRO protocol, disabling this saves some bandwidth since the server stops sending footstep events at all. Default value is 1. |
| cl_forwardspeed | 1..400 | forward movement speed |
| cl_fragfeed_background | 0=off / 1=on | Compact neutral gray background like chat. |
| cl_fragfeed_background_alpha | 0 1 0.05 | Opacity also follows HUD opacity. |
| cl_fragfeed_color | Menu palette | Choose an independent notification color from the named menu palette. Death uses a warm label. |
| cl_fragfeed_deaths | 0=off / 1=on | Show who killed you until actual respawn. Off by default. |
| cl_fragfeed_highlight | 0=off / 1=on | Only the opponent in your confirmed kills/deaths. Chat keeps its current style. |
| cl_fragfeed_kills | 0=off / 1=on | Show your confirmed kills below the crosshair. Off by default. |
| cl_fragfeed_lines | 1 3 1 | At most three recent events; no long queue. |
| cl_fragfeed_name_color | Menu palette | Opponent name color in the console and personal HUD notifications. Choose from the named menu palette. |
| cl_fragfeed_scale | 0.5 3 0.1 | Notification scale, multiplied by your HUD scale. |
| cl_fragfeed_time | 0.5 10 0.1 | Seconds including the final 0.4 second fade. Death stays until respawn. |
| cl_fragfeed_weapon | 0=off / 1=on | Only if the server message identifies it reliably. |
| cl_fragfeed_x | -600 600 4 | HUD-scaled horizontal offset from screen center. |
| cl_fragfeed_y | 16 300 4 | Distance below the crosshair in HUD units. |
| cl_fuzzhack | 0/1 | Enables cl_maxpackets limit even if Q2PRO protocol is not in use by dropping packets. This is not a generally recommended thing to do, but can be enabled if nothing else helps to reduce ping. Default value is 0 (disabled). |
| cl_gibs | 0/1 | Controls rendering of entities with EF_GIB flag set. When using Q2PRO protocol, disabling this saves some bandwidth since the server stops sending these entities at all. Default value is 1 (enabled). |
| cl_gun | 0=dont draw gun / 1=draw gun depending on player handedness / 2=force right handed gun / 3=force left handed gun | Controls rendering of the players own gun model. When using R1Q2 or Q2PRO protocol, disabling this saves some bandwidth since the server stops sending gun updates at all. Default value is 1. |
| cl_gun_x | any float | view weapon X offset |
| cl_gun_y | any float | view weapon Y offset |
| cl_gun_z | any float | Specifies custom gun model offset. Default value is 0. These variables are for developers only. Non-zero values may cause certain gun effects to look misplaced. |
| cl_gunalpha | 0..1 | Specifies opacity level of the players own gun model. Default value is 1 (fully opaque). |
| cl_gunfov | 30..170 | Specifies custom FOV value for drawing players own gun model. Default value is 90. Set to 0 to draw with current FOV value. |
| cl_hit_markers | 0=hit marker effects disabled / 1=draw hit marker / 2=draw hit marker and play hit sound | Specifies if re-release hit marker effects are enabled. Default value is 2. |
| cl_ignore_stufftext | 0/1 | Enable filtering of commands server is allowed to stuff into client console. List of allowed wildcard patterns can be specified in stufftext-whitelist.txt file. Commands are matched raw, before macro expansion, but after splitting multi-line or semicolon separated commands. Internal client commands are always allowed. If whitelist file doesnt exist or is empty, cmd command (with arbitrary arguments) is allowed. This allows the server to query any console variable on the client. If there is at least one entry in whitelist, then cmd needs to be explicitly whitelisted. Q2PRO server will not allow the client in if it cant query version cvar, for example. When set to 2 and higher also issues a warning when stufftext command is ignored. Default value is 0 (dont filter stufftext commands). problems with mods/servers. |
| cl_input_debug | default 0 / 0=off, >0=diagnostic (diagnostic, current session only) | Developer-only: input subsystem diagnostic print. 0=off. Not archived, no menu; zero cost at 0. |
| cl_instantpacket | 0/1 | Specifies if important events such as pressing +attack or +use are sent to the server immediately, ignoring any rate limits. Default value is 1 (enabled). |
| cl_it | 0=off (default) / 1=on | Master switch for Q2PRO-X live multiplayer item respawn timers (manual + own-pickup countdowns on a HUD strip). Honest by design: no wallhack, no hidden server state, no demo pre-scan. Manual it_start/bind timers work on EVERY server; only AUTOMATIC own-pickup starts are authorized (see cl_it_auto_own). Mod-local. |
| cl_it_adr_color | #RRGGBB / inherit (default) | Accent color for Adrenaline: "#RRGGBB" overrides the item's own default colour, or "inherit" for the default. |
| cl_it_adr_hud | 0=hide / 1=show | Show Adrenaline on the HUD strip (independent of tracking). |
| cl_it_adr_hud_s | 0..600 seconds | HUD show window for Adrenaline: seconds before respawn to start showing its cell (unless cl_it_hud_show_all). 0 = use cl_it_warn_s. |
| cl_it_adr_s | 0..300 seconds | Fallback respawn interval (seconds) for Adrenaline; 0 = use the global default (cl_it_default_s). Mega Health instead uses cl_it_mh_fb_s, then dynamic health-decay timing when both fixed values are 0. |
| cl_it_adr_show | 0=off / 1=track | Track Adrenaline on the live item-timer HUD. |
| cl_it_adr_snd | 0=off / 1=on | Enable warning sounds for Adrenaline (needs cl_it_sound + cl_it_sound_mode). |
| cl_it_adr_snd_s | 0..600 seconds | Sound/critical window for Adrenaline: seconds before respawn to start sounds and turn the cell red. 0 = use cl_it_warn_s. |
| cl_it_auto_own | 0=off / 1=on (default) | Auto-start a timer when the current local/observed POV picks up a PERMANENT map item. A type-only STAT_PICKUP_STRING must resolve within cl_it_own_touch_radius of a same-type BSP spawn; confirmed world touches use that same catalog. Dropped/corpse items without a nearby map spawn are ignored. A dropped quad (used at once, with its remaining life in STAT_TIMER) never restarts the quad countdown: the spawn near you, or the map's only quad spawn, counts from the original take (30 s minus the time left); otherwise no timer. Automatic starts are authorized per connection: local server always allows; a remote server's serverinfo sv_allow_timers 1/0 is final; otherwise the signed q2pro-x.com/quake2.pro site policy decides. This NEVER gates manual it_start/bind timers. |
| cl_it_band_color | #RRGGBB / inherit (default) | Accent color for Bandolier: "#RRGGBB" overrides the item's own default colour, or "inherit" for the default. |
| cl_it_band_hud | 0=hide / 1=show | Show Bandolier on the HUD strip (independent of tracking). |
| cl_it_band_hud_s | 0..600 seconds | HUD show window for Bandolier: seconds before respawn to start showing its cell (unless cl_it_hud_show_all). 0 = use cl_it_warn_s. |
| cl_it_band_s | 0..300 seconds | Fallback respawn interval (seconds) for Bandolier; 0 = use the global default (cl_it_default_s). Mega Health instead uses cl_it_mh_fb_s, then dynamic health-decay timing when both fixed values are 0. |
| cl_it_band_show | 0=off / 1=track | Track Bandolier on the live item-timer HUD. |
| cl_it_band_snd | 0=off / 1=on | Enable warning sounds for Bandolier (needs cl_it_sound + cl_it_sound_mode). |
| cl_it_band_snd_s | 0..600 seconds | Sound/critical window for Bandolier: seconds before respawn to start sounds and turn the cell red. 0 = use cl_it_warn_s. |
| cl_it_bfg_color | #RRGGBB / inherit (default) | Accent color for BFG10K: "#RRGGBB" overrides the item's own default colour, or "inherit" for the default. |
| cl_it_bfg_hud | 0=hide / 1=show | Show BFG10K on the HUD strip (independent of tracking). |
| cl_it_bfg_hud_s | 0..600 seconds | HUD show window for BFG10K: seconds before respawn to start showing its cell (unless cl_it_hud_show_all). 0 = use cl_it_warn_s. |
| cl_it_bfg_s | 0..300 seconds | Fallback respawn interval (seconds) for BFG10K; 0 = use the global default (cl_it_default_s). Mega Health instead uses cl_it_mh_fb_s, then dynamic health-decay timing when both fixed values are 0. |
| cl_it_bfg_show | 0=off / 1=track | Track BFG10K on the live item-timer HUD. |
| cl_it_bfg_snd | 0=off / 1=on | Enable warning sounds for BFG10K (needs cl_it_sound + cl_it_sound_mode). |
| cl_it_bfg_snd_s | 0..600 seconds | Sound/critical window for BFG10K: seconds before respawn to start sounds and turn the cell red. 0 = use cl_it_warn_s. |
| cl_it_bsp_match_radius | 8..512 / default 64 | Match radius (world units) between a visible item entity and its BSP spawn record. A visible item must be within this distance of a BSP spawn of the same type to become a trusted instance; unmatched items (dropped/corpse) are ignored. |
| cl_it_cg_color | #RRGGBB / inherit (default) | Accent color for Chaingun: "#RRGGBB" overrides the item's own default colour, or "inherit" for the default. |
| cl_it_cg_hud | 0=hide / 1=show | Show Chaingun on the HUD strip (independent of tracking). |
| cl_it_cg_hud_s | 0..600 seconds | HUD show window for Chaingun: seconds before respawn to start showing its cell (unless cl_it_hud_show_all). 0 = use cl_it_warn_s. |
| cl_it_cg_s | 0..300 seconds | Fallback respawn interval (seconds) for Chaingun; 0 = use the global default (cl_it_default_s). Mega Health instead uses cl_it_mh_fb_s, then dynamic health-decay timing when both fixed values are 0. |
| cl_it_cg_show | 0=off / 1=track | Track Chaingun on the live item-timer HUD. |
| cl_it_cg_snd | 0=off / 1=on | Enable warning sounds for Chaingun (needs cl_it_sound + cl_it_sound_mode). |
| cl_it_cg_snd_s | 0..600 seconds | Sound/critical window for Chaingun: seconds before respawn to start sounds and turn the cell red. 0 = use cl_it_warn_s. |
| cl_it_debug | 0=off (default) / 1=on (diagnostic, current session only) | Live item-timer debug logging to the console. |
| cl_it_default_s | 0=none / 1..300 seconds / default 30 | Global fallback respawn seconds used when a per-item interval is 0. Mega Health is excluded so it never fabricates a fixed countdown. |
| cl_it_defaults_ver | internal / leave at its value | Internal one-shot migration version for live item-timer defaults. Do not edit by hand: on load it fixes old-bad saved fallback intervals (Invulnerability 60->300, Power Screen/Shield 20->60) once, then stays at 1. |
| cl_it_env_color | #RRGGBB / inherit (default) | Accent color for Environment Suit: "#RRGGBB" overrides the item's own default colour, or "inherit" for the default. |
| cl_it_env_hud | 0=hide / 1=show | Show Environment Suit on the HUD strip (independent of tracking). |
| cl_it_env_hud_s | 0..600 seconds | HUD show window for Environment Suit: seconds before respawn to start showing its cell (unless cl_it_hud_show_all). 0 = use cl_it_warn_s. |
| cl_it_env_s | 0..300 seconds | Fallback respawn interval (seconds) for Environment Suit; 0 = use the global default (cl_it_default_s). Mega Health instead uses cl_it_mh_fb_s, then dynamic health-decay timing when both fixed values are 0. |
| cl_it_env_show | 0=off / 1=track | Track Environment Suit on the live item-timer HUD. |
| cl_it_env_snd | 0=off / 1=on | Enable warning sounds for Environment Suit (needs cl_it_sound + cl_it_sound_mode). |
| cl_it_env_snd_s | 0..600 seconds | Sound/critical window for Environment Suit: seconds before respawn to start sounds and turn the cell red. 0 = use cl_it_warn_s. |
| cl_it_ga_color | #RRGGBB / inherit (default) | Accent color for Green Armor (jacket): "#RRGGBB" overrides the item's own default colour, or "inherit" for the default. |
| cl_it_ga_hud | 0=hide / 1=show | Show Green Armor (jacket) on the HUD strip (independent of tracking). |
| cl_it_ga_hud_s | 0..600 seconds | HUD show window for Green Armor (jacket): seconds before respawn to start showing its cell (unless cl_it_hud_show_all). 0 = use cl_it_warn_s. |
| cl_it_ga_s | 0..300 seconds | Fallback respawn interval (seconds) for Green Armor (jacket); 0 = use the global default (cl_it_default_s). Mega Health instead uses cl_it_mh_fb_s, then dynamic health-decay timing when both fixed values are 0. |
| cl_it_ga_show | 0=off / 1=track | Track Green Armor (jacket) on the live item-timer HUD. |
| cl_it_ga_snd | 0=off / 1=on | Enable warning sounds for Green Armor (jacket) (needs cl_it_sound + cl_it_sound_mode). |
| cl_it_ga_snd_s | 0..600 seconds | Sound/critical window for Green Armor (jacket): seconds before respawn to start sounds and turn the cell red. 0 = use cl_it_warn_s. |
| cl_it_gl_color | #RRGGBB / inherit (default) | Accent color for Grenade Launcher: "#RRGGBB" overrides the item's own default colour, or "inherit" for the default. |
| cl_it_gl_hud | 0=hide / 1=show | Show Grenade Launcher on the HUD strip (independent of tracking). |
| cl_it_gl_hud_s | 0..600 seconds | HUD show window for Grenade Launcher: seconds before respawn to start showing its cell (unless cl_it_hud_show_all). 0 = use cl_it_warn_s. |
| cl_it_gl_s | 0..300 seconds | Fallback respawn interval (seconds) for Grenade Launcher; 0 = use the global default (cl_it_default_s). Mega Health instead uses cl_it_mh_fb_s, then dynamic health-decay timing when both fixed values are 0. |
| cl_it_gl_show | 0=off / 1=track | Track Grenade Launcher on the live item-timer HUD. |
| cl_it_gl_snd | 0=off / 1=on | Enable warning sounds for Grenade Launcher (needs cl_it_sound + cl_it_sound_mode). |
| cl_it_gl_snd_s | 0..600 seconds | Sound/critical window for Grenade Launcher: seconds before respawn to start sounds and turn the cell red. 0 = use cl_it_warn_s. |
| cl_it_hb_color | #RRGGBB / inherit (default) | Accent color for HyperBlaster: "#RRGGBB" overrides the item's own default colour, or "inherit" for the default. |
| cl_it_hb_hud | 0=hide / 1=show | Show HyperBlaster on the HUD strip (independent of tracking). |
| cl_it_hb_hud_s | 0..600 seconds | HUD show window for HyperBlaster: seconds before respawn to start showing its cell (unless cl_it_hud_show_all). 0 = use cl_it_warn_s. |
| cl_it_hb_s | 0..300 seconds | Fallback respawn interval (seconds) for HyperBlaster; 0 = use the global default (cl_it_default_s). Mega Health instead uses cl_it_mh_fb_s, then dynamic health-decay timing when both fixed values are 0. |
| cl_it_hb_show | 0=off / 1=track | Track HyperBlaster on the live item-timer HUD. |
| cl_it_hb_snd | 0=off / 1=on | Enable warning sounds for HyperBlaster (needs cl_it_sound + cl_it_sound_mode). |
| cl_it_hb_snd_s | 0..600 seconds | Sound/critical window for HyperBlaster: seconds before respawn to start sounds and turn the cell red. 0 = use cl_it_warn_s. |
| cl_it_hg_color | #RRGGBB / inherit (default) | Accent color for Hand Grenades: "#RRGGBB" overrides the item's own default colour, or "inherit" for the default. |
| cl_it_hg_hud | 0=hide / 1=show | Show Hand Grenades on the HUD strip (independent of tracking). |
| cl_it_hg_hud_s | 0..600 seconds | HUD show window for Hand Grenades: seconds before respawn to start showing its cell (unless cl_it_hud_show_all). 0 = use cl_it_warn_s. |
| cl_it_hg_s | 0..300 seconds | Fallback respawn interval (seconds) for Hand Grenades; 0 = use the global default (cl_it_default_s). Mega Health instead uses cl_it_mh_fb_s, then dynamic health-decay timing when both fixed values are 0. |
| cl_it_hg_show | 0=off / 1=track | Track Hand Grenades on the live item-timer HUD. |
| cl_it_hg_snd | 0=off / 1=on | Enable warning sounds for Hand Grenades (needs cl_it_sound + cl_it_sound_mode). |
| cl_it_hg_snd_s | 0..600 seconds | Sound/critical window for Hand Grenades: seconds before respawn to start sounds and turn the cell red. 0 = use cl_it_warn_s. |
| cl_it_hud | 0=off / 1=on (default) | Draw the on-screen live-timer countdown strip. Respects scr_draw2d, HUD scale and common alpha. Menu-time visibility is controlled separately by cl_it_hud_in_menu. |
| cl_it_hud_alpha | 0..1 / default 1.0 | Live-timer strip opacity. |
| cl_it_hud_armor_x | -1=auto (default) / 0..hud_width | Armor split-HUD X in HUD pixels; -1 = auto (right side, stacked below the strip above it). Only used when cl_it_hud_split is 1. |
| cl_it_hud_armor_y | -1=auto (default) / 0..hud_height | Armor split-HUD Y in HUD pixels; -1 = auto stack. Only used when cl_it_hud_split is 1. |
| cl_it_hud_blink | 0=off (default) / 1=on | Smoothly pulse (dimmer-style) each tile's colored border once its timer enters the warning window, speeding up as respawn nears (1 Hz at the window edge up to 5 Hz when ready), with a bloom glow that grows as the border dims. Common to all tiles. |
| cl_it_hud_border_run | 0=off (default) / 1=on | Independent of the blink: a bright comet of blocks runs clockwise around each tile's border inside the warning window, faster as respawn nears. Common to all tiles. |
| cl_it_hud_icon_pulse | 0=off (default) / 1=on | Independent of the border blink: smoothly pulse the item icon (dimmer-style, up to 5 Hz near respawn) with a bloom glow behind it that grows as the icon dims. Common to all tiles. |
| cl_it_hud_in_menu | 0=hide in menu / 1=show under menu (default) | Keep live-timer HUD strips rendered underneath an open menu. The timer layer is composited before the menu, so cl_menu_alpha still applies naturally and a fully opaque menu covers it. |
| cl_it_hud_labels | 0=off (default) / 1=on | Draw a short English item code (RL, RG, RA, Q, MH, ...) under each HUD icon. |
| cl_it_hud_max | 1..20 / default 8 | Maximum number of timer cells drawn at once (soonest-first). |
| cl_it_hud_misc_x | -1=auto (default) / 0..hud_width | Other (misc + health) split-HUD X in HUD pixels; -1 = auto stack. Only used when cl_it_hud_split is 1. |
| cl_it_hud_misc_y | -1=auto (default) / 0..hud_height | Other (misc + health) split-HUD Y in HUD pixels; -1 = auto stack. Only used when cl_it_hud_split is 1. |
| cl_it_hud_pow_x | -1=auto (default) / 0..hud_width | Powerups split-HUD X in HUD pixels; -1 = auto stack. Only used when cl_it_hud_split is 1. |
| cl_it_hud_pow_y | -1=auto (default) / 0..hud_height | Powerups split-HUD Y in HUD pixels; -1 = auto stack. Only used when cl_it_hud_split is 1. |
| cl_it_hud_scale | 0.3..4.0 / default 1.0 | Live-timer strip size multiplier. |
| cl_it_hud_show_all | 0=window only / 1=show all (default) | Show every tracked timer on the HUD from the moment it starts, ignoring each item's HUD show window. Off = a cell appears only once its remaining time is within that item's cl_it_<id>_hud_s window. |
| cl_it_hud_split | 0=combined (default) / 1=split by class | Split the timer HUD into four separate strips by class: Armor, Powerups, Weapons, Other. Off = one combined strip (default). Scale, opacity, warning window and max cells stay common to all strips; each strip has its own position cvars (auto or fixed). |
| cl_it_hud_wpn_x | -1=auto (default) / 0..hud_width | Weapons split-HUD X in HUD pixels; -1 = auto stack. Only used when cl_it_hud_split is 1. |
| cl_it_hud_wpn_y | -1=auto (default) / 0..hud_height | Weapons split-HUD Y in HUD pixels; -1 = auto stack. Only used when cl_it_hud_split is 1. |
| cl_it_hud_x | -1=auto (default) / 0..hud_width | Horizontal HUD position of the timer strip, in HUD pixels. -1 = auto (right-aligned, 8 px horizontal margin), clamped to the visible HUD rect. |
| cl_it_hud_y | -1=auto (default) / 0..hud_height | Vertical HUD position of the timer strip, in HUD pixels. -1 = auto (Y=80, below the OpenFFA/OpenTDM Frags/Rank/Time block), clamped to the visible HUD rect. |
| cl_it_instance_cluster_radius | 8..512 / default 64 | Merge radius (world units) for near-duplicate BSP spawn origins of the same item type when building the spawn catalog. The catalog is built per map; changing this value takes effect after a map/reload. |
| cl_it_inv_color | #RRGGBB / inherit (default) | Accent color for Invulnerability: "#RRGGBB" overrides the item's own default colour, or "inherit" for the default. |
| cl_it_inv_hud | 0=hide / 1=show | Show Invulnerability on the HUD strip (independent of tracking). |
| cl_it_inv_hud_s | 0..600 seconds | HUD show window for Invulnerability: seconds before respawn to start showing its cell (unless cl_it_hud_show_all). 0 = use cl_it_warn_s. |
| cl_it_inv_s | 0..300 seconds | Fallback respawn interval (seconds) for Invulnerability; 0 = use the global default (cl_it_default_s). Mega Health instead uses cl_it_mh_fb_s, then dynamic health-decay timing when both fixed values are 0. |
| cl_it_inv_show | 0=off / 1=track | Track Invulnerability on the live item-timer HUD. |
| cl_it_inv_snd | 0=off / 1=on | Enable warning sounds for Invulnerability (needs cl_it_sound + cl_it_sound_mode). |
| cl_it_inv_snd_s | 0..600 seconds | Sound/critical window for Invulnerability: seconds before respawn to start sounds and turn the cell red. 0 = use cl_it_warn_s. |
| cl_it_learn | 0=off (default) / 1=on (needs cl_it_world_observe) | Use per-instance respawn intervals learned from world observation: watching the SAME BSP spawn go hidden then visible again gives its real respawn time (session only, bounded 5-300 s). Requires cl_it_world_observe. Never learns from type-only own pickups. Dynamic Mega Health is excluded unless a fixed Mega override supplies a valid reference. Default off. |
| cl_it_mg_color | #RRGGBB / inherit (default) | Accent color for Machinegun: "#RRGGBB" overrides the item's own default colour, or "inherit" for the default. |
| cl_it_mg_hud | 0=hide / 1=show | Show Machinegun on the HUD strip (independent of tracking). |
| cl_it_mg_hud_s | 0..600 seconds | HUD show window for Machinegun: seconds before respawn to start showing its cell (unless cl_it_hud_show_all). 0 = use cl_it_warn_s. |
| cl_it_mg_s | 0..300 seconds | Fallback respawn interval (seconds) for Machinegun; 0 = use the global default (cl_it_default_s). Mega Health instead uses cl_it_mh_fb_s, then dynamic health-decay timing when both fixed values are 0. |
| cl_it_mg_show | 0=off / 1=track | Track Machinegun on the live item-timer HUD. |
| cl_it_mg_snd | 0=off / 1=on | Enable warning sounds for Machinegun (needs cl_it_sound + cl_it_sound_mode). |
| cl_it_mg_snd_s | 0..600 seconds | Sound/critical window for Machinegun: seconds before respawn to start sounds and turn the cell red. 0 = use cl_it_warn_s. |
| cl_it_mh_color | #RRGGBB / inherit (default) | Accent color for Mega Health: "#RRGGBB" overrides the item's own default colour, or "inherit" for the default. |
| cl_it_mh_fb_s | 0=dynamic stock timing (default) / 1..300 seconds fixed | Fixed Mega Health fallback interval. 0 keeps the stock dynamic automatic path: after a trusted Mega pickup, wait at least five seconds and until POV health reaches 100, then start cl_it_mh_post_decay_s. A positive value overrides that behavior for mods with a fixed Mega interval. |
| cl_it_mh_hud | 0=hide / 1=show | Show Mega Health on the HUD strip (independent of tracking). |
| cl_it_mh_hud_s | 0..600 seconds | HUD show window for Mega Health: seconds before respawn to start showing its cell (unless cl_it_hud_show_all). 0 = use cl_it_warn_s. |
| cl_it_mh_post_decay_s | 1..300 seconds / default 20 | Automatic Mega Health respawn countdown after excess health has decayed/reached 100. Stock baseq2 schedules the hidden Mega 20 seconds after this transition. Used only by the dynamic automatic path; fixed per-item/fallback values and manual it_start remain fixed timers. |
| cl_it_mh_s | 0..300 seconds | Fallback respawn interval (seconds) for Mega Health; 0 = use the global default (cl_it_default_s). Mega Health instead uses cl_it_mh_fb_s, then dynamic health-decay timing when both fixed values are 0. |
| cl_it_mh_show | 0=off / 1=track | Track Mega Health on the live item-timer HUD. |
| cl_it_mh_snd | 0=off / 1=on | Enable warning sounds for Mega Health (needs cl_it_sound + cl_it_sound_mode). |
| cl_it_mh_snd_s | 0..600 seconds | Sound/critical window for Mega Health: seconds before respawn to start sounds and turn the cell red. 0 = use cl_it_warn_s. |
| cl_it_ordinals | 0=off / 1=on (default) | Draw the BSP ordinal (1, 2, ...) on the HUD when the map has more than one instance of that item, so identical items are distinguishable. |
| cl_it_own_touch_radius | 16..128 / default 64 | Trust radius for an automatic own pickup. A type-only STAT_PICKUP_STRING must occur this close to a same-type BSP map spawn, which rejects ordinary dropped/corpse items. With cl_it_world_observe, the same radius decides whether a vanishing visible instance was taken by your current POV. This also lets identical map items time separately. |
| cl_it_pack_color | #RRGGBB / inherit (default) | Accent color for Ammo Pack: "#RRGGBB" overrides the item's own default colour, or "inherit" for the default. |
| cl_it_pack_hud | 0=hide / 1=show | Show Ammo Pack on the HUD strip (independent of tracking). |
| cl_it_pack_hud_s | 0..600 seconds | HUD show window for Ammo Pack: seconds before respawn to start showing its cell (unless cl_it_hud_show_all). 0 = use cl_it_warn_s. |
| cl_it_pack_s | 0..300 seconds | Fallback respawn interval (seconds) for Ammo Pack; 0 = use the global default (cl_it_default_s). Mega Health instead uses cl_it_mh_fb_s, then dynamic health-decay timing when both fixed values are 0. |
| cl_it_pack_show | 0=off / 1=track | Track Ammo Pack on the live item-timer HUD. |
| cl_it_pack_snd | 0=off / 1=on | Enable warning sounds for Ammo Pack (needs cl_it_sound + cl_it_sound_mode). |
| cl_it_pack_snd_s | 0..600 seconds | Sound/critical window for Ammo Pack: seconds before respawn to start sounds and turn the cell red. 0 = use cl_it_warn_s. |
| cl_it_pickup_attach_radius | 16..2048 / default 200 | For the manual 'it_start <id> <seconds>' override: how close a BSP spawn must be to you for that manual timer to bind to the nearest concrete instance. Beyond it, the manual timer is class-level (no ordinal). |
| cl_it_pwh_color | #RRGGBB / inherit (default) | Accent color for Power Shield: "#RRGGBB" overrides the item's own default colour, or "inherit" for the default. |
| cl_it_pwh_hud | 0=hide / 1=show | Show Power Shield on the HUD strip (independent of tracking). |
| cl_it_pwh_hud_s | 0..600 seconds | HUD show window for Power Shield: seconds before respawn to start showing its cell (unless cl_it_hud_show_all). 0 = use cl_it_warn_s. |
| cl_it_pwh_s | 0..300 seconds | Fallback respawn interval (seconds) for Power Shield; 0 = use the global default (cl_it_default_s). Mega Health instead uses cl_it_mh_fb_s, then dynamic health-decay timing when both fixed values are 0. |
| cl_it_pwh_show | 0=off / 1=track | Track Power Shield on the live item-timer HUD. |
| cl_it_pwh_snd | 0=off / 1=on | Enable warning sounds for Power Shield (needs cl_it_sound + cl_it_sound_mode). |
| cl_it_pwh_snd_s | 0..600 seconds | Sound/critical window for Power Shield: seconds before respawn to start sounds and turn the cell red. 0 = use cl_it_warn_s. |
| cl_it_pws_color | #RRGGBB / inherit (default) | Accent color for Power Screen: "#RRGGBB" overrides the item's own default colour, or "inherit" for the default. |
| cl_it_pws_hud | 0=hide / 1=show | Show Power Screen on the HUD strip (independent of tracking). |
| cl_it_pws_hud_s | 0..600 seconds | HUD show window for Power Screen: seconds before respawn to start showing its cell (unless cl_it_hud_show_all). 0 = use cl_it_warn_s. |
| cl_it_pws_s | 0..300 seconds | Fallback respawn interval (seconds) for Power Screen; 0 = use the global default (cl_it_default_s). Mega Health instead uses cl_it_mh_fb_s, then dynamic health-decay timing when both fixed values are 0. |
| cl_it_pws_show | 0=off / 1=track | Track Power Screen on the live item-timer HUD. |
| cl_it_pws_snd | 0=off / 1=on | Enable warning sounds for Power Screen (needs cl_it_sound + cl_it_sound_mode). |
| cl_it_pws_snd_s | 0..600 seconds | Sound/critical window for Power Screen: seconds before respawn to start sounds and turn the cell red. 0 = use cl_it_warn_s. |
| cl_it_quad_color | #RRGGBB / inherit (default) | Accent color for Quad Damage: "#RRGGBB" overrides the item's own default colour, or "inherit" for the default. |
| cl_it_quad_hud | 0=hide / 1=show | Show Quad Damage on the HUD strip (independent of tracking). |
| cl_it_quad_hud_s | 0..600 seconds | HUD show window for Quad Damage: seconds before respawn to start showing its cell (unless cl_it_hud_show_all). 0 = use cl_it_warn_s. |
| cl_it_quad_s | 0..300 seconds | Fallback respawn interval (seconds) for Quad Damage; 0 = use the global default (cl_it_default_s). Mega Health instead uses cl_it_mh_fb_s, then dynamic health-decay timing when both fixed values are 0. |
| cl_it_quad_show | 0=off / 1=track | Track Quad Damage on the live item-timer HUD. |
| cl_it_quad_snd | 0=off / 1=on | Enable warning sounds for Quad Damage (needs cl_it_sound + cl_it_sound_mode). |
| cl_it_quad_snd_s | 0..600 seconds | Sound/critical window for Quad Damage: seconds before respawn to start sounds and turn the cell red. 0 = use cl_it_warn_s. |
| cl_it_ra_color | #RRGGBB / inherit (default) | Accent color for Red Armor (body): "#RRGGBB" overrides the item's own default colour, or "inherit" for the default. |
| cl_it_ra_hud | 0=hide / 1=show | Show Red Armor (body) on the HUD strip (independent of tracking). |
| cl_it_ra_hud_s | 0..600 seconds | HUD show window for Red Armor (body): seconds before respawn to start showing its cell (unless cl_it_hud_show_all). 0 = use cl_it_warn_s. |
| cl_it_ra_s | 0..300 seconds | Fallback respawn interval (seconds) for Red Armor (body); 0 = use the global default (cl_it_default_s). Mega Health instead uses cl_it_mh_fb_s, then dynamic health-decay timing when both fixed values are 0. |
| cl_it_ra_show | 0=off / 1=track | Track Red Armor (body) on the live item-timer HUD. |
| cl_it_ra_snd | 0=off / 1=on | Enable warning sounds for Red Armor (body) (needs cl_it_sound + cl_it_sound_mode). |
| cl_it_ra_snd_s | 0..600 seconds | Sound/critical window for Red Armor (body): seconds before respawn to start sounds and turn the cell red. 0 = use cl_it_warn_s. |
| cl_it_rail_color | #RRGGBB / inherit (default) | Accent color for Railgun: "#RRGGBB" overrides the item's own default colour, or "inherit" for the default. |
| cl_it_rail_hud | 0=hide / 1=show | Show Railgun on the HUD strip (independent of tracking). |
| cl_it_rail_hud_s | 0..600 seconds | HUD show window for Railgun: seconds before respawn to start showing its cell (unless cl_it_hud_show_all). 0 = use cl_it_warn_s. |
| cl_it_rail_s | 0..300 seconds | Fallback respawn interval (seconds) for Railgun; 0 = use the global default (cl_it_default_s). Mega Health instead uses cl_it_mh_fb_s, then dynamic health-decay timing when both fixed values are 0. |
| cl_it_rail_show | 0=off / 1=track | Track Railgun on the live item-timer HUD. |
| cl_it_rail_snd | 0=off / 1=on | Enable warning sounds for Railgun (needs cl_it_sound + cl_it_sound_mode). |
| cl_it_rail_snd_s | 0..600 seconds | Sound/critical window for Railgun: seconds before respawn to start sounds and turn the cell red. 0 = use cl_it_warn_s. |
| cl_it_ready_hold_s | 0..60 seconds / default 5 | Keep a READY cell on screen this many seconds after the countdown reaches zero. |
| cl_it_reb_color | #RRGGBB / inherit (default) | Accent color for Rebreather: "#RRGGBB" overrides the item's own default colour, or "inherit" for the default. |
| cl_it_reb_hud | 0=hide / 1=show | Show Rebreather on the HUD strip (independent of tracking). |
| cl_it_reb_hud_s | 0..600 seconds | HUD show window for Rebreather: seconds before respawn to start showing its cell (unless cl_it_hud_show_all). 0 = use cl_it_warn_s. |
| cl_it_reb_s | 0..300 seconds | Fallback respawn interval (seconds) for Rebreather; 0 = use the global default (cl_it_default_s). Mega Health instead uses cl_it_mh_fb_s, then dynamic health-decay timing when both fixed values are 0. |
| cl_it_reb_show | 0=off / 1=track | Track Rebreather on the live item-timer HUD. |
| cl_it_reb_snd | 0=off / 1=on | Enable warning sounds for Rebreather (needs cl_it_sound + cl_it_sound_mode). |
| cl_it_reb_snd_s | 0..600 seconds | Sound/critical window for Rebreather: seconds before respawn to start sounds and turn the cell red. 0 = use cl_it_warn_s. |
| cl_it_reset_on_pov_change | 0=keep timers / 1=reset (default) | Clear all live item timers when the spectator view identity changes: another chase target, chase to free observer, observer back to play, or the reverse. Pickup/PVS edge detectors are always rebased on a POV change even when this option is off, so another player's stale pickup message cannot create a false timer. |
| cl_it_rl_color | #RRGGBB / inherit (default) | Accent color for Rocket Launcher: "#RRGGBB" overrides the item's own default colour, or "inherit" for the default. |
| cl_it_rl_hud | 0=hide / 1=show | Show Rocket Launcher on the HUD strip (independent of tracking). |
| cl_it_rl_hud_s | 0..600 seconds | HUD show window for Rocket Launcher: seconds before respawn to start showing its cell (unless cl_it_hud_show_all). 0 = use cl_it_warn_s. |
| cl_it_rl_s | 0..300 seconds | Fallback respawn interval (seconds) for Rocket Launcher; 0 = use the global default (cl_it_default_s). Mega Health instead uses cl_it_mh_fb_s, then dynamic health-decay timing when both fixed values are 0. |
| cl_it_rl_show | 0=off / 1=track | Track Rocket Launcher on the live item-timer HUD. |
| cl_it_rl_snd | 0=off / 1=on | Enable warning sounds for Rocket Launcher (needs cl_it_sound + cl_it_sound_mode). |
| cl_it_rl_snd_s | 0..600 seconds | Sound/critical window for Rocket Launcher: seconds before respawn to start sounds and turn the cell red. 0 = use cl_it_warn_s. |
| cl_it_sg_color | #RRGGBB / inherit (default) | Accent color for Shotgun: "#RRGGBB" overrides the item's own default colour, or "inherit" for the default. |
| cl_it_sg_hud | 0=hide / 1=show | Show Shotgun on the HUD strip (independent of tracking). |
| cl_it_sg_hud_s | 0..600 seconds | HUD show window for Shotgun: seconds before respawn to start showing its cell (unless cl_it_hud_show_all). 0 = use cl_it_warn_s. |
| cl_it_sg_s | 0..300 seconds | Fallback respawn interval (seconds) for Shotgun; 0 = use the global default (cl_it_default_s). Mega Health instead uses cl_it_mh_fb_s, then dynamic health-decay timing when both fixed values are 0. |
| cl_it_sg_show | 0=off / 1=track | Track Shotgun on the live item-timer HUD. |
| cl_it_sg_snd | 0=off / 1=on | Enable warning sounds for Shotgun (needs cl_it_sound + cl_it_sound_mode). |
| cl_it_sg_snd_s | 0..600 seconds | Sound/critical window for Shotgun: seconds before respawn to start sounds and turn the cell red. 0 = use cl_it_warn_s. |
| cl_it_sil_color | #RRGGBB / inherit (default) | Accent color for Silencer: "#RRGGBB" overrides the item's own default colour, or "inherit" for the default. |
| cl_it_sil_hud | 0=hide / 1=show | Show Silencer on the HUD strip (independent of tracking). |
| cl_it_sil_hud_s | 0..600 seconds | HUD show window for Silencer: seconds before respawn to start showing its cell (unless cl_it_hud_show_all). 0 = use cl_it_warn_s. |
| cl_it_sil_s | 0..300 seconds | Fallback respawn interval (seconds) for Silencer; 0 = use the global default (cl_it_default_s). Mega Health instead uses cl_it_mh_fb_s, then dynamic health-decay timing when both fixed values are 0. |
| cl_it_sil_show | 0=off / 1=track | Track Silencer on the live item-timer HUD. |
| cl_it_sil_snd | 0=off / 1=on | Enable warning sounds for Silencer (needs cl_it_sound + cl_it_sound_mode). |
| cl_it_sil_snd_s | 0..600 seconds | Sound/critical window for Silencer: seconds before respawn to start sounds and turn the cell red. 0 = use cl_it_warn_s. |
| cl_it_sound | 0=off (default) / 1=on | Play an optional local warning sound when a timer enters the warning window. Code path only: the asset (sound/q2prox/it/warn.wav) is optional and playback silently skips if it is missing. |
| cl_it_sound_countdown | 0=off / 1=on (default) | Play a per-second number cue (q2x/tm/num/<n>.wav) for each remaining second inside an item's sound window. Optional assets; silent if missing. |
| cl_it_sound_mode | 0=off / 1=generic (default) / 2=rich | Sound mode: 0 off, 1 generic (shared soon/up/number cues), 2 rich (per-item voice files with fallback to generic). All sound assets are optional external WAVs under sound/q2x/tm/; missing files silently skip. |
| cl_it_sound_up | 0=off / 1=on (default) | Play the 'item is up' cue (q2x/tm/sys/up.wav) when a timer reaches respawn. Optional asset; silent if missing. |
| cl_it_sound_vol | 0..1 / default 1.0 | Warning sound volume. |
| cl_it_ssg_color | #RRGGBB / inherit (default) | Accent color for Super Shotgun: "#RRGGBB" overrides the item's own default colour, or "inherit" for the default. |
| cl_it_ssg_hud | 0=hide / 1=show | Show Super Shotgun on the HUD strip (independent of tracking). |
| cl_it_ssg_hud_s | 0..600 seconds | HUD show window for Super Shotgun: seconds before respawn to start showing its cell (unless cl_it_hud_show_all). 0 = use cl_it_warn_s. |
| cl_it_ssg_s | 0..300 seconds | Fallback respawn interval (seconds) for Super Shotgun; 0 = use the global default (cl_it_default_s). Mega Health instead uses cl_it_mh_fb_s, then dynamic health-decay timing when both fixed values are 0. |
| cl_it_ssg_show | 0=off / 1=track | Track Super Shotgun on the live item-timer HUD. |
| cl_it_ssg_snd | 0=off / 1=on | Enable warning sounds for Super Shotgun (needs cl_it_sound + cl_it_sound_mode). |
| cl_it_ssg_snd_s | 0..600 seconds | Sound/critical window for Super Shotgun: seconds before respawn to start sounds and turn the cell red. 0 = use cl_it_warn_s. |
| cl_it_unknown_policy | 0=hide (default) / 1=show '?' | What to do with an item that has no known respawn interval: 0 hide it, 1 show a '?' cell. A default automatic Mega Health pickup is pending on its health-decay transition instead and does not create a fake unknown cell. |
| cl_it_warn_s | 0..60 seconds / default 3 | Warning window: seconds before respawn when a cell turns red and the optional warning sound fires. |
| cl_it_world_debug | 0=off (default) / 1=on (diagnostic, current session only) | Verbose world-observation logging (BSP parse counts, ignored candidates). |
| cl_it_world_observe | 0=off (default) / 1=on | Use only item entities already received in the current POV's normal snapshot/PVS plus the static BSP map-spawn catalog, so identical map instances can be timed separately. This does not search for items, reveal anything through walls, read hidden server state, or pre-scan future/demo data. An item merely appearing or disappearing never starts a timer: automatic start still requires a confirmed pickup by the current POV at a permanent map spawn and normal automatic-timer authorization. Per-instance learning, when enabled separately, may refine the interval only after that same confirmed spawn is seen returning. Opt-in. |
| cl_it_ya_color | #RRGGBB / inherit (default) | Accent color for Yellow Armor (combat): "#RRGGBB" overrides the item's own default colour, or "inherit" for the default. |
| cl_it_ya_hud | 0=hide / 1=show | Show Yellow Armor (combat) on the HUD strip (independent of tracking). |
| cl_it_ya_hud_s | 0..600 seconds | HUD show window for Yellow Armor (combat): seconds before respawn to start showing its cell (unless cl_it_hud_show_all). 0 = use cl_it_warn_s. |
| cl_it_ya_s | 0..300 seconds | Fallback respawn interval (seconds) for Yellow Armor (combat); 0 = use the global default (cl_it_default_s). Mega Health instead uses cl_it_mh_fb_s, then dynamic health-decay timing when both fixed values are 0. |
| cl_it_ya_show | 0=off / 1=track | Track Yellow Armor (combat) on the live item-timer HUD. |
| cl_it_ya_snd | 0=off / 1=on | Enable warning sounds for Yellow Armor (combat) (needs cl_it_sound + cl_it_sound_mode). |
| cl_it_ya_snd_s | 0..600 seconds | Sound/critical window for Yellow Armor (combat): seconds before respawn to start sounds and turn the cell red. 0 = use cl_it_warn_s. |
| cl_kickangles | 0/1 | apply server-driven view kick angles |
| cl_lerp_lightstyles | 0/1 | Enables interpolation of dynamic light styles. Default value is 0 (disabled). |
| cl_lights | 0/1 | render dynamic lights |
| cl_maxpackets | 10..1000 | Number of packets client sends per second. 0 means no particular limit. Unless connected using Q2PRO protocol, this variable is ignored and packets are sent in sync with client physics frame rate, controlled with cl_maxfps variable. Default value is 30. |
| cl_movement_feel_mode | q2pro=Q2PRO default / r1q2-like=classic r1q2 standstill-start / jump feel | Movement feel profile. q2pro is the default Q2PRO physics. r1q2-like restores the classic r1q2 standstill-start and jump feel that some competitive players prefer; selects a different ground-friction / jump-impulse combination. |
| cl_muzzleflashes | 0/1 | Specifies if re-release muzzleflash models are enabled. Does _not_ affect muzzleflash dynamic lights. Default value is 1. |
| cl_muzzlelight_time | 0..1000 | Lifetime, in milliseconds, of muzzleflash dynamic lights. Default value is 16. |
| cl_nobob | 0=items float / 1=items stay still | Stops items lying on the floor from floating up and down. Nothing to do with your own view: your own walking bounce and running tilt are cl_viewbob (any server). |
| cl_nodelta | 0/1 | disable delta compression on commands |
| cl_noglow | 0=draw glow shells / 1=disable glow shells (local) | Disable the player / weapon colour shell 'glow' effect (RF_SHELL_*) on the local scope. Removes the green/red/blue/yellow tint overlay applied to entities under quad/pent/invul/etc. without affecting the power-up state itself. |
| cl_nolerp | 0/1 | disable entity interpolation |
| cl_noskins | 0=no restrictions, if skins exists, it will be loaded / 1=do not allow any skins except of male/grunt / 2=do not allow any skins except of male/grunt and female/athena | Restricts which models and skins players can use. Default value is 0. |
| cl_otx_bot1_profile | profile name (default damiah) | OpenTDM-X local bot match: play-style profile of bot 1 (a donor style such as damiah/purri/david/syanid, or god, human, mixedbot, noob...; otx profiles lists them). |
| cl_otx_bot1_seed | 0..4294967295 (default 1) | OpenTDM-X local bot match: random seed of bot 1; the same seed repeats the same choices. |
| cl_otx_bot1_skill | 0..200 (default 100) | OpenTDM-X local bot match: skill of bot 1 (0 = weakest, 200 = strongest). |
| cl_otx_bot2_profile | profile name (default purri) | OpenTDM-X local bot match: play-style profile of bot 2 (a donor style such as damiah/purri/david/syanid, or god, human, mixedbot, noob...; otx profiles lists them). |
| cl_otx_bot2_seed | 0..4294967295 (default 2) | OpenTDM-X local bot match: random seed of bot 2; the same seed repeats the same choices. |
| cl_otx_bot2_skill | 0..200 (default 75) | OpenTDM-X local bot match: skill of bot 2 (0 = weakest, 200 = strongest). |
| cl_otx_bot3_profile | profile name (default david) | OpenTDM-X local bot match: play-style profile of bot 3 (a donor style such as damiah/purri/david/syanid, or god, human, mixedbot, noob...; otx profiles lists them). |
| cl_otx_bot3_seed | 0..4294967295 (default 3) | OpenTDM-X local bot match: random seed of bot 3; the same seed repeats the same choices. |
| cl_otx_bot3_skill | 0..200 (default 100) | OpenTDM-X local bot match: skill of bot 3 (0 = weakest, 200 = strongest). |
| cl_otx_bot4_profile | profile name (default syanid) | OpenTDM-X local bot match: play-style profile of bot 4 (a donor style such as damiah/purri/david/syanid, or god, human, mixedbot, noob...; otx profiles lists them). |
| cl_otx_bot4_seed | 0..4294967295 (default 4) | OpenTDM-X local bot match: random seed of bot 4; the same seed repeats the same choices. |
| cl_otx_bot4_skill | 0..200 (default 100) | OpenTDM-X local bot match: skill of bot 4 (0 = weakest, 200 = strongest). |
| cl_otx_bot5_profile | profile name (default noob) | OpenTDM-X local bot match: play-style profile of bot 5 (a donor style such as damiah/purri/david/syanid, or god, human, mixedbot, noob...; otx profiles lists them). |
| cl_otx_bot5_seed | 0..4294967295 (default 5) | OpenTDM-X local bot match: random seed of bot 5; the same seed repeats the same choices. |
| cl_otx_bot5_skill | 0..200 (default 50) | OpenTDM-X local bot match: skill of bot 5 (0 = weakest, 200 = strongest). |
| cl_otx_grace | 0..86400 s (default 60) | OpenTDM-X local bot match: seconds a disconnected human keeps his seat before a bot may take it. |
| cl_otx_idle | 0..86400 s (default 120) | OpenTDM-X local bot match: seconds of human inactivity before the idle rule applies (pause / leave the seat). |
| cl_otx_maps | map list (default q2duel5) | OpenTDM-X local bot match: map rotation, map names separated by spaces (up to 8, at most 255 characters). |
| cl_otx_match | 1..86400 s (default 600) | OpenTDM-X local bot match: match length in seconds. |
| cl_otx_mode | 1..5 bots (default 2) | OpenTDM-X local bot match: how many bots otx_start_local starts (the launcher menu writes it; otx_apply stages it to the running server). |
| cl_otx_slot | slot name (default duel) | OpenTDM-X local bot match: name of the saved launcher session used by otx_save / otx_load. |
| cl_otx_warmup | 0..86400 s (default 30) | OpenTDM-X local bot match: warmup seconds before the match starts on its own. |
| cl_own_blood | 0=hide own blood and ordinary armor-hit visuals / 1=show them (default) | Client-side local filter for the local player's blood and ordinary armor-hit visuals (yellow sparks, spark light and bullet-impact smoke). Own blood uses a short health-drop window and proximity; ordinary armor also requires authoritative same-message STAT_FLASHES armor evidence and a close swept-player-position match. Enemy blood and world impacts remain visible; TE_GUNSHOT never enters this filter, and ambiguous candidates fail visible. Existing flesh/particle visibility gates still apply. Ricochet audio and AVFX reactions are preserved. Power Screen and Power Shield effects are unaffected because the standard protocol has no reliable local-owner marker. |
| cl_particle_armor_sparks_enable | 0=stop future particles of this family / 1=emit (default) | Armor sparks: The small warm spark burst of TE_SPARKS / TE_BULLET_SPARKS on armor. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_barrel_smoke_enable | 0=stop future particles of this family / 1=emit (default) | Exploding barrel smoke: The four-band smoke of an exploding barrel, emitted from six points around it; all four bands keep their stock brightness curve. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_berserk_slam_enable | 0=stop future particles of this family / 1=emit (default) | Berserk slam: The four-band ground burst of TE_BERSERK_SLAM. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_bfg_aura_enable | 0=stop future particles of this family / 1=emit (default) | BFG aura: The green particle sphere that surrounds a flying BFG ball; its shade follows the distance from the ball centre. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_bfg_explosion_enable | 0=stop future particles of this family / 1=emit (default) | BFG explosion debris: The green debris cloud of TE_BFG_BIGEXPLOSION. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_big_teleport_enable | 0=stop future particles of this family / 1=emit (default) | Boss teleport burst: The large four-band swirl of TE_BOSSTPORT. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_blaster_impact_enable | 0=stop future particles of this family / 1=emit (default) | Blaster impact: The yellow impact burst of a blaster bolt: TE_BLASTER, both blue hyperblaster temp entities, and the predicted local impact. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_blaster_trail_enable | 0=stop future particles of this family / 1=emit (default) | Blaster trail: The yellow particle trail behind a blaster bolt; also used by the EF_PLASMA projectile trail. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_blood_green_enable | 0=stop future particles of this family / 1=emit (default) | Green blood: The TE_GREENBLOOD event used by non-human targets (exact palette entry, no ramp). Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_blood_heavy_enable | 0=stop future particles of this family / 1=emit (default) | Heavy blood: The gib-scale flesh burst: TE_MOREBLOOD and the Contact replay of it. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_blood_red_enable | 0=stop future particles of this family / 1=emit (default) | Red blood: Ordinary flesh-hit blood: the server TE_BLOOD event, the predicted local copy, and the Player Contact replay of an unattributed flesh event. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_bubble_trail_enable | 0=stop future particles of this family / 1=emit (default) | Bubble trail: Underwater bubbles: both the TE_BUBBLETRAIL and TE_BUBBLETRAIL2 implementations. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_chainfist_smoke_enable | 0=stop future particles of this family / 1=emit (default) | Chainfist smoke: The grey particle smoke of TE_CHAINFIST_SMOKE. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_electric_sparks_enable | 0=stop future particles of this family / 1=emit (default) | Electric sparks: The cold spark burst of TE_ELECTRIC_SPARKS. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_explosion_generic_enable | 0=stop future particles of this family / 1=emit (default) | Other explosion debris: The warm debris cloud of every other explosion event: TE_EXPLOSION1, TE_EXPLOSION2, their no-light variants and TE_PLASMA_EXPLOSION. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_explosion_grenade_enable | 0=stop future particles of this family / 1=emit (default) | Grenade explosion debris: The warm debris cloud of a grenade explosion. The legacy cl_disable_particles grenade bit still applies on top. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_explosion_rocket_enable | 0=stop future particles of this family / 1=emit (default) | Rocket explosion debris: The warm debris cloud of a rocket explosion, server and predicted. The legacy cl_disable_particles rocket bit still applies on top. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_fireball_trail_enable | 0=stop future particles of this family / 1=emit (default) | Fireball trail: The trail of an EF_ROCKET/EF_GIB fireball; its shade follows the projectile's own trail counter instead of a random draw. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_flag_trail_blue_enable | 0=stop future particles of this family / 1=emit (default) | Blue flag trail: The blue trail behind a carried EF_FLAG2 flag. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_flag_trail_red_enable | 0=stop future particles of this family / 1=emit (default) | Red flag trail: The red trail behind a carried EF_FLAG1 flag. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_flechette_impact_enable | 0=stop future particles of this family / 1=emit (default) | Flechette impact: The cold blue impact burst of TE_FLECHETTE. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_flies_enable | 0=stop future particles of this family / 1=emit (default) | Flies: The dark swarm circling a corpse (EF_FLIES). Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_force_wall_enable | 0=stop future particles of this family / 1=emit (default) | Force wall: The falling curtain of TE_FORCEWALL, whose colour comes from the server message. Stock keeps the incoming colour. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_gib_trail_green_enable | 0=stop future particles of this family / 1=emit (default) | Green gib trail: The trail dragged behind EF_GREENGIB debris. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_gib_trail_red_enable | 0=stop future particles of this family / 1=emit (default) | Red gib trail: The blood trail dragged behind flying gibs (EF_GIB). Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_grenade_smoke_enable | 0=stop future particles of this family / 1=emit (default) | Grenade smoke trail: The grey diminishing smoke stream behind a grenade. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_gun_puff_enable | 0=stop future particles of this family / 1=emit (default) | Bullet wall puff: The grey dust puff of a bullet or shotgun pellet hitting a wall, for both the server event and the predicted local copy. The smoke sprite beside it is a separate model effect. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_heatbeam_particles_enable | 0=stop future particles of this family / 1=emit (default) | Heat beam particles: The rotating particle sleeve that forms the heat beam itself. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_heatbeam_sparks_enable | 0=stop future particles of this family / 1=emit (default) | Heat beam sparks: The grey spark puff of TE_HEATBEAM_SPARKS at the beam impact point. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_heatbeam_steam_enable | 0=stop future particles of this family / 1=emit (default) | Heat beam steam: The warm steam puff of TE_HEATBEAM_STEAM. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_hologram_enable | 0=stop future particles of this family / 1=emit (default) | Hologram: The rotating green particle sphere of the EFX_HOLOGRAM effect. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_hyperblaster_impact_enable | 0=stop future particles of this family / 1=emit (default) | Green bolt impact: The green impact burst of TE_BLASTER2. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_hyperblaster_trail_enable | 0=stop future particles of this family / 1=emit (default) | Green bolt trail: The green particle trail of a tracker-flagged blaster bolt. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_ionripper_trail_enable | 0=stop future particles of this family / 1=emit (default) | Ionripper trail: The alternating warm trail behind an EF_IONRIPPER projectile. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_item_respawn_enable | 0=stop future particles of this family / 1=emit (default) | Item respawn: The green sparkle when an item respawns on its pad. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_login_enable | 0=stop future particles of this family / 1=emit (default) | Player login: The green column of particles when a player joins the game. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_logout_enable | 0=stop future particles of this family / 1=emit (default) | Player logout: The red column of particles when a player leaves the game. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_monster_muzzle_puff_enable | 0=stop future particles of this family / 1=emit (default) | Monster muzzle puff: The grey particle puff at a monster muzzle flash. The flash model and its dynamic light are separate effects. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_monster_plasma_shell_enable | 0=stop future particles of this family / 1=emit (default) | Monster plasma shell: The warm particle shell drawn at a monster plasma beam origin. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_nuke_blast_enable | 0=stop future particles of this family / 1=emit (default) | Nuke blast: The expanding four-band sphere of the nuke sustain effect. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_power_splash_enable | 0=stop future particles of this family / 1=emit (default) | Power splash: The green shell burst of TE_POWER_SPLASH around a protected entity. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rail_classic_core_enable | 0=stop future particles of this family / 1=emit (default) | Classic rail core particles: The grey particle core of the classic rail trail. This is the particle core, not the modern laser beam. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rail_classic_spiral_enable | 0=stop future particles of this family / 1=emit (default) | Classic rail spiral: The blue particle spiral of the classic rail trail (rail trail type 'default'). Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rail_modern_spiral_enable | 0=stop future particles of this family / 1=emit (default) | Modern rail spiral: The modern rail spiral. Its colour is shared with the classic Spiral colour list on the rail trail page: the sliders and that list are two views of one setting. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_respawn_enable | 0=stop future particles of this family / 1=emit (default) | Player respawn: The yellow column of particles when a player respawns. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_armor_sparks_b | 0.00..1.00 / 0.03 default (the family's stock hue) | Blue channel of the colour used for "Armor sparks" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_armor_sparks_custom | 0=stock colour (default) / 1=use the colour below | Armor sparks: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_armor_sparks_g | 0.00..1.00 / 0.67 default (the family's stock hue) | Green channel of the colour used for "Armor sparks" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_armor_sparks_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Armor sparks" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_barrel_smoke_b | 0.00..1.00 / 0.36 default (the family's stock hue) | Blue channel of the colour used for "Exploding barrel smoke" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_barrel_smoke_custom | 0=stock colour (default) / 1=use the colour below | Exploding barrel smoke: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_barrel_smoke_g | 0.00..1.00 / 0.73 default (the family's stock hue) | Green channel of the colour used for "Exploding barrel smoke" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_barrel_smoke_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Exploding barrel smoke" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_berserk_slam_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Berserk slam" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_berserk_slam_custom | 0=stock colour (default) / 1=use the colour below | Berserk slam: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_berserk_slam_g | 0.00..1.00 / 0.94 default (the family's stock hue) | Green channel of the colour used for "Berserk slam" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_berserk_slam_r | 0.00..1.00 / 0.82 default (the family's stock hue) | Red channel of the colour used for "Berserk slam" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_bfg_aura_b | 0.00..1.00 / 0.00 default (the family's stock hue) | Blue channel of the colour used for "BFG aura" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_bfg_aura_custom | 0=stock colour (default) / 1=use the colour below | BFG aura: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_bfg_aura_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "BFG aura" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_bfg_aura_r | 0.00..1.00 / 0.00 default (the family's stock hue) | Red channel of the colour used for "BFG aura" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_bfg_explosion_b | 0.00..1.00 / 0.00 default (the family's stock hue) | Blue channel of the colour used for "BFG explosion debris" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_bfg_explosion_custom | 0=stock colour (default) / 1=use the colour below | BFG explosion debris: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_bfg_explosion_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "BFG explosion debris" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_bfg_explosion_r | 0.00..1.00 / 0.00 default (the family's stock hue) | Red channel of the colour used for "BFG explosion debris" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_big_teleport_b | 0.00..1.00 / 0.35 default (the family's stock hue) | Blue channel of the colour used for "Boss teleport burst" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_big_teleport_custom | 0=stock colour (default) / 1=use the colour below | Boss teleport burst: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_big_teleport_g | 0.00..1.00 / 0.76 default (the family's stock hue) | Green channel of the colour used for "Boss teleport burst" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_big_teleport_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Boss teleport burst" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_blaster_impact_b | 0.00..1.00 / 0.03 default (the family's stock hue) | Blue channel of the colour used for "Blaster impact" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_blaster_impact_custom | 0=stock colour (default) / 1=use the colour below | Blaster impact: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_blaster_impact_g | 0.00..1.00 / 0.67 default (the family's stock hue) | Green channel of the colour used for "Blaster impact" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_blaster_impact_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Blaster impact" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_blaster_trail_b | 0.00..1.00 / 0.03 default (the family's stock hue) | Blue channel of the colour used for "Blaster trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_blaster_trail_custom | 0=stock colour (default) / 1=use the colour below | Blaster trail: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_blaster_trail_g | 0.00..1.00 / 0.67 default (the family's stock hue) | Green channel of the colour used for "Blaster trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_blaster_trail_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Blaster trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_blood_green_b | 0.00..1.00 / 0.06 default (the family's stock hue) | Blue channel of the colour used for "Green blood" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_blood_green_custom | 0=stock colour (default) / 1=use the colour below | Green blood: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_blood_green_g | 0.00..1.00 / 0.75 default (the family's stock hue) | Green channel of the colour used for "Green blood" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_blood_green_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Green blood" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_blood_heavy_b | 0.00..1.00 / 0.00 default (the family's stock hue) | Blue channel of the colour used for "Heavy blood" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_blood_heavy_custom | 0=stock colour (default) / 1=use the colour below | Heavy blood: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_blood_heavy_g | 0.00..1.00 / 0.20 default (the family's stock hue) | Green channel of the colour used for "Heavy blood" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_blood_heavy_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Heavy blood" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_blood_red_b | 0.00..1.00 / 0.00 default (the family's stock hue) | Blue channel of the colour used for "Red blood" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_blood_red_custom | 0=stock colour (default) / 1=use the colour below | Red blood: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_blood_red_g | 0.00..1.00 / 0.20 default (the family's stock hue) | Green channel of the colour used for "Red blood" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_blood_red_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Red blood" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_bubble_trail_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Bubble trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_bubble_trail_custom | 0=stock colour (default) / 1=use the colour below | Bubble trail: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_bubble_trail_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Bubble trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_bubble_trail_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Bubble trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_chainfist_smoke_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Chainfist smoke" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_chainfist_smoke_custom | 0=stock colour (default) / 1=use the colour below | Chainfist smoke: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_chainfist_smoke_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Chainfist smoke" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_chainfist_smoke_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Chainfist smoke" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_electric_sparks_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Electric sparks" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_electric_sparks_custom | 0=stock colour (default) / 1=use the colour below | Electric sparks: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_electric_sparks_g | 0.00..1.00 / 0.73 default (the family's stock hue) | Green channel of the colour used for "Electric sparks" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_electric_sparks_r | 0.00..1.00 / 0.18 default (the family's stock hue) | Red channel of the colour used for "Electric sparks" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_enable | 0=every standard family draws its stock colour / 1=per-family Custom colour applies (default) | Immediate master for standard-particle CUSTOM COLOUR only. Off makes every standard family draw its stock colour while keeping each family's own Custom colour choice stored. It never enables or disables particle emission: that stays with cl_particles, the legacy per-effect switches and each family's own Particles switch. It also never reaches an AVFX or Player Contact family: ordinary AVFX particle colours follow only their own local Custom control. |
| cl_particle_rgb_explosion_generic_b | 0.00..1.00 / 0.03 default (the family's stock hue) | Blue channel of the colour used for "Other explosion debris" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_explosion_generic_custom | 0=stock colour (default) / 1=use the colour below | Other explosion debris: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_explosion_generic_g | 0.00..1.00 / 0.67 default (the family's stock hue) | Green channel of the colour used for "Other explosion debris" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_explosion_generic_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Other explosion debris" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_explosion_grenade_b | 0.00..1.00 / 0.03 default (the family's stock hue) | Blue channel of the colour used for "Grenade explosion debris" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_explosion_grenade_custom | 0=stock colour (default) / 1=use the colour below | Grenade explosion debris: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_explosion_grenade_g | 0.00..1.00 / 0.67 default (the family's stock hue) | Green channel of the colour used for "Grenade explosion debris" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_explosion_grenade_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Grenade explosion debris" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_explosion_rocket_b | 0.00..1.00 / 0.03 default (the family's stock hue) | Blue channel of the colour used for "Rocket explosion debris" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_explosion_rocket_custom | 0=stock colour (default) / 1=use the colour below | Rocket explosion debris: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_explosion_rocket_g | 0.00..1.00 / 0.67 default (the family's stock hue) | Green channel of the colour used for "Rocket explosion debris" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_explosion_rocket_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Rocket explosion debris" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_fireball_trail_b | 0.00..1.00 / 0.83 default (the family's stock hue) | Blue channel of the colour used for "Fireball trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_fireball_trail_custom | 0=stock colour (default) / 1=use the colour below | Fireball trail: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_fireball_trail_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Fireball trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_fireball_trail_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Fireball trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_flag_trail_blue_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Blue flag trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_flag_trail_blue_custom | 0=stock colour (default) / 1=use the colour below | Blue flag trail: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_flag_trail_blue_g | 0.00..1.00 / 0.81 default (the family's stock hue) | Green channel of the colour used for "Blue flag trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_flag_trail_blue_r | 0.00..1.00 / 0.37 default (the family's stock hue) | Red channel of the colour used for "Blue flag trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_flag_trail_red_b | 0.00..1.00 / 0.00 default (the family's stock hue) | Blue channel of the colour used for "Red flag trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_flag_trail_red_custom | 0=stock colour (default) / 1=use the colour below | Red flag trail: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_flag_trail_red_g | 0.00..1.00 / 0.00 default (the family's stock hue) | Green channel of the colour used for "Red flag trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_flag_trail_red_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Red flag trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_flechette_impact_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Flechette impact" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_flechette_impact_custom | 0=stock colour (default) / 1=use the colour below | Flechette impact: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_flechette_impact_g | 0.00..1.00 / 0.91 default (the family's stock hue) | Green channel of the colour used for "Flechette impact" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_flechette_impact_r | 0.00..1.00 / 0.74 default (the family's stock hue) | Red channel of the colour used for "Flechette impact" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_flies_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Flies" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_flies_custom | 0=stock colour (default) / 1=use the colour below | Flies: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_flies_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Flies" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_flies_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Flies" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_force_wall_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Force wall" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_force_wall_custom | 0=stock colour (default) / 1=use the colour below | Force wall: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_force_wall_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Force wall" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_force_wall_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Force wall" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_gib_trail_green_b | 0.00..1.00 / 0.33 default (the family's stock hue) | Blue channel of the colour used for "Green gib trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_gib_trail_green_custom | 0=stock colour (default) / 1=use the colour below | Green gib trail: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_gib_trail_green_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Green gib trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_gib_trail_green_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Green gib trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_gib_trail_red_b | 0.00..1.00 / 0.00 default (the family's stock hue) | Blue channel of the colour used for "Red gib trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_gib_trail_red_custom | 0=stock colour (default) / 1=use the colour below | Red gib trail: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_gib_trail_red_g | 0.00..1.00 / 0.20 default (the family's stock hue) | Green channel of the colour used for "Red gib trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_gib_trail_red_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Red gib trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_grenade_smoke_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Grenade smoke trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_grenade_smoke_custom | 0=stock colour (default) / 1=use the colour below | Grenade smoke trail: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_grenade_smoke_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Grenade smoke trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_grenade_smoke_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Grenade smoke trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_gun_puff_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Bullet wall puff" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_gun_puff_custom | 0=stock colour (default) / 1=use the colour below | Bullet wall puff: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_gun_puff_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Bullet wall puff" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_gun_puff_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Bullet wall puff" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_heatbeam_particles_b | 0.00..1.00 / 0.83 default (the family's stock hue) | Blue channel of the colour used for "Heat beam particles" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_heatbeam_particles_custom | 0=stock colour (default) / 1=use the colour below | Heat beam particles: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_heatbeam_particles_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Heat beam particles" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_heatbeam_particles_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Heat beam particles" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_heatbeam_sparks_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Heat beam sparks" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_heatbeam_sparks_custom | 0=stock colour (default) / 1=use the colour below | Heat beam sparks: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_heatbeam_sparks_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Heat beam sparks" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_heatbeam_sparks_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Heat beam sparks" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_heatbeam_steam_b | 0.00..1.00 / 0.03 default (the family's stock hue) | Blue channel of the colour used for "Heat beam steam" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_heatbeam_steam_custom | 0=stock colour (default) / 1=use the colour below | Heat beam steam: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_heatbeam_steam_g | 0.00..1.00 / 0.67 default (the family's stock hue) | Green channel of the colour used for "Heat beam steam" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_heatbeam_steam_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Heat beam steam" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_hologram_b | 0.00..1.00 / 0.00 default (the family's stock hue) | Blue channel of the colour used for "Hologram" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_hologram_custom | 0=stock colour (default) / 1=use the colour below | Hologram: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_hologram_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Hologram" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_hologram_r | 0.00..1.00 / 0.00 default (the family's stock hue) | Red channel of the colour used for "Hologram" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_hyperblaster_impact_b | 0.00..1.00 / 0.00 default (the family's stock hue) | Blue channel of the colour used for "Green bolt impact" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_hyperblaster_impact_custom | 0=stock colour (default) / 1=use the colour below | Green bolt impact: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_hyperblaster_impact_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Green bolt impact" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_hyperblaster_impact_r | 0.00..1.00 / 0.00 default (the family's stock hue) | Red channel of the colour used for "Green bolt impact" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_hyperblaster_trail_b | 0.00..1.00 / 0.00 default (the family's stock hue) | Blue channel of the colour used for "Green bolt trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_hyperblaster_trail_custom | 0=stock colour (default) / 1=use the colour below | Green bolt trail: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_hyperblaster_trail_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Green bolt trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_hyperblaster_trail_r | 0.00..1.00 / 0.00 default (the family's stock hue) | Red channel of the colour used for "Green bolt trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_ionripper_trail_b | 0.00..1.00 / 0.00 default (the family's stock hue) | Blue channel of the colour used for "Ionripper trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_ionripper_trail_custom | 0=stock colour (default) / 1=use the colour below | Ionripper trail: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_ionripper_trail_g | 0.00..1.00 / 0.41 default (the family's stock hue) | Green channel of the colour used for "Ionripper trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_ionripper_trail_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Ionripper trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_item_respawn_b | 0.00..1.00 / 0.28 default (the family's stock hue) | Blue channel of the colour used for "Item respawn" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_item_respawn_custom | 0=stock colour (default) / 1=use the colour below | Item respawn: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_item_respawn_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Item respawn" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_item_respawn_r | 0.00..1.00 / 0.57 default (the family's stock hue) | Red channel of the colour used for "Item respawn" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_login_b | 0.00..1.00 / 0.00 default (the family's stock hue) | Blue channel of the colour used for "Player login" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_login_custom | 0=stock colour (default) / 1=use the colour below | Player login: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_login_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Player login" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_login_r | 0.00..1.00 / 0.00 default (the family's stock hue) | Red channel of the colour used for "Player login" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_logout_b | 0.00..1.00 / 0.26 default (the family's stock hue) | Blue channel of the colour used for "Player logout" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_logout_custom | 0=stock colour (default) / 1=use the colour below | Player logout: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_logout_g | 0.00..1.00 / 0.35 default (the family's stock hue) | Green channel of the colour used for "Player logout" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_logout_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Player logout" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_monster_muzzle_puff_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Monster muzzle puff" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_monster_muzzle_puff_custom | 0=stock colour (default) / 1=use the colour below | Monster muzzle puff: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_monster_muzzle_puff_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Monster muzzle puff" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_monster_muzzle_puff_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Monster muzzle puff" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_monster_plasma_shell_b | 0.00..1.00 / 0.03 default (the family's stock hue) | Blue channel of the colour used for "Monster plasma shell" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_monster_plasma_shell_custom | 0=stock colour (default) / 1=use the colour below | Monster plasma shell: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_monster_plasma_shell_g | 0.00..1.00 / 0.67 default (the family's stock hue) | Green channel of the colour used for "Monster plasma shell" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_monster_plasma_shell_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Monster plasma shell" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_nuke_blast_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Nuke blast" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_nuke_blast_custom | 0=stock colour (default) / 1=use the colour below | Nuke blast: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_nuke_blast_g | 0.00..1.00 / 0.94 default (the family's stock hue) | Green channel of the colour used for "Nuke blast" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_nuke_blast_r | 0.00..1.00 / 0.82 default (the family's stock hue) | Red channel of the colour used for "Nuke blast" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_power_splash_b | 0.00..1.00 / 0.00 default (the family's stock hue) | Blue channel of the colour used for "Power splash" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_power_splash_custom | 0=stock colour (default) / 1=use the colour below | Power splash: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_power_splash_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Power splash" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_power_splash_r | 0.00..1.00 / 0.00 default (the family's stock hue) | Red channel of the colour used for "Power splash" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_rail_classic_core_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Classic rail core particles" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_rail_classic_core_custom | 0=stock colour (default) / 1=use the colour below | Classic rail core particles: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_rail_classic_core_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Classic rail core particles" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_rail_classic_core_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Classic rail core particles" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_rail_classic_spiral_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Classic rail spiral" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_rail_classic_spiral_custom | 0=stock colour (default) / 1=use the colour below | Classic rail spiral: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_rail_classic_spiral_g | 0.00..1.00 / 0.75 default (the family's stock hue) | Green channel of the colour used for "Classic rail spiral" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_rail_classic_spiral_r | 0.00..1.00 / 0.21 default (the family's stock hue) | Red channel of the colour used for "Classic rail spiral" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_rail_modern_spiral_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Modern rail spiral" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_rail_modern_spiral_custom | 0=stock colour (default) / 1=use the colour below | Modern rail spiral: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_rail_modern_spiral_g | 0.00..1.00 / 0.00 default (the family's stock hue) | Green channel of the colour used for "Modern rail spiral" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_rail_modern_spiral_r | 0.00..1.00 / 0.00 default (the family's stock hue) | Red channel of the colour used for "Modern rail spiral" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_respawn_b | 0.00..1.00 / 0.03 default (the family's stock hue) | Blue channel of the colour used for "Player respawn" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_respawn_custom | 0=stock colour (default) / 1=use the colour below | Player respawn: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_respawn_g | 0.00..1.00 / 0.67 default (the family's stock hue) | Green channel of the colour used for "Player respawn" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_respawn_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Player respawn" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_rocket_fire_b | 0.00..1.00 / 0.15 default (the family's stock hue) | Blue channel of the colour used for "Rocket fire trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_rocket_fire_custom | 0=stock colour (default) / 1=use the colour below | Rocket fire trail: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_rocket_fire_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Rocket fire trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_rocket_fire_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Rocket fire trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_rocket_smoke_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Rocket smoke trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_rocket_smoke_custom | 0=stock colour (default) / 1=use the colour below | Rocket smoke trail: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_rocket_smoke_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Rocket smoke trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_rocket_smoke_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Rocket smoke trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_screen_sparks_b | 0.00..1.00 / 0.00 default (the family's stock hue) | Blue channel of the colour used for "Screen sparks" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_screen_sparks_custom | 0=stock colour (default) / 1=use the colour below | Screen sparks: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_screen_sparks_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Screen sparks" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_screen_sparks_r | 0.00..1.00 / 0.00 default (the family's stock hue) | Red channel of the colour used for "Screen sparks" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_server_sparks_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Server-coloured sparks" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_server_sparks_custom | 0=stock colour (default) / 1=use the colour below | Server-coloured sparks: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_server_sparks_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Server-coloured sparks" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_server_sparks_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Server-coloured sparks" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_server_steam_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Server steam" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_server_steam_custom | 0=stock colour (default) / 1=use the colour below | Server steam: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_server_steam_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Server steam" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_server_steam_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Server steam" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_shield_sparks_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Shield sparks" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_shield_sparks_custom | 0=stock colour (default) / 1=use the colour below | Shield sparks: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_shield_sparks_g | 0.00..1.00 / 0.59 default (the family's stock hue) | Green channel of the colour used for "Shield sparks" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_shield_sparks_r | 0.00..1.00 / 0.57 default (the family's stock hue) | Red channel of the colour used for "Shield sparks" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_splash_blood_b | 0.00..1.00 / 0.00 default (the family's stock hue) | Blue channel of the colour used for "Blood splash" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_splash_blood_custom | 0=stock colour (default) / 1=use the colour below | Blood splash: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_splash_blood_g | 0.00..1.00 / 0.20 default (the family's stock hue) | Green channel of the colour used for "Blood splash" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_splash_blood_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Blood splash" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_splash_brown_water_b | 0.00..1.00 / 0.61 default (the family's stock hue) | Blue channel of the colour used for "Brown water splash" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_splash_brown_water_custom | 0=stock colour (default) / 1=use the colour below | Brown water splash: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_splash_brown_water_g | 0.00..1.00 / 0.77 default (the family's stock hue) | Green channel of the colour used for "Brown water splash" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_splash_brown_water_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Brown water splash" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_splash_electric_n64_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Electric splash (N64)" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_splash_electric_n64_custom | 0=stock colour (default) / 1=use the colour below | Electric splash (N64): Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_splash_electric_n64_g | 0.00..1.00 / 0.96 default (the family's stock hue) | Green channel of the colour used for "Electric splash (N64)" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_splash_electric_n64_r | 0.00..1.00 / 0.91 default (the family's stock hue) | Red channel of the colour used for "Electric splash (N64)" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_splash_generic_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Unclassified splash" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_splash_generic_custom | 0=stock colour (default) / 1=use the colour below | Unclassified splash: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_splash_generic_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Unclassified splash" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_splash_generic_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Unclassified splash" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_splash_lava_b | 0.00..1.00 / 0.03 default (the family's stock hue) | Blue channel of the colour used for "Lava splash" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_splash_lava_custom | 0=stock colour (default) / 1=use the colour below | Lava splash: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_splash_lava_g | 0.00..1.00 / 0.67 default (the family's stock hue) | Green channel of the colour used for "Lava splash" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_splash_lava_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Lava splash" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_splash_slime_b | 0.00..1.00 / 0.00 default (the family's stock hue) | Blue channel of the colour used for "Slime splash" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_splash_slime_custom | 0=stock colour (default) / 1=use the colour below | Slime splash: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_splash_slime_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Slime splash" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_splash_slime_r | 0.00..1.00 / 0.00 default (the family's stock hue) | Red channel of the colour used for "Slime splash" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_splash_sparks_b | 0.00..1.00 / 0.03 default (the family's stock hue) | Blue channel of the colour used for "Spark splash" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_splash_sparks_custom | 0=stock colour (default) / 1=use the colour below | Spark splash: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_splash_sparks_g | 0.00..1.00 / 0.67 default (the family's stock hue) | Green channel of the colour used for "Spark splash" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_splash_sparks_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Spark splash" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_splash_water_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Water splash" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_splash_water_custom | 0=stock colour (default) / 1=use the colour below | Water splash: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_splash_water_g | 0.00..1.00 / 0.59 default (the family's stock hue) | Green channel of the colour used for "Water splash" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_splash_water_r | 0.00..1.00 / 0.57 default (the family's stock hue) | Red channel of the colour used for "Water splash" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_tag_trail_b | 0.00..1.00 / 0.15 default (the family's stock hue) | Blue channel of the colour used for "Tag trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_tag_trail_custom | 0=stock colour (default) / 1=use the colour below | Tag trail: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_tag_trail_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Tag trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_tag_trail_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Tag trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_teleport_burst_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Teleport burst" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_teleport_burst_custom | 0=stock colour (default) / 1=use the colour below | Teleport burst: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_teleport_burst_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Teleport burst" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_teleport_burst_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Teleport burst" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_teleporter_idle_b | 0.00..1.00 / 0.33 default (the family's stock hue) | Blue channel of the colour used for "Teleporter idle" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_teleporter_idle_custom | 0=stock colour (default) / 1=use the colour below | Teleporter idle: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_teleporter_idle_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Teleporter idle" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_teleporter_idle_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Teleporter idle" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_tracker_explosion_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Tracker explosion" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_tracker_explosion_custom | 0=stock colour (default) / 1=use the colour below | Tracker explosion: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_tracker_explosion_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Tracker explosion" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_tracker_explosion_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Tracker explosion" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_tracker_shell_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Tracker shell" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_tracker_shell_custom | 0=stock colour (default) / 1=use the colour below | Tracker shell: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_tracker_shell_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Tracker shell" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_tracker_shell_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Tracker shell" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_tracker_trail_b | 0.00..1.00 / 1.00 default (the family's stock hue) | Blue channel of the colour used for "Tracker trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_tracker_trail_custom | 0=stock colour (default) / 1=use the colour below | Tracker trail: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_tracker_trail_g | 0.00..1.00 / 1.00 default (the family's stock hue) | Green channel of the colour used for "Tracker trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_tracker_trail_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Tracker trail" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_trap_b | 0.00..1.00 / 0.03 default (the family's stock hue) | Blue channel of the colour used for "Trap particles" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_trap_custom | 0=stock colour (default) / 1=use the colour below | Trap particles: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_trap_g | 0.00..1.00 / 0.67 default (the family's stock hue) | Green channel of the colour used for "Trap particles" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_trap_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Trap particles" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_widow_beamout_b | 0.00..1.00 / 0.35 default (the family's stock hue) | Blue channel of the colour used for "Widow beam-out" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_widow_beamout_custom | 0=stock colour (default) / 1=use the colour below | Widow beam-out: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_widow_beamout_g | 0.00..1.00 / 0.76 default (the family's stock hue) | Green channel of the colour used for "Widow beam-out" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_widow_beamout_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Widow beam-out" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_widow_splash_b | 0.00..1.00 / 0.35 default (the family's stock hue) | Blue channel of the colour used for "Widow splash" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_widow_splash_custom | 0=stock colour (default) / 1=use the colour below | Widow splash: Use the Red/Green/Blue below instead of the family's stock colour. Off reproduces the original output exactly. The sliders keep their value while this is off. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rgb_widow_splash_g | 0.00..1.00 / 0.76 default (the family's stock hue) | Green channel of the colour used for "Widow splash" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rgb_widow_splash_r | 0.00..1.00 / 1.00 default (the family's stock hue) | Red channel of the colour used for "Widow splash" when Custom colour is on. The family keeps its original brightness curve, so darker samples stay darker. |
| cl_particle_rocket_fire_enable | 0=stop future particles of this family / 1=emit (default) | Rocket fire trail: The bright non-diminishing fire sparks inside the rocket trail. Independent from the rocket smoke stream. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_rocket_smoke_enable | 0=stop future particles of this family / 1=emit (default) | Rocket smoke trail: The grey diminishing smoke stream behind a rocket. Independent from the rocket fire sub-stream. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_screen_sparks_enable | 0=stop future particles of this family / 1=emit (default) | Screen sparks: The green spark burst of TE_SCREEN_SPARKS. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_server_sparks_enable | 0=stop future particles of this family / 1=emit (default) | Server-coloured sparks: Laser, welding and tunnel sparks whose colour is chosen by the server or the mod. Stock keeps the incoming colour; Custom replaces it. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_server_steam_enable | 0=stop future particles of this family / 1=emit (default) | Server steam: TE_STEAM and its sustained variant, whose colour, count and magnitude come from the server message. Stock keeps the incoming colour. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_shield_sparks_enable | 0=stop future particles of this family / 1=emit (default) | Shield sparks: The blue spark burst of TE_SHIELD_SPARKS. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_splash_blood_enable | 0=stop future particles of this family / 1=emit (default) | Blood splash: The blood subtype of TE_SPLASH. Separate from the flesh-hit blood family. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_splash_brown_water_enable | 0=stop future particles of this family / 1=emit (default) | Brown water splash: The brown-water subtype of TE_SPLASH. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_splash_electric_n64_enable | 0=stop future particles of this family / 1=emit (default) | Electric splash (N64): The mixed electric splash of the extended TE_SPLASH variant: both of its colour bands keep their stock brightness curve. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_splash_generic_enable | 0=stop future particles of this family / 1=emit (default) | Unclassified splash: TE_SPLASH with no subtype, or a subtype the client does not know: the stock grey splash. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_splash_lava_enable | 0=stop future particles of this family / 1=emit (default) | Lava splash: The lava subtype of TE_SPLASH. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_splash_slime_enable | 0=stop future particles of this family / 1=emit (default) | Slime splash: The slime subtype of TE_SPLASH. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_splash_sparks_enable | 0=stop future particles of this family / 1=emit (default) | Spark splash: The spark subtype of TE_SPLASH. Its ricochet sound is independent of this family. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_splash_water_enable | 0=stop future particles of this family / 1=emit (default) | Water splash: The blue-water subtype of TE_SPLASH, and the predicted local pellet splash when a shotgun pellet lands in a fluid. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_tag_trail_enable | 0=stop future particles of this family / 1=emit (default) | Tag trail: The yellow trail behind an EF_TAGTRAIL entity. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_teleport_burst_enable | 0=stop future particles of this family / 1=emit (default) | Teleport burst: The grey particle cube produced when a player teleports. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_teleporter_idle_enable | 0=stop future particles of this family / 1=emit (default) | Teleporter idle: The steady yellow particles rising from an idle teleporter pad: both implementations. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_tracker_explosion_enable | 0=stop future particles of this family / 1=emit (default) | Tracker explosion: The dark particle burst of TE_TRACKER_EXPLOSION. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_tracker_shell_enable | 0=stop future particles of this family / 1=emit (default) | Tracker shell: The dark particle shell around an entity carrying EF_TRACKERTRAIL. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_tracker_trail_enable | 0=stop future particles of this family / 1=emit (default) | Tracker trail: The dark weaving trail behind an EF_TRACKER projectile. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_trap_enable | 0=stop future particles of this family / 1=emit (default) | Trap particles: The warm column and the sparkling cluster of an EF_TRAP entity. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_widow_beamout_enable | 0=stop future particles of this family / 1=emit (default) | Widow beam-out: The four-band particle sphere of the Widow beam-out sustain effect. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particle_widow_splash_enable | 0=stop future particles of this family / 1=emit (default) | Widow splash: The four-band particle burst of TE_WIDOWSPLASH. Emit this family. Off stops only future particles of this exact family, before they are allocated or submitted; particles already in the air finish normally, and nothing else about the event changes. The broad Particles master and the legacy per-effect switches still apply on top. This is a global Q2PRO-X setting: it survives maps, mods, servers and ordinary AVFX or Player Contact preset changes. |
| cl_particles | 0/1 | render particle effects |
| cl_paused | 0/1 (readonly) | client-side pause flag |
| cl_pitchspeed | 1..1000 (default 150) | Keyboard look up/down rate, in degrees per second, for the +lookup / +lookdown binds (and for +forward / +back while +klook is held). The vertical twin of cl_yawspeed. NOT a cheat since 2026-08-19: it works on any server without cheats 1, because it gives a keyboard player nothing a mouse does not already give. |
| cl_protocol | 0=automatically select the highest protocol version supported / 34=use default Quake 2 protocol / 35=use enhanced R1Q2 protocol / 36=use enhanced Q2PRO protocol | Specifies preferred network protocol version to use when connecting to servers. If the server doesnt support the specified protocol, client will fall back to the previous supported version. Default value is 0. |
| 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. |
| cl_q2prox_cfg_global_pref_audio | deprecated, ignored since schema 1.52 | DEPRECATED since Q2PRO-X config schema 1.52. It no longer gates anything: migration of your settings into the Q2PRO-X global and per-mod configs is automatic and mandatory, and ownership comes from one audited registry. The cvar stays registered only so an old config line still parses; its value is ignored, and a stale 0 can no longer disable migration. Use Q2PRO-X / Config & files / Unified Q2PRO-X settings for status and a manual re-sync. |
| cl_q2prox_cfg_global_pref_network | deprecated, ignored since schema 1.52 | DEPRECATED since Q2PRO-X config schema 1.52. It no longer gates anything: migration of your settings into the Q2PRO-X global and per-mod configs is automatic and mandatory, and ownership comes from one audited registry. The cvar stays registered only so an old config line still parses; its value is ignored, and a stale 0 can no longer disable migration. Use Q2PRO-X / Config & files / Unified Q2PRO-X settings for status and a manual re-sync. |
| cl_q2prox_cfg_global_pref_player | deprecated, ignored since schema 1.52 | DEPRECATED since Q2PRO-X config schema 1.52. It no longer gates anything: migration of your settings into the Q2PRO-X global and per-mod configs is automatic and mandatory, and ownership comes from one audited registry. The cvar stays registered only so an old config line still parses; its value is ignored, and a stale 0 can no longer disable migration. Use Q2PRO-X / Config & files / Unified Q2PRO-X settings for status and a manual re-sync. |
| cl_q2prox_cfg_global_pref_ui | deprecated, ignored since schema 1.52 | DEPRECATED since Q2PRO-X config schema 1.52. It no longer gates anything: migration of your settings into the Q2PRO-X global and per-mod configs is automatic and mandatory, and ownership comes from one audited registry. The cvar stays registered only so an old config line still parses; its value is ignored, and a stale 0 can no longer disable migration. Use Q2PRO-X / Config & files / Unified Q2PRO-X settings for status and a manual re-sync. |
| cl_q2prox_cfg_global_pref_video | deprecated, ignored since schema 1.52 | DEPRECATED since Q2PRO-X config schema 1.52. It no longer gates anything: migration of your settings into the Q2PRO-X global and per-mod configs is automatic and mandatory, and ownership comes from one audited registry. The cvar stays registered only so an old config line still parses; its value is ignored, and a stale 0 can no longer disable migration. Use Q2PRO-X / Config & files / Unified Q2PRO-X settings for status and a manual re-sync. |
| cl_q2prox_cfg_global_prefs | deprecated, ignored since schema 1.52 | DEPRECATED since Q2PRO-X config schema 1.52. It no longer gates anything: migration of your settings into the Q2PRO-X global and per-mod configs is automatic and mandatory, and ownership comes from one audited registry. The cvar stays registered only so an old config line still parses; its value is ignored, and a stale 0 can no longer disable migration. Use Q2PRO-X / Config & files / Unified Q2PRO-X settings for status and a manual re-sync. |
| cl_q2prox_cfg_local_version | historical per-target marker (1.52=current LOCAL level; no automatic LOCAL migration) | Historical Q2PRO-X LOCAL config schema marker. It remains target-local and is loaded for diagnostics, but safe legacy migration no longer creates, rebuilds or advances LOCAL targets: they are owned exclusively by the ordinary per-mod Q2PRO-X writer. The accepted LOCAL completion level remains 1.52 while GLOBAL can advance independently. Not a user preference and not exposed in the config menu. |
| 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. |
| cl_q2prox_spark_dlight | default 0 / 0=off (legacy), 1=on | Emit a short-lived dynamic light (radius 150 wu, lifetime 250 ms) at impact spark temp entities so the surrounding floor / snow / water lights up while the sparks burn. Covers TE_GUNSHOT, TE_SPARKS, TE_BULLET_SPARKS, TE_SHOTGUN (orange), TE_SCREEN_SPARKS (yellow-green), TE_SHIELD_SPARKS (blue). Stock Q2 sparks emit only particles → at AVFX night the floor stays pitch black under a spark burst. This cvar adds a CL_AllocDlight that flows through the standard V_AddLight / gl_dynamic_local_* UBO path, so the spark color modulates whatever gl_dynamic_dark_boost / _radius / _softness / _alpha settings are active. Set to 0 to restore legacy stock-Q2 spark behavior (particles only, no dlight). |
| cl_q2px_rail_debug | default 0 / 0=silent / 1=one RAILDBG line per rail beam (session only) (diagnostic, current session only) | Session-only diagnostic for railgun beam events. 1 prints one RAILDBG console line per rail core created from the server's TE_RAILTRAIL event: the beam start and end points, the distance from the start point to the local view origin (small for your own shot, large for someone else's), and the current cl_predict value. Used as ownership evidence when verifying that a locally fired beam starts at the local view origin. Never read from a config and never written by any config or preset writer; after a restart it is off again. |
| cl_railcore_color | #RRGGBB | Color of the rail core beam. Default value is "red". |
| cl_railcore_width | 0..6 | Width of the rail core beam. Default value is 3. |
| cl_railspiral_color | #RRGGBB | Color of the rail spiral. Default value is "blue". |
| cl_railspiral_radius | 1..6 | Radius of the rail spiral. Default value is 3. |
| cl_railtrail_time | 0.1..3.0 | Time, in seconds, for the rail trail to be visible. Default value is 1.0. |
| cl_railtrail_type | 0=use original effect / 1=use alternative effect, draw rail core only / 2=use alternative effect, draw rail core and spiral | Defines which type of rail trail effect to use. Default value is 0. |
| cl_reconnect_history_limit | 0=disabled and cleared / 1=last server only / 2..100=MRU history (default 10) | Global across all mods: maximum number of unique successfully played remote servers retained for manual reconnect and the History browser tab. Changing it applies immediately. 0 clears and disables disk history; 1 keeps only the last server; 10 is the default; 100 is the hard maximum. |
| cl_reconnect_last_server_auto | 0=normal startup (default) / 1=auto-connect eligible last remote server | On an otherwise idle cold start, automatically connect to the newest successfully played remote server only when the previous play context was remote multiplayer. Default off. Any explicit +map, +connect, demo, URL or alias startup action takes priority. |
| cl_rollhack | 0/1 | Default OpenGL renderer in Quake 2 contained a bug that caused roll angle of 3D models to be inverted during rotation. Due to this bug, player models did lean in the opposite direction when strafing. New Q2PRO renderer doesnt have this bug, but since many players got used to it, Q2PRO is able to simulate original behavior. This cvar chooses in which direction player models will lean. Default value is 1 (invert roll angle). |
| cl_run | 0/1 | always-run mode |
| cl_running | 0/1 (readonly) | client-running flag (readonly) |
| cl_showmiss | 0/1 (diagnostic, current session only) | print prediction miss diagnostics |
| cl_shownet | 0/1/2/3 (diagnostic, current session only) | print incoming network packet details |
| cl_showpackets | 0/1 (diagnostic, current session only) | print outgoing packet details |
| cl_sidespeed | 1..400 | strafe movement speed |
| cl_smooth_explosions | 0/1 | Enables smooth fading of explosions, also fixing their duration in some cases. Default value is 1 (enabled). |
| cl_stats | 0/1 (diagnostic, current session only) | print render/frame statistics |
| cl_step_smoothing_mode | q2pro=default / r1q2-1=mild r1q2 / r1q2-2=medium r1q2 / r1q2-3=strong r1q2 | Local stair-step smoothing profile. q2pro is the default interpolation. r1q2-1/2/3 select progressively smoother r1q2-style step interpolation modes. |
| cl_testblend | 0/1 (diagnostic, current session only) | debug: force a test screen blend |
| cl_testentities | 0/1 (diagnostic, current session only) | debug: spawn test entities |
| cl_testlights | 0/1 (diagnostic, current session only) | debug: spawn test dlights |
| cl_testparticles | 0/1 (diagnostic, current session only) | debug: spawn test particles |
| cl_thirdperson | 0/1 | third-person camera toggle |
| cl_thirdperson_angle | any float | third-person camera angle offset |
| cl_thirdperson_range | 0..300 | third-person camera distance |
| cl_timeout | 1..300 | client disconnect after no server packets (sec) |
| cl_translate_azure_region | region name, e.g. westeurope (default empty) | Azure resource region sent with Microsoft Translator requests (needed for regional keys). |
| cl_translate_azure_url | URL (default https://api.cognitive.microsofttranslator.com/translate) | Microsoft Translator endpoint used by cl_translate_provider azure. |
| cl_translate_custom_url | URL (default empty) | Your own translation endpoint used by cl_translate_provider custom. |
| cl_translate_debug | default 0 / 0=off, >0=diagnostic (diagnostic, current session only) | Developer-only: string-translation subsystem diagnostic print. 0=off. Not archived, no menu; zero cost at 0. |
| cl_translate_deepl_url | URL (default https://api-free.deepl.com/v2/translate) | DeepL API endpoint used by cl_translate_provider deepl (the free plan address by default). |
| cl_translate_google_url | URL (default https://translation.googleapis.com/language/translate/v2) | Google Cloud Translation endpoint used by cl_translate_provider google. |
| cl_translate_libre_url | URL (default http://127.0.0.1:5000/translate) | LibreTranslate server address used by cl_translate_provider libre (a local server by default). |
| cl_translate_provider | q2prox (default) / google / deepl / azure / libre / custom | Chat translation service. q2prox uses the Q2PRO-X hosted proxy (no key needed); google, deepl, azure, libre (LibreTranslate) and custom use their own URL and your key. |
| cl_translate_q2prox_url | URL (default https://q2pro-x.com/api/translate) | Address of the Q2PRO-X translation proxy used by cl_translate_provider q2prox. |
| cl_translate_timeout_ms | milliseconds (default 3000) | How long a chat translation request may take before it is given up. |
| cl_translit_x_style | 0=kh (default) / 1=h | Latin transliteration of the Cyrillic letter Х/х in chat and names typed with the Russian layout. |
| cl_upspeed | 1..400 | vertical (jump/crouch) speed |
| cl_viewbob | 0..1 (default 1) | How much your view bounces up and down while you walk. 1 = normal, 0 = no bounce at all, values in between are weaker. Works on ANY server, including someone else's, because it takes the bounce out on your own machine. Not a cheat: it removes only what your own footsteps produce, and it reveals nothing. Measured on a remote server, an incoming bounce of 1.75 units comes out at 0.0005. It covers the whole movement effect: the up-and-down bounce in viewoffset, and the tilt that comes with running and strafing, which arrives separately inside kick_angles. Weapon recoil, damage kicks and landing kicks are never touched - those tell you something. On a server that sends no movement effect this setting does nothing, and says so in cl_viewbob_info. The diagnostic override cl_viewsway can force the tilt half on its own; it follows this setting by default. |
| cl_viewbob_trace | 0=off (default) / 1=model per server frame / 2=+ the vertical half / 3=+ the final camera, delta and jerk (diagnostic, current session only) | Diagnostic. 1 prints one line per received server frame: the pitch and roll the server sent, what the movement model predicted for them, the forward and sideways speed it used and the reconstructed bob phase. 2 adds the eye height before and after the vertical removal, so the two halves can be told apart. 3 adds the FINAL camera on one timeline - rendered angles and origin, predicted origin, interpolation fraction, smoothed prediction error, time since the last server frame, frame time, and the per-frame camera delta and jerk - which is the only channel that shows what the player is actually looking at rather than what the filter thinks. The first sample after switching it on, after a map or server change, or after a gap longer than 250 ms is marked first=1 and its delta must be ignored. Noisy - console only, not saved. |
| cl_viewsway | -1=follow cl_viewbob (default) / 0..1 force the tilt removal | EXPERIMENTAL diagnostic override for the TILT half of cl_viewbob, the part that arrives inside kick_angles. -1, the default, means follow cl_viewbob. 0 forces the tilt to be left alone even at cl_viewbob 0; 0..1 forces how much of it to remove regardless of cl_viewbob. This exists so a build can be bisected without also losing the vertical removal - players never need it, and it is not in the menus. cl_viewbob_info reports what the tilt model measured, what is left after subtracting it, and which guard refused any samples. |
| cl_vwep | 0/1 | show visible weapons on other player models |
| cl_warn_on_fps_rounding | 0/1 | Print a warning if value specified for cl_maxfps or r_maxfps is inexact due to rounding. Default value is 1 (enabled). |
| cl_weapon_anim_debug | 0=no prints / 1=print weapon animation timeline on change (diagnostic, current session only) | Print the weapon animation timeline on every change — logs each server vs predicted gun frame transition with timestamps, helpful for diagnosing animation lag or Option E switch-window issues. |
| 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. |
| cl_yawspeed | 1..1000 | view yaw key speed |
| com_completion_mode | 0/1/2 | command-line completion mode |
| com_completion_treshold | 1..20 | min chars before completion triggers |
| com_date_format | strftime | Date format used by com_date macro. Default value is "%Y-%m-%d". See strftime(3) for syntax description. |
| com_debug_break | 0/1 (diagnostic, current session only) | Development variable that turns all errors into debug breakpoints. Default value is 0 (disabled). |
| com_fatal_error | 0/1 | Turns all non-fatal errors into fatal errors that cause server process exit. Default value is 0 (disabled). |
| com_time_format | strftime | Time format used by com_time macro. Default value is "%H.%M" on Win32 and "%H:%M" on UNIX. See strftime(3) for syntax description. |
| con_alpha | 0..1 | Opacity of in-game console background. 0 is fully transparent, 1 is opaque. Default value is 1. |
| con_auto_chat | 0=handle as regular commands / 1=forward as chat / 2=forward as team chat | Specifies how console commands not starting with a slash or backslash are handled while in game. Default value is 0. |
| con_background | string | Image used as console background. Default value is "conback". |
| con_clock | 0/1 | Toggles drawing of the digital clock at the lower right corner of console. Default value is 0 (disabled). |
| con_font | path | Font used for drawing console text. Default value is "conchars". |
| con_height | 0..1 | Fraction of the screen in-game console occupies. Default value is 0.5. |
| con_history | 0..1024 | Specifies how many lines to save into console history file before exiting Q2PRO, to be reloaded on next startup. Maximum number of history lines is 128. Default value is 128. |
| con_notifylines | 0..CON_TIMES | Number of the last console lines displayed in the notification area in game. Default value is 4. |
| con_notifytime | 0..30 | in-game notify duration (sec) |
| con_scale | 0 = auto / manual 1.0..10.0 (menu step 0.1) | Scaling factor of the console text. Default value is 0 = auto (engine picks based on resolution). Manual range 1.0..10.0 after R_ClampScale; menu step 0.1. Sub-1.0 values are silently clamped to 1.0 by the renderer, which is why the menu range starts at 1.0. |
| con_scroll | 1=when new command is entered / 2=when new lines are printed | Controls automatic scrolling of console text when some event occurs. This variable is a bitmask. Default value is 0. |
| con_timestamps | 0/1 | Specifies if console lines are prefixed with a timestamp. Default value is 0. |
| con_timestampscolor | color index or name | Text color used for console timestamps. Default value is "#aaa". |
| con_timestampsformat | strftime | Format string for console timestamps. Default value is "%H:%M:%S ". See strftime(3) for syntax description. |
| console_prefix | string | Analogous to logfile_prefix, but for system console. Additionally, sequence <?>, if present at the beginning of prefix, is replaced with printk()-style severity level based on message type. This is intended for logging server stdout with systemd(1). Default value is empty (no prefix). |
| coop | 0/1 | cooperative game mode |
| crosshair | 0..5 | crosshair style index |
| deathmatch | 0/1 | deathmatch game mode |
| debuggraph | 0/1 (diagnostic, current session only) | enable debug frame graph |
| dedicated | 0/1 (startup) | run as dedicated server |
| developer | 0/1/2 (diagnostic, current session only) | developer print level |
| dmflags | 1 - No Health. / 2 - No Powerups. / 4 - Weapons Stay. / 8 - No Falling Damage. / 16 - Instant Powerups. / 32 - Same Map. / 64 - Teams by Skin. / 128 - Teams by Model. / 256 - No Friendly Fire. / 512 - Spawn Farthest. / 1024 - Force Respawn. / 2048 - No Armor. / 4096 - Allow Exit. / 8192 - Infinite Ammo. / 16384 - Quad Drop. / 32768 - Fixed FOV. | The options which determine deathmatch game settings. |
| filterban | 0=allow only listed / 1=ban listed (default) | Game library: meaning of the addip list. 1 = listed addresses are banned; 0 = only listed addresses may join. |
| fixedtime | 0..100 (diagnostic, current session only) | force fixed frame time (ms, debug) |
| flood_msgs | 0..30 | chat flood: max messages |
| flood_mute | 0..300 | chat flood: mute duration (sec) |
| flood_persecond | 0..30 | chat flood: rate window (sec) |
| flood_waitdelay | 0..60 | chat flood: wait delay (sec) |
| fogdensity | 0..1 | fog density |
| foghue | 0..1 | fog hue |
| foglightness | 0..1 | fog lightness |
| fogsaturation | 0..1 | fog saturation |
| fov | 1..170 | field of view |
| fraglimit | 0..9999 | deathmatch frag limit |
| freelook | 0/1 | free mouse look |
| fs_autoexec | 0/1 | run autoexec.cfg on startup |
| fs_debug | 0/1/2 (diagnostic, current session only) | print filesystem debug |
| fs_fuzz_factor | 0..100 | filesystem fuzz factor (testing) |
| fs_fuzz_filter | string | filesystem fuzz filter pattern |
| fs_gamedir | path (read-only) | Read-only: full path of the active game directory, used by the game library to find its files. |
| g_features | bitmask | game module feature bits (readonly) |
| g_protocol_extensions | 0=off (default) / 1=on | Game library: use the Q2PRO protocol extensions (larger limits) when clients support them. Applies on the next map. |
| g_select_empty | 0=off (default) / 1=on | Game library: allow selecting a weapon that has no ammo. |
| game | string (startup) | gamedir / mod name |
| gamedate | date (read-only) | Read-only: build date of the running game library, published in serverinfo. |
| gamedir | string (read-only) | Read-only: the active game directory (mod), published in serverinfo for server browsers. |
| gamename | string (read-only) | Read-only: name of the running game library, published in serverinfo. |
| gender | male/female/other | player gender hint (demo/replay) |
| gender_auto | 0/1 | auto-detect gender from skin |
| graphheight | 0..512 (diagnostic, current session only) | debug graph height |
| graphscale | 0..4 (diagnostic, current session only) | debug graph value scale |
| graphshift | 0..256 (diagnostic, current session only) | debug graph shift |
| gun_x | units (default 0) | Game library debug: horizontal (right) offset of the view weapon model. |
| gun_y | units (default 0) | Game library debug: forward offset of the view weapon model. |
| gun_z | units (default 0) | Game library debug: vertical offset of the view weapon model. |
| hand | 0=right/1=left/2=center | weapon-handed preference |
| homedir | path (default empty; read-only after start) | Per-user writable directory for configs, demos and screenshots. Empty = write next to the game data. Command-line only. |
| host_speeds | 0/1 (diagnostic, current session only) | print host timing breakdown |
| hostname | string | server hostname |
| hqx_cb | 0..2 | hq2x: Cb channel weight |
| hqx_cr | 0..2 | hq2x: Cr channel weight |
| hqx_y | 0..2 | hq2x: Y channel weight |
| intensity | default 2 / range 0..5 / step 0.05 | Primary renderer light intensity multiplier consumed by the shader uniforms (u_intensity / u_intensity2). Stock Q2PRO default is 2; lower values darken the level, higher values brighten it. When cl_q2prox_cfg_global_prefs 1 + cl_q2prox_cfg_global_pref_video 1 are enabled the value is owned by the unified Q2PRO-X global config (baseq2/q2pro-x/q2pro-x.cfg). Independent from gl_brightness / gl_modulate, legacy texture-domain vid_gamma, and final-composite vid_display_gamma; these controls operate at separate renderer stages. |
| libdir | path (read-only after start) | Directory searched for game libraries. Command-line only. |
| loc_dist | 0..4096 | Maximum distance to the location, in world units, for it to be considered by the location selection algorithm. Default value is 500. |
| loc_draw | 0/1 | Enables visualization of location positions. Default value is 0 (disabled). |
| loc_trace | 0/1 | When enabled, location must be directly visible from the given position (not obscured by solid map geometry) in order to be selected. Default value is 0, which means any closest location will satisfy, even if it is placed behind the wall. |
| logfile | 0=logging disabled / 1=logging enabled, overwrite previous file / 2=logging enabled, append to previous file | Specifies if console logging to file is enabled. Default value is 0. |
| logfile_flush | 0=system default mode (block buffered) / 1=line buffered mode / 2=unbuffered mode | Specifies if log file data is buffered in memory or flushed to disk immediately. Default value is 0. See setvbuf(3) manual page for more details. |
| logfile_name | string | Specifies base name of the log file. Should not include any extension part or path components. logs/ prefix and .log suffix are automatically appended. Default value is console. |
| logfile_prefix | string | Specifies the time/date template each line of log file is prefixed with. Default value is [%Y-%m-%d %H:%M] . See strftime(3) manual page for syntax description. In addition, the first @ character in the template, if found, is replaced with a single character representing message type (T — talk, D — developer, W — warning, E — error, N — notice, A — default). |
| lookspring | 0/1 | spring view back on movement |
| lookstrafe | 0/1 | convert look to strafe when mouse-looking disabled |
| lrcon_password | string | If not empty, enables users of this password to execute limited set of rcon commands on the server. By default no commands are permitted. Permitted command prefixes can be added using addlrconcmd. |
| map_noareas | 0/1 (diagnostic, current session only) | ignore BSP area portals |
| map_override_path | string | Specifies the directory from which override files with extensions .ent or .bsp.override are loaded. Default value is empty (dont try to override entity strings). Typical value for this is maps, but can be customized per server port. Override files with .ent extension allow the entity string of the map being loaded to be replaced by a custom data supplied by server operator. This makes it possible to change the layout of entities on the map (thus creating a new version of the map) without requiring clients to download anything. Entity string can be dumped from the current map using dumpents server command and later changed with a text editor. Override files with .bsp.override extension are more complex: they are binary files that can replace map entity string or checksum. They can also create an alias for the map. How to create such files is out of scope of this manual (search the internet for r1q2 map override file generator). |
| map_visibility_patch | 0/1 | Attempt to patch miscalculated visibility data for some well-known maps (q2dm1, q2dm3 and q2dm8 are patched so far), fixing disappearing walls and entities. Default value is 1 (enabled). |
| mapname | map name (read-only) | Read-only: the map the server is running. |
| maxclients | 1..256 | maximum client slots |
| maxentities | default 1024 | Game library: maximum number of entities. Applies on the next map. |
| maxspectators | default 4 | Game library: maximum number of spectators. |
| msg | 0..3 | message level filter |
| mvd_admin_password | string | MVD admin password |
| mvd_buffer_size | 16..16384 | Size of delay buffer, in multiplies of MAX_MSGLEN (32 KiB). Default value is 8. You may need to increase this when also increasing mvd_wait_delay. |
| mvd_chase_prefix | string | Specifies POV info string position on the screen. This should be a valid fragment of the Quake 2 layout script. Default value is "xv 0 yb -64". |
| mvd_default_map | string | Specifies default map used for the Waiting Room channel. Default value is "q2dm1". |
| mvd_filter_version | 0/1 | filter outgoing MVD by protocol version |
| mvd_freeze_hack | 0/1 | freeze-hack workaround for MVD |
| mvd_part_filter | 0/1 | partial-frame MVD filter |
| mvd_password | string | Default password to use for outgoing GTV connections. Default value is empty. |
| mvd_shownet | 0/1/2 (diagnostic, current session only) | print MVD network detail |
| mvd_snaps | 0..300 | Specifies time interval, in seconds, between saving snapshots in memory during MVD playback. Snapshots enable backward seeking in demo (see mvdseek command description), and speed up repeated forward seeks. Setting this variable to 0 disables snapshotting entirely. Default value is 10. |
| mvd_stats_hack | 0/1 | MVD stats-hack workaround |
| mvd_stats_score | 0=always zero / 1=MVD channel ID spectator is on / 2=score of the chase target | Specifies what score stats field should contain for MVD observers. This field is externally visible to server browsers. Default value is 0. |
| mvd_suspend_time | 0..300 | GTV connections are suspended after this period of time, in minutes, counted from the last moment of MVD spectator(s) activity. Setting this to zero disables client side suspending entirely. Default value is 5. |
| mvd_timeout | 1..300 | Specifies MVD connection timeout value, in seconds. Default value is 90. |
| mvd_username | string | Default username to use for outgoing GTV connections. Default value is "unnamed". |
| mvd_wait_delay | 0..60 | Time, in seconds, for MVD channel to buffer data initially. This effectively specifies MVD stream delay seen by observers. Default value is 20. |
| mvd_wait_percent | 0..100 | Maximum inuse percentage of the delay buffer when MVD channel stops buffering data to prevent overrun, ignoring mvd_wait_delay value. Default value is 50. |
| name | string | player name |
| needpass | 0..3 (read-only) | Read-only: which passwords the server requires, published in serverinfo (1 = player password, 2 = spectator password, 3 = both). |
| net_chantype | 0/1 | Specifies if enhanced Q2PRO network channel implementation is enabled when connecting to Q2PRO servers. Q2PRO netchan supports application-level fragmentation of datagrams that results is better gamestate compression ratio and faster map load times. Default value is 1 (enabled). |
| net_clientport | 0..65535 | Specifies UDP port number client should use for outgoing connections (using IPv4 or IPv6). Default value is -1, which means that random port number is chosen at socket creation time. |
| net_dropsim | 0..100 | simulate packet drops (percent) |
| net_enable_ipv6 | 0=disable IPv6, use IPv4 only / 1=enable IPv6, but do not listen for incoming IPv6 connections and prefer IPv4 over IPv6 when resolving host names with multiple addresses / 2=enable IPv6, listen for incoming IPv6 connections and use normal address resolver priority configured by OS | Enables IPv6 support. Default value is 1 on systems that support IPv6 and 0 otherwise. |
| net_ignore_icmp | 0/1 | On Win32 and Linux, server is able to receive ICMP destination-unreachable packets from clients. This enables intelligent detection of crashed clients, allowing the server to quickly re-use their slots. If this behavior is not wanted for some reason, then this variable can be used to turn it off. Default value is 0 (dont ignore ICMP packets). |
| net_ip | ip | Specifies network interface address server should listen on for UDP and TCP connections using IPv4. The same interface is also used for outgoing TCP connections (these include MVD/GTV and anticheat connections). Default value is empty, which means listening on all interfaces. accessible from multiple IP addresses. If you are running the server on multi-ip system and plan to use anticheat, you need to explicitly bind the server to one of your network interfaces using the net_ip cvar. |
| net_ip6 | ipv6 | Specifies network interface address server should listen on for UDP and TCP connections using IPv6. The same interface is also used for outgoing TCP connections (these include MVD/GTV connections). Default value is empty, which means listening on all interfaces. Has no effect unless net_enable_ipv6 is set to non-zero value. |
| net_log_enable | 0/1 | write a network log |
| net_log_flush | 0/1 | flush net log each write |
| net_log_name | string | net log filename |
| net_maxmsglen | 0..65535 | Specifies maximum server to client packet size client will request from servers. 0 means no hard limit. Default value is conservative 1390 bytes. It is nice to have this variable as close to your network link MTU as possible (accounting for headers). Thus for normal Ethernet MTU of 1500 bytes 1462 can be specified (10 bytes quake header, 8 bytes UDP header, 20 bytes IPv4 header). Higher values may cause IP fragmentation which is better to avoid. Servers will cap this variable to their own maximum values. Dont change this variable unless you know exactly what you are doing. |
| net_port | 0..65535 | Specifies port number server should listen on for UDP and TCP connections (using IPv4 or IPv6). Default value is 27910. |
| netgraph | 0/1 (diagnostic, current session only) | enable network graph |
| password | string | client password for joining |
| port | number (read-only) | Read-only: the UDP port the server listens on (set it with net_port). |
| protocol | 34=standard Quake II server protocol / 36=extended Q2PRO server protocol (read-only) | Read-only local Q2PRO server protocol identifier. It does not show the protocol negotiated for the current remote client connection; use cl_protocol for client selection. |
| public | 0/1 | server publicly advertised |
| q2prox_config_readonly | 0=normal (default) / 1=read-only (diagnostic, current session only) | Process-wide config write barrier: nothing writes saved configs or preset files during this run. Command-line only (+set q2prox_config_readonly 1); used for tests. |
| q2prox_game_dll_active | 0/1 (read-only) | Read-only state: 1 while the Q2PRO-X single-player game library runs a local game. Set by the engine; menus use it. |
| qport | 0..65535 | client qport identifier |
| rcon_address | ip:port | remote rcon server address |
| rcon_password | string | rcon password |
| run_pitch | default 0.002 | Game library: view pitch tilt while running forward/back. |
| run_roll | default 0.005 | Game library: view roll tilt while strafing. |
| scr_alpha | 0..1 | Opacity of the HUD elements. 0 is fully transparent, 1 is opaque. Default value is 1. |
| scr_centertime | 0..30 | centerprint duration (sec) |
| scr_chathud | 0=do not draw chat lines / 1=draw chat lines in normal color / 2=draw chat lines in alternative color | Toggles drawing of the last chat lines on the screen. Default value is 0. |
| scr_chathud_lines | 1..32 | Specifies number of the last chat lines drawn on the screen. Default value is 4. Maximum value is 32. |
| scr_chathud_time | 0..60 | Specifies visibility time of each chat line, counted in seconds. Default value is 0 (lines never fade out). |
| scr_chathud_x | int | Absolute value of this cvar specifies horizontal placement of the chat HUD, counted in pixels from the screen edge. Negative values align graph to the right edge of the screen instead of the left edge. Default value is 8. |
| scr_chathud_y | int | Absolute value of this cvar specifies vertical placement of the chat HUD, counted in pixels from the screen edge. Negative values align graph to the bottom edge of the screen intead of the top edge. Default value is -64. |
| scr_conspeed | 100..10000 | console drop-down speed |
| scr_demobar | 0=do not draw demo bar / 1=draw demo bar and demo completion percentage / 2=draw demo bar, demo completion percentage and current demo time | Toggles drawing of progress bar at the bottom of the screen during demo playback. Default value is 1. |
| scr_draw2d | 0=do not draw anything / 1=do not draw stats program / 2=draw everything | Toggles drawing of 2D elements on the screen. Default value is 2. |
| scr_font | path | Font used for drawing HUD text. Default value is "conchars". |
| scr_hit_marker_time | 0..2000 | Hit marker visibility time in milliseconds. Hit marker is only visible if crosshair is visible. Default value is 500. |
| scr_lag_draw | 0=do not draw graph / 1=draw transparent graph / 2=overlay graph on gray background | Toggles drawing of small (48x48 pixels) ping graph on the screen. Default value is 0. |
| scr_lag_max | 0..1000 | Specifies ping graph scale by defining the maximum value that can be displayed. Default value is 200. |
| scr_lag_min | 0..1000 | Specifies ping graph offset by defining the minimum value that can be displayed. Default value is 0. |
| scr_lag_x | int | Absolute value of this cvar specifies horizontal placement of the ping graph, counted in pixels from the screen edge. Negative values align graph to the right edge of the screen instead of the left edge. Default value is -1. |
| scr_lag_y | int | Absolute value of this cvar specifies vertical placement of the ping graph, counted in pixels from the screen edge. Negative values align graph to the bottom edge of the screen intead of the top edge. Default value is -1. |
| scr_printspeed | 0..1000 | centerprint per-character speed |
| scr_scale | 0 = auto / manual 1.0..10.0 (menu step 0.1) | Scaling factor of the HUD elements. Default value is 0 = auto (engine picks based on resolution). Manual range 1.0..10.0 after R_ClampScale; menu step 0.1. Sub-1.0 values are silently clamped to 1.0 by the renderer. |
| scr_showpause | 0=do not draw pause indicator / 1=draw pic in center of the screen / 2=draw text in demo bar (visible only during demo playback) | Toggles drawing of pause indicator on the screen. Default value is 1. |
| scr_showpmove | 0/1 (diagnostic, current session only) | debug: show pmove state |
| scr_showstats | 0/1 (diagnostic, current session only) | debug: show frame stats |
| scr_showturtle | 0/1 (diagnostic, current session only) | Toggles drawing of various network error conditions at the lower left corner of the screen. Default value is 1 (draw all errors except of SUPPRESSED, CLIENTDROP and SERVERDROP). Values higher than 1 draw all errors. [horizontal] SERVERDROP:: Packets from server to client were dropped by the network. CLIENTDROP:: A few packets from client to server were dropped by the network. Server recovered players movement using backup commands. CLIENTPRED:: Many packets from client to server were dropped by the network. Server ran out of backup commands and had to predict players movement. NODELTA:: Server sent an uncompressed frame. Typically occurs during a heavy lag, when a lot of packets are dropped by the network. SUPPRESSED:: Server suppressed packets to client because rate limit was exceeded. BADFRAME:: Server sent an invalid delta compressed frame. OLDFRAME:: Server sent a delta compressed frame that is too old and cant be recovered. OLDENT:: Server sent a delta compressed frame whose entities are too old and cant be recovered. |
| sensitivity | 0.01..50 | mouse sensitivity |
| showclamp | 0/1 (diagnostic, current session only) | debug: show command clamping |
| showdrop | 0/1 (diagnostic, current session only) | debug: show dropped packets |
| showpackets | 0/1 (diagnostic, current session only) | debug: show all packets |
| skill | 0=easy/1=med/2=hard/3=nmare | singleplayer skill level |
| skin | model/skin | player skin name |
| spectator | 0/1 | join as spectator |
| spectator_password | string (default empty) | Password a client sends to join a passworded server as a spectator (sent in userinfo). |
| sv_airaccelerate | 0..10 | server airaccelerate (q2w/ctf) |
| sv_allow_map | 0=disallow map and print a warning unless there are pending latched cvars / 1=handle map command normally / 2=turn map into gamemap unless there are pending latched cvars | Controls the map command behavior. map is often mistakingly used by server operators to change maps instead of the more lightweight gamemap. Thus, this variable exists to prevent misuse of map. Default value is 0 for dedicated servers, 1 otherwise. |
| sv_allow_nodelta | 0/1 | Enables automatic removal of clients that abuse the server with requests for too many nodelta (uncompressed) frames, hogging network resources. Default value is 1 (dont remove clients), since this may sometimes legitimately happen on very poor client connections. |
| sv_allow_unconnected_cmds | 0/1 | Controls whether client command strings are processed by the game mod even when the client is not fully spawned in game. Originally, Quake 2 server forwarded all commands to the game mod even for connecting clients, but this is known to cause problems with some (broken) mods that dont perform their own client state checks. Default value is 0 (ignore commands unless fully connected). |
| sv_anticheat_badfile_action | log/kick | action on anticheat bad file |
| sv_anticheat_badfile_max | 0..100 | bad-file limit before action |
| sv_anticheat_badfile_message | string | message shown on bad file |
| sv_anticheat_client_disconnect_action | string | action on client anticheat disconnect |
| sv_anticheat_disable_play | 0/1 | block play when anticheat disabled |
| sv_anticheat_error_action | string | action on anticheat error |
| sv_anticheat_message | string | anticheat info message |
| sv_anticheat_required | 0/1 | require anticheat to play |
| sv_anticheat_server_address | ip:port | anticheat server address |
| sv_anticheat_show_violation_reason | 0/1 | broadcast violation reason |
| sv_auth_limit | 0..60 | Limits the rate of client connection attempts with invalid password. Default value is 1 invalid authentication attempt per second. |
| sv_calcpings_method | 0=disable ping calculation entirely / 1=use default ping calculation algorithm based on averaging / 2=use improved algorithm based on minimum round trip times | Specifies the way client pings are calculated. Default ping calculation algorithm depends on client frame and packet rates, and may give inaccurate results, depending on client settings. Using improved algorithm is recommended as it should produce results more consistent with ping command line utility. Default value is 2. |
| sv_changemapcmd | string | Specifies command to be executed each time server finishes loading a new map. Default value is empty. |
| sv_cinematics | 0/1 | If set to 0, server will skip cinematics even if they exist. Default value is 1. |
| sv_debug | 0/1/2 (diagnostic, current session only) | server debug level |
| sv_downloadserver | url | Specifies the initial portion of the URL compatible clients use for HTTP downloads. It must begin with http:// or https:// and should normally end with a slash. Default is empty (no download URL). The server operator must expose the matching game files through a compatible HTTP endpoint. |
| sv_enforcetime | 0/1/2 | enforce monotonic client time |
| sv_enhanced_setplayer | 0/1 | Enable partial client name matching for certain console commands like kick and stuff. Default value is 0 (use original matching algorithm). |
| sv_features | bitmask | server feature bits (readonly) |
| sv_force_reconnect | string | When set to an address string, forces new clients to quickly reconnect to this address as an additional proxy protection measure. Default value is empty (do not enforce reconnection). |
| sv_fps | 10/20/40/100 | Specifies native server frame rate. Only used when game mod advertises support for variable server FPS. Specified rate should be a multiple of 10 (maximum rate is 60). Default value is 10 frames per second. Only clients that support Q2PRO protocol will be able to take advantage of higher FPS. Other clients will receive updates at default rate of 10 packets per second. |
| sv_ghostime | 0..60 | Maximum time, in seconds, before dropping clients which have passed initial challenge-response connection stage but have not yet sent any data over newly established connection. This also applies to MVD/GTV clients in request processing stage. Helps to avoid attacks flooding server with zombie clients, combined with sv_iplimit variable. Default value is 6. |
| sv_gravity | default 800 | Game library: world gravity; a map can set its own. |
| sv_idlekick | 0..3600 | Time, in seconds, before dropping inactive clients. Default value is 0 (dont kick idling clients). Moving, pressing buttons while in game and issuing chat commands counts as activity. downloading or otherwise taking long time to enter the game. |
| sv_iplimit | 0..64 | Maximum number of simultaneous connections allowed from single IP address (per connection type, TCP and UDP client lists are separate). Setting this variable to 0 disables the limit. Default value is 3. |
| sv_lan_force_rate | 0/1 | When enabled, do not enforce any rate limits on clients whose IP is from private address space (127.x.x.x, 10.x.x.x, 192.168.x.x, 172.16.x.x). Default value is 0 (disabled). |
| sv_locked | 0/1 | Locks the server, preventing new clients from connecting. Default value is 0 (server unlocked). |
| sv_maplist | map list (default empty) | Game library: deathmatch map rotation, map names separated by spaces (used when a map ends and no next map is set). |
| sv_max_download_size | 0..65535 | Maximum size of UDP download in bytes. Value of 0 disables the limit. Default value is 8388608 (8 MiB). on the server. Thus it is advisable to keep all data in .pkz for optimal download speeds. |
| sv_max_packet_entities | 0..128 | Maximum number of entities in client frame. Default value is 0, which is equivalent to 128 for non-extended servers and 512 for extended servers. |
| sv_max_rate | 0..1000000 | Server clamps maximum value of rate userinfo parameter to this value. Default value is 60000 bytes/sec. |
| sv_maxvelocity | default 2000 | Game library: maximum entity velocity. |
| sv_min_rate | 0..1000000 | Server clamps minimum value of rate userinfo parameter to this value. Default value is 15000 bytes/sec. This parameter cant be greater than sv_max_rate value or less than 1500 bytes/sec. |
| sv_mvd_allow_stufftext | 0/1 | allow MVD stufftext |
| sv_mvd_autorecord | 0/1 | auto-record an MVD per map |
| sv_mvd_begincmd | string | This command is issued on behalf of dummy MVD observer as soon as it enters the game. Do whatever preparations are needed here to make sure MVD observer enters an appropriate observing mode, opens the scoreboard, etc. MVD observer has its own command buffer and each wait cycle lasts 100 ms there. Default value is "wait 50; putaway; wait 10; help;". |
| sv_mvd_bufsize | 16..16384 | MVD output buffer size (KB) |
| sv_mvd_capture_flags | bitmask | MVD capture bits |
| sv_mvd_disconnect_time | 0..60 | Dummy MVD observer is disconnected after this period of time, in minutes, counted from the moment last GTV client disconnects or becomes inactive. Setting this to zero makes dummy client persistent. Default value is 15. |
| sv_mvd_enable | 0=MVD server is disabled / 1=local MVD recording is allowed / 2=local MVD recording and remote GTV connections are allowed | Enables MVD/GTV server functionality. Default value is 0. |
| sv_mvd_maxclients | 0..256 | Total number of MVD/GTV client slots on the server. Default value is 8. |
| sv_mvd_maxmaps | 0..1000 | Specifies number of map changes local MVD recording is stopped after. Default value is 1. Setting this to 0 disables the limit. |
| sv_mvd_maxsize | 0..8192 | Maximum size, in kB, of the locally recorded MVD. Default value is 0 (unlimited). |
| sv_mvd_maxtime | 0..1440 | Maximum duration, in minutes, of the locally recorded MVD. Default value is 0 (unlimited). |
| sv_mvd_noblend | 0/1 | Reduce bandwidth usage by filtering on-screen blend effects out of MVD stream. Default value is 0 (filtering disabled). |
| sv_mvd_nogun | 0/1 | Reduce bandwidth usage by filtering on-screen gun updates out of MVD stream. Default value is 0 (filtering disabled). |
| sv_mvd_nomsgs | 0/1 | When enabled, MVD/GTV spectators in chasecam mode will not receive any text messages routed to their chase targets (which are normally on a team), but will receive messages routed to the dummy MVD observer. Default value is 1 (enabled). This variable is only effective when dummy client is spawned, see sv_mvd_spawn_dummy variable description for more information. |
| sv_mvd_password | string | If not empty, allows only authenticated MVD/GTV clients to connect. Default value is empty (any neutral host can connect). whitelisted nor blacklisted (see addgtvhost and addgtvban commands description for more information). |
| sv_mvd_scorecmd | string | This command is issued on behalf of dummy MVD observer each time no layout updates are detected for more than 9 seconds. Useful for reopening the scoreboard if the game mod closes it for some reason. MVD observer has its own command buffer and each wait cycle lasts 100 ms there. Default value is "putaway; wait 10; help;". |
| sv_mvd_spawn_dummy | 0=never spawn dummy client / 1=only spawn if game mod advertises support for MVD / 2=always spawn dummy client | Specifies if dummy MVD observer needs to be spawned. Default value is 1. |
| sv_mvd_suspend_time | 0..600 | GTV connections are suspended after this period of time, in minutes, counted from the moment last active player disconnects or becomes inactive. Setting this to zero disables server side suspending entirely. Default value is 5. |
| sv_namechange_limit | 0..60 | Limits the rate at which clients are permitted to change their name. Default value is 5 name changes per minute. |
| sv_noreload | 0/1 | do not reload savegame between deaths |
| sv_novis | 0/1 (diagnostic, current session only) | disable server PVS culling |
| sv_packetdup_hack | 0/1 | packet-duplication compatibility hack |
| sv_pad_packets | 0/1 | pad packets to MTU |
| sv_password | string | If not empty, allows only authenticated clients to connect. Authenticated clients are allowed to occupy reserved slots, see below. Clients set their passwords via password userinfo variable. Default value is empty (no password). sv_password instead of going the game mod way and using password variable. The latter will prevent MVD/GTV features from working. Otherwise clients will be unable to connect. |
| sv_paused | 0/1 | server pause flag |
| sv_prioritize_entities | 0/1 | Sort entities by priority if number of entities in client frame exceeds sv_max_packet_entities limit, and throw out low priority entities. Default value is 0, which simply throws out entities with higher numbers that dont fit into frame. Sorting is potentially CPU intensive and thus disabled by default. |
| sv_qwmod | 0/1/2 | QuakeWorld compatibility level |
| sv_rcon_limit | 0..60 | Limits the rate at which server responds to invalid rcon commands. Default value is 1 invalid command per second. |
| sv_recycle | 0=handle gamemap command normally / 1=turn the next gamemap into map and reload the game module / 2=turn the next gamemap into recycle and reload entire server | Temporary variable useful for automatically upgrading the server at the next map change. Default value is 0. |
| sv_redirect_address | ip:port | When server becomes full, redirects new clients to the specified address. Default value is empty (dont redirect). |
| sv_reserved_password | string | The password to use for reserved slots. Default value is empty, which means no one is allowed to occupy reserved slot(s), except of dummy MVD observer. Clients set their passwords via password userinfo variable. |
| sv_reserved_slots | 0..256 | Number of client slots reserved for clients who know sv_reserved_password or sv_password. Must be less than maxclients value. Default value is 0 (dont reserve slots). sv_reserved_slots is automatically set to one to reserve a slot for dummy MVD observer. visible in the server info. |
| sv_rollangle | degrees (default 2) | Game library: view roll angle while strafing. |
| sv_rollspeed | default 200 | Game library: strafe speed at which sv_rollangle is fully reached. |
| sv_running | 0/1 (readonly) | server running flag (readonly) |
| sv_show_name_changes | 0=dont show name changes / 1=show name changes of players fully spawned in game / 2=show name changes of all players, including connecting players | Broadcast player name changes to everyone. Enable this unless game mod already shows name changes. Default value is 0. |
| sv_status_limit | 0..60 | Limits the rate at which server responds to status queries. Default value is 15 queries per second. Rate limiting is implemented as a simple token bucket filter. Full syntax for specifying rate limits is: <limit>[/<period>[sec/min/hour]][<burst>]. Only the _limit_ argument is mandatory. Zero _limit_ means rate is not limited. Default period is one second. Custom _period_ can be specified after a slash, with optional _sec_, _min_, or _hour_ suffix (default units are seconds). Default burst value is 5. Custom _burst_ can be specified after an asterisk. Burst specifies initial number of extra packets that are permitted even if they arrive at rate higher than allowed. |
| sv_status_show | 0=do not respond at all / 1=respond with server info only / 2=respond with server info and player list | Specifies how the server should respond to status queries. Default value is 2. |
| sv_strafejump_hack | 0/1/2 | Enables FPS-independent strafe jumping mode for clients using R1Q2 and Q2PRO protocols. Values higher than 1 will force this mode for all clients, regardless of their protocol version. Default value is 1 (enable strafe jumping hack only for compatible clients). |
| sv_timescale_kick | 0/1 | kick on sustained timescale violation |
| sv_timescale_time | 0..60 | timescale sample window (sec) |
| sv_timescale_warn | 0..2 | warn threshold for timescale |
| sv_trunc_packet_entities | 0/1 | When client frame is about to overflow, truncate packetentities instead of dropping client frame. This does not break delta compression and should be generally safe to use. Some negative effects like entities temporary freezing, or delayed spawning can be observed. Only relevant for legacy clients not using Q2PRO network channel implementation. Default value is 1 (enabled). |
| sv_uptime | 0=do not display uptime at all / 1=display uptime in compact format / 2=display uptime in verbose format | Include uptime key/value pair in server info. Default value is 0. |
| sv_waterjump_hack | 0/1 | Makes underwater movement speed equal in all directions for clients using Q2PRO protocol. Values higher than 1 will force this mode for all clients, regardless of their protocol version. Default value is 1 (enabled). Quake 2 player movement code contains a bug that causes surfacing velocity produced by holding the jump button underwater to be severely limited, comparing to movement in other directions. Even worse, resulting velocity is calculated differently on client and server sides and that causes prediction errors and jerky movement. Q2PRO is able to work around this bug and make player movement speed equal in all directions underwater. |
| sys_allow_unsafe_savegames | 0/1 | allow unsafe savegame loading |
| sys_disablecrashdump | 0=write dumps (default) / 1=off (diagnostic, current session only) | Do not write a crash dump file when the game crashes (Windows). Command-line only. |
| sys_exitonerror | 0=show the message (default) / 1=exit (diagnostic, current session only) | Exit at once on a fatal error instead of showing the error message box (Windows). |
| sys_forcegamelib | string | Specifies the full path to the game library server should attempt to load first, before normal search paths are tried. Useful mainly for debugging or mod development. Default value is empty (use normal search paths). |
| sys_game32_bridge_debug | default 0 / 0=off, >0=diagnostic (diagnostic, current session only) | Developer-only: 32-bit game-DLL bridge diagnostic print. 0=off. Not archived, no menu; zero cost at 0. |
| sys_history | 0..1024 | Specifies how many lines to save into system console history file before exiting Q2PRO, to be reloaded on next startup. Maximum number of history lines is 128. Default value is 128. The following key bindings are available in Windows console and in TTY console when command line editing is enabled: HOME, Ctrl+A — move cursor to start of line END, Ctrl+E — move cursor to end of line Left arrow, Ctrl+B — move cursor one character left Right arrow, Ctrl+F — move cursor one character right Alt+B — move cursor one word left Alt+F — move cursor one word right DEL, Ctrl+D — delete character under cursor Backspace, Ctrl+H — delete character left of cursor Ctrl+W — delete word left of cursor Ctrl+U — delete all characters left of cursor Ctrl+K — delete all characters right of cursor Ctrl+L — erase screen Ctrl+C — quit Down arrow, Ctrl+N — next line in command history Up arrow, Ctrl+P — previous line in command history Ctrl+R — reverse search in command history Ctrl+S — forward search in command history Tab — complete command In Windows console additional key bindings are supported: PGUP — scroll console buffer up PGDN — scroll console buffer down Ctrl+PGUP — scroll to console top Ctrl+PGDN — scroll to console bottom |
| sys_viewlog | 0=hidden (default) / 1=show (diagnostic, current session only) | Show the system console window next to the game (Windows). Command-line only. |
| timedemo | 0/1 | run demos as a benchmark |
| timegraph | 0/1 (diagnostic, current session only) | enable frame-time graph |
| timelimit | 0..1440 | deathmatch time limit (min) |
| timeout | 1..3600 | connection timeout (sec) |
| timescale | 0..100 | game timescale multiplier |
| uf | 1=auto screenshot at end of match / 2=auto record demo at beginning of match / 4=prefer user FOV over chased player FOV / 8=mute player chat / 16=mute observer chat / 32=mute other messages / 64=prefer chased player FOV over user FOV | User flags variable, automatically exported to game mod in userinfo. Meaning and level of support of individual flags is game mod dependent. Default value is empty. Commonly supported flags are reproduced below. Flags 4 and 64 are supported during local demo playback. Flags 4-64 are supported in MVD/GTV client mode. |
| ui_colorservers | 0/1 | Enables highlighting of entries in server browser with different colors. This option draws entries with low RTT in green and grays out password protected and anticheat enforced servers. Default value is 0 (disabled). |
| ui_debug | 0/1 (diagnostic, current session only) | UI debug prints |
| ui_listalldemos | 0/1 | List all demos, including demos in packs and demos in base directories. Default value is 0 (limit the search to physical files within the current game directory). |
| ui_open | 0/1 | Open the existing Q2PRO-X main game menu with its logo on an ordinary idle full launch, instead of leaving the full-screen console visible. Default 1. Direct map/server/demo startup actions retain authority. The setting applies on the next process launch; 0 keeps console startup and ESC still opens the same menu. |
| ui_pingrate | 0..60 | Specifies the server pinging rate used by server browser, in packets per second. Default value is 0, which estimates the default pinging rate based on rate client variable. |
| ui_scale | 0 = auto / manual 1.0..10.0 (menu step 0.1) | Scaling factor of the UI widgets. Default value is 0 = auto (engine picks based on resolution). Manual range 1.0..10.0 after R_ClampScale; menu step 0.1. Sub-1.0 values are silently clamped to 1.0 by the renderer. cl_menu_modern_autoscale only kicks in when ui_scale is 0. |
| ui_sortdemos | 0=dont sort / 1=sort by name / 2=sort by date / 3=sort by size / 4=sort by map / 5=sort by POV | Specifies default sorting order of entries in demo browser. Default value is 1. Negate the values for descending sorting order instead of ascending. |
| ui_sortservers | 0=dont sort / 1=sort by hostname / 2=sort by mod / 3=sort by map / 4=sort by players / 5=sort by RTT | Specifies default sorting order of entries in server browser. Default value is 0. Negate the values for descending sorting order instead of ascending. |
| usefog | 0/1 | enable client-side fog |
| vc_autojoin | 0=manual join only (default) / 1=autojoin on server connect | Automatically join the voice room when entering a game server. Requires vc_enable 1 and vc_room_mode "server". Triggers on CL_Connected. Leaves room automatically on disconnect. |
| vc_deafen | 0=normal (default) / 1=deafen all incoming | Mute all incoming voice participants. When 1, audio frames from all room participants are discarded at playback — useful for focus or streaming. Microphone capture and transmission continue normally while deafened, so other participants can still hear you. |
| vc_display_name | string (default empty = use player name) | Display name shown to other voice room participants. If empty (default), the game player name (cvar "name") is used. Useful to set a different visible identity in the voice room without changing the in-game name. |
| vc_enable | 0=disabled (default) / 1=enabled | Master switch for the Q2PRO-X voice chat subsystem. 0 (default) = feature is completely off — no capture, no connection, no cvar side-effects. Set to 1 to activate the voice system. Both voice transmit and receive require the OpenAL sound backend. |
| vc_input_gain | 0.0..10.0 float (default 1.0) | Microphone input gain multiplier applied before transmission. 1.0 = unity gain (default), up to 10.0 = 10x boost. Values above 1.0 amplify the captured signal; values below 1.0 attenuate it. Output is clipped to [-1.0, 1.0] after gain; above 3-4x expect audible saturation on loud sounds. |
| vc_mic_device | string, "(default)" or exact device name | Capture (microphone) device to use. Value "(default)" (default) follows the current Windows default microphone selection. Set to an exact device name from /voice_mic_list to pin to a specific physical microphone. Saved globally, applied on next vc_mic_enable 1 / voice_join. |
| vc_mic_device_list | quoted device names (read-only) | Read-only list of the microphones voice chat found; the menu offers these for vc_mic_device. |
| vc_mic_enable | 0=mic off (default) / 1=mic enabled | Allow microphone capture. 0 (default) = no audio captured or transmitted even if connected. 1 = capture is opened when joining a room. Requires OpenAL sound backend (s_enable openal) and a working capture device. Status string shows why mic is unavailable if conditions are not met — no silent degradation. |
| vc_ptt_mode | 0=VAD (voice activity) / 1=push-to-talk (default) | Transmit gating mode. 1 (default) = push-to-talk: audio is sent only while the +voiceptt bind is held. 0 = voice activity detection (VAD): audio is sent automatically when RMS level exceeds vc_vad_threshold. PTT is recommended to avoid background noise leakage. |
| vc_receive_volume | 0.0..10.0 float (default 1.0) | Volume multiplier for incoming voice from other participants. Independent of s_volume and s_voice_volume. 0.0 = silent, 1.0 = unity (default), 10.0 = 10x amplified. Applied per-participant at playback. Participant playback also requires the OpenAL backend. Use vc_deafen to mute all participants simultaneously. |
| vc_relay | URL string (default empty = use control-plane response) | Override relay (LiveKit media server) URL. If non-empty, the client uses this URL instead of the relay_url returned by the control-plane /voice/prepare response. Useful for local testing or self-hosted LiveKit. |
| vc_room_mode | "server"=room per game server (default) / "manual"=room from vc_room_name | Determines how the voice room name is computed. "server" (default): room is tied to the current game server (host:port hash). Requires an active game server connection. "manual": room name is taken from vc_room_name — allows joining any named room regardless of game server. |
| vc_room_name | string (default empty) | Voice room name when vc_room_mode is set to "manual". Has no effect in "server" mode. Must be non-empty when using manual mode. |
| vc_server | URL string (default "https://voice-api.q2pro-x.com") | URL of the Q2PRO-X voice control-plane service. This endpoint is called via HTTP POST /voice/prepare to obtain a LiveKit room token. Default: official Q2PRO-X hosted control-plane. Can be overridden for self-hosted deployments. |
| vc_vad_threshold | 0.0..1.0 float (default 0.02) | Voice activity detection threshold. Active only when vc_ptt_mode 0. If the RMS amplitude of a captured frame is below this value, the frame is not transmitted. Lower = more sensitive (picks up quiet sounds); higher = less sensitive (requires louder speech). |
| version | string (readonly) | build version string (readonly) |
| viewsize | 30..120 | legacy viewport size |
| win_alwaysontop | 0=off (default) / 1=on | Keep the game window above other windows (windowed mode). |
| win_disablewinkey | 0=off (default) / 1=on | Block the Windows key while the game window is active. |
| win_noalttab | 0=off (default) / 1=on | Block Alt-Tab while the game window is active. |
| win_noborder | 0=off (default) / 1=on | Draw the game window without a border (windowed mode). |
| win_noresize | 0=off (default) / 1=on | Do not let the game window be resized with the mouse (windowed mode). |
| win_notitle | 0=off (default) / 1=on | Draw the game window without a title bar (windowed mode). |
| z_perturb | 0..255 (diagnostic, current session only) | memory allocator perturbation pattern (debug) |
| zombietime | 0..300 | zombie client keep time (sec) |
Single player and experiments
Variables in this section: 53.
| Variable | Accepted values | Description |
|---|---|---|
| cl_sp_free_world | default 0 / 0=stock (monsters wait) / 1=idle monsters walk around | Free World: in local single player, a monster with nothing to fight WALKS around the level instead of standing still until it sees you. It walks and never runs, goes wherever it happens to be facing, and turns every few seconds or when something blocks the way. There are no level-design exemptions: an ambush monster, a path-corner patrol and a combat-point monster all wander too, because the point of the feature is that the level stops being the same every time. A monster stays where it is only while it has a real reason to: it is fighting someone, it is walking towards a noise it heard, it cannot walk at all, it flies or swims, or it is off the ground. Being pulled into someone ELSE's fight is a separate thing and still respects combat points, good guys and a combattarget. Off by default. No effect in deathmatch or coop. sv q2px_free_world_info prints the wander counters. |
| cl_sp_geo_deform | 0=original world (default) / 1=visually deformed world | Visual level-geometry deformation for local single player. Works only with deathmatch 0, coop 0, and a local one-player server. The drawn world mesh can become uneven or rounded, while movement, collision, savegames, PVS and server logic keep using the original BSP. |
| cl_sp_geo_deform_noise | 0..2 (preset-controlled by default) | Manual fine visual roughness. Higher values add more small-scale irregularity. Usually controlled by the main strength setting. |
| cl_sp_geo_deform_preset | 0=off / 1=subtle / 2=uneven / 3=rough / 4=random subtle / 5..100=stronger variation | Main deformation strength. 0 disables the feature. Higher values make the level shape more visibly uneven; changing the value live rebuilds the visible world and refreshes AVFX visual anchors. |
| cl_sp_geo_deform_seed | 0..999999 practical menu range; any integer accepted | Repeatable variation seed. Same map, seed and strength produce the same visible geometry. Changing the seed live rerolls the level look. Collision and server state are not affected. |
| cl_sp_geo_deform_strength | 0..8 wu (preset-controlled by default) | Manual broad displacement amount in world units. Usually controlled by the main strength setting; manual edits are allowed and rebuild the visible world live. Does not affect collision. |
| cl_sp_geo_deform_tilt | 0..5 degrees (preset-controlled by default) | Manual surface tilt amount in degrees. Higher values make surfaces lean more strongly. Usually controlled by the main strength setting. |
| cl_sp_geo_round_edges | 0=off (default) / 1=round vertical wall corners | Adds visual rounding to suitable static wall corners in local single player. Requires geometry deformation to be enabled. Moving platforms, liquids, sky, transparent surfaces and horizontal ledges are skipped. Collision and movement stay original. |
| cl_sp_geo_round_edges_amount | 0..100 percent | Corner rounding amount in percent. 0 hides rounded surfaces even if the feature is enabled; 100 uses the full selected radius. Changing it live rebuilds the visible world. |
| cl_sp_geo_round_edges_angle_threshold | 30..170 degrees (default 30) | Minimum angle sharpness needed for corner rounding. Higher values affect fewer, sharper corners. |
| cl_sp_geo_round_edges_radius | 0..32 wu (default 8) | Requested corner rounding radius in world units before amount scaling. Short edges are limited automatically. |
| cl_sp_geo_round_edges_segments | 1..8 segments | Smoothness of rounded corners. Higher values look smoother but add more geometry. |
| cl_sp_monster_skill_speed | 0=off (default) / 1=apply campaign skill speed | Master toggle for SP campaign skill-based monster speed. When ON, ordinary single-player monsters scale with the game skill cvar using the same DM-training table (skill 0 -> 1.0x, 1 -> 1.5x, 2 -> 3.0x, 3 -> 5.0x). Local single-player only — no effect in deathmatch, coop, demo playback, or while DM-training is active (DM-training uses its own speed system; the campaign path eagerly restores any cached scales when DM-training takes over). Stock baseq2/gamex86_64.dll untouched; the Q2PRO-X game DLL reads this cvar. |
| cl_sp_monster_skill_speed_scale | default 1.0 / range 0.10..3.00 / step 0.05 | Intensity multiplier on top of the SP campaign skill speed table. The effective monster multiplier is 1.0 + (table - 1.0) * scale where table comes from the game skill. Default 1.0 means exactly the P1d table. 0.5 halves the added speed (skill 3 becomes 3.0x instead of 5.0x); 2.0 doubles it. Clamped to 0.10..3.00. Has no effect when the master toggle is off. |
| cl_sp_monster_variant_apply_bosses | 0=skip bosses (default) / 1=apply variants to bosses | Whether to apply variants to boss-class monsters (boss1/boss2/boss3/supertank/jorg/makron/boss5). Default off because bosses are designed to look distinct as-is. Set to 1 for experimentation. |
| cl_sp_monster_variant_asymmetry | default 15 / range 0..100 | Strength of per-monster left/right asymmetric lean in percent (P2M-B). Adds a small Y-axis lean that scales with vertical position (no effect at feet, max at head) and a sign deterministic per monster instance. Subtle by default; values above 50 look obviously crooked. Render-only — no hitbox/collision/AI changes. |
| cl_sp_monster_variant_auto_scale | 1=auto size on (default) / 0=no size variation | Enable automatic per-monster overall size variation within the [scale_min, scale_max] range, with feet kept planted on the floor via real alias-model bounds. Toggles independently from color variation. |
| cl_sp_monster_variant_color | default 30 / range 0..100 | Strength of per-monster color tint variation in percent. 0 disables tint; default 30 applies a subtle ±15% per-channel deviation at default strength=35; values above 60 look stylized and reduce readability. |
| cl_sp_monster_variant_scale_max | default 1.20 / range 0.10..10.00 | Largest monster size as a multiplier of the original alias model. Default 1.20 means up to 20% bigger. Values above 2.0 or below 0.5 are experimental and visually noisy. If max < min the runtime swaps them safely. |
| cl_sp_monster_variant_scale_min | default 0.85 / range 0.10..10.00 | Smallest monster size as a multiplier of the original alias model. Default 0.85 means up to 15% smaller. Values below 0.5 or above 2.0 are experimental and visually noisy. |
| cl_sp_monster_variant_seed | default 0 (= random per map load) / non-zero = reproducible | Variation seed. Same map + seed + settings produce the same set of monster appearances. Value 0 generates a fresh per-map-load random seed so the visual layout reshuffles on every map load. |
| cl_sp_monster_variant_shape | default 25 / range 0..100 | Strength of per-monster body proportion variation in percent (P2M-B). Mildly varies torso / head / leg radial width per monster instance. Local single-player only; render-only — no hitbox/collision/AI/savegame changes. MD2/alias models get full deformation; MD5 skeletal models also get the same post-skinning local-space deformation. Bypasses the GPU lerp / GPU skeleton pipeline ONLY for shape-active monsters; all other entities keep the optimized GPU path. Values above 60 are stylized; extreme values are clamped. |
| cl_sp_monster_variant_strength | default 35 / range 0..100 | Overall strength of variant deviation in percent. 0 disables all variation; 100 uses the full configured min/max scale range and the full color magnitude. Acts as a master multiplier on per-monster random offsets from the default. |
| cl_sp_monster_variants | 0=off (default) / 1=apply variants while in local SP | Master toggle for monster visual variants in local single player. Makes repeated monster instances look like different individuals (overall size and color tint variation). Render-only — no gameplay, hitbox, collision, AI, damage, savegame or pathing changes. Gated to local SP only (deathmatch=0, cl.maxclients<=1, no demo playback). Stock baseq2/gamex86_64.dll untouched. |
| cl_sp_mutate_allow_bosses | 0=keep bosses untouched (default) / 1=bosses are in the pool | Allows boss monsters in the randomizer pool. This can sharply increase difficulty and may affect map progression. |
| cl_sp_mutate_allow_linked_entities | 0=skip connected entities (default, safe) / 1=allow replacement | When enabled, the randomizer may also replace scripted or connected items and monsters. Leave disabled for normal play so map progression stays safe. |
| cl_sp_mutate_debug | 0=off (default) / 1=on (diagnostic, current session only) | Single-player spawn mutator diagnostics: print each per-entity mutation decision to the game log. Session tool for narrowing a map-specific problem. |
| cl_sp_mutate_dm_allow_bosses | 0=no bosses (default) / 1=bosses allowed in training pool | Allows boss monsters in the DM-training monster pool. This is independent from the broader randomizer boss setting. |
| cl_sp_mutate_dm_allow_heavy | 0=light + medium only (default) / 1=heavy monsters allowed | Allows heavy monsters such as gladiator and tank in the DM-training monster pool. |
| cl_sp_mutate_dm_count | default 8 / range 1..32 (clamped to spawn point count) | Desired number of training monsters on a DM map. The final number can be limited by available spawn points. |
| cl_sp_mutate_dm_custom_map | map name (alphanumeric / underscore / subdir-slash); empty = no map | Map name used by the DM-training map picker. Type a DM map name here or through the menu field and run sp_dm_start_training. |
| cl_sp_mutate_dm_min_monster_dist | default 128 / wu | Minimum distance between two live training monsters. Spawn points too close to another live monster are skipped. |
| cl_sp_mutate_dm_min_player_dist | default 384 / wu | Minimum distance between the player and a training-monster spawn point. Closer points are skipped for initial spawn and respawn. |
| cl_sp_mutate_dm_respawn | 1=MP-style respawn loop (default) / 0=no respawn (finite kill set) | Respawns dead training monsters after the configured delay. Respawn tries to use a free point away from the player and other live monsters. |
| cl_sp_mutate_dm_respawn_delay | default 15 / minimum 1 | Seconds between a training monster's death and its respawn. Effective only when respawn is enabled. |
| cl_sp_mutate_dm_respawn_items | 1=respawn items (default) / 0=permanent pickups (SP vanilla) | When SP DM-training is active, weapons / armor / health / ammo / powerups respawn at their original pickup points using vanilla DM-style timing (like in multiplayer). Keys, dropped items and scripted progression items are never respawned. No effect outside cl_sp_mutate_dm_training 1 + local SP. Vanilla DM (deathmatch 1) behavior is unaffected. |
| cl_sp_mutate_dm_score | 0=off (default) / 1=enable scoring round | Enables scoring for DM-map training. Killing monsters gives points, monster damage subtracts points, reaching the target wins the round, and player death ends it as defeat. |
| cl_sp_mutate_dm_score_damage_scale | default 1.0 / 0.0=no damage penalty | Multiplier for score penalty from monster damage. Use 0.0 to disable damage penalty entirely; kills still award points. |
| cl_sp_mutate_dm_score_hud | 1=draw HUD (default) / 0=hidden (use sv sp_mutator_info instead) | Draws the small training score HUD in the top-left corner during a scoring round. It respects scr_alpha automatically. Disable to play without the visible score. |
| cl_sp_mutate_dm_score_hud_x | default 4 / negative = anchor from right edge | X position of the training score HUD in pixels. Negative values anchor from the right edge. |
| cl_sp_mutate_dm_score_hud_y | default 4 / negative = anchor from bottom edge | Y position of the training score HUD in pixels. Negative values anchor from the bottom edge. |
| cl_sp_mutate_dm_score_limit | default 500 / minimum 1 | Score target that ends the training round as victory. Lower values make short rounds; higher values make longer sessions. |
| cl_sp_mutate_dm_training | 0=off (default) / 1=enable DM-map SP training | Master toggle for DM-map training. When enabled in local single player, suitable multiplayer maps are populated with monsters at deathmatch spawn points. Campaign maps are left alone. |
| cl_sp_mutate_item_cats | 31=all (default) / 1=armor / 2=ammo / 4=weapon / 8=powerup / 16=health / combine via bitwise OR | Item category mask for the randomizer: 1 armor, 2 ammo, 4 weapons, 8 powerups, 16 health. Combine values to choose several categories; 31 means all. |
| cl_sp_mutate_item_mode | 0=off / 1=same category (default) / 2=combat set / 3=chaos | Replacement scope for items. Same category keeps item families separate; combat set allows weapons and ammo to mix; chaos can replace any non-key item. |
| cl_sp_mutate_items | 0=off (default) / 1=replace items at map load in SP | Single-player item randomizer. At map load with deathmatch 0, replaces item pickups with random alternatives within the selected mode/category rules. Keys are never replaced. Scripted or connected items are protected by default. Seed 0 gives a fresh layout every map load; non-zero seed repeats the same layout. No effect in multiplayer or on remote servers. |
| cl_sp_mutate_lava_to_water | 0=off (default) / 1=lava becomes water | SP liquid swap: replace LAVA with WATER in local single player. The swap is real: former lava deals no lava damage, uses water physics/watertype, renders with the water material (enhanced water shader when cl_avfx 1), and contacts use water effects. Off by default. Local single-player only — no effect in deathmatch, coop, demo, or remote multiplayer. If both swap toggles are 1, real BSP water still becomes lava and real BSP lava becomes water independently. Game DLL + client + renderer read this cvar; stock baseq2/gamex86_64.dll is untouched. |
| cl_sp_mutate_liquid_swap_debug | 0=off (default) / 1=print swap diagnostics (diagnostic, current session only) | SP liquid swap: print one diagnostic line when a liquid-swap cvar changes. For testing only; leave off in normal play. See sv sp_mutator_info for the full liquid-swap status block. |
| cl_sp_mutate_liquid_swap_visuals | 1=swap visuals (default) / 0=keep original texture | SP liquid swap: master for the VISUAL material swap. When ON (default), a swapped liquid renders with the effective material (former water shows the lava texture; former lava shows water). When OFF, the swap still changes damage/physics/contents but the surface keeps its original texture. The full enhanced visual requires cl_avfx 1; with cl_avfx 0 the surface still shows the swapped texture (slightly less bright). Local single-player only. |
| cl_sp_mutate_monster_mode | 0=off / 1=same strength (default) / 2=nearby strength / 3=chaos | Replacement scope for monsters. Same strength keeps weak/medium/heavy monsters within their own group; nearby strength allows neighboring groups; chaos can use any non-boss monster unless bosses are enabled separately. |
| cl_sp_mutate_monsters | 0=off (default) / 1=replace monsters at map load in SP | Single-player monster randomizer. At map load with deathmatch 0, replaces monster classes with random alternatives within the selected strength rules. Bosses and scripted monsters are protected unless explicitly allowed. No effect in multiplayer. |
| cl_sp_mutate_seed | 0=random every map load (default) / 1..9999=fixed reproducible layout | Seed for item and monster randomization. 0 gives a fresh random layout every map load. 1..9999 repeats the same layout for testing or sharing. |
| cl_sp_mutate_water_to_lava | 0=off (default) / 1=water becomes lava | SP liquid swap: replace WATER with LAVA in local single player. The swap is real, not cosmetic: water volumes deal lava damage, use lava physics/watertype, render with the lava material, and weapon/rain/snow contacts use lava effects. Off by default. Local single-player only — no effect in deathmatch, coop, demo playback, or remote multiplayer. If water_to_lava and lava_to_water are both 1, each direction applies independently to the original BSP liquid class: real water becomes lava and real lava becomes water. The renderer draws former-water surfaces with a real lava texture (the map's own lava texture if present, otherwise a canonical Q2 lava texture); the full enhanced look needs cl_avfx 1. Game DLL + client + renderer read this cvar; stock baseq2/gamex86_64.dll is untouched. |
Startup intro and menu
Variables in this section: 28.
| Variable | Accepted values | Description |
|---|---|---|
| cl_console_font_mode | 0=legacy conchars / 1=San Francisco UI Text (default) | Q2PRO-X console typography. 0 = legacy conchars (whatever con_font selects, default "conchars"). 1 = San Francisco UI Text Regular, rendered through a fixed 8-px cell into the existing console grid (default). Console-only — game menu (cl_menu_font_mode) and browsers/HUD use their own font cvars. This keeps the cell at CONCHAR_WIDTH / CONCHAR_HEIGHT so column count / scrollback / prompt cursor math don't change; the SF atlas is rendered at 16-px source then bilinear-downsampled to the legacy cell size, giving smoother glyph shapes than 8x8 conchars. Cyrillic glyphs come from the same atlas (CP1251 byte indices). If the SF atlas fails to register, the per-byte path silently falls back to legacy R_DrawChar so legacy high-byte content stays readable. |
| cl_console_utf8_ru | -1=auto (default — on for Russian Windows) / 0=off / English / 1=on / Russian | Q2PRO-X Russian display-localization baseline (tri-state). -1 (auto, default) turns ON automatically when Windows UI language is Russian and OFF otherwise. 0 forces English / legacy behavior regardless of OS locale. 1 forces Russian display. When effectively on: the console and menu draw paths dispatch per-byte — ASCII keeps rendering through stock conchars 1:1 (classic look preserved) while UTF-8 Cyrillic / CP1251-mappable codepoints are routed through the supplementary q2prox_console_font atlas, so Russian console output and Russian device / status text become readable without sacrificing ASCII-log readability; Q2PRO-X menu bottom status/help lines prefer Russian translations when present; console inline /cvarname help prefers Russian desc_ru / values_ru metadata when the entry carries a translation. Display-only — this does NOT enable Russian console input, Unicode editing, or any command parser change. Invalid high-byte legacy content is not force-decoded. |
| 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_fullscreen | 0=window (default) / 1=fullscreen | Open the Cvar Browser over the whole screen instead of the framed window. The [F]/[W] button in the browser header toggles it. |
| 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. |
| 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". |
| 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_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_menu_alpha | 0..1 | classic menu background alpha |
| cl_menu_font_mode | 0=legacy conchars / 1=Jost Medieval (default) | Q2PRO-X game menu typography. 0 = legacy stock conchars 8x8 atlas (chunky pixel-art look used by classic Q2). 1 = Jost Medieval Bold proportional smooth font, sourced from the bundled TTF and rendered via a separate menu text path (default). The Jost path is menu-only — console, HUD, server browser, demo browser, and cvar browser keep their own typography regardless of this setting. UI_ALTCOLOR / focused-row highlight, slider bar pieces, cursor, and other monospaced control glyphs always come from the legacy atlas so layout / hitbox math stays consistent. If the Jost atlas / metrics fail to load, the renderer silently falls back to legacy. Live — toggle takes effect on the next menu draw with no restart needed. |
| cl_menu_modern_autoscale | 0=off / 1=fit modern menu when ui_scale is auto (default) | Responsive autoscale for the modern game menu renderer. Active only when cl_menu_visual_style = 1 (modern) AND ui_scale = 0 (auto). Picks the largest scale from {4x, 3x, 2x, 1.5x, 1x} that fits the active menu into the current content rect (≤82% wide, ≤78% tall — the headroom leaves room for the bottom menu hint band so the panel rim doesn't have to fight it), so menus do not crop on small resolutions or look tiny on 4K, and Russian labels do not force manual ui_scale edits. Explicit ui_scale > 0 always wins — autoscale never overrides a manual scale. Capped at two layout passes per menu init to avoid relayout loops. |
| cl_menu_utf8_ru | -1=inherit global (default) / 0=English / 1=Russian | Q2PRO-X game menu Russian localization override (tri-state). -1 (default) inherits cl_console_utf8_ru / global Russian display-localization. 0 forces menu English regardless of global state. 1 forces menu Russian regardless of global state. Affects menu titles, item labels, value labels, bottom hints/status, and keybind capture prompts only. Live — switching while a menu is open updates labels without restart. Does NOT enable Russian console input, change command parsing, file paths, or browser overlay language gates. |
| cl_menu_visual_style | 0=legacy renderer / 1=modern Q2PRO-X renderer (default) | Visual renderer for script-based game menus. 0 = legacy keeps the classic Q2/Q2PRO text-and-bitmap renderer. 1 = modern (default) draws the same menu graph through the Q2PRO-X modern chrome: dark translucent panels, focus strip with left accent rail, modern slider track + handle, focused field box, soft shadows, Q2PRO-X wordmark/logo on the top-level main menu, and responsive layout helpers. Live switch — does not change menu mode (cl_q2prox_menu_mode), does not reload menu files, does not touch cl_menu_font_mode (typography). Legacy renderer remains fully behavior-compatible if you flip back. This controls ONLY the visual renderer/chrome, NOT the menu content path: in Q2PRO-X 1.6 Beta 5 the normal content path is always guided/standalone, classic content appears only as an emergency fallback if q2pro-x.menu2 is unavailable, and changing the visual style never re-enables classic content. |
| cl_q2prox_menu_badges | 0=hide Q2PRO-X badges (default) / 1=show green (X) on --q2prox rows | Show small green (X) markers near guided / standalone Q2PRO-X menu rows that the .menu script tagged --q2prox. Off by default (per TZ 2026-05-14 — when most rows are Q2PRO-X-specific, marking every one of them as such turns into visual noise rather than helpful signal). 1 = badges are drawn on every --q2prox row in the guided menu mode. The --q2prox markup itself is metadata and stays in the .menu files regardless; the cvar only gates the badge rendering. Live switch — toggles without menu/client restart. The emergency classic fallback never shows badges (gated by uis.guided_mode_active). Does not affect hitbox / item->rect, sliders, value columns, keyboard navigation, mouse selection, or panel layout aside from a tighter right-edge padding when the optional widening for badge clearance is unneeded. |
| cl_q2prox_menu_bottom_hint | 1=show the bottom hint band (default) / 0=hide it | Show the bottom menu hint band for the currently selected row. Default ON. Turning it off hides both the text and its background and releases the reserved footer height immediately; floating mouse-hover tooltips remain independently controlled by cl_q2prox_menu_hover_hints. Live, saved in the global Q2PRO-X config. |
| cl_q2prox_menu_global_badges | 0=hide (G) badges (default) / 1=show (G) on rows bound to a globally-saved cvar (static flag OR active migration candidate) | Show small (G) markers near guided / standalone Q2PRO-X menu rows whose bound cvar is saved into the global Q2PRO-X config (baseq2/q2pro-x/q2pro-x.cfg) and shared across mods. Off by default. Since config schema 1.52 eligibility has exactly one source: the cvar carries CVAR_Q2PROXCFG_GLOBAL, either from its own registration or from the mandatory ownership registry that stamps the derived scope after the global target has migrated. The badge therefore always reflects the ACTUAL current save scope. Rows with no bound cvar (actions, submenus, separators, labels) never receive this badge. If a cvar carries both CVAR_Q2PROXCFG_GLOBAL and CVAR_Q2PROXCFG_LOCAL, the row is eligible for both (G) and (M) and they coexist. Coexists with cl_q2prox_menu_badges (X) and cl_q2prox_menu_mod_badges (M) in the recommended order (X) (G) (M). Live switch - toggles without menu/client restart. The emergency classic fallback never shows badges (gated by uis.guided_mode_active). Does not affect hitbox, sliders, value columns, navigation, or layout aside from the modern panel right-edge clearance which automatically accounts for whichever badge types are enabled and eligible. |
| cl_q2prox_menu_hover_hint_alpha | default 0.8 / range 0.0..1.0 (background only, not text) | Background opacity of the floating hover tooltip window (cl_q2prox_menu_hover_hints): 1 = fully opaque background, 0 = fully transparent background (the tooltip text stays visible either way). The 1px frame fades with it. Does not affect the text or the bottom hint band. Default 0.8. Range 0.0..1.0 (clamped). Independent from cl_menu_alpha. Live, saved in the global Q2PRO-X config. |
| cl_q2prox_menu_hover_hint_delay | default 1.5 / range 0.1..2.0 seconds | Seconds the mouse cursor must rest on a guided-menu row's label/name text area before the first floating hover tooltip (cl_q2prox_menu_hover_hints) appears. Default 1.5. Range 0.1..2.0 (clamped). Once a tooltip is already visible, moving to another row's label updates it instantly; after leaving all labels for more than the short grace window, the delay applies again. Does not affect the bottom hint band or keyboard selection. Live, saved in the global Q2PRO-X config. |
| cl_q2prox_menu_hover_hints | 1=show hover tooltips (default) / 0=disable | Show a floating tooltip near the mouse cursor duplicating the bottom hint band's text for the guided-menu row whose visible label the cursor rests on. ON by default. Mouse-hover only: it never changes keyboard/controller focus, the selected/highlighted row, or the bottom hint band. Appears after cl_q2prox_menu_hover_hint_delay seconds, measured from when the cursor enters the row's label/name text area (not the value/slider/bind column). Works in both legacy and modern menu visual styles. Live, saved in the global Q2PRO-X config. |
| cl_q2prox_menu_logo_light | 0=ordinary static menu logo (default) / 1=persistent animated logo light and spotlights | Persistent Q2PRO-X logo-light master for the top-level Guided menu in its modern visual style. Default OFF. When enabled, the accepted smooth logo brightness/bloom pulse, downward light field and matching menu shadows continue after the one-shot startup Intro finishes; if no Intro runs, they begin whenever the exact top-level Guided menu with the modern visual style active is visible. This does not enable fireworks, ships, meteors, comets, music or lightning. Live; no restart required. Stored in the global Q2PRO-X config. |
| cl_q2prox_menu_logo_lightning | 0=no persistent logo lightning (default) / 1=persistent animated electrical discharges | Persistent Q2PRO-X logo-lightning master for the top-level Guided menu in its modern visual style. Default OFF. When enabled, the accepted animated electrical tracers and branching discharges around the wordmark continue after the startup Intro; if no Intro runs, they begin whenever the exact top-level Guided menu with the modern visual style active is visible. Independent of cl_q2prox_menu_logo_light and does not enable any other Intro scene element or audio. Live; no restart required. Stored in the global Q2PRO-X config. |
| cl_q2prox_menu_mod_badges | 0=hide (M) badges (default) / 1=show (M) on rows bound to a CVAR_Q2PROXCFG_LOCAL cvar | Show small (M) markers near guided / standalone Q2PRO-X menu rows whose bound cvar has the CVAR_Q2PROXCFG_LOCAL flag, i.e. is saved into the current mod-local Q2PRO-X config (<gamedir>/q2pro-x/q2pro-x.cfg). Off by default (TZ 2026-05-16). Eligibility is derived automatically from the bound cvar's flags at draw time — no manual menu markup needed and no name-prefix heuristics. Rows with no bound cvar (actions, submenus, separators, labels) never receive this badge. If a cvar carries BOTH CVAR_Q2PROXCFG_GLOBAL and CVAR_Q2PROXCFG_LOCAL, the row is eligible for both (G) and (M) and they coexist. Coexists with cl_q2prox_menu_badges (X) and cl_q2prox_menu_global_badges (G) in the recommended order (X) (G) (M). Live switch — toggles without menu/client restart. The emergency classic fallback never shows badges (gated by uis.guided_mode_active). Does not affect hitbox, sliders, value columns, navigation, or layout aside from the modern panel right-edge clearance which automatically accounts for whichever badge types are enabled and eligible. |
| cl_q2prox_menu_mode | deprecated — Guided is always enforced; 0 is ignored and migrated to 1 (classic = emergency fallback only) | DEPRECATED legacy compatibility cvar. Q2PRO-X 1.6 Beta 5 FORCES guided/standalone menu mode: the loader always loads ONLY baseq2/q2pro-x/q2pro-x.menu2 (the Q2PRO-X-native menu graph) and IGNORES this cvar's value — an archived 0 (classic) from an old config no longer selects the classic menu. Any stale non-1 value is normalized to 1 at startup with a one-line console message, so rewritten configs stop carrying it. The classic files (q2pro.menu + baseq2/q2pro-x/*.menu overlays + inject) remain on disk only as an AUTOMATIC EMERGENCY fallback if q2pro-x.menu2 is missing/unreadable — never as a user-selectable mode. The -q2proxmenu2 launch flag is accepted as a harmless no-op (guided is already the default). |
| cl_q2prox_menu_profile | full=complete menu (default) / multiplayer=shorter multiplayer-focused menu | Selects which standalone Q2PRO-X menu graph the loader parses at startup / menu reload. "full" (default) keeps the complete Q2PRO-X menu (baseq2/q2pro-x/q2pro-x.menu2). "multiplayer" loads a shorter multiplayer-focused root menu (baseq2/q2pro-x/q2pro-x-mp.menu2) that surfaces server join/setup, prediction, item timers, visibility, player setup, demos, sound/video and the full Config screen. If the multiplayer file is missing or unreadable the loader warns once and falls back to the full guided menu, then to the emergency classic menu only if the full guided file is also unavailable. Both profiles stay in guided/standalone mode and keep the full Config menu, so you can always switch back. Any unrecognized value is treated as "full". Applies immediately — the standalone menu graph reloads automatically, no vid_restart / restart needed. Saved to the global Q2PRO-X config, shared across all mods. |
| cl_q2prox_modscan | 0=no scan (Mods menu shows only baseq2) / 1=scan mod folders (default) | Scan first-level mod folders at startup for a Quake II game DLL and cache the result, feeding the guided "Mods..." menu. For each folder it prefers a native 64-bit game DLL (gamex86_64.dll) and otherwise accepts a legacy 32-bit gamex86.dll, which the menu marks (bridge) since it runs through the Win64->Win32 bridge. The PE machine word is read off disk only (never LoadLibrary, never the bridge helper) and results are cached in baseq2/q2pro-x/mods_cache.dat with a size+mtime fast path so repeated startups don't rehash unchanged DLLs. 1 = scan on startup / when the Mods menu opens (default). 0 = no automatic scanning; the Mods menu then shows only baseq2 (local). Diagnostics: modscan_info, modscan_refresh. Archived in the global Q2PRO-X config. |
| cl_q2prox_startup_intro | 0=no startup intro / 1=one-shot intro on eligible cold launch (default) | Permit the separate Q2PRO-X FLAC intro to play once on an eligible cold idle process launch into the menu/console. Default ON. It is a startup event, not ordinary game music: ogg_enable and ogg_volume do not gate or attenuate it; the normal master sound/backend gain still applies. Any explicit direct map/server/demo/cinematic startup action suppresses decoder work before playback. Beginning any map load stops and consumes an active intro for the rest of the process. Turning this OFF while it plays stops it immediately; turning it ON arms only the next eligible full launch. Never loops. |
| cl_q2prox_startup_intro_trace | default 0 / 0=off, 1=trace first 120 successful presents (diagnostic, current session only) | Developer-only: record named stage hashes (intro composite, restore, menu, presented buffer) for the first 120 successful presents; report via startup_intro_trace_info. Session-only. 0=off; zero cost at 0. |
| cl_q2prox_startup_intro_trace_red | default 0 / 0=off, 1=skip the restore (controlled RED) (diagnostic, current session only) | Developer-only: deliberately SKIP the intro compositor's GL state restore so the trace must catch the resulting corrupted/black frame (controlled RED). Session-only. 0=off; zero cost at 0. |
Complete client command reference
Internal commands are included for reference, not as a recommendation to execute them.
| Command | Syntax | Description |
|---|---|---|
| +attack | +attack | Held action for key bindings: fires the weapon while the key is held. With cl_instantpacket on, the press is sent to the server at once. |
| +back | +back | Held action for key bindings: moves backward while the key is held (with +klook held it tilts the view down instead). |
| +demo_seek_back | +demo_seek_back | Held action for key bindings: during demo playback jumps back by cl_demoplayer_overlay_seek_step_sec seconds and repeats every second while held; with Ctrl and an active playlist goes to the previous item. Does nothing outside a demo. |
| +demo_seek_forward | +demo_seek_forward | Held action for key bindings: during demo playback jumps forward by cl_demoplayer_overlay_seek_step_sec seconds and repeats every second while held; with Ctrl and an active playlist goes to the next item. Does nothing outside a demo. |
| +dropw | +dropw | Held modifier for key bindings: while held, a "use <weapon>" command drops that weapon instead, together with its ammo (the Blaster has none). |
| +forward | +forward | Held action for key bindings: moves forward while the key is held (with +klook held it tilts the view up instead). |
| +it_mod | +it_mod | Held modifier for key bindings: while held, it_start cancels the item's timer instead of starting it. |
| +klook | +klook | Held action for key bindings: keyboard look. While held, the forward and back keys tilt the view up and down instead of moving. |
| +left | +left | Held action for key bindings: turns left while the key is held (strafes left instead while +strafe is held). |
| +lookdown | +lookdown | Held action for key bindings: tilts the view down at cl_pitchspeed while the key is held. |
| +lookup | +lookup | Held action for key bindings: tilts the view up at cl_pitchspeed while the key is held. |
| +mlook | +mlook | Held action for key bindings: mouse look while held. On release, if freelook is off and lookspring is on, the view recenters. |
| +movedown | +movedown | Held action for key bindings: crouches, or swims down in water, while the key is held. |
| +moveleft | +moveleft | Held action for key bindings: strafes left while the key is held. |
| +moveright | +moveright | Held action for key bindings: strafes right while the key is held. |
| +moveup | +moveup | Held action for key bindings: jumps, or swims up in water, while the key is held. |
| +right | +right | Held action for key bindings: turns right while the key is held (strafes right instead while +strafe is held). |
| +speed | +speed | Held action for key bindings: switches between running and walking while held (the opposite of the cl_run setting); also speeds up keyboard turning. |
| +strafe | +strafe | Held action for key bindings: while held, the turn keys and sideways mouse movement strafe instead of turning. |
| +use | +use | Held action for key bindings: holds the game's use button while the key is held. With cl_instantpacket on, the press is sent to the server at once. |
| +voiceptt | +voiceptt | Held action for key bindings: push-to-talk. Opens the microphone while held; works only when connected to voice chat. |
| +zoom | +zoom | Held action for key bindings: zooms in to cl_zoom_fov while held (never wider than your normal FOV). With cl_zoom_walk 1 it also holds +speed while zoomed. |
| -attack | -attack | Release half of +attack: stops firing. |
| -back | -back | Release half of +back: stops moving backward. |
| -demo_seek_back | -demo_seek_back | Release half of +demo_seek_back: stops the repeated backward seek. |
| -demo_seek_forward | -demo_seek_forward | Release half of +demo_seek_forward: stops the repeated forward seek. |
| -dropw | -dropw | Release half of +dropw: "use <weapon>" selects weapons normally again. |
| -forward | -forward | Release half of +forward: stops moving forward. |
| -it_mod | -it_mod | Release half of +it_mod: it_start starts timers again. |
| -klook | -klook | Release half of +klook: forward and back keys move again. |
| -left | -left | Release half of +left: stops turning left. |
| -lookdown | -lookdown | Release half of +lookdown: stops tilting the view down. |
| -lookup | -lookup | Release half of +lookup: stops tilting the view up. |
| -mlook | -mlook | Release half of +mlook: ends mouse look; if freelook is off and lookspring is on, the view recenters. |
| -movedown | -movedown | Release half of +movedown: stops crouching or swimming down. |
| -moveleft | -moveleft | Release half of +moveleft: stops strafing left. |
| -moveright | -moveright | Release half of +moveright: stops strafing right. |
| -moveup | -moveup | Release half of +moveup: stops jumping or swimming up. |
| -right | -right | Release half of +right: stops turning right. |
| -speed | -speed | Release half of +speed: returns to the movement speed set by cl_run. |
| -strafe | -strafe | Release half of +strafe: turn keys and the mouse turn again. |
| -use | -use | Release half of +use: releases the game's use button. |
| -voiceptt | -voiceptt | Release half of +voiceptt: mutes the microphone again. |
| -zoom | -zoom | Release half of +zoom: returns to your normal FOV and releases the +speed that zoom held. |
| _echo | _echo [-e] [-n] [-c color] [-l level] [text] | Extended echo for scripts: prints text to the console with options for backslash escapes (-e), no trailing newline (-n), color (-c) and message level (-l). |
| _ui_layout_info | _ui_layout_info | Developer diagnostic: prints the active menu, screen size and menu scale; changes nothing. |
| _ui_reload_menu_profile | _ui_reload_menu_profile | Internal command: rebuilds the menus for the current cl_q2prox_menu_profile. Queued automatically when that setting changes. |
| _ui_setcursor | _ui_setcursor <index> | Internal menu command: moves the cursor of the open menu to the item with the given number. |
| aadump | aadump | Prints the current status bar and scoreboard as plain text into the console. Works only while in a level. |
| aashot | aashot [name] | Saves the status bar and scoreboard as a text file in scoreshots/: under the given name, or the next free quakeNNN.txt. Works only while in a level. |
| addban | addban <address[/mask]> [comment] | Adds an address or subnet to the local server's ban list so players from it cannot connect. The optional comment is shown by listbans. |
| addblackhole | addblackhole <address[/mask]> [comment] | Adds an address or subnet to the blackhole list: the local server silently ignores its out-of-game packets such as connect, status and rcon. |
| addcvarban | addcvarban <cvar> <match> [log / print / stuff / kick] [comment] | Makes the local server check a client cvar: when a player's value matches, the action runs (log by default; or print, stuff, kick). The comment is an optional message. |
| addfiltercmd | addfiltercmd <command> [ignore / log / print / stuff / kick] [comment] | Blocks a client command on the local server: when a player sends it, the chosen action runs instead (ignore by default; or log, print, stuff, kick). |
| addgtvban | addgtvban <address[/mask]> [comment] | Adds an address or subnet to the GTV deny list: those hosts cannot connect to the server's MVD/GTV stream. |
| addgtvhost | addgtvhost <address[/mask]> [comment] | Adds an address or subnet to the GTV allow list: those hosts connect to the server's MVD/GTV stream without the password. |
| addlrconcmd | addlrconcmd <command> | Allows a command for limited rcon users (sv_lrcon_password): any rcon line that starts with this text is accepted. |
| addstuffcmd | addstuffcmd <connect / begin> <command> | Adds a console command that the local server sends to every client when it connects (connect list) or enters the game (begin list). |
| adduserinfoban | adduserinfoban <cvar> <match> [log / print / stuff / kick] [comment] | Makes the local server check a player's userinfo key: when its value matches, the action runs (log by default; or print, stuff, kick). The comment is an optional message. |
| alias | alias [name [command]] | With no arguments prints every user alias. With a name and a command line, binds that name to the command line so it can be used as a command. |
| autosave | autosave | Saves the single-player game into the save1 slot, replacing what was there. Refused in deathmatch, while dead, or when no game is running. |
| avfx_blackhole_info | avfx_blackhole_info | Developer diagnostic: prints the Black Hole effect state and its GPU timings; not for players. |
| avfx_conform_info | avfx_conform_info | Developer diagnostic: prints counters showing how AVFX snow follows the tessellated surface relief. |
| avfx_contact_fixture | avfx_contact_fixture [case / all] [keep] | Developer test fixture for automated checks of Player Contact Effects; not for players. |
| avfx_contact_info | avfx_contact_info | Developer diagnostic: prints the internal queues, counters and reset history of Player Contact Effects. |
| avfx_contact_reset | avfx_contact_reset | Clears all current Player Contact Effects: blood drops, stains, decals, wounds, vapor and debris. Settings are not changed. |
| avfx_coverings_info | avfx_coverings_info | Developer diagnostic: prints the internal state of the AVFX surface covering layers. |
| avfx_flashlight_toggle | avfx_flashlight_toggle | Turns the player flashlight (cl_avfx_flashlight) on or off. Handy to bind to a key. |
| avfx_freeze_trace_mark | avfx_freeze_trace_mark <text> | Developer trace marker: writes a MARK line with the text into the AVFX freeze trace; works only while cl_avfx_freeze_trace is on. |
| avfx_overlay_texture_fixture | avfx_overlay_texture_fixture | Developer test fixture for automated checks of AVFX overlay texture binding; not for players. |
| avfx_preset_generator_fixture | avfx_preset_generator_fixture | Developer test fixture for automated checks of the AVFX Preset Generator; not for players. |
| avfx_preset_generator_hash | avfx_preset_generator_hash | Developer marker: prints a hash of the effective AVFX Preset Generator settings. |
| avfx_preset_generator_roundtrip_begin | avfx_preset_generator_roundtrip_begin [seed / current] | Developer round-trip probe, first half: generates settings, writes them to a test file and queues it for loading. Not for players. |
| avfx_preset_generator_roundtrip_end | avfx_preset_generator_roundtrip_end | Developer round-trip probe, second half: checks that the loaded settings match the generated ones and prints PASS or FAIL. |
| avfx_puddle_conform_info | avfx_puddle_conform_info | Developer diagnostic: prints counters and timings of how AVFX puddles follow the tessellated surface relief. |
| avfx_rain_flow_reset | avfx_rain_flow_reset | Clears the current rain runoff streams and the downstream puddles they made. Settings are not changed. |
| avfx_reset | avfx_reset | Clears all live AVFX effect state (ripples, splashes, puddles, footprints, stains, meteors, comets, ships, grass, sky caches) and stops effect sounds. Settings stay; AVFX preset files run it on load. |
| avfx_snake_water_fixture | avfx_snake_water_fixture [x y z] | Developer test fixture for automated checks of snake blood in map water; not for players. |
| avfx_state_dump | avfx_state_dump <tag> | Developer dump: writes AVFX settings and renderer state to q2pro-x/diag/avfx_state_dump_<tag>_<time>.txt. |
| avfx_surface_drawing_clear_all_maps | avfx_surface_drawing_clear_all_maps [confirm] | Without confirm, shows how many maps, layers and strokes would be erased. With confirm, empties the Surface Drawing data for all maps; materials and preset slots stay, and one undo is offered. |
| avfx_surface_drawing_clear_all_maps_undo | avfx_surface_drawing_clear_all_maps_undo | Restores the Surface Drawing data erased by avfx_surface_drawing_clear_all_maps. Available once, until the data changes again. |
| avfx_surface_drawing_clear_map | avfx_surface_drawing_clear_map | Removes all Surface Drawing strokes and layers on the current map. Undo in the editor brings them back. |
| avfx_surface_drawing_editor | avfx_surface_drawing_editor | Opens or closes the Surface Drawing editor for painting on the walls and floors of the current map. |
| avfx_surface_drawing_fixture | avfx_surface_drawing_fixture [case] | Developer test fixture for automated checks of Surface Drawing; not for players. |
| avfx_surface_drawing_info | avfx_surface_drawing_info | Prints Surface Drawing status: whether it is on, the saved data size (maps, layers, strokes), whether an all-map undo is available, and the editor panel size. |
| avfx_surface_drawing_panel_reset | avfx_surface_drawing_panel_reset | Returns the Surface Drawing editor panel to its default position, size, scale and opacity. Drawings are not touched. |
| avfx_surface_drawing_save | avfx_surface_drawing_save | Saves the current map's drawings to disk now. Reports when no document is open or there is nothing new to save. |
| avfx_surface_foliage_info | avfx_surface_foliage_info | Prints AVFX surface foliage status for each kind: whether it is on, how many plants are placed, builds and failures. |
| avfx_surface_grass_info | avfx_surface_grass_info | Prints AVFX surface objects status: whether grass is active and why not, its quality and lighting switches, plus the foliage report. |
| avfx_surface_materials_info | avfx_surface_materials_info | Prints AVFX surface materials status: which material families are requested and loaded, missing asset files, the failure reason and readiness. |
| avfx_surface_mirror_bench | avfx_surface_mirror_bench | Developer benchmark: times the mirror surface modes at the current view over a series of frames; turns gl_gpu_timers on. Needs mirrors active in a running map. |
| avfx_surface_mirror_info | avfx_surface_mirror_info | Prints AVFX mirror surfaces status: whether mirrors are set up and active, floors and walls, eligible surfaces, quality and distance. |
| avfx_surface_volumes_clear_all_maps | avfx_surface_volumes_clear_all_maps [confirm] | Without confirm, shows how many maps and areas would be erased. With confirm, empties the steam and smoke data for all maps; the shape library and preset slots stay, and one undo is offered. |
| avfx_surface_volumes_clear_all_maps_undo | avfx_surface_volumes_clear_all_maps_undo | Restores the steam and smoke data erased by avfx_surface_volumes_clear_all_maps. Available once, until the data changes again. |
| avfx_surface_volumes_clear_map | avfx_surface_volumes_clear_map | Removes all steam and smoke areas on the current map; undo can bring them back. Says so if the map is already empty. |
| avfx_surface_volumes_editor | avfx_surface_volumes_editor | Opens or closes the Surface Volumes editor for placing steam and smoke areas on the current map. |
| avfx_surface_volumes_fixture | avfx_surface_volumes_fixture [case] | Developer test fixture for automated checks of Surface Volumes; not for players. |
| avfx_surface_volumes_info | avfx_surface_volumes_info [areas] | Prints Surface Volumes status: switches, quality, the current map, saved data size and renderer counts. A number adds details for that many areas (up to 64). |
| avfx_surface_volumes_revert | avfx_surface_volumes_revert | Discards unsaved steam and smoke edits on this map and reloads the last save. |
| avfx_surface_volumes_save | avfx_surface_volumes_save | Saves this map's steam and smoke areas; they come back the next time you enter the map. The save is postponed while shapes are still being processed or config writing is blocked. |
| bind | bind <key> [command] | With a key only, prints what that key currently does. With a key and a command, makes the key run that command. |
| bindlist | bindlist | Prints every key that currently has a command bound to it. |
| bsp_tess_info | bsp_tess_info [verify] | Prints the state of map surface tessellation: requested or not, active or why not, hardware limits, quality and distance LOD. With verify it adds pass/fail self-checks. |
| bsplist | bsplist [verbose] | Lists the map files (BSP) held in memory with their size and reference count, plus the total. Add any argument for detailed statistics of each map. |
| centerview | centerview | Instantly returns your view pitch to level (looking straight ahead). Usually bound to a key. |
| checkcvarbans | checkcvarbans | Asks every player in the game to report again the cvars on the server's cvar-ban list, so the bans' actions apply to them now. Works only while a local server is running and some cvar bans exist. |
| cl_avfx_blackhole_capture_fixture | cl_avfx_blackhole_capture_fixture | Developer test fixture for automated checks of black hole object capture; not for players. |
| cl_avfx_blackhole_impact_capture_fixture | cl_avfx_blackhole_impact_capture_fixture | Developer test fixture for automated checks of black hole capture of impact meteors; not for players. |
| cl_avfx_contact_defaults | cl_avfx_contact_defaults | Resets all Player Contact Effects settings to their defaults and clears the contact effects currently shown. Ordinary AVFX weather, sky and water settings are not touched. |
| cl_avfx_contact_preset_load_factory | cl_avfx_contact_preset_load_factory <balanced / cinematic_extra / bloody_world> | Applies one of the shipped Player Contact Effects presets: balanced, cinematic_extra or bloody_world. Without an argument prints the list. |
| cl_avfx_contact_preset_load_global_custom | cl_avfx_contact_preset_load_global_custom <1..12> | Loads your saved Player Contact Effects preset from slot 1-12; settings the slot lacks get their defaults. An empty slot or one holding only a name changes nothing. |
| cl_avfx_contact_preset_save_global_custom | cl_avfx_contact_preset_save_global_custom <1..12> | Saves the current Player Contact Effects settings into slot 1-12 (file q2pro-x/contact_fx/cf_global_user_N.cfg). From the console an existing slot is overwritten without asking. |
| cl_avfx_contact_preset_schema_dump | cl_avfx_contact_preset_schema_dump [offset] [count] | Developer schema dump: prints every Player Contact Effects setting with its default, current value and range, optionally from an offset with a limit. |
| cl_avfx_contact_preset_set_global_custom_name | cl_avfx_contact_preset_set_global_custom_name <1..12> "name" | Sets the name of Player Contact Effects slot 1-12 and writes it into the slot file; for an empty slot a name-only file is created. Stored values are not changed. |
| cl_avfx_defaults | cl_avfx_defaults | Resets every AVFX setting (including single-player AVFX and contact effects) to defaults, keeps custom preset names, switches authored surface volumes and drawings to an empty set and restarts running effects. |
| cl_avfx_defaults_ash_dust_mist | cl_avfx_defaults_ash_dust_mist | Resets the Ash/Dust/Mist variety settings to defaults: ash glow lights and embers, dust and mist shapes, size variation and colours. The weather preset, density and size stay as they are. |
| cl_avfx_defaults_audio | cl_avfx_defaults_audio | Resets all AVFX sound settings to defaults: master and volume, wind, rain, snow, water, lava steam, thunder, impacts, meteors, footstep sounds, spaceship and black hole sounds, wildlife hiss and flies. |
| cl_avfx_defaults_blackhole | cl_avfx_defaults_blackhole | Resets every black hole setting to defaults, including its on/off switch, position, disk, streams, colours, quality, consumption, sounds and object capture. |
| cl_avfx_defaults_blackhole_capture | cl_avfx_defaults_blackhole_capture | Resets the black hole object-capture settings to defaults: which objects it pulls in (meteors, comets, spaceships, impact meteors), capture radius, speed, spiral and dissolve. |
| cl_avfx_defaults_blackhole_colors | cl_avfx_defaults_blackhole_colors | Resets the black hole colours and glow to defaults: inner, outer, stream, photon ring, jet and shadow colours, brightness, bloom, god rays and cloud occlusion. |
| cl_avfx_defaults_blackhole_consumption | cl_avfx_defaults_blackhole_consumption | Resets the black hole consumption settings to defaults: on/off, intensity, reach, quality, and whether it consumes celestial bodies and their reflections in mirrors, water and puddles. |
| cl_avfx_defaults_blackhole_consumption_audio | cl_avfx_defaults_blackhole_consumption_audio | Resets the black hole consumption sound settings to defaults: the sound and its volume and focus, and the event sounds and their volume. |
| cl_avfx_defaults_blackhole_consumption_earth | cl_avfx_defaults_blackhole_consumption_earth | Resets the black hole's pull on Earth matter to defaults: its on/off switch and strength. |
| cl_avfx_defaults_blackhole_consumption_moon | cl_avfx_defaults_blackhole_consumption_moon | Resets the black hole's Moon dust stream to defaults: on/off, strength, stream density, width, speed and turbulence. |
| cl_avfx_defaults_blackhole_consumption_sun | cl_avfx_defaults_blackhole_consumption_sun | Resets the black hole's pull on Sun plasma to defaults: its on/off switch and strength. |
| cl_avfx_defaults_blackhole_disk | cl_avfx_defaults_blackhole_disk | Resets the accretion disk settings to defaults: on/off, radii, thickness, opacity, brightness, density, turbulence, detail, rotation speed and the Doppler effect. |
| cl_avfx_defaults_blackhole_lensing | cl_avfx_defaults_blackhole_lensing | Resets the black hole light-bending settings to defaults: lensing strength, radius and falloff, the shadow, and the photon ring. |
| cl_avfx_defaults_blackhole_position | cl_avfx_defaults_blackhole_position | Resets the black hole position settings to defaults: position mode, azimuth and elevation, drift, disk tilt, precession, animation speed and seed. |
| cl_avfx_defaults_blackhole_quality | cl_avfx_defaults_blackhole_quality | Resets the black hole quality settings to defaults: quality level, render scale, antialiasing and temporal stability. |
| cl_avfx_defaults_blackhole_streams | cl_avfx_defaults_blackhole_streams | Resets the black hole matter streams and jets to defaults: on/off, density, width, length, contrast, speed, and jet brightness, turbulence and pulse. |
| cl_avfx_defaults_blackhole_surface_lift | cl_avfx_defaults_blackhole_surface_lift | Resets the settings for dust, clumps and rocks lifted off the map toward the black hole: on/off for each, minimum angle, overhead cone, density, speed, turbulence and rock size. |
| cl_avfx_defaults_comets | cl_avfx_defaults_comets | Resets the comet settings to defaults: on/off, rate, brightness, size, speed, tail length and width, ion and dust tails, cloud occlusion, bloom and colour. |
| cl_avfx_defaults_earth | cl_avfx_defaults_earth | Resets all settings of Earth in the sky to defaults, including its on/off switch and rotation. |
| cl_avfx_defaults_flashlight | cl_avfx_defaults_flashlight | Resets the flashlight settings to defaults: on/off, intensity, range, angle, softness, colour, dynamic light, flicker, battery and beam. Shadow settings are separate. |
| cl_avfx_defaults_flashlight_shadows | cl_avfx_defaults_flashlight_shadows | Resets the flashlight shadow settings to defaults: on/off, quality, strength, softness, bias, caster limit, which objects cast shadows, and shadow offsets. |
| cl_avfx_defaults_lava_steam | cl_avfx_defaults_lava_steam | Resets the lava steam settings to defaults: on/off, density, height, speed, edge radius, size and transparency. |
| cl_avfx_defaults_lightning_discharges | cl_avfx_defaults_lightning_discharges | Resets lightning discharge settings to defaults: arcs over surfaces, water reaction, arcs and effects on monsters, and single-player lightning damage. |
| cl_avfx_defaults_lightning_settings | cl_avfx_defaults_lightning_settings | Resets the lightning bolt settings to defaults: on/off, frequency, duration, screen flash, impact, width, glow, branches and bloom. Sky flash and discharges are separate. |
| cl_avfx_defaults_meteor_impact | cl_avfx_defaults_meteor_impact | Resets all settings of meteors that fall and hit the map to defaults, including their tails and shattering. |
| cl_avfx_defaults_meteor_impact_damage | cl_avfx_defaults_meteor_impact_damage | Resets single-player meteor impact damage settings to defaults: on/off, amount, radius, knockback, falloff, line-of-sight check and breakable objects. |
| cl_avfx_defaults_meteors | cl_avfx_defaults_meteors | Resets sky meteor settings to defaults, including the meteors-and-comets switch: rate, brightness, size, speed, trail, fragmentation, burn-up and colour. Impact meteors are separate. |
| cl_avfx_defaults_monster_contacts | cl_avfx_defaults_monster_contacts | Resets single-player monster contact effects to defaults: snow footprints, puddle and landing splashes, sound, amount, maximum distance and per-frame limit. |
| cl_avfx_defaults_moon | cl_avfx_defaults_moon | Resets all Moon settings to their defaults, including its on/off switch. |
| cl_avfx_defaults_puddle_reflections | cl_avfx_defaults_puddle_reflections | Resets puddle reflection settings to defaults: scene reflection and its strength and quality, reflected models by category, and reflection distortion. |
| cl_avfx_defaults_puddles | cl_avfx_defaults_puddles | Resets puddle settings to defaults: density, size, count, fill rate, step splashes, rings, runoff, dust, rain contact with water and specular shine. Reflections are separate. |
| cl_avfx_defaults_rain | cl_avfx_defaults_rain | Resets rain settings to defaults: realistic rain, drops, ripples on water, splashes and rain on the eyes. Puddles are separate. |
| cl_avfx_defaults_sky_blue | cl_avfx_defaults_sky_blue | Resets the blue sky settings to defaults: intensity, saturation, horizon fade, cloud preservation and storm transition. |
| cl_avfx_defaults_snow | cl_avfx_defaults_snow | Resets snow settings to defaults: snow patches on water (density, size, lifetime, drift) and snow quality, noise, relief and glitter. |
| cl_avfx_defaults_snow_cover | cl_avfx_defaults_snow_cover | Resets snow cover settings to defaults: snow material and style, transparency, coverage and prefill, accumulation (rate, density, size, count) and the snow field. |
| cl_avfx_defaults_snow_cover_lighting | cl_avfx_defaults_snow_cover_lighting | Resets snow cover lighting to defaults: sun and moon lighting, night tint, glitter, how snow responds to the flashlight, and dynamic light headroom. |
| cl_avfx_defaults_snow_cover_shape | cl_avfx_defaults_snow_cover_shape | Resets snow cover shape to defaults: edge feathering and noise, relief depth, clumpy edges, edge fade, and snow smeared on walls. |
| cl_avfx_defaults_snow_cover_volume | cl_avfx_defaults_snow_cover_volume | Resets snow footprints and snow volume to defaults: footprint size, depth, strength and fade, and snow height, growth, near distance and texture scale. |
| cl_avfx_defaults_snowflakes | cl_avfx_defaults_snowflakes | Resets 3D snowflake settings to defaults: on/off, quality, count, size, crossed shape, tumbling and near distance. Realistic flake shapes are separate. |
| cl_avfx_defaults_snowflakes_fractal | cl_avfx_defaults_snowflakes_fractal | Resets only the realistic snowflake shape settings to defaults: on/off, number of forms, tiling and size limits. Flake count and size stay as they are. |
| cl_avfx_defaults_spaceships | cl_avfx_defaults_spaceships | Resets the sky spaceship settings to defaults: on/off, rate, count, model, speed, size, altitude, flight arc, colour, sound, rolls, weaving and horizon clipping. |
| cl_avfx_defaults_stars | cl_avfx_defaults_stars | Resets the main star settings to defaults: on/off, background mode and brightness. Other star pages have their own reset. |
| cl_avfx_defaults_stars_bloom_orientation | cl_avfx_defaults_stars_bloom_orientation | Resets star bloom (on/off, intensity, threshold) and the star sky orientation (mode, yaw, pitch, roll, automatic rotation speed and time) to defaults. |
| cl_avfx_defaults_stars_catalog | cl_avfx_defaults_stars_catalog | Resets the real star catalogue and procedural star settings to defaults: count, brightness, size, colour, god rays and large or bright stars. |
| cl_avfx_defaults_stars_color | cl_avfx_defaults_stars_color | Resets coloured stars and twinkling to defaults: on/off, share and intensity of coloured stars, twinkle speed and depth, and white star twinkle share. |
| cl_avfx_defaults_stars_constellations | cl_avfx_defaults_stars_constellations | Resets constellation settings to defaults: constellation lines and their transparency, and real constellations (mode, count, transparency). |
| cl_avfx_defaults_stars_milky_way | cl_avfx_defaults_stars_milky_way | Resets the Milky Way settings to defaults: on/off, brightness, width and contrast. |
| cl_avfx_defaults_stars_planets | cl_avfx_defaults_stars_planets | Resets planet settings to defaults: on/off, brightness, size, glow, real positions, and the manual sky positions of Mercury, Venus, Mars, Jupiter and Saturn. |
| cl_avfx_defaults_stars_visibility | cl_avfx_defaults_stars_visibility | Resets star visibility settings to defaults: hiding behind clouds, fading by day and near the Moon, and clipping at the horizon. |
| cl_avfx_defaults_storm_settings | cl_avfx_defaults_storm_settings | Resets the storm on/off switch and storm density to defaults. |
| cl_avfx_defaults_storm_sky | cl_avfx_defaults_storm_sky | Resets the storm sky to defaults: sky override, darkness, tint, clouds and fog, lightning glow in clouds, sky flashes and local surface light from lightning. |
| cl_avfx_defaults_sun | cl_avfx_defaults_sun | Resets all Sun settings to defaults, including its on/off switch, position and time of day, halo, lighting, god rays and sunbeams through clouds. |
| cl_avfx_defaults_sun_cloud_beams | cl_avfx_defaults_sun_cloud_beams | Resets the sunbeams through cloud gaps to defaults: on/off, intensity, gap sharpness, presence and softness. |
| cl_avfx_defaults_surface_materials | cl_avfx_defaults_surface_materials | Resets Surface Materials to defaults: master, quality, distance, seed and the mold, wall water, greenery, cracks, brick and wildlife families. Coverings and drawing are separate. |
| cl_avfx_defaults_surface_materials_brick | cl_avfx_defaults_surface_materials_brick | Resets the brick surface material to defaults: on/off, walls and floors, variant, transparency, coverage, scale, relief, mortar, irregularity and chipping. |
| cl_avfx_defaults_surface_materials_coverings | cl_avfx_defaults_surface_materials_coverings | Resets both covering layers, Floor Surfaces and Wall Surfaces, to defaults, and their drawing order. |
| cl_avfx_defaults_surface_materials_cracks | cl_avfx_defaults_surface_materials_cracks | Resets the cracks surface material to defaults: on/off, walls and floors, variant, transparency, density, scale, width, depth, branching, chipping and edge softness. |
| cl_avfx_defaults_surface_materials_crawlers | cl_avfx_defaults_surface_materials_crawlers | Resets the Wildlife family (creatures on surfaces) to defaults: on/off, walls and floors, look and motion, sounds, reactions, puddle wakes, grass interaction and blood. |
| cl_avfx_defaults_surface_materials_drawing | cl_avfx_defaults_surface_materials_drawing | Resets the surface drawing display (on/off, walls, floors) and the editor panel's transparency, scale, position and size. Saved drawings are not touched. |
| cl_avfx_defaults_surface_materials_floor_surfaces | cl_avfx_defaults_surface_materials_floor_surfaces | Resets the Floor Surfaces covering layer to defaults: on/off, material, where it applies, look, distribution, relief, metal and motion settings. |
| cl_avfx_defaults_surface_materials_greenery | cl_avfx_defaults_surface_materials_greenery | Resets the greenery surface material to defaults: on/off, walls and floors, variant, transparency, coverage, scale, thickness, damp bias, foliage motion and colour. |
| cl_avfx_defaults_surface_materials_mold | cl_avfx_defaults_surface_materials_mold | Resets the mold surface material to defaults: on/off, walls and floors, transparency, coverage, variant, colour, scale and spread on walls. |
| cl_avfx_defaults_surface_materials_wall_surfaces | cl_avfx_defaults_surface_materials_wall_surfaces | Resets the Wall Surfaces covering layer to defaults: on/off, material, where it applies, look, distribution, relief, metal and motion settings. |
| cl_avfx_defaults_surface_materials_wall_water | cl_avfx_defaults_surface_materials_wall_water | Resets the water-on-walls material to defaults: on/off, variant, transparency, coverage, scale, wetness, speed, trail length, droplets and spread on walls. |
| cl_avfx_defaults_surface_mirror | cl_avfx_defaults_surface_mirror | Resets mirror surface settings to defaults: on/off, floors and walls, slope limit, scene reflection, roughness, reflected models by category and distance. |
| cl_avfx_defaults_surface_objects | cl_avfx_defaults_surface_objects | Resets Surface Objects to defaults: the master switch, grass (density, size, colour, lighting, wind, interaction with players and monsters) and the other foliage kinds. |
| cl_avfx_defaults_volclouds | cl_avfx_defaults_volclouds | Resets the main volumetric cloud settings to defaults: on/off, quality, noise source, render scale and ray steps. Shape, detail, lighting and layers have their own reset. |
| cl_avfx_defaults_volclouds_detail | cl_avfx_defaults_volclouds_detail | Resets volumetric cloud detail to defaults: shape and detail scale, erosion, fluffiness, turbulence, wind direction and speed, and evolution speed. |
| cl_avfx_defaults_volclouds_layer1 | cl_avfx_defaults_volclouds_layer1 | Resets cloud layer 1 to defaults: on/off, coverage, density, opacity, height, thickness, scale, detail, erosion, wind and evolution speed. |
| cl_avfx_defaults_volclouds_layer2 | cl_avfx_defaults_volclouds_layer2 | Resets cloud layer 2 to defaults: on/off, coverage, density, opacity, height, thickness, scale, detail, erosion, wind and evolution speed. |
| cl_avfx_defaults_volclouds_layer3 | cl_avfx_defaults_volclouds_layer3 | Resets cloud layer 3 to defaults: on/off, coverage, density, opacity, height, thickness, scale, detail, erosion, wind and evolution speed. |
| cl_avfx_defaults_volclouds_layers | cl_avfx_defaults_volclouds_layers | Resets the cloud layers switch and the number of layers to defaults. Each layer's own settings have separate resets. |
| cl_avfx_defaults_volclouds_lighting | cl_avfx_defaults_volclouds_lighting | Resets volumetric cloud lighting to defaults: sun and moon light, silver lining, ambient, storm darkening, sun occlusion, world shadow, local lightning glow and the debug view. |
| cl_avfx_defaults_volclouds_shape | cl_avfx_defaults_volclouds_shape | Resets volumetric cloud shape to defaults: base height, thickness, horizon fade, coverage, density, opacity, count, size and its variation, randomness and seed. |
| cl_avfx_defaults_volfog | cl_avfx_defaults_volfog | Resets the main volumetric fog settings to defaults: on/off, quality, render scale and ray steps. Shape, look and lighting have their own reset. |
| cl_avfx_defaults_volfog_lighting | cl_avfx_defaults_volfog_lighting | Resets volumetric fog lighting to defaults: light scattering from the sun, moon, lightning and flashlight, flashlight fog transparency, and the debug view. |
| cl_avfx_defaults_volfog_look | cl_avfx_defaults_volfog_look | Resets volumetric fog look to defaults: density, opacity, extinction, anisotropy, noise and its scale, patchiness, seed, wind, evolution speed and colour. |
| cl_avfx_defaults_volfog_shape | cl_avfx_defaults_volfog_shape | Resets volumetric fog shape to defaults: view distance, start distance, near fade, base height, height, falloff and ground hugging. |
| cl_avfx_defaults_water | cl_avfx_defaults_water | Resets the main water settings to defaults: on/off, quality, strength, colour, surface style and speed, ripples, foam, sun and moon lighting, and realistic water. |
| cl_avfx_defaults_water_color_depth | cl_avfx_defaults_water_color_depth | Resets water depth colouring to defaults: depth colour and its strength, clarity, extinction with depth, and shore and deep water mix. |
| cl_avfx_defaults_water_foam_shore | cl_avfx_defaults_water_foam_shore | Resets shore foam to defaults: on/off, range, intensity, noise, size, transparency and speed. |
| cl_avfx_defaults_water_reflect | cl_avfx_defaults_water_reflect | Resets water surface reflectance to defaults: Fresnel strength and power, specular highlights and sky reflection. |
| cl_avfx_defaults_water_reflections | cl_avfx_defaults_water_reflections | Resets water reflection settings to defaults: scene reflection and its strength, reflected models (strength, quality, categories) and reflection distortion. |
| cl_avfx_defaults_water_surface | cl_avfx_defaults_water_surface | Resets the realistic water surface to defaults: wave scale and speed, normal strength and wind coupling. |
| cl_avfx_defaults_weapon_impacts | cl_avfx_defaults_weapon_impacts | Resets weapon impact effects on water to defaults: the master switch and each weapon's switch, plus the weapon-impacts-on-snow switch. |
| cl_avfx_defaults_weapon_snow_impacts | cl_avfx_defaults_weapon_snow_impacts | Resets weapon impact effects on snow to defaults: on/off, fade rate, each weapon's switch, and the snow dust particles and their colour. |
| cl_avfx_info | cl_avfx_info | Prints a detailed report of the AVFX effects: whether the master switch is effectively on, and the state and counters of each effect family (weather, sky, water, snow, surfaces and more). |
| cl_avfx_perf_reset | cl_avfx_perf_reset | Developer performance telemetry: clears the AVFX timing and counter window so a fresh measurement starts now. |
| cl_avfx_perf_snapshot | cl_avfx_perf_snapshot | Developer performance telemetry: prints a one-shot AVFX timing and counter report. Counters accumulate only while cl_avfx_perf is 1. |
| cl_avfx_preset_generate | cl_avfx_preset_generate [seed] | Builds a random AVFX look from the generator choices in the menu (cl_avfxgen_* settings) and applies it to the AVFX settings. An optional number repeats a look exactly; an impossible fixed combination changes nothing. |
| cl_avfx_preset_load_custom | cl_avfx_preset_load_custom <1..12> | Loads your saved AVFX preset from slot 1-12 of the current mod (q2pro-x/visual_presets/v_p_user_N.cfg) and turns AVFX on. An empty slot or a slot with only a name changes nothing. |
| cl_avfx_preset_load_global_custom | cl_avfx_preset_load_global_custom <1..12> | Loads your saved global AVFX preset from slot 1-12 (q2pro-x/visual_presets/v_p_global_user_N.cfg in the base folder, shared by all mods) and turns AVFX on. An empty slot changes nothing. |
| cl_avfx_preset_load_global_music_custom | cl_avfx_preset_load_global_music_custom <1..6> | Loads your saved global musical AVFX preset from slot 1-6 (q2pro-x/visual_presets/v_p_global_music_user_N.cfg in the base folder) and turns AVFX on. An empty slot changes nothing. |
| cl_avfx_preset_load_music_custom | cl_avfx_preset_load_music_custom <1..6> | Loads your saved musical AVFX preset from slot 1-6 of the current mod (q2pro-x/visual_presets/v_p_music_user_N.cfg) and turns AVFX on. An empty slot changes nothing. |
| cl_avfx_preset_save_custom | cl_avfx_preset_save_custom <1..12> | Saves all current AVFX settings to slot 1-12 of the current mod (q2pro-x/visual_presets/v_p_user_N.cfg). Overwrites the slot without the menu's confirmation; refused if the slot's name is already used by another slot. |
| cl_avfx_preset_save_global_custom | cl_avfx_preset_save_global_custom <1..12> | Saves all current AVFX settings to global slot 1-12 (q2pro-x/visual_presets/v_p_global_user_N.cfg in the base folder, shared by all mods). Overwrites the slot without the menu's confirmation. |
| cl_avfx_preset_schema_dump | cl_avfx_preset_schema_dump [offset] [count] | Developer schema dump: prints every setting an AVFX preset stores, with its default, in a machine-readable list for automated checks; not for players. |
| cl_avfx_preset_set_custom_name | cl_avfx_preset_set_custom_name <1..12> [name] | Sets the display name of mod AVFX preset slot 1-12; the name can contain spaces, and an empty name returns the default. The file itself is not rewritten; the name is stored on the next save. |
| cl_avfx_preset_set_global_custom_name | cl_avfx_preset_set_global_custom_name <1..12> [name] | Sets the display name of global AVFX preset slot 1-12; the name can contain spaces, and an empty name returns the default. The file is not rewritten; the name is stored on the next save. |
| cl_avfx_preset_set_global_music_custom_name | cl_avfx_preset_set_global_music_custom_name <1..6> [name] | Sets the display name of global musical AVFX preset slot 1-6; the name can contain spaces, and an empty name returns the default. The file is not rewritten by this command. |
| cl_avfx_preset_set_music_custom_name | cl_avfx_preset_set_music_custom_name <1..6> [name] | Sets the display name of the current mod's musical AVFX preset slot 1-6; the name can contain spaces, and an empty name returns the default. The file is not rewritten by this command. |
| cl_gamedir_fixture | cl_gamedir_fixture <gamedir> | Developer test fixture for automated checks: pretends a server switched the game folder to the given mod; not for players. |
| cl_gamedir_fixture_leave | cl_gamedir_fixture_leave [reconnect] | Developer test fixture for automated checks: runs the disconnect rule that returns the game folder to the player's own choice; not for players. |
| cl_lighting_preset_dump | cl_lighting_preset_dump | Prints every setting of the lighting preset with its current value, as set lines you can copy into a config. Saves nothing; use condump to keep the output. |
| cl_lighting_preset_load_factory | cl_lighting_preset_load_factory <factory_id> | Applies a factory lighting preset from q2pro-x/lighting_presets/factory/lp_<id>.cfg, e.g. cl_lighting_preset_load_factory bright. The id uses only a-z, 0-9 and underscore; a missing or invalid file changes nothing. |
| cl_lighting_preset_load_global_custom | cl_lighting_preset_load_global_custom <1..4> | Applies your saved lighting preset from slot 1-4 (q2pro-x/lighting_presets/lp_user_N.cfg in the base folder). A missing or invalid slot file changes nothing. |
| cl_lighting_preset_save_global_custom | cl_lighting_preset_save_global_custom <1..4> | Saves the current lighting settings to slot 1-4 (q2pro-x/lighting_presets/lp_user_N.cfg in the base folder). Overwrites the slot without the menu's confirmation. |
| cl_lighting_preset_set_global_custom_name | cl_lighting_preset_set_global_custom_name <1..4> "name" | Names lighting preset slot 1-4 and writes the name into the slot file at once; an empty slot gets a file holding only the name. A name already used by another slot is refused. |
| cl_music_buttons_info | cl_music_buttons_info | Developer diagnostic: prints how many times the main-menu music buttons were drawn and clicked, their positions and the mute state; not for players. |
| cl_music_buttons_mute_probe | cl_music_buttons_mute_probe | Developer test probe for automated checks: verifies that muted menu music stays silent through a map-load fade; not for players. |
| cl_music_buttons_test | cl_music_buttons_test <intro-sound / intro-stop / online-sound> | Developer test command: presses a main-menu music button the same way a mouse click does, to check its hit area; not for players. |
| cl_q2px_rail_clear | cl_q2px_rail_clear | Developer test command: instantly removes all rail trails and laser beams currently on screen, for repeatable test shots; not for players. |
| cl_q2px_setpitch | cl_q2px_setpitch <degrees> | Developer test command: sets the exact vertical view angle in degrees (clamped to -89..89) for repeatable automated checks; not for players. |
| cl_q2px_setyaw | cl_q2px_setyaw <degrees> | Developer test command: sets the exact horizontal view angle in degrees for repeatable automated checks; not for players. |
| cl_sp_avfx_snake_combat_defaults | cl_sp_avfx_snake_combat_defaults | Resets every AVFX snake combat setting (health, bites on monsters and on you, monster attacks on snakes and their damage, chances and intervals) to defaults. Other settings are not touched. |
| cl_sync_info | cl_sync_info | Developer diagnostic: prints the current frame-timing mode, frame intervals and the recent history of mode changes; not intended for players. |
| cl_viewbob_info | cl_viewbob_info | Reports how much running camera bob the server sends and whether cl_viewbob already removes it; run for a couple of seconds first. Also shows the measured camera tilt from movement. |
| cl_vis_items_info | cl_vis_items_info | Prints the item highlighting settings (cl_vis_enable, cl_vis_items, style, single-player) and whether highlighting is active right now. |
| cl_vis_player_model_color | cl_vis_player_model_color <model> <#RRGGBB / preset-name / reset> | Sets the highlight color of a player model, e.g. cl_vis_player_model_color male #ff0000; accepts #RRGGBB or a preset name. reset returns the model to the automatic palette; with no arguments lists presets. |
| cl_vis_player_model_colors_reset | cl_vis_player_model_colors_reset | Clears every per-model highlight color you set, so all player models go back to the automatic palette. |
| cl_vis_player_models_info | cl_vis_player_models_info | Lists every installed player model with its highlight color and whether it is your override or automatic, plus saved colors for models that are not installed. |
| cl_visibility_preset_dump | cl_visibility_preset_dump | Prints every setting of the visibility preset, including per-model colors, with current values as set lines you can copy into a config. Saves nothing; use condump to keep the output. |
| cl_visibility_preset_generate | cl_visibility_preset_generate | Turns the visibility highlights on and applies random colors and strengths to them, including random colors for player models (male, female, cyborg at least). Nothing is saved to a slot. |
| cl_visibility_preset_load_factory | cl_visibility_preset_load_factory <factory_id> | Applies a factory visibility preset from q2pro-x/visibility_presets/factory/vp_<id>.cfg, e.g. cl_visibility_preset_load_factory ffa_auto. The id uses only a-z, 0-9 and underscore; a missing file changes nothing. |
| cl_visibility_preset_load_global_custom | cl_visibility_preset_load_global_custom <1..4> | Applies your saved visibility preset from slot 1-4 (q2pro-x/visibility_presets/vp_user_N.cfg in the base folder). A missing or invalid slot file changes nothing. |
| cl_visibility_preset_save_global_custom | cl_visibility_preset_save_global_custom <1..4> | Saves the current visibility settings, including per-model colors, to slot 1-4 (q2pro-x/visibility_presets/vp_user_N.cfg in the base folder). Overwrites the slot without the menu's confirmation. |
| cl_visibility_preset_set_global_custom_name | cl_visibility_preset_set_global_custom_name <1..4> "name" | Names visibility preset slot 1-4 and writes the name into the slot file at once; an empty slot gets a file holding only the name. A name already used by another slot is refused. |
| clear | clear | Erases the console text buffer. Nothing on disk is touched. |
| clearchathud | clearchathud | Removes all chat lines currently shown in the on-screen chat HUD. The console history is not touched. |
| clearnotify | clearnotify | Immediately removes the console lines that are drawn over the game view. |
| cmd | cmd <command> [arguments] | Sends the rest of the line to the server as a command, e.g. cmd players. Works only when connected; does nothing during demo playback. |
| cmdlist | cmdlist [wildcard] | Prints every command currently registered in the engine, optionally filtered by a wildcard pattern. |
| complete | complete <command> | Registers a name as a server command so Tab completion knows it; typing it later sends it to the server. Refused if a setting has that name; does nothing if the command already exists. |
| condump | condump <filename> | Writes the current console scrollback into a text file so it can be read or attached to a bug report. |
| connect | connect <server> | Leaves the current game and connects to the given server address. |
| connect_autoport | connect_autoport <server> | Connects to a server, first probing several local client ports and keeping the one with the fastest reply. Leaves the current game or local server; quake2:// links are accepted. |
| cvar_browser | cvar_browser | Opens the Cvar Browser, where you can search, read and change settings and commands. |
| cvar_browser_avfx_doc_audit | cvar_browser_avfx_doc_audit | Developer audit for automated checks: verifies that every AVFX setting is listed, searchable and described in both languages in the Cvar Browser; not for players. |
| cvar_browser_close | cvar_browser_close | Closes the Cvar Browser if it is open. |
| cvar_browser_favorites_info | cvar_browser_favorites_info | Prints how many settings are in the Cvar Browser favorites, the file they are kept in (q2pro-x/cvar_browser_state.txt) and the first 32 names. |
| cvar_browser_favorites_prune | cvar_browser_favorites_prune | Removes from the Cvar Browser favorites every setting that does not exist in this build and saves the favorites file. |
| cvar_browser_fixture | cvar_browser_fixture | Developer test fixture for automated checks of the Cvar Browser; not for players. |
| cvar_browser_open | cvar_browser_open | Opens the Cvar Browser; same as cvar_browser. |
| cvar_browser_resume | cvar_browser_resume | Internal: reopens the Cvar Browser on the same tab, search and selection after a menu it launched is closed. |
| cvar_browser_toggle | cvar_browser_toggle | Opens the Cvar Browser if it is closed, closes it if it is open. Handy for a key bind. |
| cvar_help | cvar_help | Opens the Cvar Browser with descriptions of settings and commands; same as cvar_browser. Arguments are ignored. |
| cvar_session_only_info | cvar_session_only_info | Developer diagnostic: counts the session-only diagnostic settings, checks that none of them is saved to configs, and lists attempts to set them from configs that were refused. |
| cvarlist | cvarlist [-acfhlmnrstuv] [wildcard] | Prints console variables, optionally filtered by flags. The Cvar Browser is the searchable version of this with descriptions. |
| dec | dec <variable> [value] | Subtracts the given amount from a numeric variable (1 if omitted). |
| delban | delban <address[/mask] / id / all> | Removes an address ban from the local server's ban list by address/mask or by its number from listbans; all clears the whole list. |
| delblackhole | delblackhole <address[/mask] / id / all> | Removes an address from the local server's blackhole list (addresses whose packets are ignored) by address/mask or number from listblackholes; all clears the list. |
| delcvarban | delcvarban <id / var / all> | Removes bans on client setting values from the local server by number from listcvarbans or by setting name (all bans for that name); all clears the list. |
| delfiltercmd | delfiltercmd <id / cmd / all> | Removes a client command filter from the local server by number from listfiltercmds or by command name; all clears the list. |
| delgtvban | delgtvban <address[/mask] / id / all> | Removes an address from the server's GTV (MVD relay) ban list by address/mask or number from listgtvbans; all clears the list. |
| delgtvhost | delgtvhost <address[/mask] / id / all> | Removes an address from the GTV (MVD relay) trusted list, whose hosts connect without the password, by address/mask or number from listgtvhosts; all clears the list. |
| dellrconcmd | dellrconcmd <id / cmd / all> | Removes a command from the local server's limited rcon list by number from listlrconcmds or by its text; all clears the list. |
| delstuffcmd | delstuffcmd <connect / begin> <id / cmd / all> | Removes a command the local server sends to clients on connect or on begin, by number from liststuffcmds or by its text; all clears that list. |
| deluserinfoban | deluserinfoban <id / var / all> | Removes bans on client userinfo values from the local server by number from listuserinfobans or by key name (all bans for that key); all clears the list. |
| demo | demo [--mod <mod>] [mod/]<filename> [compat] | Searches the current mod, baseq2, then other local mod folders. Use mod/filename or --mod to choose one mod; duplicate matches are reported. |
| demo_analytics_info | demo_analytics_info | Prints the demo analytics state for the demo being watched: source, mode, how many positions, frags and pickups were collected and the map bounds. Works only during demo playback. |
| demo_analytics_rescan | demo_analytics_rescan | Discards the collected analytics and scans the currently playing MVD demo again. Works only while an MVD demo is playing. |
| demo_browser_close | demo_browser_close | Closes the demo browser if it is open. |
| demo_browser_favorites_info | demo_browser_favorites_info | Prints how many demos are in the demo browser favorites, the file they are kept in (q2pro-x/demo_browser_state.txt) and the first 32 entries. |
| demo_browser_favorites_prune | demo_browser_favorites_prune | Removes from the demo browser favorites every demo that is no longer in the demo index and saves the favorites file. |
| demo_browser_fixture | demo_browser_fixture <op> [value] | Developer test fixture for automated checks of the demo browser; not for players. |
| demo_browser_open | demo_browser_open | Opens the demo browser, where you can find, sort and play your demos. |
| demo_browser_toggle | demo_browser_toggle | Opens the demo browser if it is closed, closes it if it is open. Handy for a key bind. |
| demo_director_cycle | demo_director_cycle | Switches the MVD demo auto-camera to the next mode (off, next frag, quad, invulnerability, leader) and prints the new mode. |
| demo_director_off | demo_director_off | Turns off the automatic camera in MVD demos, so the view stays on the player you choose. |
| demo_director_set | demo_director_set <off / next_frag / quad / penta / leader> | Sets the automatic camera mode for MVD demos: off, next_frag, quad, penta (invulnerability) or leader, e.g. demo_director_set leader. With no argument prints the current mode. |
| demo_index_rebuild | demo_index_rebuild | Rescans all demos from scratch in the background and refreshes the demo browser list; the demo library cache file is rewritten. The game is not blocked. |
| demo_index_refresh | demo_index_refresh | Picks up new, changed or removed demos in the background and refreshes the demo browser list; the demo library cache file may be updated. The game is not blocked. |
| demo_item_timers_info | demo_item_timers_info | Lists the items found for item timers in the demo being watched, with respawn intervals and which are shown or filtered. Works only during demo playback; .dm2 demos have no timer data. |
| demo_item_timers_strip_edit | demo_item_timers_strip_edit | Turns on or off edit mode for the demo item-timer strip: drag it with the left mouse button, Enter or Escape to finish. While editing, keys do not reach the game. |
| demo_item_timers_strip_reset | demo_item_timers_strip_reset | Returns the demo item-timer strip to its default position. |
| demo_pause_toggle | demo_pause_toggle | Pauses or resumes the demo being played. Does nothing outside demo playback, so it is safe to bind to a key used in the game. |
| demo_player_close | demo_player_close | Hides the demo player panel; the demo keeps playing. |
| demo_player_index | demo_player_index | Developer diagnostic: prints which demo list entry the demo player matched to the playing demo; not for players. |
| demo_player_open | demo_player_open | Shows the demo player panel and frees the mouse cursor for it; closes the console. The panel appears only while a demo is playing. |
| demo_player_toggle | demo_player_toggle | Shows the demo player panel if it is hidden, hides it if it is shown. Handy for a key bind. |
| demo_playlist_clear | demo_playlist_clear | Empties the demo playlist queue; the current demo is not stopped, but no next demo will follow. |
| demo_playlist_next | demo_playlist_next | Starts the next demo in the playlist queue. Does nothing on the last item or without a queue. |
| demo_playlist_prev | demo_playlist_prev | Starts the previous demo in the playlist queue. Does nothing on the first item or without a queue. |
| demomap | demomap <mapname> | Loads a map, cinematic (.cin) or picture (.pcx) on the local server like map, but without wiping single-player saves; a .dm2 name is played as a demo instead. |
| dir | dir <directory> [.extension] | Lists the contents of a virtual game directory, optionally limited to one extension. |
| disconnect | disconnect | Drops the connection to the server and returns to the menu. |
| dns | dns <address> | Resolves a host name through DNS and prints its canonical name and IP addresses; a :port suffix is ignored. IPv6 results only when net_enable_ipv6 is on. |
| download | download <filename> | Asks the connected server for a file you do not have and saves it into the game folder, e.g. download maps/q2dm1.bsp. Requires a connection; not possible when downloads are disabled (allow_download -1). |
| draw | draw <name> <x> <y> [color] | Shows a setting or macro value on screen at x y, e.g. draw cl_fps 10 10; negative x aligns to the right, color can be a color, alt or none. Without arguments lists what is drawn. |
| drop | drop <item> | Game command sent to the server: drops the named item from your inventory, e.g. drop rockets. Whether it works depends on the game mod; Tab completes item names. |
| dumpclients | dumpclients | Prints the slot number and name of every player known in the current game. Works only while in a level. |
| dumpents | dumpents <filename> | Writes the entity text of the map loaded on the local server to entdumps/<filename>.ent. Requires a running local map. |
| dumplayout | dumplayout <filename> | Writes the layout program the server sent last (scoreboard, inventory and similar) to layouts/<filename>.txt. Works only in a level and when a layout exists. |
| dumpstatusbar | dumpstatusbar <filename> | Writes the status bar program sent by the server to layouts/<filename>.txt. Works only while in a level. |
| dumpuser | dumpuser <userid> | Prints the userinfo and extra connection details of a player on the local server, chosen by id or name. Requires a running server. |
| echo | echo <text> | Prints its arguments back to the console. Mostly useful inside aliases and config scripts to report what they are doing. |
| emissive_lights_info | emissive_lights_info | Prints the state of lighting from glowing map surfaces and spawn markers: settings, how many sources the map has, and how many were lit or skipped in the last frame. |
| en | en [-team] <Russian text> | Sends Russian text to the configured online translator and puts the English result into the console or chat prompt for you to send with Enter; -team targets team chat. Nothing is sent automatically. |
| exec | exec <filename> | Reads a .cfg file and executes every line in it as a console command. |
| fdir | fdir <filter> | Searches the whole search path for files matching a wildcard filter. |
| fog | fog <r g b density> [sky_factor] | Sets your own global fog: color r g b and density from 0 to 1, plus optional sky factor, e.g. fog 0.5 0.5 0.5 0.05; it replaces the map's fog. Without arguments prints the current fog. |
| followip | followip [index] | Connects to the most recent server address seen in chat; a number picks an older one (0 is the latest). Prints a notice if there is none. |
| forcemenuoff | forcemenuoff | Closes every open menu at once and returns input to the game. |
| fragfeed_preview | fragfeed_preview | Shows a sample frag feed for about 6 seconds so you can check its position, size and colours. |
| fragfeed_reset | fragfeed_reset | Resets all frag feed settings (cl_fragfeed_*) to their defaults. |
| frame_spike_info | frame_spike_info | Prints frame time statistics (average and percentiles) and a list of recent slow frames above r_frame_spike_threshold_ms with a breakdown by render stage. |
| frame_spike_reset | frame_spike_reset | Clears the collected frame time statistics and the list of slow frames shown by frame_spike_info. |
| fs_restart | fs_restart | Tears down and rebuilds the whole file system: the search path is rescanned and every cached game file handle is dropped. Heavy, and normally only needed after changing game directories or adding PAK files while running. |
| game_stats_cache_clear | game_stats_cache_clear | Deletes the match results stored in the Game Statistics demo cache and rewrites the cache file. The list of demo files and your settings are kept. |
| game_stats_close | game_stats_close | Closes the Game Statistics window and remembers its position and size. |
| game_stats_fixture | game_stats_fixture | Developer test fixture for automated checks of Game Statistics; not for players. |
| game_stats_info | game_stats_info | Prints the state of the demo library behind Game Statistics: cache file, scanned folders, demo counts, timings and whether a background scan is running. |
| game_stats_layout_reset | game_stats_layout_reset | Resets the panel layout of the Game Statistics window to its default. |
| game_stats_open | game_stats_open | Opens the Game Statistics window with your results collected from recorded demos. |
| game_stats_rebuild | game_stats_rebuild | Reads all demos in the current date window again from scratch in the background and updates the statistics cache file. |
| game_stats_refresh | game_stats_refresh | Looks for new or changed demos in the background and updates Game Statistics and its cache file; unchanged demos are not read again. |
| game_stats_results | game_stats_results | Prints wins, losses and draws for your tracked names (name and cl_game_stats_names) over cl_game_stats_days, with opponents and the demo file behind each result. |
| game_stats_toggle | game_stats_toggle | Opens the Game Statistics window, or closes it if it is already open. |
| gamemap | gamemap <mapname> | Changes the map on the running local server without a full restart; in single player the state of visited levels is kept. A name starting with * clears saved levels. |
| ghost_hg_fixture | ghost_hg_fixture | Developer test fixture for automated checks of hand grenade prediction; not for players. |
| give | give <item / all / health / weapons / ammo / armor> [amount] | Asks the game server to give you an item, e.g. give railgun, give all, give health 100. In the standard game deathmatch and co-op allow it only when the server runs with cheats 1. |
| gl_capabilities | gl_capabilities | Prints the graphics driver vendor, OpenGL and shader versions and which renderer features your card supports. |
| gl_hdr_info | gl_hdr_info | Prints the HDR state: graphics API level, the gl_hdr setting, the scene format that would be used and the Windows HDR switch status. |
| gl_hdr_transition_info | gl_hdr_transition_info | Prints the state of the Windows HDR display switch done by the game: requested and actual mode, the display and the last step. Prints nothing in builds without this feature. |
| gl_postfx_info | gl_postfx_info | Prints the post-process filter settings (gl_postfx mode, strength, pixel and CRT options) and whether the filter is actually active. |
| gl_render_scale_info | gl_render_scale_info | Prints the requested and applied render scale, the method in use, internal and output resolutions and the limits of your graphics card. |
| gl_visual_fx_info | gl_visual_fx_info | Prints bloom, colour grading and sharpening settings, showing the requested value next to the value actually applied. |
| god | god | Asks the game server to toggle god mode (you take no damage). In the standard game deathmatch and co-op allow it only when the server runs with cheats 1. |
| gun_model | gun_model [name] | Developer tool: replaces the view weapon model with models/<name>/tris.md2; with no argument the normal model returns. |
| gun_next | gun_next | Developer tool: moves the forced animation frame of the view weapon one step forward and prints its number. |
| gun_prev | gun_prev | Developer tool: moves the forced animation frame of the view weapon one step back (not below 0) and prints its number. |
| heartbeat | heartbeat | Makes the local server send a heartbeat to its master servers right away, so it appears in server lists sooner. |
| if | if <expr> <op> <expr> [then] <command> [else <command>] | For scripts and binds: compares two values with ==, !=, <, <=, >, >=, isin, isini, eq or ne and runs the command after then, or the one after else. |
| ignorenick | ignorenick [nick] | Hides chat from players whose name matches the pattern. With no arguments, prints the current filters. |
| ignoretext | ignoretext [match] | Hides incoming chat lines that match the given text pattern. With no arguments, prints the current filters. |
| imagelist | imagelist | Prints every image the renderer has loaded, with size and format. Useful for tracking texture memory. |
| impulse | impulse <number> | Sends an impulse number to the game with the next movement command; mods use impulses for their own actions. |
| in_restart | in_restart | Reinitialises keyboard and mouse input. Use it after plugging in a device or when input settings need to be re-applied. |
| inc | inc <variable> [value] | Adds the given amount to a numeric variable (1 if omitted). |
| info | info | Sends the info command to the game server; only some mods use it. The standard game has no such command and treats the text as a chat message. |
| invdrop | invdrop | Asks the game server to drop the item selected in your inventory. |
| inven | inven | Asks the game server to show the inventory panel, or hide it if it is shown. |
| invnext | invnext | Asks the game server to select the next item in your inventory. |
| invprev | invprev | Asks the game server to select the previous item in your inventory. |
| invuse | invuse | Asks the game server to use the item selected in your inventory. |
| it_cancel | it_cancel <id / all> [ordinal] | Cancels running timers for an item, e.g. it_cancel ra. Add a spawn number to cancel only that spawn, or use it_cancel all to cancel every timer. |
| it_info | it_info [active / world] | Prints item timer settings and the item list with ids (ga, ya, ra, mh, quad...). it_info active lists running timers, it_info world lists item spawns on this map. |
| it_menu | it_menu | Opens the live item timers settings menu. |
| it_reset | it_reset | Cancels all running item timers and forgets the respawn intervals learned on this map. |
| it_start | it_start <id> [seconds / ordinal / nearest] | Starts a respawn timer for an item without picking it up, e.g. it_start ra. The optional second argument is seconds (up to 600), the spawn number or nearest. While +it_mod is held it cancels instead. |
| kick | kick <userid> | Disconnects a player from your local server. Give the player's number from status or the name. Works only while a server is running. |
| kickban | kickban <userid> | Disconnects a player from your local server and adds their IP address to the ban list for the rest of the server session. |
| kill | kill | Asks the game server to kill your player (suicide). The standard game ignores it during the first 5 seconds after respawn. |
| killserver | killserver | Shuts down the running local server and disconnects all players. |
| laghax_ah_probe | laghax_ah_probe <net_stress> [expect_hidden] / result | Developer probe of the network HUD auto-hide logic with a made-up network load value; not for players. |
| laghax_hud_edit | laghax_hud_edit | Turns edit mode for the network (laghax) HUD on or off: drag it with the left mouse button, press Enter or Escape to finish. |
| laghax_hud_reset | laghax_hud_reset | Returns the network (laghax) HUD to its default position in the top right corner. |
| laghax_stats_fixture | laghax_stats_fixture | Developer test fixture for automated checks of the network HUD statistics; not for players. |
| lasterror | lasterror | Prints the last operating-system error the engine recorded — the first thing to check when a file or socket operation failed silently. |
| link | link [name target] | Creates a path link so requests for one virtual game path are served from another. Affects READING only and lasts for this session; it does not move or modify anything on disk. With no arguments it lists existing links. |
| listbans | listbans | Lists IP addresses banned on the local server (addban, kickban) with hit counts and comments. |
| listblackholes | listblackholes | Lists blackhole addresses whose packets the local server ignores completely (addblackhole). |
| listcvarbans | listcvarbans | Lists cvar bans of the local server: which client variable values are checked and what action is taken. |
| listfiltercmds | listfiltercmds | Lists client commands filtered by the local server and the action for each (ignore, log, print, stuff, kick). |
| listgtvbans | listgtvbans | Lists addresses banned from connecting to the local server as GTV relays (addgtvban). |
| listgtvhosts | listgtvhosts | Lists addresses allowed to connect to the local server as GTV relays (addgtvhost). |
| listlrconcmds | listlrconcmds | Lists commands allowed through the limited remote console (lrcon) of the local server. |
| listmasters | listmasters | Lists the master servers the local server reports to, with the time of the last reply from each. |
| liststuffcmds | liststuffcmds <connect / begin> | Lists commands the local server sends to each client when it connects (connect) or enters the game (begin). |
| listuserinfobans | listuserinfobans | Lists userinfo bans of the local server: which values in player info are checked and what action is taken. |
| load | load <directory> | Loads a single player save from save/<name>. The current game's working save is wiped and replaced, so unsaved progress is lost. |
| loc | loc <add / del / set / list / save> | Edits named map locations used in chat: loc add <name> at your position, loc del or loc set <name> for the nearest one, loc list, loc save [name] writes locs/<map>.loc. Only in a level. |
| macrolist | macrolist [wildcard] | Prints the $macro names the console can expand inside a command line, such as $health or $mapname. |
| map | map <mapname> [force] | Starts a local server on the map with a full restart. If a game is already running it only warns and suggests gamemap, unless you add force or set sv_allow_map. |
| messagemode | messagemode | Opens the one-line chat prompt for a message to everyone. Normally bound to a key rather than typed. |
| messagemode2 | messagemode2 | Opens the one-line chat prompt for a team message. |
| modellist | modellist | Prints every model currently loaded, with its memory footprint. |
| modhelp_next | modhelp_next | Goes to the next page of the mod help overlay. Does nothing while the overlay is closed. |
| modhelp_page | modhelp_page <number> | Jumps to the given page of the mod help overlay, counting from 0. Does nothing while the overlay is closed. |
| modhelp_prev | modhelp_prev | Goes to the previous page of the mod help overlay. Does nothing while the overlay is closed. |
| modhelp_reload | modhelp_reload | Reloads the mod help command lists from the q2pro.modhelp files; closes the overlay if the current mod is no longer supported. |
| modhelp_scrolldown | modhelp_scrolldown | Scrolls the mod help overlay down one line while it is open. |
| modhelp_scrollup | modhelp_scrollup | Scrolls the mod help overlay up one line while it is open. |
| modhelp_search | modhelp_search | Opens the search field across all pages of the mod help overlay. Works only while the overlay is open. |
| modhelp_toggle | modhelp_toggle | Opens or closes the mod help overlay with clickable commands for the current mod (OpenTDM, OpenFFA). Prints a message if no supported mod is running. |
| modscan_info | modscan_info | Prints the game mods found in mod folders (folders with a game DLL), whether each runs natively in 64-bit or through the 32-bit bridge, and the scan cache. |
| modscan_refresh | modscan_refresh | Scans the mod folders again and saves the result to the cache file. If cl_q2prox_modscan is 0 it clears the mod list instead. |
| movementfeel_info | movementfeel_info | Prints the movement feel mode (cl_movement_feel_mode), which timing path is actually used, whether cl_fixedmove applies, and the prediction and step smoothing modes. |
| mso_status | mso_status | Prints the mod skin override settings for yourself and other players and which model and skin are currently loaded for each. |
| music_health_ambient_info | music_health_ambient_info | Prints the state of the health-based ambient music: status, game scope and the armor and power values it reacts to. |
| music_health_ambient_reset | music_health_ambient_reset | Turns the health-based ambient music off and resets its volume, transition, profile and health thresholds to defaults. |
| music_online_close | music_online_close | Closes the online music window; playback is not stopped. |
| music_online_end_mode | music_online_end_mode <stop / repeat_all / repeat_one> | Sets what happens after the last track: stop, repeat_all or repeat_one (or 0-2). The current mode is printed only when cl_music_online_console_status is 1. |
| music_online_fixture | music_online_fixture | Developer test fixture for automated checks of the online music window; not for players. |
| music_online_genre | music_online_genre <slug> | Adds a genre to the current genre selection or removes it, then opens the window and loads tracks from PROMODJ. The saved preferred genres are not changed. |
| music_online_genres | music_online_genres | Opens the online music window and downloads the list of genres from PROMODJ. |
| music_online_info | music_online_info | Prints the online music state: whether it is on, the stream state and current track, autoplay, volume, queue modes, genres and window settings. |
| music_online_load_genres | music_online_load_genres | Opens the window and loads tracks from PROMODJ for the selected genres, or the general list when genre mode is off. |
| music_online_lucky | music_online_lucky | Opens the window and plays a random track; cl_music_online_lucky_scope decides whether it comes from the current results, a random genre or all music. |
| music_online_next | music_online_next | Plays the next track from the results; if nothing has been played yet, starts the results. |
| music_online_open | music_online_open | Opens the online music window. If online music was off (cl_music_online_enable 0), it is turned on. |
| music_online_open_track_page | music_online_open_track_page | Opens the PROMODJ page of the current track in your web browser. |
| music_online_pause | music_online_pause | Pauses online music, or resumes it if it is paused. |
| music_online_play | music_online_play [url] | With a PROMODJ track page link or pdj.cc short link, finds the stream and plays it; with no argument resumes paused music. Requires cl_music_online_enable 1. |
| music_online_play_results | music_online_play_results | Plays the current search or genre results from the first track, or from a random one in roulette queue mode. |
| music_online_prev | music_online_prev | Plays the previous track from the results. |
| music_online_probe | music_online_probe | Developer network check of the PROMODJ catalog (genres, listing, search, stream link); starts no playback. Requires cl_music_online_enable 1. |
| music_online_probe_track | music_online_probe_track <track_page_url> | Developer check of one PROMODJ track link: prints its artist, title, styles and stream address. Requires cl_music_online_enable 1. |
| music_online_queue_mode | music_online_queue_mode <sequential / roulette> | Sets the order of tracks: sequential or roulette (or 0-1). The current mode is printed only when cl_music_online_console_status is 1. |
| music_online_refresh | music_online_refresh | Opens the window and repeats the last search, or reloads the genre tracks if there is no search text. |
| music_online_search | music_online_search <query> | Opens the online music window and searches PROMODJ for tracks matching the text. |
| music_online_seek | music_online_seek <seconds> | Jumps to the given second of the current online track. |
| music_online_stop | music_online_stop | Stops online music playback and cancels any track that is still being loaded. |
| music_online_toggle | music_online_toggle | Opens the online music window, or closes it if it is open. Opening turns online music on if it was off. |
| music_online_volume | music_online_volume [value] | Sets the online music volume (cl_music_online_volume, default 0.70); s_volume stays the master volume. With no value it only reports the current one, and only when online music console status is enabled. |
| mvdchannels | mvdchannels [recordings] | Lists the local server's MVD channels: id, name, map, spectators, players, state and address. With an argument starting with r it lists their MVD recordings instead. |
| mvdconnect | mvdconnect [--name <name>] [--user <user>] [--pass <password>] <address[:port]> | Opens a new relay connection from the local server to a remote MVD/GTV server. Options: --name for the channel name, --user and --pass for login. A second connection to the same address is refused. |
| mvdcontrol | mvdcontrol [--name <name>] [--loop <number>] [chanid] | Changes attributes of an existing MVD channel. In this build only --name (rename) has an effect; the --loop option is accepted but ignored. |
| mvdisconnect | mvdisconnect [--all] [conn_id] | Destroys the given MVD/GTV server connection of the local server, or all of them with --all. |
| mvdkill | mvdkill [chanid] | Destroys the given MVD channel on the local server (the current one if no id is given). |
| mvdpause | mvdpause [chanid] | Pauses or resumes playback of an MVD channel. Works only on channels that play a demo file, not on live relays. |
| mvdplay | mvdplay [--mod <mod>] [--name <name>] [--loop <number>] [--replace <chanid>] [mod/]<filename> [...] | Creates a new MVD channel on the local server and plays one or more demos/<name>.mvd2 files as a playlist. --mod picks the mod folder, --name names the channel, --replace swaps the playlist of an existing channel. |
| mvdrecord | mvdrecord [-z] <filename> | Starts recording the local server's game to demos/<filename>.mvd2 (-z compresses it with gzip). Needs a running server; when the server is relaying an MVD channel, that channel is recorded instead. |
| mvdseek | mvdseek [+-]<timespec / percent>[%] [chanid] | Jumps to a time or percentage in an MVD demo channel: an absolute time, +/- for relative, or a value with % for a file position. Works only on demo channels and not while that channel is being recorded. |
| mvdservers | mvdservers | Lists the local server's MVD/GTV connections with id, name, state, compression ratio, time since the last message and address. |
| mvdskip | mvdskip [chanid] [count] | Skips the given number of maps (default 1) in an MVD demo channel. Works only on demo channels. |
| mvdspawn | mvdspawn | Shuts down the current local game and starts the local server in MVD relay mode, with spectators placed in the waiting room until a channel is available. |
| mvdstop | mvdstop [chanid] | Stops the local MVD recording started with mvdrecord; on a server relaying MVD it stops recording of the given channel. |
| mvdstuff | mvdstuff <command> | Runs a command on behalf of the server's hidden MVD observer client. Works only while that observer is active; otherwise it reports that it is not. |
| net_restart | net_restart | Closes and reopens the network sockets so changed network settings take effect. An active connection is lost. |
| net_stats | net_stats | Prints packet and byte counters for the network layer. |
| network_god_apply | network_god_apply <plan id> | Confirms the current frozen Network God recommendation by its plan id; the change applies to this session and Undo stays available. Requires Guided or Automatic mode; an outdated id is refused. |
| network_god_diagnose | network_god_diagnose | Re-evaluates the connection right now and prints the full Network God report. Does nothing useful while Network God is off, because nothing is collected then. |
| network_god_guardian_cancel | network_god_guardian_cancel | Cancels the connection recovery that Network God has open. If no recovery is open, it just says so. |
| network_god_hud_edit | network_god_hud_edit | Turns HUD edit mode on or off: the overlay window and menu close and the strip can be dragged with the left mouse button; Enter or Escape leaves. Refuses if the HUD is not being drawn. |
| network_god_hud_reset | network_god_hud_reset | Resets the Network God HUD layout to defaults: bottom-right, no offset, scale 1.0, opacity 0.90, horizontal. What the HUD shows is not changed. |
| network_god_info | network_god_info | Prints the Network God report: connection health, ping, loss, send rate, local stalls, other traffic on the computer, active changes, diagnoses and plans. When off or not connected it prints only a short status. |
| network_god_keep | network_god_keep | Opens a confirmation dialog to keep the current Network God change permanently. Only a verified improvement that can be saved qualifies; the setting is written only after you press OK. |
| network_god_open | network_god_open | Opens the Network God window on the Summary tab. If a menu is open, it closes so the window is visible. |
| network_god_open_modules | network_god_open_modules | Opens the Network God window on the Modules tab. If a menu is open, it closes so the window is visible. |
| network_god_report_copy | network_god_report_copy | Copies the current Network God text report to the clipboard. Needs a published snapshot (Network God on and connected). |
| network_god_report_save | network_god_report_save | Saves the current Network God report as .txt and .json files in q2pro-x/network-god/reports/, named by date, time and server. Needs a published snapshot. |
| network_god_reset_session | network_god_reset_session | Clears Network God's session baseline and history and removes its active changes, bringing back your own values. |
| network_god_toggle | network_god_toggle | Opens or closes the Network God window; the open state is remembered. Opening frees the mouse cursor over the window. |
| network_god_traffic_check | network_god_traffic_check | Starts a 30-second check: pause the suspected download or stream right away and Network God reports whether the connection improved. Needs Network God on, continuous traffic monitoring and an active game. |
| network_god_undo | network_god_undo | Removes the change Network God applied for this session, bringing back your own values. If none is active, it says so. |
| network_god_waitinfo | network_god_waitinfo | Developer diagnostic: dumps Network God's internal recommendation queue and guidance state to the console. Not needed by players. |
| network_lab_confirm | network_lab_confirm | Console equivalent of pressing OK in the Network Lab start dialog: arms the synthetic delay, loss and reorder if the request is still valid. Does nothing when no start is awaiting confirmation. |
| network_lab_info | network_lab_info | Prints whether Network Lab is armed, its delay, jitter, loss, reorder and bandwidth settings, and per-direction packet counts and queue sizes. |
| network_lab_start | network_lab_start | Asks to start Network Lab, which deliberately adds synthetic delay, loss and reorder for training. Needs Network God in Diagnosis mode or higher and an active connection; a remote server needs cl_network_lab_allow_remote 1. Opens a confirmation dialog. |
| network_lab_stop | network_lab_stop | Stops Network Lab: held packets are released in their original order and ping adaptation resumes. |
| noclip | noclip | Game command sent to the server: toggles flying through walls. In the standard game it works in single player, or in deathmatch/coop only when the server runs with cheats 1. Needs a connection. |
| notarget | notarget | Game command sent to the server: toggles notarget, so monsters do not notice you. In the standard game it works in single player, or in deathmatch/coop only with cheats 1 on the server. Needs a connection. |
| ogg | ogg <info / play <track> [soft] / stop / next / pause [0 / 1]> | Controls the music player: info shows the current track, play <track> [soft] plays a track, stop stops, next plays the next track, pause [0 / 1] pauses or resumes. Not available during cinematics. |
| opentdm_team_hud_edit | opentdm_team_hud_edit | Turns drag-to-move mode for the OpenTDM Team HUD on or off. Works only while the HUD is active: enabled, in an OpenTDM game, on a known team and not spectating; otherwise it says why. |
| opentdm_team_hud_reset | opentdm_team_hud_reset | Moves the OpenTDM Team HUD back to its default position. |
| opentdm_team_hud_toggle | opentdm_team_hud_toggle | Turns the OpenTDM Team HUD on or off (cl_opentdm_team_hud). When turned on but not yet visible, it says why, for example not on an OpenTDM server. |
| otx | otx <help / status / profiles / start <1..5> / stop / pause / resume / reload / bot <1..5> <skill 0..200> <profile> <seed> / timing <warmup> <grace> <idle> <match> / maps <map> [map ...] / save <slot> / load <slot>> | Controls an OpenTDM-X bot match: status, profiles, start <1..5 bots>, stop, pause, resume, reload, bot, timing, maps, save/load <slot>; otx help shows syntax. On a remote server changes go through rcon and need rcon_password. |
| otx_apply | otx_apply | Sends the bot match settings from the OpenTDM-X launcher (cl_otx_* values) to the running OpenTDM-X server. Needs a compatible server; a remote one is reached through rcon. |
| otx_load | otx_load | Loads the OpenTDM-X session saved under the slot named in cl_otx_slot and applies it to the running server. If loading fails, the active settings are kept. |
| otx_menu | otx_menu | Opens the OpenTDM-X bot match menu. |
| otx_save | otx_save | Saves the running server's OpenTDM-X session settings to bots/sessions/<slot>.otxc in the mod folder, using the slot name from cl_otx_slot. |
| otx_start_local | otx_start_local | Starts a local OpenTDM-X bot match with the launcher settings: disconnects, switches to the opentdm-x mod, loads the first map of the list and applies the settings. Needs the native OpenTDM-X mod installed. |
| passive | passive | Puts the client into passive mode, where it waits to be contacted by a server instead of connecting out. Used behind restrictive NAT. |
| path | path | Prints the current search path: which directories and PAK/PKZ files the engine reads game data from, in priority order. |
| pause | pause | Pauses or resumes the game. It really stops time only when you are alone on your own local server (single player) or watching a demo; on a server relaying an MVD demo it pauses that channel. |
| perf_hud_edit | perf_hud_edit | Turns edit mode for the performance HUD on or off: drag it with the left mouse button, Enter or Escape leaves. |
| perf_hud_info | perf_hud_info | Prints the performance HUD state: whether it is on and visible, interval, opacity, scale, selected sections and groups, and its measurement counters. |
| perf_hud_reset_position | perf_hud_reset_position | Moves the performance HUD back to its default position. |
| perf_hud_toggle | perf_hud_toggle | Turns the performance and budget HUD on or off (cl_perf_hud). |
| pickclient | pickclient <address:port> | Sends a connect invitation from the local server to a client waiting in passive mode at the given address; the port must be given. Needs a running multiplayer server. |
| ping_adapt_info | ping_adapt_info | Prints the ping adaptation state: requested mode, what it is doing now, your real ping and the added delay. |
| ping_adapt_reset | ping_adapt_reset | Resets the ping adaptation controller; packets it was holding are sent in order. |
| pingservers | pingservers | Broadcasts status requests to find and measure servers. The Q2PRO-X server browser does this with a list and filters. |
| play | play <sound> [...] | Plays one or more sound files from the game data — handy for checking that a sound exists and how it sounds. |
| popmenu | popmenu | Closes the topmost open menu page, going back one level. Does nothing when no menu is open. |
| post_avfx_perf_capture | post_avfx_perf_capture <scenario_name> <seconds> [condump_name] [next_command] [warmup_seconds] | Developer benchmark: measures frame times for the given seconds, then prints a report, runs diagnostic dumps and can save a console dump. Not for players. |
| post_avfx_perf_reset | post_avfx_perf_reset | Developer benchmark helper: zeroes the frame-time sampler used by post_avfx_perf_capture. Not for players. |
| post_avfx_perf_snapshot | post_avfx_perf_snapshot | Developer benchmark helper: prints the frame-time report gathered so far. Not for players. |
| post_reflection_ab | post_reflection_ab <warmup_seconds> <segment_seconds> <pairs> <condump> | Developer A/B benchmark: alternates reflections on and off, compares frame times, saves a console dump and then quits the game. Not for players. |
| printall | printall <text> | Prints the given text to every client connected to the local server. Needs a running server. |
| prog | prog | Legacy game command name kept only for completion; it is forwarded to the server. The standard game has no such command and treats it as a chat message. |
| protocol_info | protocol_info | Prints the cl_protocol preference and the protocol actually negotiated for the current connection. It does not modify the connection or serverinfo. |
| pushmenu | pushmenu <menu> | Opens the named menu page on top of the current ones. pushmenu demos opens the demo browser instead of the old demos menu. |
| q2prox_bind_fallback | q2prox_bind_fallback <key> <command> | Internal line format from old generated config files; it is still accepted so those files load quietly, but its binding is ignored. Not for players. |
| q2prox_cfg_defaults | q2prox_cfg_defaults | Resets all Q2PRO-X settings and binds, global and local, to defaults and immediately writes both config files; the previous files are kept in backups/. |
| q2prox_cfg_defaults_demo_visual | q2prox_cfg_defaults_demo_visual | Resets the local visual settings to defaults, keeping binds. During demo playback the demo visual profile is then saved; outside playback follow up with q2prox_cfg_save_demo_visual. |
| q2prox_cfg_defaults_global | q2prox_cfg_defaults_global | Resets the global Q2PRO-X settings and binds to defaults and immediately writes the global config file; the previous file is kept in backups/. |
| q2prox_cfg_defaults_local | q2prox_cfg_defaults_local | Resets the mod-local Q2PRO-X settings and binds to defaults. During demo playback only the settings are reset (binds kept) and the change goes to the demo visual profile. |
| q2prox_cfg_fault_fixture | q2prox_cfg_fault_fixture | Developer test fixture for automated checks of config saving under write failures; not for players. |
| q2prox_cfg_global_prefs_info | q2prox_cfg_global_prefs_info | Prints the state of the unified Q2PRO-X configuration: schema version, the global config file, its version marker and what is stored where. |
| q2prox_cfg_global_prefs_migrate | q2prox_cfg_global_prefs_migrate | Adds missing global settings to baseq2/q2pro-x/q2pro-x.cfg. Values already stored and all key binds are left untouched; nothing is written when configs are read-only. |
| q2prox_cfg_preset_apply | q2prox_cfg_preset_apply | Internal helper used by presets: marks the next config save as intended, so a preset that changes many settings at once is not rejected as an accidental mass reset. Changes nothing by itself. |
| q2prox_cfg_save | q2prox_cfg_save | Writes the binds and global settings plus the local settings of the current mod (or of baseq2 with no mod). During demo playback the demo visual profile is written instead of the local file. |
| q2prox_cfg_save_demo_visual | q2prox_cfg_save_demo_visual | Writes the current local visual settings to baseq2/q2pro-x/demo_visual/q2pro-x.demo.cfg; this profile is applied automatically on the next .dm2/.mvd2 playback. Works outside playback too. |
| q2prox_cfg_save_global | q2prox_cfg_save_global | Writes the key binds and the global Q2PRO-X settings to their config files. |
| q2prox_cfg_save_local | q2prox_cfg_save_local | Writes the local settings of the current mod, or of baseq2 when no mod is active. During demo playback it writes the demo visual profile instead. |
| q2prox_cfg_set | q2prox_cfg_set <cvar> <value> | Internal line format of generated config files: sets a variable whose value had to be escaped (for example it contains a double quote). Not meant to be typed. |
| q2prox_dynamic_lighting_defaults | q2prox_dynamic_lighting_defaults | Resets dynamic light, emissive light and shadow settings (gl_dynamic*, gl_emissive_lights*, gl_shadows*, cl_q2prox_spark_dlight) to their defaults. |
| q2prox_lightning_monster_hit | q2prox_lightning_monster_hit <entity> [killed] | Internal message from the local Q2PRO-X game: draws lightning arcs around a monster hit by the lightning gun in single player. Not meant to be typed. |
| q2prox_modcfg_activate_startup | q2prox_modcfg_activate_startup | Internal startup step: loads the default mod config preset once at launch. Running it again does nothing. |
| q2prox_modcfg_info | q2prox_modcfg_info | Prints the mod config presets from q2pro-x/mod_config_presets.cfg: the current mod, default and configured slots for baseq2, opentdm and openffa, and the preset currently applied. |
| q2prox_modcfg_load | q2prox_modcfg_load <baseq2 / opentdm / openffa> <1..8> | Applies the mod config preset from the given slot. The mod must be the one currently active; preset values are not written into your saved config. |
| q2prox_particle_fixture | q2prox_particle_fixture [case / dump] | Developer test fixture for automated checks of particle families; not for players. |
| q2prox_particle_reset | q2prox_particle_reset <all / page <page> / family <family> / avfx <family> / color family <family> / color avfx <family>> | Resets particle family settings to defaults: all standard families, one menu page, one family, one AVFX family, or only the colour of a family. |
| q2prox_scope_fixture | q2prox_scope_fixture | Developer test fixture for automated checks of where config writers store settings; not for players. |
| q2prox_session_fixture | q2prox_session_fixture <mode> | Developer test fixture for automated checks of session-only settings; not for players. |
| q2prox_singleplayer | q2prox_singleplayer | Starts a new single-player game (skill 1, one player) in the currently active mod. If a remote server had switched your mod, your own mod choice is restored first. |
| quit | quit | Shuts the game down and returns to the desktop immediately. Unsaved single-player progress is lost. |
| r_reload | r_reload | Restarts the renderer without recreating the window: flushes caches and reloads all models, textures and menus. Sounds playing at that moment stop. |
| rcon | rcon <command> | Sends an administrative command to a server, authenticated by the rcon password cvar. It runs on the SERVER, not on your client, and only works if you are the server's administrator. |
| reconnect | reconnect | Connects again to the current process server, or after a new launch to the newest successfully played remote server retained in global history. |
| reconnect_history | reconnect_history | Prints the global history authority, limit, last play context and retained servers with mod and UTC time. |
| reconnect_history_clear | reconnect_history_clear | Clears the global recent-server history without changing its configured limit. Server-originated use is refused. |
| reconnect_history_fixture | reconnect_history_fixture | Developer test fixture for automated checks of the reconnect history storage; not for players. |
| reconnect_startup_probe | reconnect_startup_probe | Developer probe for automated checks: prints the startup state of auto-reconnect, the open menu and the intro. Not for players. |
| record | record [-zes] <filename> | Records the current game into demos/<filename>.dm2 until stop. |
| remotemode | remotemode <address> <password> | Switches the console to remote mode for the given server and rcon password: lines you type there are sent to that server as remote commands. Opens the console if it is closed. |
| reset | reset <variable> | Restores a single console variable to its built-in default value. |
| resetall | resetall | Restores ALL console variables to their built-in defaults at once. Your current settings are lost unless they were saved to a file first. |
| resume | resume | Continues writing frames into a demo that was suspended. |
| rocketdiag | rocketdiag <start / mark / stop> | Diagnostic trace for developers: start writes a rocket event log to logs/ (stops by itself after 10 minutes or 16 MB), mark adds a marker, stop saves it. Prediction settings are not changed. |
| s_gain_info | s_gain_info | Prints how the final sound volume is formed: s_volume, the demo volume multiplier (when a demo plays) and the runtime gain (idle fade or mute while the window is inactive), and the result. |
| s_q2px_fade_fixture | s_q2px_fade_fixture | Developer test fixture for automated checks of the sound fade during map loading; not for players. |
| save | save <directory> | Saves the current single-player game into the named save directory, replacing what was there. Not possible in deathmatch, while dead, or when the game does not support saves. |
| say | say <text> | Sends the rest of the line to every player on the server. |
| say_team | say_team <text> | Sends the rest of the line to your team only, in mods that have teams. |
| screenshot | screenshot [format] | Saves a screenshot into screenshots/, numbering the file automatically. The format follows the optional argument, otherwise the screenshot format cvar. Format-specific variants exist as separate commands. |
| screenshotjpg | screenshotjpg [name] [quality] | Saves a JPEG screenshot. The optional second argument is the quality. |
| screenshotjxr | screenshotjxr [name] | Saves a high-dynamic-range screenshot in JPEG XR, which keeps HDR brightness that ordinary formats clip away. |
| screenshotjxr_atswap | screenshotjxr_atswap | Developer HDR diagnostic (Windows): captures the next frame exactly as presented into a .jxr file, for comparing brightness with a normal capture. Not for players. |
| screenshotjxr_raw | screenshotjxr_raw [name] | Developer HDR capture (Windows): saves a .jxr screenshot of the raw game output without the SDR white-level adjustment. Not for players. |
| screenshotpng | screenshotpng [name] [compression] | Saves a lossless PNG screenshot. The optional second argument is the compression level. |
| screenshottga | screenshottga [name] | Saves an uncompressed TGA screenshot. Largest files, no quality loss. |
| seek | seek [+-]<timespec / percent>[%] | Moves demo playback to an absolute time or percentage, or by a relative offset when the value starts with + or -. |
| serverbrowser_connect | serverbrowser_connect | Connects to the server selected in the server browser and closes the browser. Does nothing if no server is selected or it is marked as failed. |
| serverbrowser_copyaddr | serverbrowser_copyaddr | Copies the address of the server selected in the server browser to the clipboard. Does nothing if no server is selected. |
| serverbrowser_history_fixture | serverbrowser_history_fixture | Developer test fixture for automated checks of the server browser history; not for players. |
| serverbrowser_migration_fixture | serverbrowser_migration_fixture | Developer test fixture for automated checks of server browser data migration; not for players. |
| serverbrowser_network_god | serverbrowser_network_god | Hides the server browser if it is open and opens the Network God overlay, which then takes the keyboard and mouse. |
| serverbrowser_open | serverbrowser_open | Opens the server browser on the source set in cl_serverbrowser_default_source; if the list is empty or the source changed, it queries the servers. With cl_serverbrowser_ui 0 it opens the classic servers menu instead. |
| serverbrowser_open_legacy | serverbrowser_open_legacy | Opens the classic built-in servers menu instead of the new server browser, whatever cl_serverbrowser_ui is set to. |
| serverbrowser_open_modern | serverbrowser_open_modern | Always opens the new server browser, ignoring cl_serverbrowser_ui. If the list is empty or the source changed, it queries the servers. |
| serverbrowser_refresh | serverbrowser_refresh | Re-queries every server of the current browser source (master list, favorites, custom source or play history). |
| serverbrowser_refresh_selected | serverbrowser_refresh_selected | Re-queries only the server selected in the browser and updates its ping and info. Does nothing if no row is selected. |
| serverbrowser_setrcon | serverbrowser_setrcon | Sets rcon_address to the address of the server selected in the browser and reminds you to set rcon_password and then use rcon. Does nothing if no reachable server is selected. |
| serverbrowser_stop_fixture | serverbrowser_stop_fixture | Developer test fixture for automated checks of the server browser's stop button; not for players. |
| serverbrowser_toggle | serverbrowser_toggle | Hides the new server browser if it is open, otherwise opens it; on opening it queries the servers if the list is empty or the source changed. Handy for a key bind. |
| serverinfo | serverinfo | Prints all settings that this game shares as server info (map, game mode, limits and so on) as key and value pairs. |
| serverstatus | serverstatus [address] | Asks a server for its settings and player list. With no address, asks the server you are connected to. |
| set | set <variable> <value> [u / s] | Assigns a value to a console variable, creating it if it does not exist. The optional trailing flag marks the new variable as userinfo (u) or serverinfo (s). |
| seta | seta <variable> <value> | Like set, but also marks the variable as archived so it is saved into written configuration files. |
| setmaster | setmaster [address ...] | Dedicated server only: replaces the master server list with the given addresses, turns public on and sends a heartbeat soon. In the normal client it only prints that masters are for dedicated servers. |
| sets | sets <variable> <value> | Sets a console variable, creating it if needed, and marks it as server info so it is shown to players querying the server, e.g. sets admin Bob. |
| setu | setu <variable> <value> | Sets a variable and marks it USERINFO: its value is part of the player info string sent to the server, so servers and other players can see it. Use it for things a server must know about you (name, skin, rate) — not for ordinary local settings. |
| shader_cache_clear | shader_cache_clear | Deletes the saved compiled shader files and resets the cache counters. Shaders are then compiled again from source as they are needed, which can cause short stutters at first. |
| shader_cache_info | shader_cache_info | Prints whether the saved shader cache is supported and enabled, its folder, and how many shaders were loaded from it, compiled from source or saved, plus the last error. |
| shader_prewarm_dump_longest | shader_prewarm_dump_longest | Developer diagnostic: writes the source of the slowest shader from the last prewarm pass to a file for analysis; not for players. |
| shader_prewarm_info | shader_prewarm_info | Prints the shader prewarm mode, why the last run was skipped if it was, when and how long it last ran, and how many shaders were compiled, already cached or failed. |
| shader_prewarm_longest_info | shader_prewarm_longest_info | Developer diagnostic: lists the slowest shaders compiled in the last prewarm pass with their timings and state flags; not for players. |
| shader_prewarm_now | shader_prewarm_now | Schedules a shader prewarm on the next suitable frame so effects do not stutter on first use. Follows gl_shader_prewarm: if prewarm is off or not needed, it prints why and does nothing. |
| showip | showip | Prints this computer's host name and the local IP addresses it resolves to (IPv6 too when net_enable_ipv6 allows it). |
| sizedown | sizedown | Lowers viewsize by 10, making the game view smaller. Meant for a key bind. |
| sizeup | sizeup | Raises viewsize by 10, making the game view larger. Meant for a key bind. |
| skins | skins | Reloads the model and skin of every player on the level and prints which model and skin each one got. Works only while on a level. |
| sky | sky <basename> [rotate] [axis x y z] | Replaces the sky on the current map, with optional rotation speed and axis, e.g. sky unit1_ 10. An empty name "" restores the map's own sky. Needs a loaded map. |
| snd_restart | snd_restart | Reinitialises audio so latched sound settings and a changed output device take effect. |
| snd_retract_fixture | snd_retract_fixture | Developer test fixture for automated checks: verifies that a queued weapon sound can be withdrawn before it plays. Needs started sound; not for players. |
| softlink | softlink [name target] | Creates a symbolic link between virtual quake paths, effective for reading only. With no arguments it lists existing symbolic links. |
| softunlink | softunlink <name> | Removes a link created by softlink. No file on disk is deleted. |
| soundactive | soundactive | Prints the sound channels playing now: reserved AVFX ambience layers, audible one-shot sounds and looping sounds. Useful when rain, wind or snow ambience seems stuck. Needs started sound. |
| soundinfo | soundinfo | Prints the active sound backend, output rate, channel count and buffer layout. |
| soundlist | soundlist | Prints the sounds currently loaded into memory with their format details. |
| sp_avfx_snake_combat_info | sp_avfx_snake_combat_info | Developer diagnostic for snake combat in local single player: prints gate state, session and renderer counters; not for players. |
| sp_dm_start_training | sp_dm_start_training | Starts a local DM training game on the map named in cl_sp_mutate_dm_custom_map: turns off deathmatch and coop, enables training and scoring, then loads the map. Refuses an empty or suspicious map name. |
| sp_geo_deform_apply | sp_geo_deform_apply | Rebuilds the map's visible surfaces with the current geometry deform settings. If deform is off or not allowed (only local single player), it rebuilds the normal map. Needs a loaded map; collisions are not changed. |
| sp_geo_deform_info | sp_geo_deform_info [verify] | Prints the world geometry deform settings, whether it is allowed right now and why, and the last rebuild results. With verify it also checks that the last build was untouched when deform was off. |
| sp_monster_avfx_contacts_info | sp_monster_avfx_contacts_info | Prints whether monster contact effects (snow, puddles and so on) are on and allowed now, how many monsters are tracked, and contact counts for the last frame and in total. Works only in local single player. |
| sp_monster_variants_info | sp_monster_variants_info | Prints the monster variant settings (size range, color, shape and asymmetry strength, bosses) and whether variants are allowed right now and why. |
| startup_intro_info | startup_intro_info | Prints the state of the startup intro: whether it can play on this start, why it stopped, which clip and language were chosen, whether its file is valid and whether music plays. |
| startup_intro_trace_info | startup_intro_trace_info | Developer diagnostic: prints the recorded frame trace of the startup intro used to investigate black-screen reports; not for players. |
| status | status [d / l / p / s / t / v] | Prints the current map and the players on the local server. A letter shows other tables: d downloads, l lag, p protocols, s settings, t time, v versions. Needs a running server. |
| stop | stop | Finishes the demo being recorded and closes its file. |
| stopsound | stopsound | Silences every currently playing sound channel at once. |
| strings | strings [ext] | Prints the OpenGL vendor, renderer, version, texture limits and pixel format. With any extra argument it also lists all OpenGL extensions. |
| stuff | stuff <userid> <raw text> | Sends raw command text to one player's client to run on their side, e.g. stuff 2 echo hi. Needs a running local server. |
| stuffall | stuffall <raw text> | Sends raw command text to every connected player's client to run on their side. Needs a running local server. |
| stuffcvar | stuffcvar <userid> <variable> [...] | Asks one player's client to report the values of the listed console variables back to the server. Needs a running local server. |
| suspend | suspend | Temporarily stops writing frames into the demo without closing it. |
| sv | sv <command> [args] | Passes the arguments to the loaded game module's server commands, e.g. sv addip, sv listip; sv writeip saves the IP filter list to a file. Needs a loaded game. |
| text | text <commands> | Inserts the rest of the line into the command buffer right away, so it runs as commands next. Useful in scripts and aliases. |
| timerefresh | timerefresh [noflip] | Renderer benchmark: spins the view a full circle over 128 frames and prints the time and frame rate. With any argument it renders without page flipping. Needs a loaded map. |
| toggle | toggle <variable> [values] | Flips a variable between 0 and 1, or cycles it through an explicit list of values given after the name. Made for binds. |
| toggleconsole | toggleconsole | Shows the console if it is hidden and hides it if it is shown. This is what the tilde key is bound to by default. |
| togglemenu | togglemenu | Acts like Escape: closes the console, the open menu or chat input; otherwise opens the in-game menu, or the main menu when not in a game. |
| translate_reload | translate_reload | Re-reads the translation keys file baseq2/q2pro-x/translate.local used by the chat translation command. |
| translate_status | translate_status | Prints the chat translation provider, its address, whether an API key is configured and whether the keys file is loaded; also notes providers that are only stubs in this build. |
| trigger | trigger [<command> <match>] | Runs a command whenever an incoming message matches the pattern (wildcards allowed), e.g. trigger "say gg" "*wins*". With no arguments lists current triggers. |
| ui_avfx_contact_load_global_custom | ui_avfx_contact_load_global_custom <slot> | Menu button helper: loads the player contact effects preset from the given global slot, or shows a dialog if the slot is empty. |
| ui_avfx_contact_rename_global_custom | ui_avfx_contact_rename_global_custom <slot> | Menu button helper: starts renaming the player contact effects preset in the given global slot. |
| ui_avfx_contact_save_global_custom | ui_avfx_contact_save_global_custom <slot> | Menu button helper: saves the current player contact effects to the given global slot, asking first if it would overwrite or duplicate a name. |
| ui_avfx_load_custom | ui_avfx_load_custom <slot> | Menu button helper: loads the AVFX preset from the given slot of the current mod, or shows a dialog if the slot is empty. |
| ui_avfx_load_global_custom | ui_avfx_load_global_custom <slot> | Menu button helper: loads the AVFX preset from the given global slot, or shows a dialog if the slot is empty. |
| ui_avfx_load_global_music_custom | ui_avfx_load_global_music_custom <slot> | Menu button helper: loads the music AVFX preset from the given global slot, or shows a dialog if the slot is empty. |
| ui_avfx_load_music_custom | ui_avfx_load_music_custom <slot> | Menu button helper: loads the music AVFX preset from the given slot of the current mod, or shows a dialog if the slot is empty. |
| ui_avfx_rename_custom | ui_avfx_rename_custom <slot> | Menu button helper: starts renaming the AVFX preset in the given slot of the current mod. |
| ui_avfx_rename_global_custom | ui_avfx_rename_global_custom <slot> | Menu button helper: starts renaming the AVFX preset in the given global slot. |
| ui_avfx_rename_global_music_custom | ui_avfx_rename_global_music_custom <slot> | Menu button helper: starts renaming the music AVFX preset in the given global slot. |
| ui_avfx_rename_music_custom | ui_avfx_rename_music_custom <slot> | Menu button helper: starts renaming the music AVFX preset in the given slot of the current mod. |
| ui_avfx_save_custom | ui_avfx_save_custom <slot> | Menu button helper: saves the current AVFX settings to the given slot of the current mod, asking first if it would overwrite or duplicate a name. |
| ui_avfx_save_global_custom | ui_avfx_save_global_custom <slot> | Menu button helper: saves the current AVFX settings to the given global slot, asking first if it would overwrite or duplicate a name. |
| ui_avfx_save_global_music_custom | ui_avfx_save_global_music_custom <slot> | Menu button helper: opens the music link dialog to save a music AVFX preset to the given global slot. |
| ui_avfx_save_music_custom | ui_avfx_save_music_custom <slot> | Menu button helper: opens the music link dialog to save a music AVFX preset to the given slot of the current mod. |
| ui_lighting_load_custom | ui_lighting_load_custom <slot> | Menu button helper: loads the lighting preset from the given slot, or shows a dialog if the slot is empty. |
| ui_lighting_rename_custom | ui_lighting_rename_custom <slot> | Menu button helper: starts renaming the lighting preset in the given slot. |
| ui_lighting_save_custom | ui_lighting_save_custom <slot> | Menu button helper: saves the current lighting settings to the given slot, asking first if it would overwrite or duplicate a name. |
| ui_network_god_auto_confirm | ui_network_god_auto_confirm | Menu helper: opens the confirmation dialog for switching Network God to Automatic mode; Cancel returns to the current mode. |
| ui_network_god_keep_confirm | ui_network_god_keep_confirm | Menu helper: opens the confirmation dialog for keeping a Network God setting permanently; only OK saves it. |
| ui_network_god_lab_confirm | ui_network_god_lab_confirm | Menu helper: opens the confirmation dialog before starting the Network God lab; only OK starts it. |
| ui_visibility_load_custom | ui_visibility_load_custom <slot> | Menu button helper: loads the visibility preset from the given slot, or shows a dialog if the slot is empty. |
| ui_visibility_rename_custom | ui_visibility_rename_custom <slot> | Menu button helper: starts renaming the visibility preset in the given slot. |
| ui_visibility_save_custom | ui_visibility_save_custom <slot> | Menu button helper: saves the current visibility settings to the given slot, asking first if it would overwrite or duplicate a name. |
| unalias | unalias <name> | Removes a previously created alias. |
| unbind | unbind <key> | Clears the command bound to a single key. |
| unbindall | unbindall | Clears every key binding at once, including movement and weapon keys. The game becomes unplayable until keys are bound again or a config is loaded. |
| undraw | undraw <name> | Removes an on-screen item added with draw, by its name; undraw all removes every one. |
| unignorenick | unignorenick <nick> | Removes a filter previously added with ignorenick. |
| unignoretext | unignoretext <match> | Removes a filter previously added with ignoretext. |
| unlink | unlink <name> | Removes a link created by link. Nothing on disk is deleted — despite the name, this is not a file deletion command. |
| untrigger | untrigger [all / <command> <match>] | Removes a trigger added with trigger, given the same command and pattern; untrigger all removes every trigger. With no arguments lists current triggers. |
| use | use <item> | Asks the server to use or switch to the named item, e.g. use Super Shotgun. The client also notes the switch so the weapon change can be predicted. |
| userinfo | userinfo | Prints your userinfo string — the settings servers and other players can see, such as name, skin and rate. |
| vid_oled_info | vid_oled_info | Prints whether OLED screen protection is on, whether bar and idle protection apply right now and why not, their current phase and bar color. |
| vid_restart | vid_restart | Destroys and recreates the render context so latched video settings take effect. The screen goes black for a moment and every renderer resource is reloaded. |
| viewpos | viewpos | Prints your current view position (x y z) and facing direction in degrees. |
| vis_perf | vis_perf | Developer performance snapshot of item highlighting: prints its gates, overlay settings and accumulated timing counters; not for players. |
| vis_perf_reset | vis_perf_reset | Developer helper: resets the item highlighting performance counters shown by vis_perf; not for players. |
| voice_deafen_toggle | voice_deafen_toggle | Switches vc_deafen on or off: while on you hear nothing from voice chat. Prints the new state. |
| voice_defaults | voice_defaults | Resets the voice chat settings to defaults; this also turns voice chat off and ends any active voice session. vc_relay is left as is. |
| voice_join | voice_join | Connects to the voice chat room. Needs vc_enable 1, otherwise it only prints that voice is disabled. |
| voice_leave | voice_leave | Disconnects from the voice chat room. Does nothing if you are not connected. |
| voice_lifecycle_fixture | voice_lifecycle_fixture | Developer test fixture for automated checks of voice chat connection handling, run offline; not for players. Refused while a voice session is active. |
| voice_mic_list | voice_mic_list | Prints the selected microphone, the Windows default one and all available capture devices with numbers for voice_mic_pick. |
| voice_mic_pick | voice_mic_pick <index> | Selects the voice chat microphone by its number from voice_mic_list; 0 follows the Windows default. Without a number it shows the list. |
| voice_mic_toggle | voice_mic_toggle | Switches vc_mic_enable on or off and, when connected, opens or closes the microphone right away. Prints the new state. |
| voice_reconnect | voice_reconnect | Ends the current voice session, if any, and joins voice chat again from scratch. Needs vc_enable 1. |
| voice_status | voice_status | Prints the voice chat state, room and game server, microphone settings and talk mode, the participants with who is speaking or muted, and the last error. |
| voice_toggle | voice_toggle | Leaves voice chat if you are connected or connecting, otherwise joins it (needs vc_enable 1). |
| wait | wait [frames] | Delays the rest of the command buffer by the given number of client frames (1 if omitted). Used inside aliases to sequence commands that must not run in the same frame. |
| wave | wave <0-4> | Asks the server to play a player gesture: 0 flipoff, 1 salute, 2 taunt, 3 wave, 4 point. In the standard game it does not work while crouching. |
| weapnext | weapnext | Asks the server to switch to the next weapon you have. The client also notes the switch for weapon change prediction. |
| weaponfx_info | weaponfx_info | Prints which weapon effect parts are shown: own and other players' shots, muzzle flashes, trails, impacts, explosions and hit markers, plus the older settings that still apply. Sounds are not affected. |
| weapprev | weapprev | Asks the server to switch to the previous weapon you have. The client also notes the switch for weapon change prediction. |
| whereis | whereis <path> [all] | Reports which directory or PAK file actually provides a given game path — the answer to "why am I getting the wrong texture". |
| win32_input_lifecycle_fixture | win32_input_lifecycle_fixture [mode] | Developer test fixture for automated checks of Windows window and input handling; not for players. |
| writeconfig | writeconfig [-a / --aliases] [-b / --bindings] [-c / --cvars] [-m / --modified] <filename> | Writes the current configuration into configs/<filename>.cfg. With no content flags what it saves depends on cl_writeconfig_full: 0 (the default) saves key bindings and archived cvars, as it always has; 1 saves the same thing as an explicit -b -m -a, meaning every binding, every alias of yours and every cvar whose value differs from its default. Explicit flags always win: if you write -a, -b, -c or -m yourself you get exactly that, and the setting is ignored. This is a manual, legacy-style CFG export — it is NOT the same thing as Q2PRO-X global/local preset persistence, which has its own storage. |
| writeconfig_fixture | writeconfig_fixture [-a] [-b] [-c] [-m] <filename> | Developer test fixture: runs the same export as writeconfig into a separate test file, for automated checks; not for players. |
| z_stats | z_stats | Prints how much memory the engine has allocated, in bytes and blocks, for each kind of data, plus the total. |
| zoom_info | zoom_info | Prints the current zoom state: whether zoom is held and how far it has ramped, base and zoomed field of view, sensitivity scaling and walk-while-zoomed settings. |