CS2 Update (Sep 30, 2026)
CS2’s latest update overhauls the crosshair renderer and editor, adds new styles and outline color control, refines tournament store behavior and Cologne 2026 item data, and ships new scripting examples for custom maps.
Quick read
- Crosshair rendering has been overhauled with a new shader-based system, a Static Quadrant style, wider gap/thickness ranges, and an outline color picker.
- HUD reticle and crosshair UI were cleaned up, removing legacy friend/observer art and routing previews through the new `CSGOCrosshairPreview` path.
- Cologne 2026 item data now uses a dedicated volatile prefab and removes some spraypaint behavior, while tournament UI only exposes Major content when events are active.
- Game configuration in `gameinfo.gi` and branch-specific overrides have been consolidated, improving clarity for tools, Hammer, and modding workflows.
- New `cs_script` demo maps showcase advanced scripting for traces, grenade training, prop manipulation, input debugging, and UI interaction.
- Rendering manifests and shaders were updated across PC and Vulkan, including crosshair shader v2 and glove tint format tweaks, pointing to ongoing graphics pipeline refinement.
This update overhauls CS2’s crosshair rendering and editor, adds new customization options, tweaks tournament store and token behavior, and quietly rolls out new scripting examples and economy tuning ahead of future events.
Crosshair System Overhaul and New Styles
- New crosshair renderer: The in-game crosshair has been migrated from a static image layout to a shader-driven system powered by
csgo_crosshair.slangand a newCSSGO_CrosshairPreviewpanel. This should allow more flexible shapes, better scaling, and future extendability. - New crosshair style 9 (Static Quadrant): The settings menu now exposes
cl_crosshairstyleup to9, with “Static Quadrant” added to the style list and help text. Style 7 is renamed to “Dynamic Quadrant” for clarity in the UI. - Expanded gap and thickness ranges:
cl_crosshair_gapnow accepts a much wider numeric range (-3840to3840), allowing extreme custom layouts that were previously clamped.cl_crosshair_thicknessmax has been nudged from31to32to match the updated slider.
- Classic vs modern controls: The crosshair settings differentiate between regular gap (
XhairGap) and “classic” gap (XhairClassicGap) and split-distance sliders. This suggests classic-style crosshairs get their own tuned controls while keeping the newer dynamic styles clean. - Static Quad split ratio: A dedicated
XhairStaticQuadSplitRatioslider is exposed for the new static quadrant style, letting players adjust quadrant sizes directly. - New debug convars (dev only): Several
r_csgo_crosshair_*debug options were added to help developers visualize crosshair tiles and behavior; these are not standard gameplay options but may help in diagnosing or modding the system.
Crosshair Outline Color and UI Improvements
- Outline color picker: The crosshair settings panel now includes an “Outline Color and Transparency” section with:
- A clickable color swatch for outline color.
- An alpha slider via new convars
cl_crosshairoutline_r/g/b/a.
- Outline behavior: The color picker appears only when
cl_crosshair_drawoutlineis non-zero. The outline dropdown now also triggers a style refresh so the UI reacts immediately to outline changes. - Updated sliders:
- Split alpha sliders for classic dynamic crosshairs now have finer
0.01steps, allowing more precise tuning of split fade-in/out behavior. - Maximums and labels in the crosshair section have been reorganized to better group related options.
- Split alpha sliders for classic dynamic crosshairs now have finer
- Preview widget update: Everywhere the game used
CSGOCrosshairin UI layouts has been swapped toCSGOCrosshairPreview, tying the editor and HUD more tightly into the new rendering path. Players should see crosshair previews that more faithfully match what appears in-game.
HUD Reticle Cleanup
- Legacy HUD elements removed: The HUD reticle layout (
hudreticle.xml) no longer includes:- The “friend” crosshair overlay.
- The observer-specific crosshair graphic.
- Why it matters: This suggests the game is consolidating how crosshairs are rendered for both players and observers. In practice the visual result may be similar, but it reduces duplicated art assets and CSS and likely routes everything through the new shader-based system.
Scope Dot and Ironsight Tweaks
- Scope dot wording:
cl_ironsight_dot_scale’s description now reads “Scope dot scale”. This better reflects its current role for scoped weapons rather than the older “ironsight” terminology. - New UI controls: The crosshair settings screen adds dedicated controls for:
- Whether ironsights use the crosshair color (
cl_ironsight_usecrosshaircolor). - Scope dot scale with a
0.1–2.0range, with a new slider placement to make this option easier to find.
- Whether ironsights use the crosshair color (
Grenade Crosshair Quality-of-Life Changes
- Delay sliders clamped: All grenade crosshair delay convars now have explicit
0–5second limits:cl_grenadecrosshairdelay_decoycl_grenadecrosshairdelay_explosivecl_grenadecrosshairdelay_firecl_grenadecrosshairdelay_flashcl_grenadecrosshairdelay_smoke
- Impact: These settings already existed but now have safer numeric bounds in the engine definition. Players who customize their grenade UI timings will have a more predictable range to work in.
Game Configuration and Toolchain Integration
- Unified gameinfo:
gameinfo.gihas been significantly expanded to bake in many engine and tools settings that were previously spread across internal layers:- Rendering pipeline defaults (DX11, MSAA defaults, HDR, bloom, tonemapping).
- Resource compiler settings for maps, mesh encoding, world renderer, baked lighting, vis, and texture compilation.
- Hammer editor configuration for CS2, including default entities, navmesh parameters, and Steam Audio integration.
- Nav system, world renderer, physics, post-processing, and memory budget hints.
- Branch-specific overrides:
gameinfo_branchspecific.ginow:- Fixes the app IDs for client and tools (
SteamAppId 730, Breakpad IDs). - Enables Panorama preprocessing (stripping comments/dev-only portions from UI resources on load).
- Forces
cl_usesocketsforloopback 0by default on this branch.
- Fixes the app IDs for client and tools (
- Why it matters: Players won’t see direct gameplay changes from this, but creators and modders benefit from clearer, consolidated configuration. It also suggests Valve is stabilizing CS2’s mod/tool environment.
Economy and Tournament Store Adjustments
- Cologne 2026 volatile prefab: A new
cologne2026_sticker_capsule_prefab_volatileprefab has been introduced and wired into several Cologne 2026 sticker and highlights packs. Existing crates now reference this volatile prefab instead of adding their ownvolatile containerattributes. - Economy behavior: The change consolidates volatility behavior into a single prefab layer and removes some duplicate attributes. This likely simplifies pricing/market behavior for these items while keeping the external item names the same.
- Tournament sprays removed from crate: Certain Cologne 2026 capsule data no longer declares spraypaint tool behavior (spray type, slot, and graffiti inventory art) in the same place. This suggests the crates are being refocused toward stickers and highlights only rather than doubling as graffiti unlocks.
- Active tournament toggled off:
g_ActiveTournamentInfo.activeis set tofalsein the event store script. Combined with multiple UI checks, this means:- The full-screen store will only show the “tournament” section when a tournament is marked active.
- The Watch tab will only open the Major Hub popup when the currently selected tournament is active.
- Main menu token reminder logic now uses
_m_bRemindUsersToSpendMajorTokensinstead of a one-time “checked” flag, though reminders are gated by the tournament active state and several other conditions.
- Impact: For players, the Major Hub button and tournament store tiles will appear only when there is an active event. Token-spend reminders are likely disabled between events to avoid nagging players with leftover tokens.
Tools, Engine, and Anti-Cheat Protocol Cleanup
- GC message removals: Several Game Coordinator protocol messages related to “InitSystem” and secure mode validation have been removed from
cstrike15_gcmessages.protoand associated enums/headers. This suggests backend and client have dropped some legacy secure-mode negotiation path, likely in favor of the newer Trusted/secure launch mechanisms. - Convar additions/fixes:
- New
r_csgo_crosshair_*debug options for tile size and debug visuals. - Minor description tweaks (e.g., scope dot wording).
- New
- Texture and bitmap handling: Many engine-side tools (resource compiler, vconsole, Hammer, model editors, etc.) updated their bitmap and volume texture error messages. While invisible to players, this indicates ongoing maintenance of the content pipeline, particularly around advanced compression formats and volume textures.
PP-Bizon Material Touch-Up
- Bizon composite material updated: The resource
weapon_smg_bizon_composite_inputs.vmat_chas changed while keeping the same size, indicating a material or input tweak for the PP-Bizon. - Likely impact: This most likely refines the Bizon’s appearance (e.g., wear, tint, or detail maps) rather than changing stats or rarity.
Pet Companion Book Visual and Hint Updates
- New PSD-based art: Multiple pet book images now point to higher-fidelity
*_psd.vtexassets instead of older PNG variants (e.g., Just Hatched, Early Days, Park Life, A Little Older, Road Trip, Balloons). A new title image for a second “road trip” page has been added. - Layout tweaks: Styling updates in
pet_book_page_styles.cssadjust:- The positioning and size of the teen trip second title image.
- Colors and text-shadow for the birthday page text, improving readability.
- Localized hint improvements: English text entries now distinguish between two adolescent road trip hints:
- One pointing to Dust II, Baggage, Inferno, or Train.
- Another pointing to Mirage, Nuke, Cache, or Ancient.
- Map scripting adjustments (Baggage): The
ar_baggage.jsscript has minor cleanup in conveyor logic and timing comments, but the functional behavior—locking/unlocking buttons, indicator colors, and conveyor speeds—remains the same.
New Scripting Examples and Modding Hooks
Several new cs_script-based demo scripts were added under game/csgo_addons/cs_script_demo/panorama_stripped/maps/scripts/. These are shipped as examples rather than active gameplay content:
chess.js: A large example showcasing complex script logic and state machines, usingInstanceandPointTemplate. While the full content isn’t visible here, it appears designed as a comprehensive demonstration of advanced script structures.trace.js: A tracing and debug-visualization script exposing ascript_zoo_tracecheat command that can:- Trace lines, spheres, boxes, bullet paths, and player hulls from the local player’s view.
- Draw debug spheres, boxes, and normals at hit locations.
grenadetraining.js: A training mini-game script that:- Sets up a series of grenade rounds and target boxes with increasing difficulty.
- Tracks hits, rounds, and draws a trail of grenade movement using
DebugLine. - Resets the player, ammo, and timer between runs.
mdlchange.js: Demonstrates changing a prop’s model at runtime, scaling it up/down, and toggling glow outlines via script inputs.setup.js: Handles basic map setup:- Puts the first player on a team and spawns a bot.
- Prevents bots from dying via damage flags.
- Adds a “welcome” UI layout that can be shown/hidden per player and through a
script_zoo_show_welcomecommand.
input.js: Shows how to inspect and display CS player input states using debug screen text.hello.js: Minimal sample that prints “Hello cs_script!” to the console.
These examples strongly indicate Valve is formalizing and showcasing the CS2 scripting APIs for custom maps and mods. While they don’t affect official matchmaking, creators can study and adapt them for their own Workshop content.
Rendering and Shader Manifest Updates
- Crosshair shader version bump: The crosshair shader’s
Versionis now2, with expanded uniforms and texture inputs for:- Per-primitive bitmasks to efficiently select which crosshair elements affect each pixel.
- A “friendly” icon texture and glyph atlas for more complex overlays or text-like markings.
- Glove tint ID format change: The glove preview shader now uses a different output format code (
67) forg_tTintIdinstead of the explicitI8. This may align the format with modern texture pipelines, especially for tint-mask assets. - New compiled shader entries: Both PC and Vulkan shader manifests add many
shaders/vfxentries for CS:GO-specific materials (character, composite inputs, beach foam, cables, and more). This improves shader precompilation coverage and may reduce stutter when encountering these materials in-game.
Miscellaneous Engine and Build Changes
- Joystick defaults:
cl_joystick_enabledandpanorama_joystick_enabledare explicitly set to0in the core config, reinforcing mouse/keyboard as the default on PC. - Replay convar locked:
spec_replay_enableis constrained so its min and max are both0, effectively disabling client-side replay toggling. - Build metadata:
steam.infshows a new client and server version, patch subversion, and source revision, confirming this as a fresh shipped build.
Overall Impact
This update is primarily about modernizing CS2’s crosshair and UI rendering pipeline, cleaning up legacy paths, and paving the way for richer customization—especially with new quadrant styles and full outline color control. At the same time, Valve is tightening the tournament UI around active events, tuning the Cologne 2026 economy data, and exposing a substantial set of scripting examples that hint at more powerful custom maps and training scenarios.
Players will mostly notice the expanded crosshair options and slightly cleaner HUD. Map makers and modders get the bigger benefits, with better-documented gameinfo, new Shader and ResourceCompiler defaults, and practical scripts demonstrating how to build interactive training tools and debug visualizations inside CS2.
