Aller au contenu

Zombies

Les zombies, c’est bs_zombies. C’est de loin la plus grosse resource. En résumé, voici comment ça marche : le serveur tient une liste de chaque rôdeur (le registre), de sa santé et de qui l’héberge. Les joueurs ne voient que les peds des rôdeurs proches d’eux. Tout est dans resources/[beyond]/bs_zombies/config/.

Trois types dans Zombies.Types (config_zombies.lua) : walker, brute, crawler. Les crawlers ont besoin que la resource nutria_crawl_anims soit démarrée avant bs_zombies, sinon ils se relèvent.

-- bs_zombies/config/config_net.lua
Zombies.Mode = 'networked' -- or 'legacy'
  • networked (par défaut) - un vrai ped OneSync par rôdeur, créé par le serveur. Tout le monde voit le même zombie au même endroit. OneSync transfère la propriété à un client proche, et seul le propriétaire exécute son IA.
  • legacy - l’ancienne méthode. Chaque client construit ses propres peds locaux et remonte les positions. Utilise-le si le mode réseau te pose problème, c’est juste un redémarrage de bs_zombies, rien d’autre.

Tu peux aussi le changer depuis la console F1 (catégorie Zombies), il faut redémarrer bs_zombies.

Combien de rôdeurs reçoivent un vrai ped en même temps :

cap = min(hardCap, baseCap + perPlayerCap * (players - 1))
CléPar défautSignification
promoteRadius300un rôdeur à cette distance de n’importe quel joueur reçoit un ped
demoteHysteresis60ped retiré quand personne n’est dans le rayon + cette valeur
baseCap24avec un joueur en ligne
perPlayerCap18ajouté pour chaque joueur supplémentaire
hardCap160jamais plus que ça
perPlayerNear34maximum autour d’un joueur
perfBudgetMs70si la frame moyenne du serveur dépasse ça, la limite baisse
perfMinFactor0.35…mais jamais sous cette fraction
entitySoft / entityHard1400 / 1900total peds+objets+véhicules. Entre les deux la limite se réduit, à hard les rôdeurs les plus éloignés sont retirés
fpsGood / fpsLow / lowFpsFactor45 / 25 / 0.5un joueur avec peu de FPS a moins de rôdeurs autour de lui
corpseSeconds120durée de vie des cadavres réseau
simDensityScale0.35la population de la simulation est multipliée par ça en mode réseau (redémarrage)

Si tu augmentes hardCap, augmente aussi Streaming.PoolGuard.maxNetworked (96 par défaut), qui limite combien d’enregistrements de rôdeurs existent au total.

De config_streaming.lua :

CléPar défaut
Streaming.spawnMin / spawnMax200 / 300les rôdeurs apparaissent dans cet anneau autour d’un joueur
Streaming.PoolGuard.minSpawnDistance100rien n’apparaît plus près que ça de n’importe quel joueur
Zombies.Settings.spawnDistanceMin100même plancher, côté secteurs
Streaming.PoolGuard.maxPerPlayer28rôdeurs comptés autour de chaque joueur
Streaming.PoolGuard.clientPedLimit180le client arrête de créer des peds à cette taille du pool de peds
Streaming.PoolGuard.clientMaxLocal40max de peds de rôdeurs qu’un client détient (legacy)
Streaming.cleanupDistance480

Le plancher d’apparition est la plus grande valeur entre spawnDistanceMin, minSpawnDistance et 100. Les zombies ne surgissent donc jamais sous ton nez, sauf avec l’apparition forcée du staff.

Rien n’apparaît dans les zones sûres (config_zones.lua). Les zombies ne grimpent pas non plus, du tout. C’est Zombies.Mobility, ne l’active pas, ils grimpent sur les toits et restent coincés.

La map est découpée en secteurs qui se réveillent et s’endorment. Tu les modifies dans le panneau de la carte des secteurs, une page web servie par la resource nodes. Au premier démarrage, elle affiche dans la console l’URL avec une clé. Si tu veux ta propre clé :

set bs_sectormap_key "your-own-long-random-token"

Utilise set, pas setr. setr envoie le convar à chaque client et alors tous les joueurs ont ta clé.

Le staff a aussi /atlas (bs_atlas), une carte en direct de la simulation en jeu.

Coups de feu, voitures, le gadget decoy, événements : tous font du bruit et le bruit attire les rôdeurs (config_noise.lua, Zombies.NoiseSources). Les silencieux réduisent beaucoup le bruit des armes (Weapons.Effects.suppressor.noiseScale = 0.28). Les hordes sont dans Zombies.Horde, les vagues de hordes des événements du monde sont dans Événements du monde.

CommandeCôtéQuoi
/znetserveur, staffnombre réseau, limite et pourquoi, frame moyenne, recensement des entités, ton nombre à proximité
/zsyncserveur, staffpar joueur, rôdeurs du serveur à proximité vs peds que le client a réellement
/zdiagserveurétat général, inclut les lignes de /znet
/zstatus, /zsim, /znodes, /sectorserveurdirecteur, simulation, nodes, ton secteur
/zclearserveureffacer les rôdeurs
/znetc, /zgaitclientrôdeurs réseau adoptés, propriétaire, démarche
/poolsclientutilisation du pool de peds
/safezonesclientdessiner les cercles des zones sûres

La liste complète est sur la page API de bs_zombies.

  1. Mets Zombies.Mode = 'legacy' (F1 ou le fichier), ensure bs_zombies. C’est fait.
  2. Signale ce que tu as vu avec la sortie de /znet et /zsync, c’est la première chose que je demanderai.