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.
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.
| Ustawienie | Co kontroluje | Typowy błąd |
|---|---|---|
| Zasięg widzenia | Ile fragmentów jest wysyłanych do każdego klienta | Pozostawione w domyślnej wartości, która jest zbyt wysoka dla liczby graczy |
| Zasięg symulacji | Jak 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ę.
Zainstaluj Paper lub Purpur
Przejdź najpierw na modyfikowaną wersję Spigota lub serwer vanilla. To odblokuje wszystkie optymalizacje poniżej.
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.
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.
Ustaw odległość widoku i odległość symulacji celowo
Dopasuj je do rzeczywistej liczby graczy i sprzętu, zamiast pozostawiać domyślne ustawienia platformy.
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
Nie. Mody klienta zmieniają to, co dzieje się na własnym komputerze gracza. Opóźnienia serwera istnieją w pętli taktowania serwera, a docierają do nich tylko zmiany po stronie serwera, oprogramowanie, flagi, wtyczki, ustawienia świata.
Oprogramowanie serwerowe. Przejście z wersji vanilla lub nieoptymalnej Spigot do Paper lub Purpur odblokowuje pracę asynchroniczną i wielowątkową, na której bazują inne, zoptymalizowane wersje.
Tak, szczególnie w przypadku garbage collectora w "Minecraftcie", którego domyślne ustawienia w wersji podstawowej radzą sobie słabo pod obciążeniem. Nie naprawią one faktycznie niewystarczającego serwera, ale na wystarczająco mocnym sprzęcie wyraźnie wygładzają zamrożenia związane z GC.
Sprawdź TPS serwera za pomocą komendy takiej jak /tps lub wtyczki takiej jak spark. Jeśli TPS utrzymuje się blisko 20, a Ty nadal odczuwasz zacięcia, problem prawdopodobnie leży po stronie Twojego klienta lub połączenia, a nie serwera.
Pobierz Terminus
Tuned client performance to match the server work you already did.