Inputs at one rate, state at another
Multiplayer games separate the rates: clients send inputs at high frequency (30-60Hz to match the renderer); the server sends authoritative state at a lower frequency (10-20Hz) plus event messages on game-changing actions (kills, scores, level changes). The client interpolates between server snapshots so movement looks smooth at 60fps even though state arrives at 15.
Client-side prediction
Latency makes "send input, wait for server state" feel awful (100ms+ delay on every keypress). The fix is client-side prediction: apply the input locally immediately, then reconcile when the server's authoritative state arrives. If the server disagrees, snap or smoothly correct. Quake III invented this pattern; every modern multiplayer game uses some form of it.