From 85b376b81e88dcbb4a45848953fcc5841277c593 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 30 Sep 2026 07:39:24 +0000 Subject: [PATCH] add tuned server configs for 4 vCPU / 8 GB / 40 players (tracking, activation, hopper, chunk IO) --- zernmc-config/README.md | 64 +++++++++++++++++++++++++++ zernmc-config/paper-global.yml | 34 ++++++++++++++ zernmc-config/paper-world.yml | 53 ++++++++++++++++++++++ zernmc-config/server.properties.patch | 7 +++ zernmc-config/spigot.yml | 57 ++++++++++++++++++++++++ 5 files changed, 215 insertions(+) create mode 100644 zernmc-config/README.md create mode 100644 zernmc-config/paper-global.yml create mode 100644 zernmc-config/paper-world.yml create mode 100644 zernmc-config/server.properties.patch create mode 100644 zernmc-config/spigot.yml diff --git a/zernmc-config/README.md b/zernmc-config/README.md new file mode 100644 index 000000000..4433a6ffd --- /dev/null +++ b/zernmc-config/README.md @@ -0,0 +1,64 @@ +# ZernMC configs + +Тюнинг под профиль: **4 vCPU / 8 GB RAM, 30–40 игроков**, боевой сервер с +плагином, который спавнит много `Display`/`Marker` сущностей и частиц +(BlackKnife как референс). + +Все файлы **парциальные** — Paper/Spigot дополняет недостающие ключи +дефолтами, поэтому их можно копировать поверх существующих конфигов. + +## Куда класть + +| Файл | Путь на сервере | +|---|---| +| `spigot.yml` | `<сервер>/spigot.yml` | +| `paper-world.yml` | `<сервер>/<мир>/paper-world.yml` — **у каждого мира свой** | +| `paper-global.yml` | `<сервер>/config/paper-global.yml` | +| `server.properties.patch` | ключи из него в `<сервер>/server.properties` | + +## Что где меняем и зачем + +### `spigot.yml` +- `view-distance 8 / simulation-distance 5` — на 4 ядрах это самый + ощутимый рычаг: симуляция шириной 10 стоит в разы дороже 5. +- `entity-tracking-range.display 128 → 48` — **главный фикс**. Display, + ItemDisplay, TextDisplay, Marker шлются игрокам пачками; при спаме + боеспособностей 128 это десятки пакетов на тик. +- `misc 96 → 48`, `other 64 → 32`, `animals/monsters 96 → 64`, + `players 128 → 96` — то же, но по остальным типам. +- `entity-activation-range` — сужаем радиусы, в которых сущности вообще + тикают; `tick-inactive-villagers: false` — самый частый выигрыш. +- `ticks-per.hopper-check 1 → 8` — хопперы по умолчанию проверяются + каждый тик, 8 экономит заметно и не ломает фермы. +- `merge-radius.item 0.5 → 2.5` — меньше сущностей-дропа на земле. +- `item-despawn-rate 6000 → 3000`, `arrow-despawn-rate 1200 → 300`. +- `mob-spawn-range 8 → 6`, `max-tnt-per-tick 100 → 30`. + +### `paper-world.yml` +- `misc.redstone-implementation: ALTERNATE_CURRENT` — быстрее + распространение редстоуна. **Ломает 0-tick и двери-контры**, предупредить + игроков перед включением. +- `tick-rates` — рост травы, обновление контейнеров, спавнеры в 3 тика. +- `collisions.max-entity-collisions 8 → 5`. +- `environment.disable-thunder`, `optimize-explosions`, + `max-block-ticks`/`max-fluid-ticks` пополам. +- `hopper.disable-move-event: true` — **ломает плагины, слушающие + `InventoryMoveItemEvent`** (авто-сортировки, economy-логики). +- `entities.spawning.spawn-limits` — потолок мобов на чанк. + +### `paper-global.yml` +- `chunk-system.io-threads: 2`, `worker-threads: -1` — не даём + чанковой системе съесть 4 ядра. +- `chunk-loading.advanced.player-max-concurrent-chunk-loads/generates` — + защита от флуда генерацией при скоростном облёте. + +## Что НЕ трогаем +- Moonrise (чанковая система) — уже многопоточный, отдельный патч не нужен. +- `wake-up-inactive.*` — баланс, не перф. + +## Порядок применения +1. Остановить сервер. +2. Скопировать файлы. +3. `paper-world.yml` положить в **каждый** мир: `world/`, `world_nether/`, `world_the_end/`. +4. Старт → в логе не должно быть `Error occurred while loading` по этим файлам. +5. Проверить: `/paper entity` (tracking ranges), `spark` для TPS/MSPT. \ No newline at end of file diff --git a/zernmc-config/paper-global.yml b/zernmc-config/paper-global.yml new file mode 100644 index 000000000..40f51834c --- /dev/null +++ b/zernmc-config/paper-global.yml @@ -0,0 +1,34 @@ +# ZernMC tuned paper-global.yml — партиальный, мержится с дефолтами Paper. +# Копировать в <сервер>/config/paper-global.yml + +chunk-system: + worker-threads: -1 # авто под 4 vCPU (Paper сам считает) + io-threads: 2 # сидеть на 4 ядрах + gen-parallelism: "default" + +chunk-loading: + basic: + player-max-chunk-send-rate: 75.0 + player-max-chunk-load-rate: 60.0 + player-max-chunk-generate-rate: 20.0 # ограничить флуд генерацией при облёте + advanced: + auto-config-send-distance: true + player-max-concurrent-chunk-loads: 8 + player-max-concurrent-chunk-generates: 4 + player-max-concurrent-chunk-sends: 8 + +packet-limiter: + kick: + actions: 4000 + interval: 1 + limits: + all: 400.0 + server-bound: + play: + bundle: 100.0 + login: + bundle: 400.0 + +proxies: + velocity: + enabled: false \ No newline at end of file diff --git a/zernmc-config/paper-world.yml b/zernmc-config/paper-world.yml new file mode 100644 index 000000000..89a55739a --- /dev/null +++ b/zernmc-config/paper-world.yml @@ -0,0 +1,53 @@ +# ZernMC tuned paper-world.yml — партиальный, мержится с дефолтами Paper. +# Копировать в <сервер>/<мир>/paper-world.yml (для каждого мира свой файл!) + +chunks: + delay-chunk-unloads-by: 10s + +environment: + disable-thunder: true + optimize-explosions: true + fire-tick-delay: 40 # дефолт 30 — реже перезажигаем + max-block-ticks: 32768 # дефолт 65536 + max-fluid-ticks: 16384 # дефолт 65536 + +hopper: + cooldown-when-full: true + disable-move-event: true # ломает плагины на InventoryMoveItemEvent + ignore-occluding-blocks: true + +collisions: + max-entity-collisions: 5 # дефолт 8 + +tick-rates: + grass-spread: 3 + container-update: 3 + mob-spawner: 3 + wet-farmland: 3 + dry-farmland: 3 + +misc: + # ВНИМАНИЕ: ломает 0-tick схемы, двери-контры и quasi-connectivity. + # Включать только если игроки на этом не строят. + redstone-implementation: ALTERNATE_CURRENT + update-pathfinding-on-block-update: false + +entities: + per-player-mob-spawns: true + tracking-range-y: + enabled: false + spawning: + spawn-limits: + monster: 45 + animal: 12 + ambient: 8 + axolotls: 4 + creature: 8 + misc: 2 + villager: 4 + water_creature: 6 + underground_water_creature: 2 + water_ambient: 4 + ticks-per-spawn: + monster: 200 + animal: 400 \ No newline at end of file diff --git a/zernmc-config/server.properties.patch b/zernmc-config/server.properties.patch new file mode 100644 index 000000000..5fa2f7a4b --- /dev/null +++ b/zernmc-config/server.properties.patch @@ -0,0 +1,7 @@ +# ZernMC — серверные пропсы (менять только те ключи, что ниже) + +view-distance=8 +simulation-distance=5 +sync-chunk-writes=true +network-compression-threshold=256 +max-chained-neighbor-updates=1000000 \ No newline at end of file diff --git a/zernmc-config/spigot.yml b/zernmc-config/spigot.yml new file mode 100644 index 000000000..1151dee32 --- /dev/null +++ b/zernmc-config/spigot.yml @@ -0,0 +1,57 @@ +# ZernMC tuned configs — 4 vCPU / 8 GB RAM, 30-40 players, BlackKnife-подобные визуалы +# +# ВАЖНО: все файлы в этой папке — ПАРЦИАЛЬНЫЕ. Paper/Spigot дополняет +# недостающие ключи дефолтами при старте, поэтому перезаписывать целиком +# spigot.yml / paper-world.yml не нужно — достаточно скопировать эти файлы +# поверх существующих (или положить в правильные места до первого старта). +# +# Куда что класть: +# spigot.yml -> <сервер>/spigot.yml +# server.properties -> <сервер>/server.properties +# paper-world.yml -> <сервер>/world/paper-world.yml (для каждого мира свой!) +# paper-global.yml -> <сервер>/config/paper-global.yml +# +# Целевой профиль: боевой PvP-сервер, много частиц и Display-сущностей, +# поэтому экономия идёт по трекингу, активации и спавну, а не по физике. + +world-settings: + default: + view-distance: 8 + simulation-distance: 5 + + # --- Мобы: реже спавним, меньше держим в памяти --- + mob-spawn-range: 6 + merge-radius: + item: 2.5 + exp: 4.0 + item-despawn-rate: 3000 + arrow-despawn-rate: 300 + + entity-activation-range: + animals: 24 + monsters: 28 + raiders: 32 + misc: 10 + water: 8 + villagers: 16 + flying-monsters: 28 + tick-inactive-villagers: false + + # --- Трекинг: главный рычаг для сервера с голограммами/Display --- + entity-tracking-range: + players: 96 + animals: 64 + monsters: 64 + misc: 48 + display: 48 # дефолт 128 — Display-сущности идут всем подряд + other: 32 + + # --- Хопперы --- + ticks-per: + hopper-transfer: 8 + hopper-check: 8 # дефолт 1 — хопперы проверяются каждый тик + hopper-amount: 1 + hopper-can-load-chunks: false + + # --- Взрывы --- + max-tnt-per-tick: 30 \ No newline at end of file