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).
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.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.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 startGranica 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ść:
view-distance=8
simulation-distance=6view-distanceto liczba chunków, które gracz widzi wokół siebie.simulation-distanceto 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ć.
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: 6000spigot.yml
Te ustawienia znajdziesz w sekcji world-settings → default.
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| Ustawienie | Co robi |
|---|---|
entity-activation-range | Odległość w blokach, z której moby danego typu „budzą się” i zaczynają działać. Dalsze stoją w miejscu. |
tick-inactive-villagers | Wyłączone sprawia, że wieśniacy poza zasięgiem graczy nie są przeliczani. |
nerf-spawner-mobs | Moby ze spawnerów nie mają AI, co mocno odciąża farmy. |
merge-radius | Odległość, z której leżące przedmioty i kule doświadczenia łączą się w jeden byt. |
arrow-despawn-rate | Po 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.
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| Ustawienie | Co robi |
|---|---|
max-auto-save-chunks-per-tick | Rozkłada automatyczny zapis świata na więcej ticków, więc nie powoduje nagłych lagów. |
prevent-moving-into-unloaded-chunks | Gracz nie wejdzie w niezaładowany chunk, co chroni przed lagami przy szybkim lataniu. |
max-entity-collisions | Ogranicza, z iloma bytami naraz zderza się jeden byt. Pomaga przy farmach mobów. |
armor-stands.tick | Wyłączone sprawia, że stojaki na zbroję nie są przeliczane. Mogą wtedy nie reagować na wodę i tłoki. |
optimize-explosions | Szybsze liczenie wybuchów, przydatne przy TNT. |
grass-spread | Co 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.