Read the gamestate overview
The Health Check shows the engine limits that can crash the server, drop players or stop sounds.
GAMESTATE breaks down the shared byte budget.
In the menus: ESC → Direct → Tools → Health Check → GAMESTATE
The gamestate figures update every half-second while the page is open. The server-backed Health Check figures update every two seconds, and REFRESH requests those figures immediately.
Read the budget bar
The bar shows a 16,000-byte capacity. New placements reserve room for joining players and can be refused before it fills.
Used reads as a total against the cap, then how much is left:
13.1k / 16000 free 2.9k (18%)
The percentage in brackets is how much is free, not how much is used.
What each row counts
| Row | What spends it |
|---|---|
| Models | Stock model paths, including NPCs, sabers and GLM props |
| Managed MD3 | Placed MD3 props and screens. A path frees its slot when its last prop goes |
| Players | All 32 player strings: names, models and StoryForce keys |
| Remaps | Every remap, serialised into a single slot |
| Sounds | Distinct sound paths. A slot is never freed until the map changes |
| Ambient set | Mover soundsets plus the global set. Rarely more than a handful |
| Bones | Ghoul2 bone names the map registers. StoryForce bolts never spend this |
| Effects | Stock effect registrations including weather. Placed StoryForce effects never spend this |
| Locations | target_location names from the map |
| Particles | Nothing. Permanently dim |
| Light styles | The worldspawn light animation channels. No runtime growth |
| Icons | Siege and turret icons. Normally zero |
| BSP models | Sub-BSP names from an older map format. Normally empty, but still measured |
| Music | The worldspawn music path |
| Message | The map message line |
| MOTD | The scene name, or the server's message of the day |
| Server info | The serverinfo and systeminfo pair. Grows with every cvar flagged for either |
| Other | Votes, scores, items, duel and siege state, the skybox, plus the remainder |
Work out your headroom
The third column, ~ +N, is roughly how many more entries of that kind will fit.
For Players, the estimate uses the largest whole player string currently connected, including its name, model and StoryForce keys. It is also capped by the number of free player slots.
Reduce what the gamestate holds
A player’s string is freed when they leave. Stock model and sound registrations stay until the map changes.
Managed MD3 slots and gamestate bytes return when their last prop goes. The distinct-path allowance lasts for the map session. Renderer models stay loaded.
- Reuse model paths. Ten NPCs on one model cost one slot. Ten NPCs on ten models cost ten.
- Reuse sound paths. Same rule, and sounds are never released mid-map
- Cut remaps. One slot, but a big one, and dropping unused ones reclaims kilobytes at a stroke
- Shorten player names. Names are one part of every player string, and hex colour codes lengthen
them without adding visible text.
sf_allowhexcolourcodes 0strips them.