Optimalizace Minecraft serveru Paper – konfigurace pro stabilní TPS
Optimalizace Paper serveru – view a simulation distance, bukkit.yml, spigot.yml, paper-world-defaults.yml, pregenerace světa a profilování přes spark.
Paper je nejpoužívanější serverový software pro Minecraft Java s pluginy. Už ve výchozím nastavení je výrazně rychlejší než vanilla nebo Spigot, ale pár změn v konfiguraci dokáže na serveru s desítkami hráčů udělat rozdíl mezi 20 TPS a neustálým lagováním.
Klíčové pravidlo: nejdřív měřte, pak upravujte. Bez profilu nevíte, jestli server brzdí entity, chunky nebo konkrétní plugin.
Měření – TPS, MSPT a spark
Minecraft server běží ve smyčce 20 ticků za sekundu. Na jeden tick má 50 ms. Důležitější než TPS je MSPT (milisekundy na tick) – dokud je pod 50, server stíhá.
Paper v novějších verzích (1.21+) obsahuje profiler spark přímo v sobě, u starších ho nainstalujete jako plugin.
/spark tps
/spark health
/spark profiler start
... nechte běžet pár minut během zátěže ...
/spark profiler stop
Po zastavení dostanete odkaz na webový report se stromem volání. Hledejte, co zabírá nejvíc času v hlavním vlákně – typicky entity (tickEntities), načítání chunků nebo konkrétní plugin.
server.properties
view-distance=8
simulation-distance=6
network-compression-threshold=256
sync-chunk-writes=false
- view-distance – kolik chunků hráč vidí. Velký vliv na síť a paměť.
- simulation-distance – v jakém okruhu se „tikají“ entity a farmy. Největší vliv na CPU. Hodnota 5–6 je pro většinu survival serverů v pořádku.
- sync-chunk-writes=false – vypne synchronní zápis souborů regionů při ukládání chunků, takže ukládání méně brzdí hlavní vlákno. Daní je o něco vyšší riziko ztráty posledních změn při pádu stroje.
bukkit.yml – spawn mobů
spawn-limits:
monsters: 50
animals: 8
water-animals: 3
water-ambient: 10
water-underground-creature: 3
axolotls: 3
ambient: 1
ticks-per:
monster-spawns: 2
animal-spawns: 400
Nižší spawn-limits znamenají méně entit na hráče. Hodnota monster-spawns: 2 znamená pokus o spawn jen každý druhý tick. Příliš agresivní snížení ale rozbije farmy a hráči si všimnou – měňte postupně.
spigot.yml – aktivační rozsahy a slučování
world-settings:
default:
entity-activation-range:
animals: 16
monsters: 24
raiders: 48
misc: 8
water: 8
villagers: 16
merge-radius:
item: 3.5
exp: 4.0
entity-tracking-range:
players: 48
animals: 48
monsters: 48
misc: 32
- entity-activation-range – entity dál od hráče se tikají méně často.
- merge-radius – slučování ležících předmětů a zkušeností do jednoho stacku.
- entity-tracking-range – do jaké vzdálenosti server posílá hráčům pohyb entit.
paper-world-defaults.yml
Od Minecraftu 1.19 je konfigurace Paperu rozdělená do config/paper-global.yml a config/paper-world-defaults.yml. Užitečné volby ve world-defaults:
environment:
optimize-explosions: true
entities:
armor-stands:
do-collision-entity-lookups: false
tick: false
collisions:
max-entity-collisions: 2
hopper:
disable-move-event: false
chunks:
prevent-moving-into-unloaded-chunks: true
optimize-explosions– rychlejší výpočet výbuchů (TNT farmy).armor-stands.tick: false– armor standy se nehýbou samy. Pozor na pluginy, které s nimi animují.max-entity-collisions– omezení kolizí v natlačených farmách.hopper.disable-move-event: truevýrazně zrychlí hoppery, ale rozbije pluginy, které hlídají přesun předmětů (ochrany truhel). Zapínejte jen pokud žádný takový nemáte.
Přesné názvy klíčů se mezi verzemi Paperu občas mění – kontrolujte dokumentaci na docs.papermc.io pro vaši verzi.
Pregenerace světa
Generování nových chunků je jedna z nejdražších operací. Když hráči létají s elytrou do neprozkoumaných oblastí, MSPT vystřelí. Řešení je pregenerace pluginem Chunky a ohraničení světa:
/worldborder set 10000
/chunky radius 5000
/chunky start
Pregeneraci spusťte mimo provoz – zatíží CPU i disk. Průběh sledujete v konzoli, pozastavení /chunky pause.
Paměť a Java
- Používejte Javu odpovídající verzi hry (Minecraft 1.20.5+ vyžaduje Javu 21).
- Nastavte
-Xmsa-Xmxna stejnou hodnotu a použijte G1GC flagy – podrobně v článku Aikar flags a výkon JVM. - Víc RAM neznamená víc TPS. Minecraft server je z velké části jednovláknový a víc než RAM ho omezuje výkon jednoho jádra CPU.
Pluginy
Nejčastější příčinou lagu nejsou nastavení, ale pluginy. Ve spark reportu filtrujte podle pluginů. Typicky problematické jsou:
- pluginy, které při každém pohybu hráče dělají dotaz do databáze,
- špatně napsané scoreboardy a hologramy s krátkým intervalem obnovy,
- staré verze pluginů pro jinou verzi hry.
Postup v kostce
- Změřte
/spark tpsa profil během špičky. - Snižte simulation-distance a upravte spawn limity.
- Pregenerujte svět a nastavte worldborder.
- Odhalte a vyměňte problémové pluginy.
- Znovu změřte a porovnejte.