Product Docs Pricing Devlog About
Sign In Get Started
Adaptive Netcode

Lag compensation learns each connection

Static offsets treat players alike. Tashi measures each player's network conditions and continuously adjusts compensation.

Why static netcode hurts game feel

Most engines use a fixed 80-100ms lag window. It never changes, even when network conditions do.

The static approach

At 12ms RTT, a nearby player gets 80ms compensation. A 280ms player gets the same 80ms. Neither window fits, causing inconsistent hit registration.

Location-based differences hurt both: high-latency players suffer, while low-latency players see unexplained misses.

The adaptive approach

Tashi measures RTT, jitter, and packet loss per connection. It sets each player's window to match actual conditions: 12ms gets 12ms, 280ms gets tuned compensation.

If conditions change mid-session, the window adjusts. Nearby players avoid overcorrection during lag spikes.

Technical specifications

Internal benchmark results. Performance varies with tick rate, server region, and player distribution.

Compensation error (ms) 20ms RTT 80ms RTT 140ms RTT 200ms RTT 280ms RTT Static (80ms fixed) Adaptive
10ms
Adaptation interval, internal benchmark
<2ms
SDK overhead per tick, internal benchmark
64
Max tick rate supported (Hz)

Netcode configuration reference

Configure the module at init. Defaults cover common needs, so override only required fields.

netcode-setup.ts
import { Tashi } from '@tashi/sdk';

await Tashi.init({
  gameId: 'game-id',
  apiKey: 'sk_...'
});

Tashi.netcode.configure({
  mode: 'adaptive',     // 'static' | 'adaptive'
  baseCompensation: 80,  // ms, fallback floor
  maxCompensation: 300,  // ms, ceiling
  tickRate: 30,            // Hz, your server tick
  jitterBuffer: {
    enabled: true,
    target: 'auto'
  }
});
Get started

Try adaptive netcode on your next build

Free tier covers development and early testing. No card required.