Q2PRO-X 1.6 Final by ly
Network play
Project author: ly
Server rate, ping, prediction and movement smoothing.
English edition • Q2PRO-X 1.6 Final by ly • November 7, 2026
Contents
The entries are links: click one to jump to that section.
Weapon prediction and confirmed effects
The single online-play setup page
3. Advanced Network: client UDP port autoprobe
5. Weapon and player prediction
8. Visibility Highlights in live play
11. Russian input, transliteration, and /en translation
12.5. When adaptation stays out of the way
12.6. How often the target is recomputed
12.8. Returning to ordinary play
12.9. How it relates to the other systems
12.10. Mod and server boundaries
12.11. The complete setting list
13. Advanced network and the port scanner
15. Mod-dependent settings and skin override
Chat translation through the API
Cvar Browser: complete lists and keyboard layouts
Architectural visual simplification
Connecting without freezing the interface
Command sending and player movement
Q2PRO-X network play
This guide covers everything that belongs to online play: connecting and the server browser, the advanced network settings, Ping Adaptation, LagHax, player and weapon prediction, weapon-part visibility, volumes and highlights.
| Connection diagnosis — what is wrong, what to do about it and how to verify the result — has a guide of its own: Network God. Start there if the game feels bad and you do not know why. |
|---|
Weapon prediction and confirmed effects
Weapon prediction gives immediate local firing feedback, then matches it to events confirmed by the server so that an impact does not play twice. The server still decides damage and successful hits. The optional rocketdiag start|mark|stop diagnostics are off by default and are not needed for normal play.
Server history
The modern browser has a History tab immediately after Favorites. It is shared across mods and stores address, time and mod in baseq2/q2pro-x/reconnect_history.json. The default is 10 unique servers; the range is 0–100, with 0 disabling history. Rejoining the already latest server does not change its record.
After a fresh launch, reconnect can use the last stored server. Optional automatic connection is off by default: it applies after remote online play, skips the intro/menu and yields to explicit startup commands. Single-player, a locally hosted server and demo playback retain normal startup.
| Variable | Accepted values | Description |
|---|---|---|
| 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. |
1. Where to find the settings
| What you are setting | Menu path |
|---|---|
| Online play setup (the single entry point) | Main menu → Online Play Setup |
| Network God | Main menu → Online Play Setup → Network God |
| Ping Adaptation | Main menu → Online Play Setup → Ping Adaptation |
| LagHax | Main menu → Online Play Setup → Laghax |
| Advanced network and the port scanner | Main menu → Online Play Setup → Advanced Network |
| Movement and view bob | Main menu → Online Play Setup → Movement |
| Weapon prediction | Main menu → Online Play Setup → Weapon Predicts |
| Weapon-part visibility | Main menu → Options → Advanced Q2PRO-X → Weapon Parts Visibility |
| Server browser | Main menu → Options → Advanced Q2PRO-X → Server Browser |
| Item timers | Main menu → Online Play Setup → Live Item Timers |
| Mod command overlay | Main menu → Online Play Setup → Mod Command Overlay |
The single online-play setup page
Online Play Setup
| Type | Section | Row | Variable or target | What it does |
|---|---|---|---|---|
| Navigation | Hit feedback... | q2prox_hitsound | Enable hit feedback, choose its sound and volume. | |
| Section | Network & Predict | Network & Predict | ||
| Navigation | Network & Predict | Q2PRO-X Network God... | q2prox_network_god | One place for the whole network: what is wrong, what to do about it, protection, reports and every network module. |
| Navigation | Network & Predict | Laghax... | q2prox_laghax | Adaptive prediction-error smoothing (laghax), HUD, weights. |
| Navigation | Network & Predict | Ping adaptation... | q2prox_ping_adaptation | Hold an absolute target ping, manually or following the opposing players. |
| Navigation | Network & Predict | Network & port scanner... | q2prox_advanced_network | Bandwidth, packet rates and the client UDP port scanner. The scanner briefly owns the connection while it runs, and ping adaptation stands down for its duration. |
| Navigation | Network & Predict | Server update rate... | q2prox_server_rate | How often the server sends you the world: classic 10 updates per second, or up to 60 on a server that supports it. Not your rendering FPS. |
| Navigation | Network & Predict | Movement & player... | q2prox_movement | FPS-independent movement timing + local player prediction. |
| Slider | Network & Predict | Movement view bob | cl_viewbob | How much of the walking movement stays in your view: 1.00 = normal, 0.00 = neither the up-and-down bounce nor the tilt when running and strafing. Works on any server, including someone else's. A server that sends no movement effect is left alone. Applies immediately. |
| Navigation | Network & Predict | Weapon predicts... | q2prox_predict | Weapon predict toggles (ghost rockets, rail, shotgun, HB, etc.). |
| Section | Visibility & Sound | Visibility & Sound | ||
| Navigation | Visibility & Sound | Visibility & highlights... | q2prox_vis | Item / player highlighting for readability. |
| Navigation | Visibility & Sound | Item animation... | q2prox_item_jelly | Pickups on the map hop softly like jelly. Off by default; a pickup behind cover never moves. |
| Navigation | Visibility & Sound | Visual simplification... | q2prox_world_style | Simpler walls, floors and doors for a clearer picture; players, monsters, weapons and items keep their settings. |
| Navigation | Visibility & Sound | Item respawn timers... | q2prox_live_item_timers | Live respawn timers for strategic items: manual + own-pickup countdowns on a HUD strip. |
| Navigation | Visibility & Sound | Sound... | g_sound | OpenAL profile, HRTF, reverb, weapon / player volumes. |
| Navigation | Visibility & Sound | Frag messages... | q2prox_fragfeed | Highlight your opponent in confirmed frag messages; optional kill and death HUD notifications. |
| Section | Player & Files | Player & Files | ||
| Navigation | Player & Files | Skins & models... | g_skins | Player identity, both player-setup pages, skin restrictions, local per-mod overrides, model settings and downloads. |
| Navigation | Player & Files | Downloads... | g_downloads | Per-type download permissions (maps, skins, models, sounds) and HTTP downloads. |
| Navigation | Player & Files | Mod config profiles... | q2prox_modcfg | Choose per-mod config profiles. A profile changes the live controls and settings without overwriting Q2PRO-X managed configs. |
| Navigation | Player & Files | Mod command overlay... | q2prox_modhelp | Mod command overlay (OpenTDM/OpenFFA). |
| Navigation | Player & Files | Demos | demos | Built-in demo browser: pick and play back recorded .dm2/.mvd2 demo files. |
2. Server Browser
The modern server browser is an overlay for finding and joining servers.
Main settings:
Sources:
Practical baseline:
3. Advanced Network: client UDP port autoprobe
Some routes/providers/servers can behave differently depending on the client's UDP source port. Q2PRO-X 1.6 Final by ly includes an experimental client-port autoprobe.
Main cvar:
cl_net_clientport_autoprobe
Modes:
Related cvars:
RTT mode
RTT mode opens independent probe sockets, sends challenges, and selects the candidate by reply RTT. It is fast and safe, but its metric is not identical to the gameplay ping shown in the HUD.
XQ3A mode
XQ3A mode is intentionally intrusive: during an active session, the socket may rebind up to 20 times. While the scan runs, the player can feel jitter. Treat it as a diagnostic tool, not a default for every match.
Recommendation:
4. Laghax
cl_laghax controls network-feel smoothing.
Modes:
Related settings:
Laghax does not move the server closer and does not change server authority.
It changes local presentation of networked movement so some micro-jitter feels smoother.
For testing, enable the HUD, use adaptive mode, play for a few minutes, and compare against off. If it feels too soft, lower the window/weights or use fixed/off.
5. Weapon and player prediction
Weapon predict draws part of the local firing feedback before server confirmation arrives. This matters on high ping: you press fire, and the client immediately shows local feedback.
Master:
Per-weapon toggles:
Player predict:
Adaptive ping gate:
When cl_predict_ping_min_ms is above 0, predicts are gated by ping and dwell time. This avoids keeping the extra predicted layer active on low ping where it may be unnecessary.
6. Weapon Parts Visibility
This page controls visibility of weapon FX parts, separately from prediction.
Master:
Groups:
This is useful when you want gameplay feedback but less visual noise, for example disabling explosion particles while keeping hit markers.
Command:
7. OpenTDM Team HUD
OpenTDM Team HUD is a passive teammate-state HUD for OpenTDM. It does not require teammates to run active commands: the client decodes already-visible information and presents it in a separate HUD.
Main settings:
Position can be edited through drag mode:
8. Visibility Highlights in live play
For online play, the important player highlight modes are:
Related cvars:
For TDM, start with team, friendly cyan, enemy red. For duel, use duel.
For FFA, use random FFA or model.
9. Weapon and player volumes
The sound volumes page lets you tune groups independently:
For network play this matters as much as graphics: explosions that are too loud can hide footsteps, and pickups that are too quiet hurt map control.
Detailed sound theory is in:
Q2PRO-X_1.6_Sound_Guide_EN.docx
10. Practical profiles
Clean competitive baseline
High ping test
low ping;
Problem route diagnostics
not during an important match.
11. Russian input, transliteration, and /en translation
Q2PRO-X 1.6 Final by ly covers two separate chat problems: safe Russian input/transliteration for Quake II console/chat, and a separate /en command that translates Russian text to English before you send it.
| Setting / command | Meaning |
|---|---|
| cl_console_utf8_ru | Russian display localization. It affects UI/hints rendering, but it is not the Russian-input switch. |
| cl_translit_x_style 0 | Transliterate Russian х as kh. Default. |
| cl_translit_x_style 1 | Transliterate Russian х as h if that style is preferred. |
| /en <text> | Asynchronously translates Russian text to English through the active provider and replaces the current prompt. You still press Enter manually. |
| /en -team <text> | Same workflow, prepared for team chat. |
| translate_status | Prints provider, URL, timeout, and key availability. |
| translate_reload | Reloads the local translation secret/config file. |
Practical workflow
1. Type /en привет, идём на railgun.
1. Wait for the prompt to be replaced with the English result.
1. Review the text and press Enter if you want to send it.
1. For team chat, use /en -team ... or your usual say_team workflow if it is already in the prompt.
Troubleshooting
12. Ping Adaptation
12.1. Why it exists
Ping Adaptation deliberately adds delay to outgoing game data so that your final ping stays near a chosen value.
It exists for exactly two things:
| It does not reduce ping. The value sets the final ping, not the addition. With a real 10 ms and a target of 30 ms, about 20 ms is added; if the real ping is already above the target, nothing is added. |
|---|
The layer creates no packet loss and is compatible with LagHax, prediction, fixed movement and the existing movement-feel modes.
12.2. Where it lives
Menu path: Main menu → Online Play Setup → Ping Adaptation
Ping Adaptation
| Type | Section | Row | Variable or target | What it does |
|---|---|---|---|---|
| Section | Mode | Mode | ||
| List | Mode | Adaptation mode | cl_ping_adapt_mode | Hold an absolute target ping. Off adds nothing. Manual holds your own target; Automatic takes it from the source below. The value is the FINAL ping, not an addition: real 10 with a target of 30 adds about 20, and a real ping already above the target adds nothing. Applies immediately. [Off / Manual / Automatic] |
| List | Mode | Automatic source | cl_ping_adapt_auto_source | Where Automatic takes its target: a configured range, or the active opposing players (OpenTDM: the other team; OpenFFA: the other active players). Spectators and you are always excluded. Applies immediately. [Range / Players] |
| Section | Manual | Manual | ||
| Slider | Manual | Target ping | cl_ping_adapt_manual_ms | Absolute target ping for Manual mode. A target below your real ping simply adds nothing. Applies immediately. |
| Section | Automatic range | Automatic range | ||
| Slider | Automatic range | Minimum | cl_ping_adapt_range_min_ms | Lower bound of the band. Adaptation runs only while your real ping is below this value; one target is then chosen inside the band and held stable. Applies immediately. |
| Slider | Automatic range | Maximum | cl_ping_adapt_range_max_ms | Upper bound of the band. Both bounds are additionally limited by the maximum final ping below. Applies immediately. |
| Section | Players | Players | ||
| Slider | Players | Check interval | cl_ping_adapt_check_interval_ms | How often the target and the opposing roster are recomputed. Server requests are combined and never sent more than once per second. Applies immediately. |
| Slider | Players | Offset | cl_ping_adapt_offset_ms | Signed offset from the opponents' ping. Target = opponent ping + offset. Example: opponent 40 with offset -10 gives a target of 30. Applies immediately. |
| Slider | Players | Minimum difference | cl_ping_adapt_min_difference_ms | Adaptation starts only when your real ping is below the opponents' ping by at least this much. Example: opponent 40 and 15 here leaves a real ping of 30 alone. Applies immediately. |
| Slider | Players | Maximum final ping | cl_ping_adapt_max_ms | Hard ceiling for the final target in Automatic mode. Applies to both automatic sources and never to Manual. Applies immediately. |
| Section | Service | Service | ||
| Toggle | Service | Event log | cl_ping_adapt_debug | Log adaptation events to the console: mode changes, target changes, roster updates. Never prints per packet. Applies immediately. |
| Navigation | Service | Print information | ping_adapt_info | Print the full current state: real and adapted ping, target, added delay, opposing players and queue. |
| Navigation | Service | Reset controller | ping_adapt_reset | Restart measurement and roster tracking without changing any setting. Packets already waiting are sent in order first. |
12.3. Three modes
| Mode | What it does |
|---|---|
| Off | Nothing is added; this is the default |
| Manual | Holds your own target |
| Automatic | Takes the target from the selected source |
12.4. Two automatic sources
Range. You set a lower and an upper bound. Adaptation works only while the real ping is below the lower bound; one target is then chosen inside the band and held steadily.
Players. The target is taken from the active opponents:
The target is computed as "the opponent's ping plus the offset". The offset is signed: with an opponent at 40 ms and an offset of −10 ms, the target is 30 ms.
12.5. When adaptation stays out of the way
The Minimum difference setting protects you from needless intervention: adaptation engages only when your real ping is lower than the opponents' by at least that much. With an opponent at 40 ms and a minimum difference of 15 ms, your real ping of 30 ms is left as it is.
Maximum final ping is a hard ceiling on the target in automatic mode. It applies to both automatic sources and never to manual mode: you set a manual target yourself and you own it.
12.6. How often the target is recomputed
The check interval decides how often the target and the opponent roster are recomputed. Requests to the server are coalesced and never sent more than once per second: adaptation does not create a storm of queries.
12.7. Observing and verifying
| Command | What it shows |
|---|---|
| ping_adapt_info | The complete current state: the real and adapted ping, the target, the added delay, the opponents and the queue |
| ping_adapt_reset | Restarts the measurement and roster tracking without changing settings; packets already queued are sent in order first |
A separate switch logs adaptation events to the console — mode changes, target changes, roster updates — and never prints per packet:
| Variable | Accepted values | Description |
|---|---|---|
| cl_ping_adapt_debug | 0=off (default) / 1=log ping adaptation events to console | 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. |
12.8. Returning to ordinary play
Returning is simply switching the mode off. No rollback of settings is needed: adaptation changes none of your other network parameters, it only delays sending. Once it is off, no delay is added any more.
Changing servers restarts the measurement and roster tracking: a decision from the previous server is never carried over to the next one.
12.9. How it relates to the other systems
| System | How it relates |
|---|---|
| Network God | Shows and accounts for adaptation, but never enables it, changes its target or adjusts its mode |
| LagHax | Works independently; adaptation neither cancels nor replaces it |
| Prediction | Works independently; the server remains authoritative |
| Jitter Shield | A different job: it smooths the display of other players rather than delaying your sending |
| Network Lab | Also spoils the network deliberately, but for practice and tests; the two never delay the same packet twice |
In the Network God overview the real ping stays a separate figure, the added delay is shown separately, and the final ping reflects the sum the client works with.
12.10. Mod and server boundaries
The Players source relies on the server and the mod actually reporting the roster and the participants' pings. Team and free-for-all play are recognised from the mod's data. If a mod does not supply enough information, the Players source simply cannot name a target — use the Range source or manual mode in that case.
Adaptation is entirely client-side: it changes no protocol, requires no server support and affects no other player.
12.11. The complete setting list
| Variable | Accepted values | Description |
|---|---|---|
| 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_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_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_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. |
| 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_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_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_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_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. |
13. Advanced network and the port scanner
Advanced Network
| Type | Section | Row | Variable or target | What it does |
|---|---|---|---|---|
| Section | Bandwidth | Bandwidth | ||
| Slider | Bandwidth | Bandwidth rate | rate | rate: bandwidth your client requests from the server, bytes/sec. Server may cap it. Typical modern broadband: 25000..100000. Server-visible userinfo cvar. Applies immediately. |
| Slider | Bandwidth | Message size | msg | msg: server message size hint. 0 = small, 1 = normal (default), 2 = large. Some servers reject high values. Applies immediately. |
| Section | Framerate | Framerate | ||
| Slider | Framerate | Client FPS limit | cl_maxfps | cl_maxfps: client framerate cap. 0 = uncapped. The renderer can still produce more frames if cl_async 1 is set. Applies immediately. |
| Slider | Framerate | Renderer FPS limit | r_maxfps | r_maxfps: renderer-only framerate cap. Applies when cl_async 1; otherwise cl_maxfps is the gate. Applies immediately. |
| Section | Recent servers | Recent servers | ||
| Toggle | Recent servers | Auto-connect last server | cl_reconnect_last_server_auto | Automatically connect to the newest successfully played remote server on an otherwise idle cold start. Disabled by default; explicit +map, +connect, demo, URL or alias startup always wins. Applies immediately. |
| Slider | Recent servers | Recent server history | cl_reconnect_history_limit | Number of unique successfully played remote servers retained globally across all mods: 0 disables and clears history, 1 keeps only the last server, the default is 10, and 100 is the maximum. Applies immediately. |
| Navigation | Recent servers | Reconnect now | reconnect | Reconnect to the current process endpoint, or to the newest successfully played remote server when this is a fresh process. |
| Section | Packets & sync | Packets & sync | ||
| Slider | Packets & sync | Client packets / sec | cl_maxpackets | cl_maxpackets: max user-command packets per second sent to the server (10..125). Higher = more responsive but more upload bandwidth. Applies immediately. |
| Navigation | Packets & sync | Server update rate... | q2prox_server_rate | How often the server sends you the world: classic 10 updates per second, or up to 60 on a server that supports it. Not your rendering FPS. |
| List | Packets & sync | Async mode | cl_async | cl_async: 0 = synchronous client/render loop; 1 = asynchronous render loop (default). 2 = Asynchronous render loop with GPU sync fence where supported. Applies immediately. [Sync / Async / Async + GPU sync] |
| Toggle | Packets & sync | Instant packet | cl_instantpacket | cl_instantpacket: send a usercmd packet immediately after a button press instead of waiting for the next tick. Reduces input latency by up to one packet interval. Applies immediately. |
| Section | UDP port autoprobe | UDP port autoprobe | ||
| List | UDP port autoprobe | Auto-select client UDP port | cl_net_clientport_autoprobe | Auto-select the client UDP port: off, RTT (fast pre-connect challenge-RTT probe), or Full scan (live-session scan over 20 candidate ports). Applies immediately. [off / RTT / Full scan] |
| Slider | UDP port autoprobe | Auto-port safety watchdog | cl_net_clientport_autoprobe_time | Safety watchdog (0.1..180 s) that aborts probing if it runs too long. RTT finishes early; a full-scan run wants 60..180 s, below ~30 s warns. Applies immediately. |
| Slider | UDP port autoprobe | RTT candidate count | cl_net_clientport_autoprobe_ports | RTT candidate port count (2..60). Does not apply to Full scan (fixed 20 slots). Wider sweeps don't slow RTT. Default 6. Applies immediately. |
| Toggle | UDP port autoprobe | Full-scan indicator | cl_net_clientport_autoprobe_indicator | Show a blinking AUTO-PORT SCAN indicator while the full scan runs (no effect on RTT). Applies immediately. |
| Toggle | UDP port autoprobe | Autoport console log | cl_net_clientport_autoprobe_verbose | Print autoport progress to the console (slot switches, samples, winner, abort). Off = runs silently. Applies immediately. |
| Slider | UDP port autoprobe | Full-scan pre-scan grace | cl_net_clientport_autoprobe_settle_ms | Optional grace window (0..10000 ms) before the full scan applies its first slot. Raise only on slow-precache mods. Counts inside the watchdog. Applies immediately. |
Ping Adaptation pauses while the port scanner runs, so its added delay does not interfere with the scan.
14. The server browser
Server Browser
| Type | Section | Row | Variable or target | What it does |
|---|---|---|---|---|
| Section | Mode & scale | Mode & scale | ||
| List | Mode & scale | Browser mode | cl_serverbrowser_ui | Server browser style: classic (legacy menu) or modern (overlay). Applies immediately. [legacy / modern] |
| Slider | Mode & scale | Opacity | cl_serverbrowser_alpha | Opacity of the modern server browser overlay background. Applies immediately. |
| Slider | Mode & scale | Text scale | cl_serverbrowser_scale | Font / UI scale of the browser overlay; match to display DPI. 1.0 default. Applies immediately. |
| Section | View & layout | View & layout | ||
| Toggle | View & layout | Compact mode | cl_serverbrowser_compact | Compact row layout so more servers fit on screen at once. Applies immediately. |
| Toggle | View & layout | Fullscreen | cl_serverbrowser_fullscreen | Expand the browser to full screen instead of the centred window. Applies immediately. |
| Toggle | View & layout | Pillarbox free area | cl_serverbrowser_pillarbox_workspace | Allow dragging the browser into the pillarbox side bars (aspect-fit free area). Applies immediately. |
| Toggle | View & layout | Show details | cl_serverbrowser_show_details | Show the right-side detail panel (player list, rules, mod info); off = list only. Applies immediately. |
| Toggle | View & layout | Show badges | cl_serverbrowser_show_badges | Show game-mode / mod badges next to each server (CTF, DM, OpenTDM...). Applies immediately. |
| Toggle | View & layout | Row colors | cl_serverbrowser_row_colors | Zebra-stripe alternate row colors for easier scanning of long lists. Applies immediately. |
| Section | Filters | Filters | ||
| Toggle | Filters | Hide empty | cl_serverbrowser_hide_empty | Hide servers with zero human players (bots don't count). Applies immediately. |
| Toggle | Filters | Hide full | cl_serverbrowser_hide_full | Hide servers that are at capacity (players >= max slots). Applies immediately. |
| Toggle | Filters | Only with players | cl_serverbrowser_only_players | Show only servers with at least one human player (hides empty and bot-only). Applies immediately. |
| Slider | Filters | Max ping | cl_serverbrowser_max_ping | Hide servers whose ping exceeds this many ms. 0 = no limit. Applies immediately. |
| Toggle | Filters | Show passworded | cl_serverbrowser_show_passworded | Show password-protected servers (you can still join if you know the password). Applies immediately. |
| Toggle | Filters | Show down | cl_serverbrowser_show_down | Show unreachable / down servers greyed out instead of hiding them. Applies immediately. |
| Section | Sources | Sources | ||
| List | Sources | Default source | cl_serverbrowser_default_source | Source tab opened by default: q2servers.com, Favorites, LAN, or Custom. Applies immediately. [q2servers.com / favorites / LAN / custom] |
| Field | Sources | Custom source | cl_serverbrowser_custom_source | URL for the Custom source tab (supports composite favorites:// file:// broadcast:// syntax). |
| Slider | Sources | Cache fallback delay, s | cl_serverbrowser_master_timeout | Wait for q2servers.com before using its last valid cached address list. Server status is always queried live. Without a cache, the normal HTTP timeout applies. Applies immediately. |
| Section | Service | Service | ||
| Navigation | Service | Open server browser... | serverbrowser_open_modern | Open the modern server browser overlay. |
| Navigation | Service | Open legacy browser... | serverbrowser_open_legacy | Open the classic (legacy) server browser menu. |
| Key | Service | Toggle key | serverbrowser_toggle | Bind a key that opens/closes the server browser overlay. |
Favourite servers are global across all mods. Scanning shows live tabs and stops with the same button that starts it. The selected tab is remembered between launches.
15. Mod-dependent settings and skin override
Kill and death messages
The online-game settings include Kill Messages. It highlights the opponent's name in messages about your kills and death. Name color, text color and notices below the crosshair are configurable. Chat is unchanged. Console highlighting is on by default; kill and death notices are separate and off by default. The killer's name stays until respawn; kill notices fade out. Preview and reset are available. Settings are shared between mods.
Notice settings. The screenshot shows user choices, not factory defaults.
Name highlighting and a kill notice in play.
Chat translation through the API
Incoming translation starts only on the player's button press. The client sends one batch of visible player-message bodies through the Q2PRO-X API, excluding nicknames and system output. An unchanged successful batch is not sent again. The game protocol and game server do not participate.
Hit feedback sound
A short hit sound can confirm a hit on an opponent. Enable it in the online-game or sound settings and adjust its volume there or in the volume hub. The settings are shared across mods; English and Russian help is available in the menus, console and Cvar Browser.
The hit sound is off by default (s_hitsound 0). Updating the client preserves your saved choice.
Audio is independent of the visual hit marker, blood and AVFX switches. It can also follow a received victim pain or death event after the shooter moves behind cover. Blood and voice evidence for the same tracked shot do not create two feedback sounds.
Cvar Browser: complete lists and keyboard layouts
Open the browser with cvar_browser or its settings menu entry. All includes variables, native console commands and quick menu commands. Commands remains a separate view. Selecting a native command prefills the console; press Enter to execute. Category tabs and Favorites retain their filters.
Search checks the original text and English key positions for installed Windows keyboard layouts. Standard Russian is also supported for pasted text after a layout switch. For example, цкшеу finds writeconfig and пд_сщдщкувдшпреьфзы finds gl_coloredlightmaps. Matching is case-insensitive. The original text is kept in the search field. This maps keyboard positions; it does not transliterate words.
Russian search still works: Конф finds /конфиг and matching descriptions. Mixed input such as cl_avfx_сщтефсе_вуигп is supported. Unknown characters are not removed from the query.
System-key behavior
Open Settings → System → System key behavior, immediately after Menu settings. Settings are global across mods; all default to No and take effect immediately.
| Menu item | Variable | What Yes blocks |
|---|---|---|
| Win and Win combinations | win_block_windows_key | Windows keys and their combinations |
| Alt+Tab | win_block_alt_tab | Window switching |
| Alt+Esc | win_block_alt_esc | Cycling windows with Alt+Esc |
| Alt+F4 | win_block_alt_f4 | Closing the window with Alt+F4 |
| Alt+Enter | win_block_alt_enter | Windowed/fullscreen switching |
| Alt+Space | win_block_alt_space | The window system menu |
| Ctrl+Esc | win_block_ctrl_esc | Opening Start |
| Ctrl+Shift+Esc | win_block_ctrl_shift_esc | Opening Task Manager with the shortcut |
| Print Screen | win_block_printscreen | Print Screen key handling |
Blocking applies only while the game window is active, with either WGL or EGL. Other foreground applications keep their keyboard behavior. Ctrl+Alt+Delete is not intercepted. If Alt+F4 is blocked, the normal game menu can still be used to quit.
Server address and Tab
Type or paste only an address into an empty console prompt and press Tab.
| Input | Result |
|---|---|
| q2.playground.ru | connect q2.playground.ru:27910 |
| q2.playground.ru:27915 | connect q2.playground.ru:27915 |
| 157.22.241.24 | connect 157.22.241.24:27910 |
| [::1]:27915 | connect [::1]:27915 |
A leading backslash may appear before connect: it is the normal console command prefix. Edit the result if needed, then press Enter. Tab itself performs no connection or DNS lookup. Ports must be 1..65535; omitted ports become 27910. Existing command, variable and alias names retain priority. Completing a command name with Tab also adds the space before its arguments.
External demo playback
Use demo with an absolute path to an existing file:
demo "O:\Demos\match.mvd2"
Quotes are needed for spaces. Far's filename-only quoting is also accepted:
demo O:\Demos\"match.mvd2"
From the Windows command line, pass the same path through +demo:
Q2PRO-X.exe +demo O:\Demos\"match.mvd2"
DM2, MVD2 and their .gz variants are supported, with Windows drive or UNC paths. The file is opened read-only and is not copied into the game directory. Required maps, models and other game resources must be available to the installed game. Missing or invalid files produce a console error.
Cached server list
The browser saves a valid non-empty q2servers.com response to baseq2/q2pro-x/cache/q2servers.json. The browser's q2servers.com wait control (cl_serverbrowser_master_timeout) ranges from 1 to 60 seconds, default 4. A delayed list falls back to cached addresses when available and marks the source. Without a cache, normal request waiting continues. Servers are queried again for current ping, map and players; a cached address is not evidence that a server is online. Failed, empty or incomplete responses do not replace the saved list.
Architectural visual simplification
Online game settings and Renderer settings share a Visual simplification page. Six styles change level architecture with adjustable colors, pattern, strength, brightness and contrast while models and independent AVFX effects retain their settings. Off by default. See Visual Simplification Guide.
Item animation
Online game settings → Item animation controls a small hop, squash/stretch, fall and settling for 22 pickup categories. Master and all categories default to off. Rotation remains; shadows, highlighting, bloom and reflections follow the pose. Players and held weapons are unaffected. Demo playback is supported. See Item Animation Guide for all controls.
Independent OpenTDM-X bots
OpenTDM-X bots opens the installed package's local game, gameplay, roster, supported maps, factory/user presets and updater. The client package includes OpenTDM-X: its Windows server, game module, bot data, five maps, menus, settings catalog and seven factory presets. If bots are not yet installed, the client installs this bundled package on first startup without downloading. Open OpenTDM-X bots → Play with bots, choose a map and start the game. An existing installation and your settings are preserved. Further bot updates are available through the bot menu.
Server update rate
Open Settings → Online game settings → Server update rate. This controls how frequently the client receives the world state, not rendering FPS. Higher server update rates deliver opponent positions and events more frequently. Game speed, movement physics and weapon firing rates remain unchanged.
Adapt to server rate (cl_serverfps_adapt) defaults to off: the client requests the classic 10 world updates per second. Enabling it allows negotiation of a higher rate and an exact time scale with compatible servers that support higher update rates. Ordinary servers retain their previous mode. Changing the setting during play sends a new request without reconnecting.
Preferred rate (cl_updaterate) defaults to Server maximum (0). The other choices are 10, 20, 30, 40, 50 and 60. Servers supply divisors of their own rate: requesting 40 on a 60 Hz server yields 20 Hz; requesting 50 yields 10 Hz. With adaptation disabled, the saved preference is ignored but preserved. Both settings are global across mods.
Show connection state opens the console and runs protocol_info. Startup reports the saved client mode. Toggling adaptation immediately reports the client preference, followed by the actual connection rate after the server reply. A requested frequency is not reported as established before acknowledgement.
After connecting, the console prints one line with the endpoint and actual rate: [188.225.33.164:27912] Connection rate: 60 Hz. A standard connection shows 10 Hz. A requested higher rate is not considered active before server acknowledgement. Detailed information remains available through protocol_info; additional notices explain pending or unconfirmed changes. Startup and setting changes explicitly report whether support for server rates above 10 Hz is enabled or disabled.
Network God, LagHax, the port scanner and view smoothing use the negotiated time scale. Demo recordings retain the standard 10 Hz format and normal playback speed. Network God remains inactive during DM2 and MVD2 playback.
An unsupported server-assigned rate triggers a request for 10 Hz and holds world time until confirmation. No reply within two seconds ends the connection with an explanation. If an ordinary preference change is ignored, the console reports that the requested connection-rate change was not confirmed.
cl_serverfps_debug enables detailed negotiation diagnostics at 1 and disables them at 0. It is session-only and defaults to off. Normal mode and connection summaries do not require this diagnostic setting.
Connecting without freezing the interface
The connect and connect_autoport commands resolve server addresses in the background. Slow replies and unreachable addresses leave the console, menus and music responsive. Use disconnect to cancel; a new connect replaces the previous attempt. A reply to a cancelled request cannot connect you to the old address. A malformed connect connect address command is rejected immediately.
Voice-room connections, reconnections and disconnections run in the background, so waiting for the voice server leaves the game and console responsive.
Command sending and player movement
Online game settings → Server update rate → “Adapt command sending” (cl_serverfps_send_adapt). This global option defaults to on. It only operates with server-rate adaptation enabled, the Q2PRO protocol and an acknowledged rate above 10 Hz. The cl_serverfps_adapt master setting still defaults to off.
The effective outgoing cap rises to at least the nominal command cadence and snapshot rate. Fixed-step movement normally produces up to 100 new commands per second. The saved cl_maxpackets value is preserved; 0 remains unlimited. Disable the option to retain a manual cap. Scheduling and network conditions still affect the actual packet rate; this does not guarantee a constant 100 packets/s. Fresh fixedmove commands bypass this limiter on the non-batched path, which protocol_info reports separately. Physics and command generation cadence are unchanged.
cl_updaterate only accepts decimal 0, 10, 20, 30, 40, 50 and 60. Invalid input keeps the last valid value; an invalid initial configuration uses 0. “Server maximum” (0) is recommended. The server selects a divisor of its own rate: requesting 60 on a 50 Hz server gives 10 Hz. Disabling cl_serverfps_adapt requests 10 Hz without overwriting the saved cl_updaterate. The console still prints one concise line with the actual connection rate.
Other players at rates above 10 Hz are smoothed using a history of received positions. This works during active play and while following another player. Repeated positions in adjacent snapshots no longer produce alternating freezes and jumps. There is a small presentation delay: normally 50–67 ms at 60 Hz with a 30-packet/s sender, capped at 100 ms. Positions are never extrapolated beyond received data. Local movement, authoritative server positions and collision are unchanged; standard 10 Hz and demo playback keep their existing behavior. No separate switch is needed.
Connection diagnostics
Enter protocol_info for the actual protocol and rate, timing source, and saved/effective packet caps. The frame clock offset is the connection clock origin; a negative value alone does not mean packet loss. Transition counts cover rate and clock-mode changes. DM2/MVD demos and live GTV are labelled separately.
Both AutoPort modes apply the selected client UDP port and verify the actual socket binding. If Windows uses a different fallback port, it is not reported as the selected port. This verifies the local port; the external NAT port may differ.
The console reports the actual connection rate: 60 Hz.