Blog · blog

Najlepsze modyfikacje wydajności dla serwerów Minecraft

Opóźnienia po stronie serwera to inne zagadnienie niż FPS po stronie klienta. Optymalizacja flag JVM, wygenerowane z góry bloki terenu oraz rozsądny zasięg widzenia rozwiązują większość problemów.

TRtrolPublished 6 min read

Opóźnienia serwera to zupełnie inna sprawa niż opóźnienia klienta

Poradniki skupiające się na stronie klienta mówią o FPS: o tym, jak Twoja karta graficzna rysuje klatki. Wydajność serwera to zupełnie inne mierzenie – ticki na sekundę, ile razy na sekundę serwer może wykonać pełny cykl gry. Kiedy TPS spada poniżej 20, każdy połączony gracz odczuwa to jako gumowanie, opóźnione trafienia i moby, które zaostają w tyle za swoją rzeczywistą pozycją, bez względu na to, jak mocny jest komputer każdego gracza. Rozwiązanie tego problemu leży wyłącznie po stronie serwera.

Ma to znaczenie, ponieważ te dwa problemy są ciągle ze sobą mylone. Gracz z 300 FPS lokalnie nadal odczuje serwer działający z prędkością 12 TPS, a żadna modyfikacja klienta tego nie zmieni. Jeśli prowadzisz serwer, zwłaszcza ruchliwe lobby minigier z arenami BedWars lub SkyWars, które są stale resetowane, poniższe rozwiązania to te, w które warto inwestować swój czas.

Wybierz oprogramowanie serwera, które jest zaprojektowane do obsługi dużego obciążenia

Oprogramowanie serwera Vanilla Minecraft i nieoptymalna konfiguracja Spigot uruchamiają niemal wszystko w jednym wątku. Paper i forki, takie jak Purpur, przebudowują duże części tego procesu, aby działały asynchronicznie i wielowątkowo, a także oferują długą listę domyślnych optymalizacji, których nigdy nie było w wersji vanilla. To największy punkt dźwigni, zanim dotkniesz jakiegokolwiek wtyczka lub ustawienia.

Papier

Standardowy, nowoczesny wybór. Asynchroniczne ładowanie fragmentów, optymalizacje śledzenia encji oraz obszerny zestaw opcji dostrajania w paper.yml, których większość administratorów nigdy w pełni nie wykorzystuje.

Purpura

Tacki plastikowe z dodatkowymi pokrętłami wydajności i przełącznikami rozgrywki. Warto, jeśli zależy Ci na większej kontroli, nie opuszczając ekosystemu Paper.

Vanilla i gotowy Spigot

Funkcjonalne, ale marnuje realną wydajność przy czymkolwiek, co wykracza poza mały serwer o niskiej populacji.

Dostrajaj flagi JVM, a nie tylko konfigurację serwera

Serwery Minecraft działają wewnątrz Maszyny Wirtualnej Java, a domyślne ustawienia garbage collection JVM nigdy nie zostały dostosowane do specyficznego wzorca pamięci Minecrafta. Flagi Aikara to powszechnie używany, publicznie udokumentowany zestaw flag startowych JVM, które konfigurują garbage collector specjalnie pod ten wzorzec, i w znaczący sposób redukują częstotliwość i długość przerw związanych z GC pod obciążeniem graczy.

Wygeneruj świat z wyprzedzeniem, zanim gracze go zobaczą

Jedną z najczęstszych przyczyn nagłego spadku TPS jest generowanie nowych fragmentów przez serwer w czasie rzeczywistym, gdy gracze eksplorują niezamapowane tereny. Ta praca generacyjna bezpośrednio konkuruje z wszystkim, co serwer próbuje zrobić w tym samym cyklu. Narzędzie takie jak Chunky generuje fragmenty z wyprzedzeniem, w kontrolowanym, ograniczonym tempie, dzięki czemu gracze eksplorujący później nigdy nie wywołują tego skoku.

W przypadku sieci minigier ma to mniejsze znaczenie w przypadku map aren, które zazwyczaj są statyczne i małe, a bardziej w przypadku jakiejkolwiek otwartej przestrzeni centralnej lub świata lobby, w którym gracze mogą wędrować.

Ogranicz zasięg widzenia i zasięg symulacji

Te dwa ustawienia kontrolują, ile świata serwer musi utrzymywać załadowane i symulowane wokół każdego gracza, a są to ustawienia, które operatorzy najczęściej pozostawiają w domyślnych wartościach, które są po prostu zbyt wysokie dla ich liczby graczy i sprzętu.

UstawienieCo kontrolujeTypowy błąd
Zasięg widzeniaIle fragmentów jest wysyłanych do każdego klientaPozostawione w domyślnej wartości, która jest zbyt wysoka dla liczby graczy
Zasięg symulacjiJak daleko moby, bloki i redstone faktycznie symulująUstawione na zasięg widzenia, kiedy nie ma takiej potrzeby

Zazwyczaj warto najpierw zmniejszyć odległość symulacji. Gracze nie potrzebują symulacji mobów i redstone’a na tak dużą odległość, jak potrzebują renderowania chunków, a obniżenie tego parametru odzyskuje czas ticka bez większego wpływu na to, jak gra się podoba.

Sprawdź profil przed zgadywaniem

Zgadywanie przyczyny lagów marnuje czas. Profiler, taki jak spark, dokładnie pokazuje, gdzie serwer zużywa czas ticka, czy to konkretny plugin, generowanie świata, przetwarzanie encji, czy coś zupełnie innego, zamiast tego, żebyś losowo zmieniał ustawienia i liczył na poprawę.

  1. Zainstaluj Paper lub Purpur

    Przejdź najpierw na modyfikowaną wersję Spigota lub serwer vanilla. To odblokuje wszystkie optymalizacje poniżej.

  2. Zastosuj flagi Aikara w swoim skrypcie startowym

    Skopiuj udokumentowany zestaw flag do polecenia startu serwera i uruchom ponownie. To jednorazowa zmiana, która przyniesie korzyści na stałe.

  3. Wstępnie generuj swój świat z Chunky

    Uruchom to podczas godzin o małym natężeniu ruchu, aby gracze eksplorujący nigdy później nie wywoływali generowania fragmentów na żywo.

  4. Ustaw odległość widoku i odległość symulacji celowo

    Dopasuj je do rzeczywistej liczby graczy i sprzętu, zamiast pozostawiać domyślne ustawienia platformy.

  5. Profil z iskrą pod obciążeniem rzeczywistym

    Złap raport podczas szczytu natężenia i napraw to, co faktycznie wskazuje, zamiast zgadywać.

Wydajność po stronie serwera to nie wszystko

Utrzymanie stabilnego TPS to połowa sukcesu. Każdy gracz nadal renderuje ten stabilny serwer na własnym komputerze, a solidny serwer nie pomoże komuś, u którego klient ma problemy z renderowaniem, pamięcią lub niezgodnym pakietem shaderów. Jeśli prowadzisz sieć BedWars lub SkyWars i już włożyłeś w to pracę, druga połowa płynnych wrażeń dla Twoich graczy to to, co dzieje się po ich stronie. Właśnie tę lukę ma za zadanie wypełnić Terminus, dopasowując wydajność klienta do pracy serwera, którą już wykonałeś.

FAQ

Pobierz Terminus

Tuned client performance to match the server work you already did.