Как изменить Simulation Distance

1. Понимание параметра и подготовка

Simulation Distance (дистанция симуляции) определяет радиус в чанках вокруг игрока, в пределах которого происходят игровые процессы: рост растений, работа механизмов, спавн мобов, обновление блоков (random tick). В отличие от View Distance (дистанция рендеринга/отправки чанков клиенту), этот параметр напрямую нагружает CPU сервера.

На выделенном сервере под управлением Ubuntu, управляемом через панель proxify.cloud (Proxmox), изменение этого параметра требует редактирования конфигурационных файлов серверного ядра (Paper, Spigot, Purpur, Fabric, Forge) и перезагрузки инстанса.

Важно: Значение по умолчанию обычно равно 10 (для Paper/Purpur) или 8 (Vanilla). Рекомендуемый диапазон для производительности — 4–8. Значения выше 10 на серверах с онлайном 20+ игроков могут вызвать сильные лаги (TPS < 18.0).

Перед началом работ:

  1. Зайдите в панель proxify.cloud.
  2. Выберите нужный выделенный сервер (Dedicated Server).
  3. Убедитесь, что у вас есть доступ к консоли сервера (VNC/SSH) и права root или sudo.
  4. Остановите Minecraft-сервер через панель управления игровым сервером (Pterodactyl, AMP, MineOS или системный systemd), чтобы избежать повреждения файлов.

2. Определение типа сервера и пути к конфигурации

Путь к файлу настроек зависит от используемого ядра и панели управления на Ubuntu. Подключитесь по SSH:

ssh root@<IP_ВАШЕГО_СЕРВЕРА_PROXIFY>

Вариант А: Paper / Spigot / Purpur / Pufferfish (standalone или через MineOS/Pterodactyl)

Стандартный путь к файлу server.properties:

/opt/minecraft/server.properties          # Часто для ручных установок
/var/lib/pterodactyl/volumes/<UUID>/server.properties  # Pterodactyl Panel
/home/minecraft/server/server.properties  # MineOS / ручная установка пользователем minecraft

Вариант Б: Fabric / Forge / NeoForge (модлоадеры)

Для модлоадеров параметр часто вынесен в отдельный конфиг ядра (например, paper-world-configuration.yml для Paper-based форков или server.properties для чистого Forge/Fabric), но Fabric/Forge (Vanilla ядро) не поддерживают simulation-distance в server.properties нативно. Им требуется мод Server Optimization (например, Lithium, Starlight или специализированные моды вроде Simulation Distance Changer) либо использование Paper-based форков (Arclight, Mohist).

Инструкция ниже ориентирована на Paper/Purpur/Spigot — наиболее частый выбор на proxify.cloud для выделенных серверов.

Найдите файл:

find / -name "server.properties" -type f 2>/dev/null | grep -E "(minecraft|server|pterodactyl)"

Пример вывода:

/var/lib/pterodactyl/volumes/a1b2c3d4/server.properties

Перейдите в директорию:

cd /var/lib/pterodactyl/volumes/a1b2c3d4/

3. Редактирование server.properties

Сделайте резервную копию:

cp server.properties server.properties.backup.$(date +%F)

Откройте файл в редакторе (nano, vim, micro):

nano server.properties

Найдите строку simulation-distance. Если её нет (старые версии Paper < 1.18), добавьте её в конец файла или после view-distance.

Пример корректного блока настроек для Paper 1.20.4+:

# Minecraft server properties
# Дата изменения
view-distance=10
simulation-distance=6
max-tick-time=60000
max-auto-save-chunks-per-tick=24
optimize-explosions=true
...

Рекомендуемые значения simulation-distance:

Онлайн / Тип сервера Значение Примечание
Vanilla / Survival (малый онлайн 1-10) 6 - 8 Баланс механик и производительности.
Survival / SMP (средний онлайн 10-40) 5 - 6 Стандарт для Paper. Снижает нагрузку на Entity Ticking.
Высокий онлайн 40+ / Minigames / Tech 4 - 5 Критично для TPS. Фармы могут работать медленнее.
Тестовый / Локальный / Мощный CPU (Ryzen 7950X/9950X на proxify.cloud) 8 - 10 Только если CPU загружен < 60% на пиках.

Правило: simulation-distance должен быть ≤ view-distance. Если view-distance=10, ставьте simulation-distance=6. Не ставьте симуляцию выше просмотра — клиент не получит чанки для симуляции.

Сохраните файл: Ctrl+O, Enter, Ctrl+X (в nano).

4. Настройка paper-world-configuration.yml (Тонкая настройка Paper/Purpur)

На Paper/Purpur глобальный simulation-distance из server.properties является максимальным пределом для всех миров. Для гибкой настройки на уровне конкретного мира (overworld, nether, end) используется paper-world-configuration.yml.

Найдите файл (обычно лежит рядом с server.properties или в папке мира):

find . -name "paper-world-configuration.yml" -o -name "purpur.yml" 2>/dev/null

Если файла нет — он создастся при первом запуске Paper. Создайте его вручную или запустите сервер на 10 секунд и остановите.

Откройте:

nano paper-world-configuration.yml

Найдите секцию chunks -> simulation-distance. В Paper конфиг использует YAML-структуру.

Пример оптимальной конфигурации для выделенного сервера на proxify.cloud (Ubuntu 22.04/24.04):

# paper-world-configuration.yml
verbose: false
config-version: 16

chunks:
  # Глобальный лимит (перекрывает server.properties, если раскомментировать)
  # simulation-distance: 6 
  
  # Настройка загрузки чанков
  delay-chunk-unloads-by: 10s
  auto-save-interval: 6000 # 5 минут (в тиках), снижает I/O на NVMe proxify.cloud
  
  # Лимиты энтити для предотвращения лагов при высокой симуляции
  entity-per-chunk-save-limit:
    experience_orb: 64
    item: 128

entities:
  # Важно при снижении simulation-distance: агр мобов не должно ломаться
  zombie-aggressive-towards-villager: true
  max-entity-collisions: 8

# Настройки тиков (random tick speed не меняет, но влияет на нагрузку)
tick-rates:
  # sensor-scan: 1 # Реже сканирование окружения мобами (экономия CPU)
  behavior:
    villager:
      validatenearbypoi: 60
      acquirepoi: 120

# Отключение ненужных проверок для производительности
unsupported-settings:
  fix-invulnerable-end-crystals: true
  allow-permanent-block-break-exploits: false

Примечание: Если вы укажете simulation-distance в этом файле, он будет иметь приоритет над server.properties для данного мира. Лучше оставить закомментированным здесь и управлять через server.properties как единой точкой входа, либо настроить отдельно для world_nether (обычно 4-5) и world_the_end (4).

Сохраните и выйдите.

5. Настройка spigot.yml (Дополнительная оптимизация тиков)

Файл spigot.yml контролирует поведение энтити и тиков. При изменении simulation-distance часто требуется скорректировать entity-activation-range и tick-rates, чтобы мобы за пределами симуляции не "думали".

Откройте:

nano spigot.yml

Ключевые параметры в секции settings:

settings:
  # Дистанция активации ИИ мобов (блоки). Должна быть <= simulation-distance * 16
  # При simulation-distance=6 (96 блоков) ставьте 96 или меньше.
  entity-activation-range:
    animals: 32
    monsters: 96
    raiders: 96
    misc: 16
    water: 16
    villagers: 64
    flying: 96
  
  # Частота тиков энтити за пределами активации (экономия CPU)
  entity-tracking-range:
    players: 96
    animals: 48
    monsters: 96
    misc: 32
    other: 64
  
  # Random tick speed (не меняйте, если не знаете зачем)
  # random-tick-speed: 3
  
  # Сохранение структур
  save-structure-info: true
  
  # Оптимизация хопперов (критично для техник)
  hopper:
    cooldown: 0 # 0 = отключить кулдаун (vanilla 1), 1-2 = оптимизация
    push-amount: 1
  
  # Лимит спавна мобов (уменьшает нагрузку при большой симуляции)
  spawn-limits:
    monsters: 70
    animals: 15
    water-animals: 5
    water-ambient: 20
    water-underground-creature: 5
    ambient: 15
    axolotls: 5
    underground_water_creature: 5

Сохраните файл.

6. Проверка прав доступа и владельца файлов

На Ubuntu в контейнере/VM proxify.cloud файлы должны принадлежать пользователю, от имени которого запускается сервер (обычно minecraft, pterodactyl или container).

# Определите пользователя (посмотрите systemd unit или start.sh)
ls -la server.jar
# Пример вывода: -rw-r--r-- 1 minecraft minecraft ...

# Рекурсивно выставите владельца (замените minecraft на вашего юзера)
chown -R minecraft:minecraft .
# Или для Pterodactyl (обычно uid 998):
# chown -R 998:998 .

7. Запуск сервера и верификация

Запустите сервер через панель proxify.cloud (кнопка Start в Pterodactyl / MineOS / AMP) или через systemd:

systemctl start minecraft-server
# или
systemctl start ptero-panel@<UUID>.service

Подождите полной загрузки (логи: Starting minecraft server version 1.20.4... Done (X.XXs)! For help, type "help").

Проверка в кон