Pular para o conteúdo

Zombies

Os zombies são o bs_zombies. É de longe o maior resource. A versão curta de como funciona: o servidor mantém uma lista de todos os caminhantes (o registo), a sua vida e quem os hospeda. Os jogadores só veem peds dos caminhantes perto deles. Tudo está em resources/[beyond]/bs_zombies/config/.

Três tipos em Zombies.Types (config_zombies.lua): walker, brute, crawler. Os crawlers precisam do resource nutria_crawl_anims iniciado antes do bs_zombies, senão levantam-se.

-- bs_zombies/config/config_net.lua
Zombies.Mode = 'networked' -- or 'legacy'
  • networked (por defeito) - um ped OneSync real por caminhante, criado pelo servidor. Todos veem o mesmo zombie no mesmo sítio. O OneSync migra a posse para um cliente próximo, e só o dono corre a sua IA.
  • legacy - a forma antiga. Cada cliente constrói os seus próprios peds locais e reporta posições. Usa-o se o modo em rede te der problemas, é só reiniciar o bs_zombies, mais nada.

Também o podes mudar pela consola F1 (categoria Zombies), precisa de reiniciar o bs_zombies.

Quantos caminhantes recebem um ped real ao mesmo tempo:

cap = min(hardCap, baseCap + perPlayerCap * (players - 1))
ChavePredefinidoSignificado
promoteRadius300um caminhante a esta distância de qualquer jogador recebe um ped
demoteHysteresis60o ped é removido quando ninguém está dentro do raio + isto
baseCap24com um jogador online
perPlayerCap18somado por cada jogador extra
hardCap160nunca mais do que isto
perPlayerNear34máximo à volta de um jogador
perfBudgetMs70se a média de frame do servidor passar disto, o limite desce
perfMinFactor0.35…mas nunca abaixo desta fração
entitySoft / entityHard1400 / 1900total de peds+objetos+veículos. Entre os dois o limite encolhe, no hard os caminhantes mais distantes são removidos
fpsGood / fpsLow / lowFpsFactor45 / 25 / 0.5um jogador com FPS baixo tem menos caminhantes à volta
corpseSeconds120tempo de vida dos cadáveres em rede
simDensityScale0.35a população da simulação é escalada por isto no modo em rede (reinício)

Se subires o hardCap, sobe também o Streaming.PoolGuard.maxNetworked (por defeito 96), que limita quantos registos de caminhantes existem.

De config_streaming.lua:

ChavePredefinido
Streaming.spawnMin / spawnMax200 / 300os caminhantes dão spawn neste anel à volta de um jogador
Streaming.PoolGuard.minSpawnDistance100nada dá spawn mais perto do que isto de qualquer jogador
Zombies.Settings.spawnDistanceMin100o mesmo mínimo, do lado dos setores
Streaming.PoolGuard.maxPerPlayer28caminhantes contados à volta de cada jogador
Streaming.PoolGuard.clientPedLimit180o cliente pára de criar peds neste tamanho da pool de peds
Streaming.PoolGuard.clientMaxLocal40máximo de peds de caminhantes que um cliente tem (legacy)
Streaming.cleanupDistance480

O mínimo de spawn é o maior entre spawnDistanceMin, minSpawnDistance e 100. Por isso os zombies nunca aparecem na tua cara, exceto no spawn forçado do staff.

Nada dá spawn dentro de zonas seguras (config_zones.lua). Os zombies também não trepam, de todo. Isso é Zombies.Mobility, por favor não o ligues, sobem para os telhados e ficam presos.

O mapa está dividido em setores que acordam e adormecem. Editas-os no painel do mapa de setores, uma página web servida pelo resource nodes. No primeiro arranque imprime na consola o URL com uma chave. Se quiseres a tua própria chave:

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

Usa set, não setr. O setr envia o convar para todos os clientes e depois todos os jogadores têm a tua chave.

O staff também tem /atlas (bs_atlas), um mapa em direto da simulação no jogo.

Tiros, carros, o gadget decoy, eventos: todos fazem ruído e o ruído atrai caminhantes (config_noise.lua, Zombies.NoiseSources). Os supressores cortam muito o ruído das armas (Weapons.Effects.suppressor.noiseScale = 0.28). As hordas estão em Zombies.Horde, as ondas de hordas dos eventos do mundo estão em Eventos do mundo.

ComandoLadoO quê
/znetservidor, staffcontagem em rede, limite e porquê, média de frame, censo de entidades, a tua contagem próxima
/zsyncservidor, staffpor jogador, caminhantes do servidor por perto vs peds que o cliente realmente tem
/zdiagservidorestado geral, inclui as linhas do /znet
/zstatus, /zsim, /znodes, /sectorservidordiretor, simulação, nós, o teu setor
/zclearservidorlimpar caminhantes
/znetc, /zgaitclientecaminhantes em rede adotados, dono, andar
/poolsclienteuso da pool de peds
/safezonesclientedesenhar os círculos das zonas seguras

A lista completa está na página da API do bs_zombies.

  1. Define Zombies.Mode = 'legacy' (F1 ou o ficheiro), ensure bs_zombies. Pronto.
  2. Reporta o que viste com a saída de /znet e /zsync, é a primeira coisa que vou pedir.