Desempenho
Versão honesta: os scripts não são a parte pesada. O mapa é.
O [the_apocalypse_project] é uma conversão do mapa inteiro por cima de Los Santos, com cerca de 166 ymaps e um MLO. Muitos dos seus ymaps têm extents de streaming de quilómetros, muito maiores do que os props lá dentro. Por isso o motor pensa que metade do mapa está ao alcance ao mesmo tempo e tudo faz streaming no mesmo instante à volta de um jogador que dá spawn. É daí que vem a pressão nas pools.
A solução verdadeira está nos mapas: apertar os extents inflacionados no CodeWalker, com uma margem segura. Vale mais do que todas as linhas de pool abaixo.
Tamanhos de pool
Seção intitulada “Tamanhos de pool”O server.cfg aumenta algumas pools com increase_pool_size (a forma moderna, o gameconfig.xml já não é respeitado):
increase_pool_size "Building" 500increase_pool_size "StaticBounds" 2000increase_pool_size "EntityDescPool" 5000increase_pool_size "TxdStore" 8000increase_pool_size "FragmentStore" 4000increase_pool_size "fragInstGta" 800increase_pool_size "Object" 800# + interior/portal/occlusion, LightEntity, AttachmentExtensionEstes valores são modestos de propósito, não são o máximo. Pô-los no máximo custa memória em todos os clientes e Building muito acima de ~500 causa problemas próprios.
Mantém set onesync_population false. A população ambiente enche exatamente as pools que não consegues aumentar.
Zombies
Seção intitulada “Zombies”Os limites de zombies já diminuem sozinhos:
- tempo de frame do servidor acima de
Zombies.Net.perfBudgetMs(70) corta o limite, atéperfMinFactor - o total de entidades entre
entitySofteentityHard(1400 / 1900) corta-o, e acima do hard os caminhantes mais distantes desaparecem - um jogador abaixo de
fpsLowFPS tem menos caminhantes perto de si
Ajusta perfBudgetMs com base na média de frames que o /znet mostra num servidor parado. Se o teu servidor for simplesmente mais lento, o valor por defeito vai cortar zombies o tempo todo.
No cliente, Streaming.PoolGuard.clientPedLimit (180) impede novos peds de caminhantes antes de a pool de peds encher, e um corte de emergência remove primeiro os cadáveres, depois os caminhantes mais distantes.
Medição
Seção intitulada “Medição”resmon 1 -- client, per resource msprofiler record 500 -- then profiler view/znet -- zombie caps and server frame/pools -- client ped poolNão existe /bsperf, os resources não guardam temporizadores internos. Usa o resmon.
Em outubro revi todos os scripts do cliente. Quase todos os loops por frame já estão controlados (dormem 250-1000 ms quando parados). Os poucos que correm sempre por frame são coisas de que o motor precisa a cada frame (esconder partes do HUD, densidade de população, luzes do apagão). Se vires algum dos nossos alto no resmon em repouso, é um bug, diz-me.
bs19.org · Privacy · Terms · Cookie settings
Cookies and outside content
The site only needs two essential cookies to keep you logged in and protect forms. Videos and streams from YouTube and Twitch load from their servers, which can set their own cookies, so they stay off until you say yes. Nothing is pre-ticked and you can change your mind any time with "Cookie settings" at the bottom of every page. Details.
Questions about the server, the framework or the site? A real person reads this, usually within a day.