Page 1 of 1

CS2 Sub-Tick Updates: What Valve Changed and What the Tick Rate Still Controls

Posted: Fri Oct 23, 2026 2:20 pm
by ice
CS2 Sub-Tick Updates: What Valve Changed and What the Tick Rate Still Controls

The crosshair system overhaul in September 2026 forced a fundamental rethink of how CS2 handles movement and detection between ticks. Here is what actually changed, and what the tick rate still controls regardless of sub-tick processing.

**What Valve changed in the September 2026 update**

The Rush Hour update (released September 22, 2026) introduced real-pixel crosshair measurements and a new crosshair share code format. Alongside the visual overhaul, Valve made several backend changes to how the game processes player state between server ticks:

- Added `cs_player_camera` entity for scripted camera control without moving the pawn
- Added `instance.delay` for configurable delays in script execution
- Added `instance.onbombplantstart`, `instance.onbombplantabort`, `instance.onbombdefusestart`, `instance.onbombdefuseabort`
- Added `cs_playerpawn.getcamera` and `cs_playerpawn.getc4` and `cs_playerpawn.getdefusetarget`
- Added `c4.getplantstarttime`, `c4.getplantfinishtime`, `c4.abortplant`
- Added `custom_hud_layout` entity with panel, label, image, and button types
- Added `cs_player_camera` for player view control
- Added `enum csmovetype` with corrected types for some events where parameters were previously undefined
- Unghandled promise rejections are now logged to the console during script loading
- Errors during initial script run are now logged to the console
- The column number is now included in errors caught during the CompileModule step of script loading
- Deprecated `planter` from `instance.onbombevent` and `defuser` from `instance.onbombdefusevent`

**Tick rate still controls these fundamentals**

Despite the sub-tick processing additions, the server tick rate remains the authoritative source for these core gameplay mechanics:

- `sv_maxrate`, `sv_minrate` — absolute bandwidth limits per client
- `cl_cmdrate` — how many client commands the server processes per second
- `cl_updaterate` — how often the client sends state updates per second
- `rate` — the maximum bytes per second the client can receive
- `sv_accelerate` — acceleration when moving on the ground
- `sv_airaccelerate` — acceleration while in the air
- `sv_friction` — ground friction coefficient
- `sv_maxspeed` — maximum client speed on ground
- `sv_backspeed` — backward movement speed multiplier
- `sv_gravity` — world gravity constant
- `sv_jump_impulse` — the upward velocity applied when jumping
- `sv_enablebunnyhopping`, `sv_autobunnyhopping` — bunny hop enabling
- `sv_legacy_jump`, `sv_jump_precision_enable` — jump mechanic variants

**Sub-tick processing fills the gaps between ticks**

The new sub-tick system does not replace the tick rate; it interpolates between ticks for smoother visuals:

- `cl_interp` — explicit interp value in seconds (default derived from `cl_interp_ratio` and `cl_updaterate`)
- `cl_interp_ratio` — the ratio used to calculate default `cl_interp` (default 2)
- `mm_dedicated_search_maxping` — maximum ping in milliseconds for server browser searches
- `net_graph` — when enabled, shows `rate`, `cl_updaterate`, `cl_cmdrate`, `sv_tickrate` and more
- `cl_showpos` — prints position, view angles, and current tick information
- `cl_showfps` — frames per second counter

**Practical impact for players**

- A 64-tick server processes all player inputs and state changes once every 15.625ms. A 128-tick server processes twice as frequently.
- Sub-tick processing can make Aim Studio drills feel smoother on 64-tick, but the server still validates everything at the tick boundary.
- `cl_interp` values lower than `1 / tick_rate` (e.g., `0.008` on 128-tick) can cause extrapolation errors that the server corrects, but may introduce jitter visually.
- The new crosshair system uses real pixels, but hit registration still relies on the server tick that contains the shot.

**Key takeaway**

Sub-tick processing improves visual consistency and reduces the perception of "missed shots," but the server tick rate (`sv_tickrate`) remains the hard limit on how frequently gameplay state is authoritative. No amount of sub-tick processing can make a 64-tick server behave like 128-tick, because the server's final say on hits, movement, and game state happens at tick boundaries.

*Sources: totalcsgo.com/callouts, s2v.app/SchemaExplorer/cs2/convars, developer.valvesoftware.com/wiki/List_of_Counter-Strike_2_console_commands_and_variables, counter-strike.net/news/updates*