Learn / Radar Guide

CS2 Radar Overlay Technical Guide

How CS2 radar overlays work under the hood. GSI position data, map coordinate systems, player tracking implementation, and radar overlay design principles.

How CS2 Provides Position Data

CS2's Game State Integration system includes per-player world position data when the observer has spectator access. The position is provided as a 3D vector in CS2's world coordinate system:

"allplayers": {
  "76561198...": {
    "position": "623.5, -1024.2, 128.0",
    "forward": "0.92, 0.38, 0.0",
    ...
  }
}

The position is a comma-separated string of X, Y, Z world coordinates. The forward vector provides the player's facing direction, used to rotate player icons on the radar.

Map Coordinate Systems

Each CS2 map has a unique coordinate origin and scale. To display player positions correctly on a minimap image, the radar system must know:

  • pos_x, pos_y — World coordinates of the top-left corner of the radar image
  • scale — How many world units correspond to one pixel in the radar image

These values are stored in each map's radar.txt file (part of the CS2 game data). CutROOM includes pre-parsed coordinate data for all official CS2 competitive maps. The formula to convert world coordinates to radar pixel coordinates:

pixel_x = (world_x - map_pos_x) / map_scale
pixel_y = (map_pos_y - world_y) / map_scale

Player Icon Rendering

Each player is rendered as a small circular icon at their calculated pixel position. The icon includes:

  • Team colour fill (CT blue or T orange, configurable)
  • Player name or number label (configurable)
  • Facing direction indicator (rotated triangle or arrow)
  • Alive/dead state (greyed out when dead)
  • Bomb carrier indicator (icon highlight or special symbol)

The forward vector is converted from a 2D unit vector to a rotation angle (using Math.atan2) and applied as a CSS transform to the direction indicator element.

Update Rate and Smoothing

GSI sends position updates at the server tick rate (up to 128Hz on FACEIT servers, 64Hz on Valve matchmaking). At 128Hz, player positions update every ~7.8ms — more than sufficient for smooth radar animation.

CutROOM applies linear interpolation between position updates to smooth out any jitter from network latency or GSI batching. The result is visually smooth movement on the radar even on slower servers.

Multi-Floor Maps

Some CS2 maps have multiple vertical levels that overlap on a flat top-down radar view. For example, on Inferno, players on the CT balcony and players on the ground level may appear at the same X/Y position. CutROOM uses the Z coordinate to determine which floor a player is on and applies appropriate visual treatment (opacity or a floor indicator badge) to maintain spatial clarity.

Radar Overlay Performance

The radar overlay updates player positions 60 times per second (tied to OBS browser source frame rate). The DOM is updated using CSS transforms rather than re-rendering positions as HTML changes — this keeps the update path in the compositor thread and avoids layout reflows. Total CPU impact for a running radar overlay is under 0.5% on a modern PC.

See the CS2 Radar Overlay product page for feature details and screenshots.

Ready to broadcast CS2 like a pro?

Join casters and tournament operators who use CutROOM every day.

Get Started — €9.99/mo