Zombies
Zombies are bs_zombies. It’s the biggest resource by far. The short version of how it works: the server keeps a list of every walker (the registry), their health, and who is hosting them. Players only ever see peds for walkers near them. Everything is in resources/[beyond]/bs_zombies/config/.
Three types in Zombies.Types (config_zombies.lua): walker, brute, crawler. Crawlers need the nutria_crawl_anims resource started before bs_zombies or they stand up.
Mode: networked or legacy
Section titled “Mode: networked or legacy”-- bs_zombies/config/config_net.luaZombies.Mode = 'networked' -- or 'legacy'- networked (default) - one real OneSync ped per walker, created by the server. Everyone sees the same zombie at the same spot. OneSync migrates ownership to a nearby client, and only the owner runs its AI.
- legacy - the old way. Each client builds its own local peds and reports positions back. Use it if networked mode gives you trouble, it’s a restart of bs_zombies, nothing else.
You can switch it from the F1 console too (Zombies category), needs a restart of bs_zombies.
Networked caps (Zombies.Net)
Section titled “Networked caps (Zombies.Net)”How many walkers get a real ped at once:
cap = min(hardCap, baseCap + perPlayerCap * (players - 1))| Key | Default | Meaning |
|---|---|---|
promoteRadius | 300 | a walker within this of any player gets a ped |
demoteHysteresis | 60 | ped removed when nobody is within radius + this |
baseCap | 24 | with one player online |
perPlayerCap | 18 | added for each extra player |
hardCap | 160 | never more than this |
perPlayerNear | 34 | max around one player |
perfBudgetMs | 70 | if the server’s average frame goes above this, the cap scales down |
perfMinFactor | 0.35 | …but never below this fraction |
entitySoft / entityHard | 1400 / 1900 | total peds+objects+vehicles. Between them the cap shrinks, at hard the farthest walkers get removed |
fpsGood / fpsLow / lowFpsFactor | 45 / 25 / 0.5 | a player with low FPS gets fewer walkers around them |
corpseSeconds | 120 | networked corpse lifetime |
simDensityScale | 0.35 | sim population is scaled by this in networked mode (restart) |
If you raise hardCap also raise Streaming.PoolGuard.maxNetworked (default 96), it limits how many walker records exist at all.
Spawning and distances
Section titled “Spawning and distances”From config_streaming.lua:
| Key | Default | |
|---|---|---|
Streaming.spawnMin / spawnMax | 200 / 300 | walkers spawn in this ring around a player |
Streaming.PoolGuard.minSpawnDistance | 100 | nothing spawns closer than this to any player |
Zombies.Settings.spawnDistanceMin | 100 | same floor, sector side |
Streaming.PoolGuard.maxPerPlayer | 28 | walkers counted around each player |
Streaming.PoolGuard.clientPedLimit | 180 | client stops creating peds at this ped pool size |
Streaming.PoolGuard.clientMaxLocal | 40 | max walker peds one client holds (legacy) |
Streaming.cleanupDistance | 480 |
The spawn floor is the biggest of spawnDistanceMin, minSpawnDistance and 100. So zombies don’t pop in your face, ever, except the staff force spawn.
Nothing spawns inside safe zones (config_zones.lua). Zombies also don’t climb, at all. That’s Zombies.Mobility, please don’t turn it on, they climb onto roofs and get stuck.
Sectors
Section titled “Sectors”The map is split into sectors that wake up and sleep. You edit them in the sector map panel, a web page the nodes resource serves. On first boot it prints the URL with a key to the console. If you want your own key:
set bs_sectormap_key "your-own-long-random-token"Use set, not setr. setr sends the convar to every client and then every player has your key.
Staff also have /atlas (bs_atlas), a live map of the simulation in game.
Hordes and noise
Section titled “Hordes and noise”Gunshots, cars, the decoy gadget, events: they all make noise and noise pulls walkers (config_noise.lua, Zombies.NoiseSources). Suppressors cut weapon noise a lot (Weapons.Effects.suppressor.noiseScale = 0.28). Hordes are in Zombies.Horde, world event horde waves are in World events.
Debug commands
Section titled “Debug commands”| Command | Side | What |
|---|---|---|
/znet | server, staff | networked count, cap and why, frame avg, entity census, your near count |
/zsync | server, staff | per player, server walkers nearby vs peds the client really has |
/zdiag | server | general state, includes the /znet lines |
/zstatus, /zsim, /znodes, /sector | server | director, simulation, nodes, your sector |
/zclear | server | clear walkers |
/znetc, /zgait | client | adopted networked walkers, owner, gait |
/pools | client | ped pool usage |
/safezones | client | draw safe zone circles |
The full list is on the bs_zombies API page.
Rollback if networked mode breaks
Section titled “Rollback if networked mode breaks”- Set
Zombies.Mode = 'legacy'(F1 or the file),ensure bs_zombies. Done. - Report what you saw with the
/znetand/zsyncoutput, that’s the first thing I’ll ask.
bs19.org · Privacy · Terms · Cookie settings