Optymalizacja TPS na serwerze Minecraft: pełny poradnik

Optymalizacja TPS na serwerze Minecraft: pełny poradnik

Czym jest TPS i dlaczego to ważne

TPS (Ticks Per Second) to puls twojego serwera Minecraft. Każdy tick to jeden cykl aktualizacji świata gry: ruch mobów, wzrost roślin, obsługa redstone, fizyka bloków, rejestracja akcji graczy. W idealnym przypadku serwer wykonuje 20 ticków na sekundę, czyli każdy tick zajmuje nie więcej niż 50 milisekund.

Gdy TPS spada poniżej 20, wszystko zaczyna się ciąć. Moby ruszają się skokowo, bloki łamią się z opóźnieniem, gracze narzekają na "lagi serwera". Przy TPS 15 gra jest już zauważalnie nieprzyjemna. Przy TPS 10 i niżej serwer praktycznie nie nadaje się do gry.

Ważne, żeby rozumieć różnicę między TPS a pingiem. Ping to opóźnienie sieciowe między graczem a serwerem. TPS to wydajność samego serwera. Gracz może mieć idealny ping 10ms, ale jeśli TPS serwera wynosi 12, lagi i tak będą. I odwrotnie: serwer może trzymać stabilne 20 TPS, ale gracz ze słabym internetem będzie lagował przez wysoki ping.

Główne przyczyny niskiego TPS

Zanim zaczniesz optymalizować, trzeba zrozumieć, co konkretnie obciąża serwer. Oto najczęstsze przyczyny.

Za dużo encji

Każdy mob, upuszczony przedmiot, strzała, łódka, wagonik to encja, którą serwer obsługuje co tick. Farma z setkami krów w jednej zagrodzie zabija TPS szybciej niż cokolwiek innego. Upuszczone przedmioty, których nikt nie podnosi, kumulują się i obciążają serwer.

Ciężkie pluginy

Nie wszystkie pluginy są napisane równie dobrze. Niektóre wykonują skomplikowane obliczenia w głównym wątku serwera, blokując obsługę ticków. Dynamiczna mapa, złożone pluginy ekonomiczne, pluginy z częstymi zapytaniami do bazy danych - wszystko to potencjalni zabójcy TPS.

Ładowanie chunków

Generacja nowych chunków to jedna z najbardziej kosztownych operacji. Gdy kilku graczy jednocześnie eksploruje nowe tereny, serwer musi generować dziesiątki chunków na sekundę. To kolosalne obciążenie.

Redstone

Złożone mechanizmy redstone, szczególnie zegary (clock circuits) i duże systemy, generują tysiące aktualizacji bloków na tick. Jeden gracz z nieskończonym zegarem redstone może położyć cały serwer.

Rozmiar świata

Im więcej załadowanych chunków, tym więcej roboty dla serwera. Każdy chunk zawiera bloki, które trzeba aktualizować: woda płynie, lawa płynie, plony rosną, moby się spawnują.

Optymalizacja paper.yml / paper-global.yml

Paper (i jego forki jak Purpur) dają ogromną liczbę ustawień do optymalizacji. Oto kluczowe parametry.

Dla Paper 1.19.4+ (paper-global.yml i paper-world-defaults.yml)

# paper-world-defaults.yml

# Zmniejszamy dystans aktywacji mobów
entities:
  spawning:
    despawn-ranges:
      monster:
        hard: 96
        soft: 28
      creature:
        hard: 96
        soft: 28
      ambient:
        hard: 64
        soft: 28

# Ograniczamy spawn mobów
spawn-limits:
  monsters: 50      # vanilla: 70
  animals: 8        # vanilla: 10
  water-animals: 3  # vanilla: 5
  ambient: 1        # vanilla: 15

# Optymalizacja chunków
chunks:
  max-auto-save-chunks-per-tick: 8
  delay-chunk-unloads-by: 10s
  entity-per-chunk-save-limit:
    experience_orb: 16
    arrow: 8
    item: 32

# Ograniczenie redstone
redstone-implementation: ALTERNATE_CURRENT

Kluczowe ustawienia Purpur

Jeśli używasz Purpur (fork Paper z dodatkowymi optymalizacjami):

# purpur.yml
settings:
  dont-send-useless-entity-packets: true

world-settings:
  default:
    mobs:
      zombie:
        aggressive-towards-villager-when-lagging: false
      villager:
        lobotomize:
          enabled: true  # wyłącza złożone AI u zacięgnionych mieszkańców

Audyt pluginów: szukamy ciężkich pluginów

Ślepa optymalizacja configów nie pomoże, jeśli jeden plugin zżera 60% tick serwera. Trzeba znaleźć winnego.

Spark - najlepsze narzędzie profilowania

Zainstaluj plugin Spark. To najdokładniejszy profiler dla Minecraft.

/spark profiler start    # Rozpocząć profilowanie
/spark profiler stop     # Zatrzymać i dostać raport
/spark tps               # Obecny TPS
/spark health            # Ogólny stan serwera

Spark pokaże, które pluginy i jakie konkretnie operacje zajmują najwięcej czasu. Szukaj pluginów, które zajmują więcej niż 10-15% tick serwera.

Timings (wbudowane w Paper)

/timings on      # Włączyć zbieranie danych
# Poczekaj 5-10 minut
/timings paste   # Dostać link do raportu

Raport Timings pokaże każdy plugin i każdy handler eventów z dokładnym czasem wykonania. Czerwone linie to problematyczne miejsca.

Co robić z ciężkim pluginem

Jeśli znalazłeś plugin, który spowalnia serwer, masz trzy opcje: zastąpić go bardziej zoptymalizowanym odpowiednikiem, skonfigurować (zwiększyć interwały aktualizacji, wyłączyć zbędne funkcje) lub usunąć, jeśli nie jest krytyczny.

View Distance i Simulation Distance

Te dwa parametry mają ogromny wpływ na wydajność.

View Distance - ile chunków wokół gracza wysyła się klientowi do renderowania. Simulation Distance - ile chunków wokół gracza jest realnie obsługiwanych przez serwer (moby, redstone, wzrost roślin).

# server.properties
view-distance=7           # vanilla: 10
simulation-distance=4     # vanilla: 10

Obniżenie simulation-distance z 10 do 4 to skrócenie obsługiwanego obszaru o ponad 6 razy. Efekt na TPS kolosalny.

Jeśli graczom zależy na ładnym widoku, można trzymać view-distance wyższy (7-8), a simulation-distance niski (4-5). Dalekie chunki będą widoczne, ale nie będą obciążać serwera.

Pre-generacja świata

Generacja chunków w locie to droga operacja. Rozwiązanie: wygenerować wszystkie chunki zawczasu.

Plugin Chunky robi to sprawnie:

/chunky radius 5000       # Promień w blokach od centrum
/chunky start             # Rozpocząć generację
/chunky pause             # Pauza (w razie potrzeby)
/chunky continue          # Kontynuować

Generuj świat, gdy na serwerze jest mało graczy, albo w ogóle offline. Po pre-generacji ustaw granicę świata, żeby gracze nie wychodzili poza wygenerowany obszar:

/worldborder set 10000    # Granica świata 10000 bloków

Ataki DDoS a TPS: ukryty związek

Oto o czym rzadko mówi się w poradnikach optymalizacji TPS: ataki DDoS bezpośrednio zabijają wydajność serwera, nawet jeśli nie kładą go całkowicie.

Jak atak wpływa na TPS

Przy ataku DDoS na serwer Minecraft dzieje się tak. Tysiące podrobionych połączeń zapychają stos sieciowy. Serwer marnuje czas procesora na obsługę fałszywych pakietów zamiast ticków gry. Bot-ataki tworzą setki fałszywych graczy, a każdy z nich to obciążenie serwera. Nawet jeśli atak nie "kładzie" serwera w pełni, TPS leci do 10-15 i gracze doświadczają koszmarnych lagów.

Możesz idealnie skonfigurować Paper, wyczyścić ciężkie pluginy, pre-generować świat, ale jeden bot-atak wyzeruje wszystkie twoje wysiłki.

Jak rozwiązujemy ten problem

W MineGuard filtrujemy szkodliwy ruch, zanim dotrze do twojego serwera. Nasz filtr odsiewa boty, fałszywe połączenia i śmieciowe pakiety na poziomie sieciowym. Twój serwer dostaje tylko legitny ruch od prawdziwych graczy.

Efekt: nawet w trakcie aktywnego ataku DDoS twój serwer trzyma stabilne 20 TPS, bo całe obciążenie od ataku spada na nasz filtr, a nie na twój sprzęt. Widzieliśmy przypadki, gdy serwery z idealnie skonfigurowanym Paper spadały do 5 TPS przy bot-atakach, a po podłączeniu naszej ochrony trzymały stabilne 19.9-20.0 nawet pod atakiem.

Monitoring TPS: trzymamy rękę na pulsie

Optymalizacja to nie jednorazowa akcja. Trzeba stale pilnować stanu serwera.

Spark do stałego monitoringu

/spark tps                    # Obecny TPS (1m, 5m, 15m)
/spark health                 # CPU, pamięć, TPS w jednym raporcie
/spark profiler start --timeout 300  # Profilowanie na 5 minut

Uruchamiaj profilowanie w godzinach szczytu, żeby złapać realne problemy.

Automatyczne alerty

Skonfiguruj powiadomienia o spadku TPS. Wiele paneli zarządzania (Pterodactyl, AMP) wspiera to out-of-the-box. Jeśli masz customową konfigurację, użyj pluginu, który wysyła webhook na Discord przy spadku TPS poniżej progu.

Na co patrzeć

  • TPS 19.5-20.0 - super, serwer działa idealnie
  • TPS 18.0-19.5 - normalnie, nieznaczne spadki
  • TPS 15.0-18.0 - trzeba optymalizacji, gracze zaczynają zauważać lagi
  • TPS poniżej 15.0 - poważne problemy, trzeba pilnie się tym zająć

Checklista optymalizacji

Podsumujmy. Przejdź po tej liście:

  1. Zaktualizuj rdzeń do Paper lub Purpur najnowszej wersji
  2. Skonfiguruj paper-world-defaults.yml: limity mobów, despawn-ranges, ALTERNATE_CURRENT
  3. Ustaw simulation-distance 4-5, view-distance 7-8
  4. Pre-generuj świat przez Chunky i ustaw granicę
  5. Zrób audyt pluginów przez Spark - znajdź i zastąp ciężkie
  6. Ogranicz encje: limity na farmy, auto-czyszczenie dropu
  7. Podłącz ochronę DDoS, żeby ataki nie wpływały na TPS
  8. Skonfiguruj monitoring TPS przez Spark
  9. Regularnie sprawdzaj raporty Timings po aktualizacjach pluginów

Optymalizacja TPS to kompleksowy proces. Nie ma jednego magicznego ustawienia, które wszystko naprawi. Ale jeśli systemowo przejdziesz przez każdy punkt, różnica będzie ogromna. Serwery, które stabilnie trzymają 20 TPS, utrzymują graczy. Serwery z lagami - tracą ich.


Chroń swój serwer przed atakami DDoS

Darmowa ochrona z konfiguracją w 5 minut. 1 TB ruchu w zestawie.

Wypróbuj za darmo


Powiązane artykuły