This page explains, in player terms, how TeamSpec keeps an online match fair and responsive. The approach is the same one used by today's big competitive shooters.

The server decides

Every match runs on a server that has the final say. Your game sends what you pressed; the server works out what happened and tells everyone. This is what stops one player's game from deciding a fight on its own.

Tick rate

The server simulates the world 60 times a second. Each step is a tick of about 16.7 ms. Your inputs are sent and handled tick by tick.

Sub-tick input: clicks between ticks still count

Your game draws far more often than the server ticks: at 240 FPS you see four frames for every tick, so you often click somewhere between two ticks.[1] Instead of only telling the server "fire is held" once a tick, your game sends an ordered list of every press and release of fire, alt-fire and jump that happened during the tick.[1] Each one carries:

  • when in the tick it happened,
  • your exact aim at that moment,
  • and which moment of the game you were looking at when you clicked.[1]

The server replays those events in order, so:

  • a quick tap between two frames still fires,
  • two shots inside one tick are two shots,
  • and if you flick and click within the same tick, the shot uses the aim you clicked with, not the aim you had when the tick started.[1]

This makes aiming at a high frame rate feel noticeably tighter. The same idea is used in Counter-Strike 2.[1]

A shot fired partway through a tick is checked against the last completed tick, because the world at that in-between moment does not exist yet on the server.[2]

Prediction: your own movement feels instant

Waiting for the server before moving would make every key press lag by your ping. Instead your game predicts your own movement and shots immediately, using the same rules the server uses. When the server's answer comes back it is almost always the same. If it differs (you were knocked back, blocked or frozen by something you had not seen yet) your game quietly corrects to the server's version. A large correction looks like a small snap.

Interpolation: everyone else is smooth

Updates about other players arrive in steps, so your game shows them a tiny moment in the past and blends smoothly between the last updates it has. That way other players move smoothly instead of jittering, even when a packet arrives late.

Lag compensation: hitting what you saw

Because other players are drawn slightly in the past, the server rewinds them to where you saw them when it checks your shot. If your crosshair was on someone on your screen, the shot hits, even if they had moved a little by the time it reached the server.

Rewinding has a limit of 300 ms. With a worse connection than that, the server checks your shot against the most it can rewind and you have to lead your targets slightly; the HUD shows an indicator when this happens.

Why you sometimes get hit behind a wall

Lag compensation favors the shooter. If an enemy shot you on their screen just before you reached cover, the server agrees with them, and the damage arrives a moment after you are safe on yours. The higher their ping, the more noticeable it is, which is one reason for the 300 ms limit.

What ping does

Ping is the round trip time between you and the server.

  • Your own movement feels the same at any ping, thanks to prediction.
  • Higher ping means the server learns about your actions later, so you are more likely to be the one hit behind the wall, and corrections are more likely.
  • Pick a nearby server in the Server browser for the best experience.

See also

References

  1. ↑ 1.0 1.1 1.2 1.3 1.4 Gamepro5. "TeamSpec's Networking Architecture", section "Input is data, not RPCs". TeamSpec devlog, 6 June 2026, updated 7 October 2026.
  2. ↑ Gamepro5. "TeamSpec's Networking Architecture", section "Lag compensation". TeamSpec devlog, 6 June 2026, updated 7 October 2026.
TeamSpec
Weapons Grenade Launcher · Shotgun · Minigun · Rocket Launcher · Revolving Shotgun · Cast Iron Pan · Sniper Rifle · Mender · Pulse Rifle · Flamethrower · Telekineater · Hammerench · Pistol · SMG · Desert Eagle · Revolver · Thermal Void · Basher Tentacle · Bauble of Condensed Air · Struction Console · Pet Rock · Soul Linker · Assault Rifle · L.E.B. · The Chield · Flare Gun · Zappinator · Rocket Pads · Broadsword · Syringer
Buildings Sentry · Dispenser · Teleporter
Bosses Sar'Thuun
Maps Kraken Pier · Darkcove · Soulhouse · Academy
Game modes Payload · Service · Soul Banking · Training Range
Cosmetics Top Hat · Detective's Coat · Detective's Belt · Detective's Trousers · Detective's Boots · Detective's Hat · Beachcomber's Hat · Beachcomber's Shirt · Beachcomber's Belt · Beachcomber's Shorts · Beachcomber's Sandals · Aviators · Bandana · Goggles · Cigar · Mechanic's Cap · Mechanic's Jacket · Mechanic's Overalls · Mechanic's Boots · Mechanic's Tool Belt · Prospector's Hat · Prospector's Jeans · Prospector's Boots · Prospector's Belt · Prospector's Duster
Make a class · Controls · Movement · Damage · Netcode · Settings · Developer console · Glossary · New player guide
Loadouts · Inventory · Trading · Server browser · Quickplay · Hosting a game · Parties · Chat · Voice chat · Scoreboard · Kill feed · Kill cam · Replays · Map vote · Bots · Pickups · Spawn rooms · Photo mode · Steam Workshop