# Snapshot Interpolation
Source: https://gafferongames.com/post/snapshot_interpolation/
Author: Glenn Fiedler | Date: 2014-11-30 | Series: Networked Physics

## When to use
If simulation is not deterministic or player counts grow past lockstep comfort, send **snapshots** of visual state. Receiver does **not** run the simulation; reconstructs a visual approximation.

## Snapshots
Example CubeState: interacting, position, orientation. Include 16-bit sequence; discard older-than-latest on receive. Naive render-latest still hitches because Internet jitter clusters packets.

Lower send rate (e.g. 10 pps) cuts bandwidth but looks choppy without buffering.

## Interpolation buffer
Hold snapshots briefly so statistically you have both current and next sample. Trade added latency for smoothness. Linear interp of position shows 1st-order discontinuities; katamari attachments can "pulse" through the parent cube.

## Hermite interpolation
Send linear velocity; Hermite spline matches positions **and** velocities at endpoints → smoother. Orientation: slerp usually enough; angular velocity often unnecessary for cubes.

## Packet loss
Snapshots are time-critical but **not** requiring reliability. Never TCP. Skip lost snapshots; interpolate toward more recent ones in buffer. Rule of thumb: buffer delay ≈ 3× send interval for 2–5% loss (survive two losses) + small jitter margin. At 10 pps → ~300ms + ~50ms = ~350ms. Extrapolation can cut delay but fails badly for nonlinear rigid-body collision (floor tunneling, spring mispredict, katamari tangent vs rotate).

## Reduce delay
Increase send rate: 30 pps → ~150ms buffer; 60 pps → ~85ms. Requires bandwidth optimizations (next article).