Zombie servers are the most resource-hungry thing you can run on the GoldSrc engine. A single Zombie Plague-style mod piles on custom zombie/human models, dozens of custom sounds, ammo-pack entities, particle and effect entities, and heavy per-frame knockback math — all on one core. Left untuned it hits precache ceilings, exhausts edicts, and feels mushy. Here is how to make a zombie server both stable and crisp.
1. Tame the precache load
Zombie mods precache far more than vanilla CS: multiple zombie models, human models, weapon models, and a wall of custom WAVs for infection, groans and ambience. Each is a slot against the engine's model and sound ceilings, and overrunning them crashes the map on load. Audit what the mod actually uses versus what it precaches "just in case", and cut custom classes you do not run. Share models between classes where possible instead of shipping a unique model per class. The exact ceilings and the overflow errors are in precache limits, model overflow, and sound slot overflow.
2. Watch the edict count
Ammo packs, dropped weapons, grenades, and every visual effect a zombie mod spawns are entities, and a busy 32-player zombie round can approach the engine's edict ceiling. When it does you get:
Host_Error: PF_precache_model_I: Model ... failed to precache ED_Alloc: no free edicts
Reduce the number of simultaneous effect entities the mod spawns, cap decorative particles, and clean up dropped items faster. The failure mode and the cvars that raise or manage the ceiling are covered in too many entities / max edicts.
3. Tune rates for knockback feel
Zombie gameplay lives and dies by knockback, and knockback is applied server-side and delivered through the same update stream as everything else. If clients are choking, the knockback push arrives late and infection feels laggy and unfair. Run the full high-update config so the fast, physical zombie combat stays responsive:
sv_maxupdaterate 100 sv_maxrate 25000 sv_minrate 5000
and eliminate choke as described in the choke guide. Because a zombie server is often full and fast, a stable high server fps matters even more than on a standard server — verify it under load with stats and the stable 1000 fps guide.
4. Keep per-frame plugin cost down
Knockback, glow, and ambience plugins often run every frame for every player, and on a full zombie server that is the dominant CPU cost. Run a lean, well-written core rather than stacking add-ons. Our own CSB Zombie Core and CSB Zombie Classes are built to keep the per-frame work bounded; if you run a different base, profile it (disable half the add-ons, watch fps) using plugin profiling to find which effect plugin is eating the core.
5. Right-size the server
Given the load, a zombie server needs a fast single core and enough RAM for the fat precache. Force the performance governor, run ReHLDS for the extra efficiency, and if you host other servers on the box, give the zombie instance its own pinned core with taskset because it will starve neighbours otherwise. New to the mod itself? Start from installing Zombie Plague and optimise from there.
Common errors
- Map crashes on load with a precache error — too many custom models or sounds. Cut classes and share models; see the precache guides.
- "no free edicts" mid-round — effect and item entities exhausted the edict pool. Reduce simultaneous effects and clean up items.
- Infection/knockback feels laggy — clients are choking or server fps sags when full. Fix rates and fps under load.
- fps collapses only on a full zombie round — a per-frame effect plugin scaling with player count. Profile and trim it.
- Zombie server drags down other servers on the box — it is not pinned; it is stealing a shared core. Give it a dedicated core.
Verification
Fill the server (bots to your max), run a full infection round, and watch the ceilings and fps together:
stats
Confirm the map loads without precache errors, no ED_Alloc messages appear during a busy round, fps stays high with the server full, and a connected client shows zero choke on net_graph 3 even as knockback flies. If all four hold on a full round, the server is optimised; if precache or edicts fail, cut custom content before touching anything else, because no rate or fps tuning can save a server that crashes on map load.









