Blog · blog
Melhores mods de desempenho para servidores Minecraft
O lag no servidor é um problema diferente do FPS do cliente. Papel ou Purpur, flags JVM ajustadas, chunks pré-gerados e uma distância de visualização razoável resolvem a maior parte disso.
Lentidão do servidor é uma questão diferente da lentidão do cliente
Guias do lado do cliente falam sobre FPS: sua própria GPU desenhando quadros. O desempenho do servidor é uma métrica completamente separada, tiques por segundo, quantas vezes por segundo o servidor consegue executar seu loop completo de jogo. Quando o TPS cai abaixo de 20, todos os jogadores conectados sentem isso como um efeito de “rubber-banding”, acertos atrasados e mobs que ficam para trás de sua posição real, não importa quão potente seja o PC de qualquer jogador individual. A correção disso reside inteiramente no lado do servidor da conexão.
Essa distinção é importante porque os dois problemas são constantemente confundidos. Um jogador com 300 FPS localmente ainda sentirá um servidor rodando a 12 TPS, e nenhuma modificação do cliente muda isso. Se você opera um servidor, especialmente um lobby de minigame movimentado com arenas do BedWars ou SkyWars sendo reiniciadas constantemente, as correções abaixo são onde seu tempo realmente compensa.
Escolha um software de servidor que seja construído para suportar carga
O software de servidor Vanilla Minecraft e uma configuração Spigot não otimizada executam quase tudo em um único thread. Paper, e forks como Purpur, reestruturam grandes partes desse pipeline para rodar de forma assíncrona e multithreaded, além de fornecer uma longa lista de otimizações padrão que o vanilla nunca teve. Este é o maior fator disponível antes de você tocar em qualquer plugin ou configuração.
Papel
A escolha moderna padrão. Carregamento assíncrono de partes, otimizações de rastreamento de entidades e um conjunto profundo de opções de ajuste em paper.yml que a maioria dos administradores nunca explora completamente.
Púrpura
Um garfo de papel com botões de desempenho extras e interruptores de jogabilidade sobrepostos. Vale a pena se você quiser mais controle sem sair do ecossistema Paper.
Baunilha e Spigot padrão
Funcional, mas deixa um desempenho real de lado para qualquer coisa além de um servidor pequeno e de baixa população.
Ajuste as flags da JVM, não apenas a configuração do servidor
Servidores Minecraft rodam dentro de uma Máquina Virtual Java, e as configurações padrão de coleta de lixo da JVM nunca foram ajustadas para o padrão de memória específico do Minecraft. As flags do Aikar são um conjunto amplamente utilizado e publicamente documentado de flags de inicialização da JVM que configuram o coletor de lixo especificamente para esse padrão, e reduzem significativamente a frequência e a duração das interrupções relacionadas à coleta de lixo sob carga real de jogadores.
Pré-gere o seu mundo antes dos jogadores sequer o verem
Uma das causas mais comuns de quedas repentinas de TPS é o servidor gerar novos chunks em tempo real à medida que os jogadores exploram territórios não reivindicados. Essa geração de trabalho compete diretamente com tudo o mais que o servidor está tentando fazer no mesmo ciclo. Uma ferramenta como o Chunky pré-gera chunks com antecedência, em uma passagem controlada e limitada, para que os jogadores que exploram mais tarde nunca causem esse pico.
Para uma rede de minigames, isso importa menos nos mapas da arena, que geralmente são estáticos e pequenos, e mais em qualquer hub ou mundo de lobby aberto onde os jogadores podem vagar.
Ajuste a distância de visualização e a distância de simulação
Essas duas configurações controlam quanta área do mundo o servidor precisa manter carregada e simulada ao redor de cada jogador, e são as configurações que os operadores mais frequentemente deixam nos padrões que são simplesmente muito altos para o número de jogadores e o hardware.
| Configuração | O que controla | Erro comum |
|---|---|---|
| Distância de visualização | Quantos chunks são enviados para cada cliente | Deixada em um padrão muito alto para o número de jogadores |
| Distância de simulação | Quão longe mobs, blocos e redstone realmente simulam | Definida igual à distância de visualização quando não precisa estar |
A distância de simulação é geralmente a primeira a ser reduzida. Os jogadores não precisam de mobs e redstone simulados tão longe quanto precisam de chunks renderizados, e diminuí-la recupera tempo de tick real com um impacto muito menor na sensação do jogo.
Faça um perfil antes de adivinhar
Adivinhar a causa do lag desperdiça tempo. Um profiler como o spark captura exatamente onde o tempo de tick do servidor está sendo gasto, seja por um plugin específico, geração de mundo, processamento de entidades ou algo completamente diferente, em vez de você ajustar configurações aleatoriamente e esperar.
Instale Papel ou Púrpura
Migre do Spigot vanilla ou padrão primeiro. Isso desbloqueia todas as otimizações abaixo.
Aplique as flags de Aikar ao seu script de inicialização
Copie o conjunto de flags documentado para o comando de inicialização do seu servidor e reinicie. Esta é uma alteração única com um retorno contínuo.
Pré-gere o seu mundo com Chunky
Execute-o durante horários de baixo tráfego para que jogadores exploradores nunca ativem a geração de chunks ao vivo posteriormente.
Defina a distância de visualização e a distância de simulação intencionalmente
Ajuste-os à sua contagem real de jogadores e hardware, em vez de manter as configurações padrão da plataforma.
Perfil com centelha sob carga real
Capture um relatório durante os horários de pico e corrija o que ele realmente indica, em vez de adivinhar.
O desempenho do servidor não conta a história toda
Manter o TPS estável é metade da experiência. Cada jogador ainda renderiza esse servidor estável em sua própria máquina, e um servidor sólido não serve para alguém cuja própria client está travando por causa do rendering, memória ou um pacote de shaders incompatível. Se você opera uma rede de BedWars ou SkyWars e já investiu no trabalho acima, a outra metade de uma experiência fluida para seus jogadores é o que acontece na máquina deles. É exatamente essa lacuna que Terminus foi construído para preencher, otimizando o desempenho do client para corresponder ao trabalho que você já fez no servidor.
Perguntas Frequentes
Não. As modificações feitas pelos clientes alteram o que acontece na máquina do próprio jogador. O lag do servidor reside no loop de tick do servidor, e apenas as alterações do lado do servidor, software, flags, plugins, configurações do mundo, o alcançam.
Software de servidor. A transição de um Spigot vanilla ou não otimizado para Paper ou Purpur libera o trabalho assíncrono e multithreading que a maioria das outras otimizações utilizam.
Sim, especialmente no coletor de lixo do Minecraft, que as configurações padrão do vanilla lidam mal sob carga real. Eles não corrigirão um servidor genuinamente subdimensionado, mas em hardware adequado, suavizam notavelmente as travadas relacionadas ao GC.
Verifique o TPS do servidor com um comando como /tps ou um plugin como spark. Se o TPS estiver estável próximo a 20 e você ainda sentir engasgos, o problema provavelmente é o seu cliente ou conexão, e não do servidor.
Obtenha Terminus
Tuned client performance to match the server work you already did.