Discord
Wiki - Serwery

Optymalizacja serwera Minecraft

Kompletny poradnik wydajności - od wyboru oprogramowania serwerowego, przez konfigurację, po monitorowanie TPS i eliminowanie lagów.

Czas czytania: ~10 min Poziom: Średniozaawansowany

Czym jest TPS?

TPS (Ticks Per Second) to podstawowa miara wydajności serwera Minecraft. Serwer wykonuje 20 ticków na sekundę - każdy tick to jeden cykl przetwarzania logiki gry: ruch mobów, wzrost roślin, fizyka bloków, aktualizacja redstone'u, przetwarzanie pakietów sieciowych i setki innych operacji.

Idealny TPS wynosi 20.0 - oznacza to, że serwer nadąża z przetwarzaniem wszystkich operacji w wymaganym czasie (50 milisekund na tick). Gdy TPS spada poniżej 20, gra zaczyna się "spowolniać" - moby poruszają się wolniej, bloki kopią się z opóźnieniem, a gracze odczuwają lagi.

20.0 Idealny - brak lagów
18-19 Dobry - minimalne opóźnienia
15-17 Średni - zauważalne lagi
<15 Zły - poważne problemy z wydajnością

Warto rozróżnić TPS od MSPT (Milliseconds Per Tick). MSPT to rzeczywisty czas przetwarzania jednego ticku. Jeśli MSPT wynosi 40 ms, serwer ma zapas 10 ms (tick musi zmieścić się w 50 ms). Jeśli MSPT przekracza 50 ms, TPS spada poniżej 20.

Wskazówka: TPS = 20 nie zawsze oznacza brak problemów. Serwer może mieć TPS 20, ale MSPT 48 ms - pozornie wszystko w porządku, ale jeden dodatkowy gracz lub exploit może spowodować spadek. Monitoruj MSPT, nie tylko TPS.

Paper vs Spigot vs Purpur

Wybór oprogramowania serwerowego ma ogromny wpływ na wydajność. Oto porównanie trzech najpopularniejszych opcji:

Spigot

Spigot to pierwszy poważny fork serwera Minecraft z obsługą pluginów Bukkit API. Oferuje lepszą wydajność niż Vanilla dzięki optymalizacjom takim jak grupowanie ticków mobów, optymalizacja TNT i lepsza obsługa chunków. Jednak w 2026 roku Spigot ustępuje Paperowi pod każdym względem wydajnościowym.

Paper (rekomendowany)

Paper to fork Spigota, który dodaje dziesiątki optymalizacji wydajnościowych i napraw exploitów. Oto najważniejsze różnice względem Spigota:

  • Asynchroniczne ładowanie chunków - chunki ładują się w osobnych wątkach, nie blokując głównej pętli
  • Optymalizacja entity AI - moby poza zasięgiem graczy mają ograniczoną AI
  • Naprawione exploity - duplikacja itemów, crash exploity, TNT lag machines
  • Optymalizacja świateł - system Starlight do szybszego obliczania oświetlenia
  • Lepsza kompresja pakietów - mniejsze obciążenie sieci
  • Rozszerzone Paper API - dodatkowe funkcje dla pluginów

Rekomendacja: Paper to złoty standard serwerów Minecraft w 2026 roku. Jeśli nie masz konkretnego powodu, aby używać czegoś innego - wybierz Paper. Jest w pełni kompatybilny z pluginami Bukkit/Spigot.

Purpur

Purpur to fork Papera dodający setki opcji konfiguracyjnych. Pozwala na modyfikację zachowania praktycznie każdego aspektu gry: prędkość mobów, crafting, drop rate, mechaniki bloków i wiele więcej. Wydajność jest porównywalna z Paperem (bazuje na tym samym kodzie), ale dodatkowe opcje mogą być przydatne dla administratorów szukających głębokiej personalizacji. Jeśli potrzebujesz modów zamiast pluginów, rozważ Fabric.

Porównanie wydajności

Cecha Spigot Paper Purpur
Wydajność Dobra Najlepsza Najlepsza
Async chunks Nie Tak Tak
Exploit fixy Podstawowe Rozbudowane Rozbudowane
Opcje konfiguracji Standardowe Rozszerzone Maksymalne
Kompatybilność Bukkit API Bukkit + Paper API Bukkit + Paper API

Optymalizacja server.properties

Plik server.properties zawiera ustawienia, które bezpośrednio wpływają na wydajność. Oto optymalne wartości dla serwerów z 20+ graczami:

view-distance 6-8 Zmniejszenie z domyślnych 10 do 6-8 drastycznie poprawia wydajność. Każdy dodatkowy chunk to więcej entyt i ticków do przetworzenia.
simulation-distance 4-6 Zasięg symulacji - chunki poza tym zasięgiem nie są tickowane. Zmniejszenie do 4-6 ogranicza liczbę aktywnych mobów i farm.
max-players Realistyczna wartość Ustaw na realną pojemność serwera, nie na 1000. Duża wartość nie wpływa na wydajność, ale daje fałszywe oczekiwania.
network-compression-threshold 256 Pakiety poniżej tej wartości (w bajtach) nie są kompresowane. Domyślna wartość 256 jest optymalna. Zmniejszenie do 64 może pomóc przy słabym uploadzię.
spawn-protection 0 Wyłącz natywną ochronę spawnu i użyj zamiast niej WorldGuard - daje więcej kontroli.

Uwaga: Nie ustawiaj view-distance i simulation-distance na tę samą wartość. View-distance powinien być wyższy - gracze widzą dalej, ale symulacja (AI, redstone, farmy) działa bliżej. Przykład: view-distance=8, simulation-distance=5.

Konfiguracja Paper

Paper oferuje dodatkowe pliki konfiguracyjne z zaawansowanymi opcjami wydajności. Kluczowe pliki to config/paper-global.yml i config/paper-world-defaults.yml.

paper-world-defaults.yml - najważniejsze opcje

entities.spawning.monster-spawn-range 6 Zasięg spawnowania wrogich mobów. Zmniejszenie z 8 do 6 ogranicza liczbę mobów i poprawia wydajność.
entities.spawning.despawn-ranges.monster.soft 28 Odległość, od której moby zaczynają losowo despawnować. Zmniejszenie z 32 do 28 przyspiesza usuwanie niepotrzebnych mobów.
entities.spawning.despawn-ranges.monster.hard 96 Odległość natychmiastowego despawnu mobów. Zmniejszenie z 128 do 96 znacząco redukuje liczbę entyt.
chunks.max-auto-save-chunks-per-tick 8 Ogranicza liczbę chunków zapisywanych na tick. Zmniejszenie z 24 do 8 rozłożi zapis w czasie, redukując spiki lagów.
environment.optimize-explosions true Optymalizuje obliczenia eksplozji. Włącz na serwerach z dużą ilością TNT lub creeperów.

bukkit.yml - limity mobów

Plik bukkit.yml kontroluje globalne limity spawnowania mobów. Domyślne wartości są często zbyt wysokie dla serwerów z wieloma graczami:

spawn-limits.monsters 50 Domyślnie 70. Zmniejszenie do 50 znacząco redukuje obciążenie AI, zachowując przyzwoitą rozgrywkę.
spawn-limits.animals 8 Domyślnie 10. Zwierzęta zajmują mniej CPU niż moby wrogie, ale warto ograniczyć na dużych serwerach.
tick-per.monster-spawns 2 Domyślnie 1 (co tick). Ustawienie na 2 oznacza próbę spawnu co 2 ticki - zmniejsza obciążenie o ~50%.

Wskazówka: Skorzystaj z minecraft-optimization na GitHubie - to kompleksowy przewodnik po wszystkich opcjach konfiguracyjnych z rekomendowanymi wartościami.

Pre-generowanie chunków

Generowanie nowych chunków to jedna z najcięższych operacji dla serwera Minecraft. Gdy gracz eksploruje nieodwiedzone tereny, serwer musi wygenerować teren, jaskinie, struktury i oświetlenie - to wszystko na głównym wątku. Efekt? Spadek TPS i lagi dla wszystkich graczy na serwerze.

Rozwiązaniem jest pre-generowanie (wstępne generowanie) chunków przed otwarciem serwera dla graczy. Dzięki temu chunki są już gotowe na dysku i ich załadowanie jest wielokrotnie szybsze niż generowanie od zera.

Chunky - najlepsze narzędzie do pre-generowania

Chunky to plugin (i standalone tool) do pre-generowania chunków. Jest szybki, konfigurowalny i może działać w tle bez znaczącego wpływu na rozgrywkę.

Instalacja i użycie:

  1. Pobierz Chunky - z SpigotMC lub Modrinth. Umieść w folderze plugins/.
  2. Ustaw granicę świata - przed generowaniem ustal rozmiar świata komendą: /chunky radius 5000 (promień 5000 bloków od spawnu).
  3. Rozpocznij generowanie - /chunky start. Plugin zacznie generować chunki z informacją o postępie.
  4. Monitoruj postęp - /chunky progress pokazuje procent ukończenia i szacowany czas. Generowanie 5000 bloków promienia zajmuje 30-60 minut.
  5. Ustaw world border - po wygenerowaniu ustaw granicę świata: /worldborder set 10000 (średnica = 2x promień). Uniemożliwi graczom wychodzenie poza pre-wygenerowany teren.

Rekomendacja: Pre-generuj świat na pustym serwerze (bez graczy) - proces będzie znacznie szybszy. Promień 5000 bloków to dobry kompromis - daje obszar 10 000 x 10 000 bloków, wystarczający dla większości serwerów.

Zarządzanie pluginami

Pluginy to najczęstsze źródło problemów z wydajnością. Źle napisany lub źle skonfigurowany plugin może zużywać więcej zasobów niż cały serwer Minecraft.

Zasady dobrego zarządzania pluginami

  • Mniej znaczy więcej - każdy plugin to dodatkowy kod wykonywany na każdym ticku. 15 dobrze dobranych pluginów jest lepsze niż 50 przypadkowych.
  • Unikaj duplikatów - nie instaluj dwóch pluginów ekonomii, dwóch systemów ochrony, dwóch pluginów chatu. Konflikty i nadmiarowość zużywają zasoby.
  • Aktualizuj regularnie - starsze wersje pluginów mogą zawierać błędy wydajnościowe naprawione w aktualizacjach.
  • Usuwaj nieużywane - plugin, którego nie używasz, nadal się ładuje i zużywa RAM. Usuń go z folderu plugins/.
  • Sprawdzaj autorów - pluginy od renomowanych autorów (np. team EssentialsX, PaperMC) są lepiej zoptymalizowane niż te od anonimowych deweloperów.

Pluginy szczególnie obciążające serwer

Dynmap

Renderowanie mapy świata jest bardzo obciążające. Ogranicz częstotliwość renderowania, wyłącz renderowanie 3D i ustaw niższy render-distance w konfiguracji Dynmapa. Rozważ BlueMap jako lżejszą alternatywę.

Pluginy hologramów (HD, DecentHolograms)

Hologramy widoczne przez wielu graczy generują dużo pakietów sieciowych. Ograniczaj liczbę hologramów i ich zasięg widzialności.

Pluginy z częstymi zapytaniami SQL

Pluginy wykonujące synchroniczne zapytania do bazy danych (na głównym wątku) mogą powodować spiki lagów. Upewnij się, że pluginy korzystają z asynchronicznych operacji bazodanowych.

Pluginy z schedulerami co tick

Pluginy uruchamiające kod na każdym ticku (20 razy na sekundę) mogą znacząco obciążyć CPU. Spark profiler pomoże zidentyfikować takie pluginy.

Monitorowanie TPS

Regularne monitorowanie wydajności jest kluczowe do utrzymania płynnej rozgrywki. Oto najważniejsze narzędzia:

Spark - profiler #1 dla Minecraft

Spark to nowoczesny profiler wydajności stworzony przez twórcę LuckPerms. Jest wbudowany w Paper (od nowszych wersji) lub dostępny jako plugin. Spark pozwala na:

  • Profiling CPU - /spark profiler start - pokazuje, które fragmenty kodu (pluginy, mechaniki) zużywają najwięcej czasu procesora. Po zakończeniu (/spark profiler stop) generuje raport z interaktywną wizualizacją.
  • Monitoring TPS i MSPT - /spark tps - wyświetla aktualny TPS, MSPT i wykorzystanie CPU.
  • Analiza pamięci - /spark heapdump - tworzy zrzut pamięci do analizy wycieków.
  • Monitoring ticków - /spark tickmonitor - alarmuje, gdy tick trwa dłużej niż 50 ms.

Jak korzystać ze Spark: Uruchom /spark profiler start, graj normalnie przez 5-10 minut, zatrzymaj profiler (/spark profiler stop). Spark wygeneruje link do raportu - otwórz go w przeglądarce i szukaj "najgrubszych" gałęzi w drzewku wywołań. To właśnie one powodują lagi.

Timings (Paper)

Paper Timings to starszy system profilowania wbudowany w Paper. Uruchom /timings report - wygeneruje raport z czasem spędzonym na poszczególnych operacjach. Spark jest nowocześniejszy i daje lepszy wgląd, ale Timings nadal jest przydatny.

Komendy diagnostyczne

/tps Wyświetla TPS za ostatnie 1, 5 i 15 minut. Dostępne natywnie na Paper/Spigot.
/spark tps Dokładniejszy odczyt TPS z MSPT i wykorzystaniem CPU.
/spark profiler start/stop Uruchom i zatrzymaj profiler CPU. Generuje raport z wizualizacją.
/spark health Ogólny raport zdrowia serwera - CPU, RAM, dysk, TPS, GC.
/gc Wymusza Garbage Collection. Przydatne do jednorazowego zwolnienia pamięci, ale nie używaj regularnie.

Najczęstsze przyczyny lagów

Podsumowanie najczęstszych źródeł problemów z wydajnością i ich rozwiązań:

Za dużo mobów (entities)

Zmniejsz limity w bukkit.yml, ogranicz farmy mobów, skróć zasięg despawnu.

Generowanie nowych chunków

Pre-generuj chunki narzędziem Chunky i ustaw world border.

Ciężkie pluginy

Zidentyfikuj Spark profilerem i zastąp lżejszymi alternatywami lub zoptymalizuj konfigurację.

Redstone clocks / lag machines

Paper naprawia większość exploitów. Dodaj limity redstone'u w konfiguracji lub użyj pluginu anty-lag.

Za mało RAM

Monitoruj użycie pamięci. Jeśli GC (Garbage Collection) wykonuje się zbyt często - zwiększ RAM.

Wolny dysk (HDD zamiast SSD)

Przenieś serwer na dysk SSD (najlepiej NVMe). Różnica jest ogromna.

Podsumowanie

Optymalizacja serwera Minecraft to proces ciągły - nie jednorazowe działanie. Regularne monitorowanie TPS, aktualizowanie oprogramowania i reagowanie na problemy to klucz do utrzymania płynnej rozgrywki dla wszystkich graczy.

Komentarze