====== Optymalizacja serwera Minecraft ====== Poniżej przedstawiamy pomocne wskazówki, które ułatwią wykonanie optymalizacji serwera Minecraft. ===== Silnik ===== Zalecamy skorzystanie z poniższych silników. Silniki te są rozwijane przez społeczność właśnie pod kątem wydajności i naprawionych błędów: * **Pufferfish** (dla wersji 1.18+) * **Purpur** (dla wersji 1.16+) * **PaperSpigot** (dla wersji 1.7.10 - 1.18.x) * **FlamePaper** (dla wersji 1.8.8) Dodatkowe informacje dotyczące zmiany wersji silnika, znajdziesz [[zmiana_wersji_serwera|tutaj]]. ===== Pluginy optymalizujące ===== Na nasz serwer warto wgrać niektóre pluginy, które rozwiązują najczęściej pojawiające się problemy wydajnościowe: * **[[https://www.spigotmc.org/resources/clearlagg.68271/|ClearLagg]]** - służy do usuwania leżących przedmiotów na ziemi. __Ma to duży wpływ na wydajność i użycie pamięci przez serwer__. * **[[https://www.spigotmc.org/resources/entitytrackerfixer-fix-1-14-4-1-16-2-entitytick-lag.70902/|EntityTrackerFixer]]** - wyłącza np. poruszanie się zwierząt dopóki gracz nie pojawi się w pobliżu. Poprawia wydajność przez minimalizację użycia CPU przez serwer. **UWAGA!** Plugin należy stosować do maksymalnie wersji 1.16.x. Nowsze wersje mają wbudowaną opcję optymalizowania mobów/entity. * **[[https://www.spigotmc.org/resources/chunky.81534/|Chunky]]** - plugin dzięki któremu możemy wygenerować mapę. Aby wygenerować mapę musisz najpierw __ustawić środek mapy__. Aby to zrobić wpisz komendę ''/worldborder center '' gdzie i to pozycja gdzie będzie środek. Zazwyczaj X i Z ustawia się na 0 aby dokładnie wiedzieć jaka jest granica mapy. Po ustawieniu środka mapy można przejść do ograniczenia jej wielkości komendą ''/worldborder set ''. Zalecane jest generowanie __nie więcej niż 2000 kratek__ na raz. Aby rozpocząć generowanie mapy należy wpisać komendę ''/chunky worldborder'' oraz ''/chunky start''. **WAŻNE!** Podczas generowania mapy tpsy serwera mogą spaść nawet do 5, wówczas rozgrywka na serwerze będzie bardzo utrudniona! ===== Optymalizacja konfiguracji serwera ===== Poniżej przedstawione są istotne parametry serwera Minecraft, które ustawia się bezpośrednio w jego plikach konfiguracyjnych. Nie każdy silnik posiada dane parametry. Wszystkie wymienione parametry posiadają silniki na wersję **1.18.x**. Aby __sprawnie przeprowadzić optymalizację serwera__ zalecamy skorzystanie z [[jak_korzystac_z_ftp|FTP]] oraz z programu do edytowania plików .yml takiego jak na przykład [[https://notepad-plus-plus.org/downloads/|Notepad++]]. ---- ==== Plik: server.properties ==== * **view-distance** - W zależności od potrzeb - od 3 do 10. Jest to odległość w chunkach generowania się mapy dla gracza, im mniej, tym serwer ma mniej do przeliczania, zatem więcej zasobów CPU jest kierowane na obsługę rozgrywki. **Zalecana wartość: 3**. * **simulation-distance** - Czyli odległość od gracza, w której coś się wydarzy. Obejmuje to przepalanie przedmiotów w piecykach, uprawę roślin, sadzonek drzew itp. **Zalecana wartość: 4**. * **network-compression-threshold** - Próg, powyżej którego pakiety wychodzące z serwera są poddawane kompresji. Mniejsza wartość powoduje, że serwer używa już metod kompresji dla mniejszych pakietów, aby zmniejszyć ich rozmiar przed przesłaniem przez Internet. Zwiększa to przepustowość łącza (istotne przy słabych łączach, mało istotne przy hostingu takim jak **TITANAXE**), ale znacznie zwiększa użycie CPU przez serwer. **Zalecana wartość: 512**. ---- ==== Plik: bukkit.yml ==== Dotyczy silników: **CraftBukkit**, **Spigot**, **PaperSpigot**, **Pufferfish**, **Purpur**, **FlamePaper** * **spawn-limits** - Limity mobów pojawiających się na mapie. Zalecane wartości: * **monsters**: 20 * **animals**: 8 * **water-animals**: 2 * **water-ambient**: 2 * **water-underground-creature**: 3 * **axolotls**: 3 * **ambient**: 1 * **chunk-gc.period-in-ticks** - Reguluje zwalnianie pamięci po załadowanych chunkach. **Zalecana wartość: 400**. * **ticks-per** - Reguluje jak często serwer ma próbować spawnować potwory. Zalecane wartości: * **monster-spawns**: 10 * **animal-spawns**: 400 * **water-spawns**: 400 * **water-ambient-spawns**: 400 * **water-underground-creature-spawns**: 400 * **axolotl-spawns**: 400 * **ambient-spawns**: 400 ---- ==== Plik: spigot.yml ==== Dotyczy silników: **Spigot**, **PaperSpigot**, **Pufferfish**, **Purpur**, **FlamePaper** * **merge-radius** - Określa w jakiej odległości od siebie przedmioty i punkty doświadczenia mają się ze sobą łączyć. Zalecane ustawienia: * **item**: 3.5 * **exp**: 4.0 * **mob-spawn-range** - Maksymalna liczba spawnowancyh mobów wokół gracza. **Zalecana wartość 2**. * **entity-activation-range** - Określa odległość od gracza, kiedy moby zaczynają się poruszać. Zalecane wartości: * **animals**: 24 * **monsters**: 24 * **raiders**: 48 * **misc**: 8 * **water**: 8 * **villagers**: 16 * **flying-monsters**: 48 * **entity-tracking-range** - Jest to odległość w //blokach//, z której np. moby będą widoczne przez gracza. Jeśli odległość na przykład gracza od moba będzie większa niż 48 bloków to gracz go nie zobaczy. Te wartości nie mogą być bardzo niskie. Zalecane wartości: * **players**: 48 * **animals**: 48 * **monsters**: 48 * **misc**: 32 * **other**: 64 * **tick-inactive-villagers** - Określa, czy nieaktywni villagerowie mają być obsługiwani przez serwer. **Zalecane ustawienie: false**. * **hopper-transfer** - Czas w tickach (//20 ticków = 1 sekunda//), przez który hoppery będą czekać na przeniesienie przedmiotu. Zwiększenie tego zwiększy wydajność (//jeśli na serwerze jest dużo hopperów//) ale zepsuje zegary oparte na hopperach i ewentualne mechanizmy sortowania przedmiotów, jeśli wartość będzie ustawiona zbyt wysoko. **Zalecana wartość: 8**. * **hopper-check** - Czas w tickach (//20 ticków = 1 sekunda//) między hopperami (lejami) sprawdzającymi, czy nie ma przedmiotu nad nimi lub np. w skrzyni które są nad nimi. Zwiększenie tego poprawi wydajność (//jeśli na serwerze jest dużo hopperów//) ale zepsuje zegary oparte na hopperach i ewentualne mechanizmy sortowania przedmiotów oparte na strumieniach wody. **Zalecana wartość: 8**. * **nerf-spawner-mobs** - Ustawione na **true** wyłącza inteligencję (poruszanie się) mobów ze spawnterów. **Zalecana wartość: true**. * **arrow-despawn-rate** - Czas w tickach określający jak szybko znikają wystrzelone strzały. **Zalecana wartość: 300**. ---- ==== Plik: paper.yml ==== Dotyczy silników: **PaperSpigot**, **FlamePaper**, **Pufferfish** i **Purpur**. * **delay-chunk-unloads-by** - Ta opcja pozwala skonfigurować, jak długo chunki pozostaną załadowane po wyjściu gracza z serwera. Pomaga to nie stale ładować i rozładowywać tych samych chunków, gdy gracz porusza się tam i z powrotem. Zbyt wysokie wartości mogą spowodować jednoczesne ładowanie zbyt wielu chunków. **Zalecana wartość: 10**. * **max-auto-save-chunks-per-tick** - Pozwala spowolnić zapisywanie świata, rozkładając zapis w czasie jeszcze bardziej, aby uzyskać lepszą wydajność. Możesz ustawić wartość wyższą niż 8 przy więcej niż 20-30 graczach. Jeśli zapisywanie nie może zakończyć się na czas, serwer automatycznie zapisze resztę świata od razu i rozpocznie proces zapisu od nowa. **Zalecana wartość: 8**. * **despawn-ranges** - Pozwala dostosować zasięgi znikania na przykład mobów (//w blokach//). Zmniejszenie tych wartości spowoduje szybsze usuwanie mobów które są daleko od gracza. Zalecane wartości: * **monster**: * **soft**: 30 * **hard**: 56 * **creature**: * **soft**: 30 * **hard**: 56 * **ambient**: * **soft**: 30 * **hard**: 56 * **axolotls**: * **soft**: 30 * **hard**: 56 * **underground_water_creature**: * **soft**: 30 * **hard**: 56 * **water_creature**: * **soft**: 30 * **hard**: 56 * **water_ambient**: * **soft**: 30 * **hard**: 56 * **misc**: * **soft**: 30 * **hard**: 56 * **per-player-mob-spawns** - Ta opcja decyduje, czy spawnowanie mobów powinno uwzględniać, ile mobów już znajduje się w pobliżu gracza. **Zalecana wartość: true**. * **max-entity-collisions** - **Zalecana wartość: 2**. * **update-pathfinding-on-block-update** - Wyłączenie tej opcji spowoduje, że mniej będzie wykonywane odnajdywanie "ścieżek", co zwiększy wydajność. W niektórych przypadkach spowoduje to, że moby będą wyglądać na bardziej opóźnione; Po prostu będą pasywnie aktualizować swoją ścieżkę co 5 ticków (//0,25 sekundy//). **Zalecana wartość: false**. * **fix-climbing-bypassing-cramming-rule** - Włączenie tego spowoduje naprawienie ticków, na które nie ma wpływu wkuwanie podczas wspinaczki. Zapobiegnie to gromadzeniu się absurdalnych ilości mobów na małych przestrzeniach, nawet jeśli się wspinają (pająki). **Zalecana wartość: true**. * **armor-stands-tick** - W większości przypadków możesz bezpiecznie ustawić to na false. Jeśli używasz stojaków na zbroję lub jakichkolwiek pluginów, które modyfikują ich zachowanie i występują problemy, włącz je ponownie. Zapobiegnie to popychaniu stojaków zbroi przez wodę lub oddziaływaniu grawitacji. **Zalecana wartość: false** * **armor-stands-do-collision-entity-lookups** - **Zalecana wartość: false**. * **nether-ceiling-void-damage-height** - Jeśli ta opcja jest większa niż 0, gracze powyżej poziomu Y (//w netherze//) otrzymają obrażenia tak, jakby znajdowali się w próżni na normalnym świecie. **Zalecana wartość: 127**. * **tick-rates** - Jeśli jest problem z odnajdywaniem się mieszkańców wioski - Zmniejsz te wartości. W większości przypadków zalecane wartości powinny być dobre. Zalecane wartości: * **sensor**: * **villager**: * **secondarypoisensor**: 80 * **nearestbedsensor**: 80 * **villagerbabiessensor**: 40 * **playersensor**: 40 * **nearestlivingentitysensor**: 40 * **behavior**: * **villager**: * **validatenearbypoi**: 60 * **acquirepoi**: 120 * **optimize-explosions** - Ustawienie na **true** wykorzystuje zoptymalizowany algorytm eksplozji. **Zalecane ustawienie: true**. * **enable-treasure-maps** - Generowanie map skarbów wymaga dużo zasobów jeśli struktura, którą próbuje zlokalizować, znajduje się poza granicą świata który został wygenerowany. Włączenie tego jest bezpieczne tylko wtedy, gdy świat został wcześniej przez Ciebie wygenerowany. **Zalecana wartość: false**. * **treasure-maps-return-already-discovered** - Domyślna wartość tej opcji wymusza na nowo generowanych mapach szukanie niezbadanych struktur, które zwykle znajdują się poza wygenerowanym światem. Ustawienie tego na **true** sprawia, że ​​mapy mogą prowadzić do struktur, które zostały odkryte wcześniej. Jeśli nie zmienisz tego na **true**, serwer może zawiesić się lub zawiesić podczas generowania nowych map skarbów. **Zalecana wartość: true**. * **grass-spread-tick-rate** - Ustala jak szybko ma rozrastać się trawa. **Zalecana wartość: 4**. * **container-update-tick-rate** - Częstotliwość aktualizacji zawartości skrzynek. **Zalecana wartość: 1**. * **non-player-arrow-despawn-rate** - Ustala jak szybko znikają strzały wystrzelone nie przez gracza. **Zalecana wartość: 40 (2 sekundy)**. * **creative-arrow-despawn-rate** - Ustala jak szybko znikają strzały wystrzelone na trybie gry kreatywnym. **Zalecana wartość: 40 (2 sekundy)**. * **mob-spawner-tick-rate** - Szybkość działania spawnerów. **Zalecana wartość: 2**. * **disable-chest-cat-detection** - Wyłączenie możliwości siadania kotów na skrzynkach. **Zalecana wartość: true**. * **hopper.disable-move-event** - Określa, czy hoppery mają wywoływać event przeniesienia przedmiotu z hoppera do innego klocka. Jeśli masz jakikolwiek plugin korzystający z //InventoryMoveItemEvent// to **nie zmieniaj tego** - jeśli nie jesteś pewien, to też nie ruszaj! **Zalecana wartość: true**. * **ignore-occluding-blocks** - Określa, czy hoppery (leje) będą ignorować skrzynki w blokach, na przykład wózek z hopperem w bloku piasku lub żwiru. **Zalecana wartość: true**. * **anti-xray** - Włącz tę opcję, aby ukryć rudy na przykład diamentów, żelaza, złota przed czitami X-RAY. Szczegółowa konfiguracja tej funkcji, znajduje się na stronie papermc w języku Angielskim [[https://docs.papermc.io/paper/anti-xray|Kliknij tu aby przejść na stronę]]. Włączenie tego w rzeczywistości zmniejszy wydajność, jednak jest znacznie bardziej wydajne niż jakikolwiek plugin anty-xray. W większości przypadków wpływ na wydajność będzie znikomy. * **prevent-moving-into-unloaded-chunks** - Zapobieganie wchodzeniu na niezaładowane chunki. **Zalecana wartość: true**. * **use-faster-eigencraft-redstone** - Ustawienie **true** znacznie optymalizuje wszystkie mechanizmy z użyciem czerwonego proszku. Bardzo duży wpływ na wydajność. **Zalecana wartość: true**. * **entity-per-chunk-save-limit** - Za pomocą tego możesz ustawić limity, ile entity określonego typu można zapisać. Zalecane wartości: * **experience_orb**: 16 * **arrow**: 16 * **dragon_fireball**: 3 * **egg**: 8 * **ender_pearl**: 8 * **eye_of_ender**: 8 * **fireball**: 8 * **small_fireball**: 8 * **firework_rocket**: 8 * **potion**: 8 * **llama_spit**: 3 * **shulker_bullet**: 8 * **snowball**: 8 * **spectral_arrow**: 16 * **experience_bottle**: 3 * **trident**: 16 * **wither_skull**: 4 * **area_effect_cloud**: 8 * **alt-item-despawn-rate** - Ta lista pozwala ustawić alternatywny czas w tickach (//20 ticków = 1 sekunda//), aby niektóre upuszczone przedmioty zniknęły szybciej lub wolniej niż domyślnie. Ta opcja może być używana zamiast pluginów do czyszczenia przedmiotów leżących na ziemi. Zalecane wartości: * **enabled**: true * **items**: * **cobblestone**: 300 * **netherrack**: 300 * **sand**: 300 * **red_sand**: 300 * **gravel**: 300 * **dirt**: 300 * **grass**: 300 * **pumpkin**: 300 * **melon_slice**: 300 * **kelp**: 300 * **bamboo**: 300 * **sugar_cane**: 300 * **twisting_vines**: 300 * **weeping_vines**: 300 * **oak_leaves**: 300 * **spruce_leaves**: 300 * **birch_leave**s: 300 * **jungle_leaves**: 300 * **acacia_leaves**: 300 * **dark_oak_leaves**: 300 * **cactus**: 300 * **diorite**: 300 * **granite**: 300 * **andesite**: 300 * **scaffolding**: 600 ---- ==== Plik: purpur.yml ==== Dotyczy tylko silnika **Purpur**. * **use-alternate-keepalive** - Alternatywny system utrzymywania aktywności - czyli gracze ze słabym połączeniem nie będą wyrzucani od razu z serwera **Zalecana wartość: true**. * **aggressive-towards-villager-when-lagging** - Włączenie tej opcji spowoduje, że zombie przestaną atakować wieśniaków, jeśli serwer jest poniżej progu tps ustawionego w sekcji ''lagging-threshold''. **Zalecana wartość: false**. * **entities-can-use-portals** - Tą opcją można wyłączyć korzystanie z portalu przez przedmioty. Dzięki temu zapobiegnie to ładowanie chunków przez zmianę światów, które są obsługiwane w głównym wątku serwera. Jeśli ta opcja będzie ustawiona na **false** __moby nie będą mogły__ przenosić się przez portal. **Zalecana wartość: false**. * **villager.brain-ticks** - Ta opcja pozwala ustawić, jak często (w tickach //20 ticków = 1 sekunda//) wieśniacy będą wykonywać swoją "pracę". Nie ustawiaj tej opcji powyżej 3. **Zalecana wartość: 2**. * **villager.lobotomize** - **Zalecana wartość: true**. * **disable-treasure-searching** - Teleportuje gracza na miejsce spawnu, jeśli gracz wyjdzie poza ustawioną granicę mapy. Granicę mapy vanilli (//czyli ustawioną komendą /worldborder//) można ominąć więc lepiej jest tą opcję ustawić na **true**. ---- ==== Plik: pufferfish.yml ==== Tylko dla silnika **Pufferfish**. * **dab** - **Zalecana wartość: true**. * **max-tick-freq** - Definiuje najmniejszą liczbę zaznaczonych entity znajdujących się najdalej od graczy. Zwiększenie tej wartości może poprawić wydajność entity znajdujących się daleko od widoku, ale może zniszczyć farmy lub znacznie osłabić zachowanie mobów. Jeśli włączenie DAB niszczy farmy mobów, spróbuj zmniejszyć tę wartość. **Zalecana wartość: 20**. * **activation-dist-mod** - **Zalecana wartość: 7**. * **max-loads-per-projectile** - Określa ogólnie maksymalną ilość chunków jaką na przykład strzały, trójzęby i tym podobne mogą załadować. **Zalecana wartość: 8**. ---- ===== Pomocne sugestie ===== Zalecamy używanie [[harmonogram_zadan|Harmonogramu zadań]] w panelu serwera i ustawienie automatycznych restartów serwera np. w nocy. Pomaga to utrzymać serwer w dobrej kondycji i pozbycie się potencjalnych tzw. "wycieków pamięci".