Tuning configu Paper: ustawienia, które naprawdę dają wydajność
Nie ma tygodnia, żeby ktoś gdzieś na Discordzie nie podzielił się "zoptymalizowanym configiem Paper", który ma zrobić Twój serwer "dwa razy szybszym". Rzeczywistość: domyślne ustawienia Paper są już całkiem dobre, większość zysku siedzi w kilku pokrętłach, a reszta takiego magicznego configu zmienia głównie to, jak serwer się gra — nie to, jak jest szybki. Dlatego w tym artykule: które ustawienia naprawdę dają wydajność, w którym pliku mieszkają i czemu najpierw mierzysz, zanim czegokolwiek dotkniesz.
Najpierw pomiar, potem zmiany
Tuning bez pomiaru to zgadywanie. Na szczęście mierzenie jest dziś proste: nowsze wersje Paper mają profiler spark w standardzie. Komendą /spark tps widzisz TPS i MSPT od ręki, a /spark profiler uruchamia pomiar pokazujący, dokąd ucieka czas: entity, hoppery, generowanie świata czy ten jeden plugin. Starsze raporty timings odchodzą do lamusa; spark to następca.
Ważne rozróżnienie: niskie FPS u gracza to lag klienta i nie naprawisz go configiem serwera. Dopiero gdy TPS spada poniżej 20 albo MSPT regularnie pełznie w stronę 50, Twój serwer naprawdę się męczy. Mierz też w reprezentatywnym momencie — w zatłoczony wieczór, nie w pusty wtorkowy poranek — i zachowaj ten pomiar. Tylko wtedy po zmianie zobaczysz, czy naprawdę coś dała.
Warstwy configu w pigułce
Paper bazuje na Spigocie, który z kolei bazuje na Bukkicie i vanilli. Każda warstwa ma własny plik:
| Plik | Co tam mieszka |
|---|---|
server.properties | Podstawa vanilli: view-distance, simulation-distance, max-players, ustawienia świata |
bukkit.yml | Limity spawnów per kategoria mobów, interwał autosave |
spigot.yml | Entity-activation-range, mob-spawn-range, ticki hopperów, merge-radius |
config/paper-global.yml | Ustawienia Paper dla całego serwera, np. system chunków |
config/paper-world-defaults.yml | Ustawienia Paper per świat: zachowanie hopperów, poprawki spawnów i dużo więcej |
Warto wiedzieć: ustawienia z paper-world-defaults.yml nadpiszesz per świat plikiem paper-world.yml w folderze danego świata.
Pokrętła, które naprawdę coś robią
view-distance i simulation-distance
Największa dźwignia, oba w server.properties. View-distance decyduje, ile chunków gracz widzi; simulation-distance — w ilu chunkach świat naprawdę żyje: moby się ruszają, uprawy rosną, maszyny tykają. Symulowanie jest dużo droższe niż pokazywanie. Klasyczny trik brzmi więc: view-distance zostaw szeroko (8 do 10), a simulation-distance ustaw niżej (5 do 7 na zatłoczonym serwerze). Gracze widzą daleki horyzont, a serwer musi tykać tylko ułamek tych chunków. Jak zmienić view-distance, przeczytasz w bazie wiedzy: jak zmienić view-distance.
Spawny mobów
spawn-limits w bukkit.yml określają, ile mobów każdej kategorii może istnieć wokół graczy; potwory domyślnie stoją na 70. Na zatłoczonym serwerze możesz stopniowo schodzić niżej. W spigot.yml mob-spawn-range powinno pozostać w równowadze z simulation-distance, a Paper domyślnie rozdziela spawny uczciwie między graczy, więc jeden gracz AFK przy farmie nie pochłonie wszystkich spawnów. Ale uwaga: zbyt agresywne cięcie od razu czuć w rozgrywce — puste noce, stające farmy, źli gracze. Małe kroki.
Hoppery
Wielkie sortownie i farmy z tysiącami hopperów potrafią poważnie obciążyć czas ticku. W spigot.yml ticks-per.hopper-transfer i ticks-per.hopper-check określają, jak często hoppery pracują; lekkie podniesienie daje wtedy zauważalną różnicę, ale zmienia timing istniejących farm i sortowni. W paper-world-defaults.yml możesz dodatkowo dać pełnym hopperom odpocząć dzięki cooldown-when-full. Najpierw zmierz, czy hoppery w ogóle są Twoim problemem, zanim czegokolwiek tu dotkniesz.
Ładowanie chunków
Generowanie nowych chunków to jedno z najcięższych zadań, jakie zna serwer. Paper ma w paper-global.yml pokrętła systemu chunków, ale szczera rada brzmi: trzymaj się od nich z daleka, chyba że pomiar Cię tam kieruje i wiesz, co robisz — wartości domyślne są dobrze dobrane. Więcej zyskasz na granicy świata i pregenerowaniu chunków (patrz "Czytaj dalej") oraz na szybkich dyskach: ładowanie chunków z NVMe po prostu czuć w grze.
Rozsądne ustawienia według typu serwera
Mały serwer survival (2 do 10 graczy): zostaw prawie wszystko na domyślnych. Defaulty Paper są na to aż nadto; jeśli mimo to coś przycina, to prędzej przez jedną ekstremalną farmę, ciężki plugin albo za mało RAM-u niż przez config. Godziny w tuningu rzadko się tu zwracają.
Zatłoczony serwer społeczności (20+ graczy): potraktuj to jako punkt wyjścia, nie dogmat:
view-distance8 isimulation-distance6;spawn-limits.monstersstopniowo w dół od 70;mob-spawn-rangezgrane z simulation-distance;- ustawienia hopperów tylko wtedy, gdy spark wskazuje hoppery.
Wprowadzaj zmiany pojedynczo i po każdym kroku mierz przynajmniej jeden zatłoczony wieczór. Inaczej nigdy się nie dowiesz, które pokrętło zrobiło różnicę — ani które coś zepsuło.
Uważaj na "magiczne configi" z internetu
O tych gotowych configach optymalizacyjnych krążących wszędzie: podchodź do nich ostrożnie. Często pisane są pod starsze wersje, przestawiają dziesiątki ustawień naraz i przede wszystkim wycinają zachowania: mniej spawnów mobów, inny timing redstone'a, farmy, które po cichu przestają działać. Jeśli serwer przyspieszy, nie wiesz, dzięki której z czterdziestu linijek; jeśli coś się zepsuje — też nie. Jeśli mimo to chcesz jakiegoś użyć: połóż go obok wartości domyślnych, przejmuj świadomie tylko to, co rozumiesz, i zmieniaj małymi krokami. Defaulty Paper napisali ludzie, którzy sami budują to oprogramowanie serwerowe; "wszystko inaczej" rzadko jest ulepszeniem.
Gdy tuning nie wystarcza
Na koniec szczerze: config nie wyczaruje sprzętu. Za mało RAM-u na liczbę graczy, sterta ciężkich pluginów albo wolne dyski — tego nie rozwiążesz YAML-em. Jeśli spark wskazuje na presję pamięci albo wolny zapis chunków, większy pakiet to po prostu lepsza inwestycja. W MC-Node każdy serwer Minecraft działa na własnym sprzęcie z dyskami NVMe — właśnie przy chunkach to zauważalna różnica — od 0,50 € miesięcznie, przy ok. 1,10 € za GB RAM. Wszystko można wypowiedzieć co miesiąc, więc spróbować rozmiaru większego i wrócić, jeśli okaże się przesadą, można bez problemu.