Diagnostic Net Graph Metric Matrix
| Metric in HUD | Normal Baseline | Problem Threshold | Root Technical Failure | Recommended Fix |
|---|---|---|---|---|
| Choke | 0% | > 1% | Client rate is capped lower than server snapshot bandwidth demand | Increase rate to 786432 (6 Mbps) in autoexec.cfg |
| Loss | 0% | > 0.5% | Physical packet drop by ISP routing, Wi-Fi interference, or bufferbloat | Switch to Ethernet; verify router MTU; test bufferbloat grading |
| Ping / Latency | 15 - 45 ms | > 90 ms | Geographical routing distance or suboptimal peering nodes | Use wired connection; test DNS resolvers or ISP gaming peering |
| Var (Client) | < 1.0 ms | > 2.5 ms | CPU frame delivery jitter or background thread contention | Cap frame rate; close resource-intensive overlays |
| Var (Server) | < 1.5 ms | > 5.0 ms | Dedicated server tick drop or overloaded CPU hardware | Switch servers; report performance issue to server provider |
In competitive multiplayer games powered by the Source Engine (such as Counter-Strike, Team Fortress 2, and Apex Legends), players frequently experience "ghost hits" and teleporting enemies while their ping displays an apparently flawless 25 ms. The underlying culprit is almost never raw latency; it is misconfigured client-side network rate limits causing Choke (bandwidth congestion between client and server) or physical Loss (packets dropped along the routing path).
Phase 1: Understanding Choke vs Loss
- Choke (%): The server has generated game world updates (snapshots) ready to send to your client, but your client's configured
rateparameter tells the server: "Do not send data faster than this speed." The server is forced to hold back or discard packets, resulting in delayed position updates and phantom hitboxes. - Loss (%): The server transmitted the packets, but they were dropped in transit before reaching your network card. This indicates physical line degradation, Wi-Fi packet drops, or upstream network congestion.
Phase 2: Calculating Optimal Client Rates in autoexec.cfg
Open or create autoexec.cfg inside your game's cfg folder:
[SteamLibrary]\steamapps\common\[GameTitle]\[GameShortName]\cfg\autoexec.cfg
1. Max Bandwidth Rate Tuning
Set the maximum allowed byte rate according to your broadband speed:
// For connections 6 Mbps and above (Modern standard):
rate "786432"
// For connections between 2.5 Mbps and 6 Mbps:
rate "393216"
// For connections below 1.5 Mbps:
rate "196608"
2. Tickrate and Update Rates
For 64-tick and 128-tick servers:
cl_cmdrate "128"
cl_updaterate "128"
(When connecting to a 64-tick server, the server automatically clamps these values down to 64; setting them to 128 guarantees you receive full fidelity on 128-tick community servers).
3. Interpolation and Hitbox Alignment
Interpolation blends player movement between discrete server ticks so motion looks smooth:
// Calculate interpolation period: interp = interp_ratio / updaterate
cl_interp_ratio "1"
cl_interp "0"
Setting cl_interp 0 forces the engine to automatically compute the lowest possible interpolation time: 1 / 128 = 0.0078125 s (7.8 ms) on 128-tick, or 15.6 ms on 64-tick. If you experience unstable network lines with minor loss, set cl_interp_ratio 2 to add a 1-tick safety buffer against stutter.
Verification Checklist
- Enable the network overlay via console (
net_graph 1or telemetry options). - Confirm that Choke stays strictly at 0% even during heavy firefights with smoke and grenades.
- Verify that Loss remains 0% throughout match playback.
- Ensure hit validation lines up with client-side crosshair positioning.