Výkon serveru/Optimalizace serveru
Na výkon serveru má vliv mnoho faktorů. Níže jsou vypsány nejpodstatnější z nich. Pokud se budete držet doporučení popsaných níže, na menších až středních serverech byste se s problémy týkající se výkonu setkat neměli.
U velkých serverů však může být výkon velice komplexní téma. Více o optimalizaci se dočtete na následujících odkazech https://paper-chan.moe/paper-optimization/ https://github.com/YouHaveTrouble/minecraft-optimization
Platforma serveru (server JAR)
Samotný serverový (.jar) soubor (‘server jar’), neboli platforma serveru je například Vanilla, Spigot, Paper, nebo Fabric.
Server s pluginy
V žádném případě nevyužívejte Spigot, nebo CraftBukkit.
Používejte buď Paper, nebo Pufferfish, což je fork Paperu, který přidává optimalizace navíc (případně Purpur, který je na tom z hlediska výkonu stejně, jako Pufferfish, jelikož se jedná o jeho fork).
Rozdíl ve výkonu mezi Vanillou/Spigotem a Paperem je opravdu velký. Rozdíl mezi Paperem a Pufferfishem už tak znatelný není, avšak může pomoci, zejména u větších serverů.
Vanilla
V případě, kdy nechcete, aby byly Vanilla mechaniky hry ovlivněny, ideálním řešením je platforma Fabric s módem Lithium. Platforma Vanilla se nedoporučuje používat, jelikož Fabric v porovnání s Vanillou mód Lithium server znatelně optimalizuje, a to bez nechtěných dopadů na Vanilla mechaniky hry.
Mód Lithium patří pouze na server, takže se hráči připojí i s Vanilla klientem.
Módované servery
U módovaných serverů forky zlepšující výkon serveru nejsou. Existují však některé módy, které můžou s výkonem serveru pomoci. Na Fabricu se jedná zejména o Lithium.
Ačkoli pro Forge některé optimalizační módy existují (viz https://github.com/TheUsefulLists/UsefulMods/blob/main/Performance/Performance120.md), obdobu Lithium, kde zlepšení výkonu může být opravdu znatelné, nenajdete. Proto jsou doporučení vypsané níže ještě důležitější, než u platforem Paper, Pufferfish, Purpur, případně Fabric s módem Lithium.
Předgenerace
Generování chunků je z hlediska serveru jedna z nejnáročnějších operací. To může být znatelné zejména při slabším výkonu CPU (viz níže), rychlém generování chunků při letu s elytrou, nebo začátku serveru, kdy se mnoho hráčů roběhne do všech směrů. Proto v případě, kdy se potýkáte s problémy týkající se výkonu, předgenerace mapy je téměř nutností. Více se o předgeneraci dočtete zde.
Serverové zdroje/prostředky
Detailněji si o dopadu serverových prostředků na výkon serveru můžete přečíst v této části.
Ve zkratce by se dalo říci, že:
- výkon CPU má na výkon serveru velký vliv
- velice záleží na modelu CPU. Minecraft server potřebuje procesor s velkým výkonem na jedno vlákno. Modely procesorů poskytované u klasických VPS hostingů nejsou pro Minecraft server vhodné
- množství RAM bývá z hlediska výkonu přeceňováno. Pokud není RAM vyloženě nedostatek, navýšení RAM pravděpodobně výkonu serveru znatelně nepomůže. Více RAM automaticky neznamená lepší výkon. Příliš RAM naopak škodí
- Paper/Pufferfish/Purpur dokáže fungovat s (až o dost) méně serverovými prostředky, než Vanilla/módovaný server (obzvlášť, pokud je těžce módovaný)
Java flagy
Používejte Aikar flagy viz zde.
Pravidelný restart serveru
Je optimální, aby byl server alespoň jednou denně restartován (zejména, pokud je serveru přiděleno málo RAM).
Základní nastavení
Jedno z nejpodstatnějších nastavení týkající se výkonu Minecraft serveru je view-distance (jak daleko hráč vidí) a simulation-distance (jak daleko od každého hráče se svět aktualizuje, tzn. entity v něm, bloky a podobně). Obě tyto nastavení se nachází v souboru server.properties. Nastavení těchto hodnot na příliš vysoké může mít na výkon serveru znatelně negativní dopad. Naopak snížení těchto hodnot může výkonu serveru pomoci, ale určité věci rozbít (například některé farmy). Proto je důležité tuto hodnotu nenastavovat příliš nízko, a místo toho mezi hráčskou zkušeností a výkonem serveru najít ideální balanc.
Monitorování výkonu serveru
Výkon serveru se dá sledovat zejména pomocí dvou ukazatelů, a to TPS (ticks per second) a MSPT (milliseconds per tick). Co tato označení znamenají se můžete na následujícím odkaze: https://spark.lucko.me/docs/guides/TPS-and-MSPT
K zjištění příčiny lagů se v dnešní době používá zejména profiler Spark, což je jak plugin, tak mód. Více o tom, jak zdroj lagů detekovat, se dočtete v jeho dokumentaci.
Na Spark Discordu se nachází kanál #performance-help, kde můžete zkusit o případnou pomoc požádat.
Co je to tick
Game loop Minecraft serveru (zjednodušeně server samotný) se aktualizuje každých 0.05 sekundy (za 1 sekundu jich tedy v případě, kdy server nelaguje, proběhne 20). Aktualizace tohoto game loopu se nazývá tick.
V některých (zejména serverových) konfiguračních souborech jsou hodnoty uvedeny v ticích. 1 sekunda je tedy 20 ticků.
Kolik hráčů server unese?
Kolik hráčů server unese nelze říct. Záleží na opravdu mnoho faktorech, jako platformě, množství serverových prostředků, jejich modelu, optimalizaci, nebo módech.
Od určitého počtu hráčů se však z povahy Minecraft serveru setkáte s limitem, i kdybyste měli nejmodernější hardware a server opravdu dobře optimalizovaný.