Round-trip time to the game engine and back. Low on localhost (~1–10ms); production is often tens–hundreds of ms. High RTT increases rubber-banding.
Jitter
—snapshot gap σ
How uneven snapshot arrival times are (standard deviation of gaps). High jitter → freeze-then-jump even if average RTT looks fine.
Snap gap
—last interval
Time since the previous game_state snapshot. Server targets ~30 Hz (~33ms). Gaps ≫80ms risk interp underrun (nodes hold, then jump).
Buffer
—depth · behind
Snapshot history: depth (how many samples held, max 20) · behind (age of oldest sample). Render aims ~70ms behind the newest sample for smooth lerp.
Interp
—mode
World draw mode. LERP = blending two snapshots (good). EXTRAP = late packets, gliding then jump risk. HOLD / STAGE-SNAP = freeze or hard board swap.
Reconcile
—soft / hard
How far client prediction is from the server, and correction counts. Soft = gentle 18% pull. Hard = snap (death/stage/countdown or >90px drift). High hard on title screen is normal idle noise.
FPS
—client render
Browser draw rate (target ~60). Low FPS is a client/render bottleneck — can feel jerky even when network and server look healthy.
Server
—matches · mem
Engine host load: active matches, RSS memory, tick/snapshot Hz (60/30). Many matches or high RSS can mean CPU pressure causing world hitching.