Przejdź do treści

Optymalizacja serwera Minecraft

Znajdź przyczynę lagów, wygeneruj mapę z wyprzedzeniem i ustaw pliki konfiguracyjne Paper tak, żeby serwer działał płynniej.

Serwer Minecraft najczęściej laguje z trzech powodów: generowania nowych chunków, dużej liczby mobów i innych bytów oraz ciężkich pluginów. Ten artykuł pokazuje, jak znaleźć przyczynę i co zmienić. Ustawienia z plików spigot.yml i paper-world-defaults.yml działają na silnikach Paper i Purpur.

Znajdź przyczynę

Zanim zaczniesz zmieniać ustawienia, sprawdź, co obciąża serwer. Służy do tego profiler spark. Na Paperze 1.21 i nowszym jest wbudowany, a na starszych wersjach zainstaluj go jako plugin ze strony spark (otwiera się w nowej karcie).

  1. Uruchom profiler

    W zakładce Konsola wpisz /spark profiler start, gdy na serwerze są gracze i występują lagi. Profiler zbiera dane w tle i nie przeszkadza w grze.

  2. Otwórz podgląd na żywo

    Wpisz /spark profiler open. W konsoli pojawi się link do raportu, który aktualizuje się na bieżąco, a profiler działa dalej. Raport pokazuje, które pluginy, moby albo chunki zajmują najwięcej czasu.

  3. Zatrzymaj profiler

    Gdy znajdziesz przyczynę, wpisz /spark profiler stop. Profiler zapisze końcowy raport i poda do niego link.

Aktualną wydajność sprawdzisz komendą /tps. Wynik 20 oznacza, że serwer działa płynnie, a każda niższa wartość oznacza lagi.

Wygeneruj mapę z wyprzedzeniem

Generowanie nowego terenu to najcięższa praca serwera. Ustaw granicę świata i wygeneruj go zawczasu, zanim wejdą gracze. Użyj do tego pluginu Chunky (otwiera się w nowej karcie):

/worldborder set 10000
/chunky radius 5000
/chunky start

Granica 10000 bloków to promień 5000 bloków od środka mapy. Generowanie zajmuje od kilkunastu minut do kilku godzin, a postęp widać w konsoli. Najlepiej uruchomić je, gdy na serwerze nikt nie gra.

Zasięg widzenia

W server.properties dwa ustawienia mają największy wpływ na wydajność:

server.properties
view-distance=8
simulation-distance=6
  • view-distance to liczba chunków, które gracz widzi wokół siebie.
  • simulation-distance to liczba chunków, w których działają moby, uprawy i redstone.

Domyślnie oba mają wartość 10. Obniżenie ich do 8 i 6 zwykle jest niezauważalne dla graczy, a wyraźnie odciąża serwer.

Ustawienia silnika

Poniższe wartości to sprawdzony punkt wyjścia. Zmieniaj je stopniowo i po każdej zmianie uruchom serwer ponownie.

bukkit.yml

spawn-limits ogranicza liczbę mobów każdego typu na gracza, a ticks-per ustala, co ile ticków serwer próbuje je zrespić.

bukkit.yml
spawn-limits:
  monsters: 35
  animals: 10
  water-animals: 5
  water-ambient: 10
  water-underground-creature: 3
  axolotls: 5
  ambient: 3
ticks-per:
  animal-spawns: 400
  monster-spawns: 10
  water-spawns: 400
  water-ambient-spawns: 400
  water-underground-creature-spawns: 400
  axolotl-spawns: 400
  ambient-spawns: 400
  autosave: 6000

spigot.yml

Te ustawienia znajdziesz w sekcji world-settings → default.

spigot.yml
entity-activation-range:
  animals: 16
  monsters: 24
  raiders: 48
  misc: 8
  water: 8
  villagers: 16
  flying-monsters: 48
tick-inactive-villagers: false
nerf-spawner-mobs: true
merge-radius:
  item: 4.0
  exp: 6.0
arrow-despawn-rate: 300
UstawienieCo robi
entity-activation-rangeOdległość w blokach, z której moby danego typu „budzą się” i zaczynają działać. Dalsze stoją w miejscu.
tick-inactive-villagersWyłączone sprawia, że wieśniacy poza zasięgiem graczy nie są przeliczani.
nerf-spawner-mobsMoby ze spawnerów nie mają AI, co mocno odciąża farmy.
merge-radiusOdległość, z której leżące przedmioty i kule doświadczenia łączą się w jeden byt.
arrow-despawn-ratePo ilu tickach znikają strzały wbite w bloki. 300 ticków to 15 sekund.

W tym samym pliku, w sekcji settings, ustaw save-user-cache-on-stop-only: true. Serwer zapisze wtedy pamięć podręczną graczy tylko przy wyłączeniu, a nie przy każdym wejściu.

paper-world-defaults.yml

Plik jest w folderze config.

config/paper-world-defaults.yml
chunks:
  max-auto-save-chunks-per-tick: 8
  prevent-moving-into-unloaded-chunks: true
collisions:
  max-entity-collisions: 2
entities:
  armor-stands:
    tick: false
environment:
  optimize-explosions: true
tick-rates:
  grass-spread: 4
UstawienieCo robi
max-auto-save-chunks-per-tickRozkłada automatyczny zapis świata na więcej ticków, więc nie powoduje nagłych lagów.
prevent-moving-into-unloaded-chunksGracz nie wejdzie w niezaładowany chunk, co chroni przed lagami przy szybkim lataniu.
max-entity-collisionsOgranicza, z iloma bytami naraz zderza się jeden byt. Pomaga przy farmach mobów.
armor-stands.tickWyłączone sprawia, że stojaki na zbroję nie są przeliczane. Mogą wtedy nie reagować na wodę i tłoki.
optimize-explosionsSzybsze liczenie wybuchów, przydatne przy TNT.
grass-spreadCo ile ticków trawa się rozrasta.

Najczęstsze problemy

Po zmianie ustawień farmy mobów przestały działać

Najczęściej odpowiada za to nerf-spawner-mobs albo zbyt niski entity-activation-range. Przywróć domyślne wartości jednego z nich i sprawdź ponownie.

Serwer dalej laguje mimo optymalizacji

Uruchom profiler spark i sprawdź raport. Jeśli przyczyną jest konkretny plugin, poszukaj jego lżejszego zamiennika. Jeśli przy tej liczbie graczy serwerowi brakuje pamięci albo mocy, rozważ większy pakiet w ofercie.