Как изменить расстояние прорисовки (View Distance)

Введение

Расстояние прорисовки (View Distance) определяет, на сколько чанков вокруг игрока сервер отправляет данные о мире. Значение по умолчанию — 10 чанков. Увеличение улучшает обзор, но линейно нагружает CPU, RAM и канал сети. На выделенном сервере Ubuntu под управлением панели proxify.cloud (Proxmox) изменение параметра требует доступа к консоли контейнера/ВМ и правки конфигурационных файлов ядра сервера (Paper, Spigot, Purpur, Fabric/Forge с модами).


1. Подготовка и доступ к серверу

1.1. Вход в панель proxify.cloud

  1. Откройте https://proxify.cloud и авторизуйтесь.
  2. В левом меню выберите Серверы → нужный выделенный сервер (Dedicated Server).
  3. Убедитесь, что статус — Running. Если сервер выключен — нажмите Start.

1.2. Получение доступа к консоли (Shell)

Есть два способа: через веб-консоль Proxmox или по SSH.

Вариант А — Веб-консоль Proxmox (noVNC):

  1. В панели proxify.cloud перейдите на вкладку Console выбранного узла (CT или VM).
  2. Нажмите Launch noVNC (или xterm.js).
  3. Войдите под root (пароль указан в письме при заказе или в разделе Access панели).

Вариант Б — SSH (рекомендуется для скорости):

ssh root@<IP-вашего-сервера>
# Пример:
ssh root@192.0.2.45

При первом подключении подтвердите отпечаток ключа (yes). Введите пароль root.

Важно: Если Minecraft запущен в Docker-контейнере внутри Ubuntu — подключайтесь к хосту (Ubuntu), а затем заходите в контейнер (см. шаг 2.3). Если сервер запущен напрямую на Ubuntu (systemd/screen/tmux) — работайте в текущей сессии.


2. Локализация файлов сервера

2.1. Стандартные пути установки

На выделенных серверах proxify.cloud чаще всего используются следующие директории:

  • /opt/minecraft/ — ручная установка / скрипты управления.
  • /home/minecraft/ — пользователь minecraft для безопасности.
  • /var/lib/docker/volumes/<volume_name>/_data/ — если используется Docker (панель Pterodactyl, CubeCoders или кастомный compose).

2.2. Поиск точной папки

Выполните:

find / -name "server.properties" -type f 2>/dev/null | head -20

Типичный вывод:

/opt/minecraft/survival/server.properties
/opt/minecraft/creative/server.properties
/home/minecraft/paper/server.properties

Запомните путь к нужному инстансу (например, /opt/minecraft/survival/).

2.3. Если используется Docker

Посмотрите запущенные контейнеры:

docker ps --format "table {{.Names}}\t{{.Image}}\t{{.Status}}"

Пример:

NAMES                IMAGE                 STATUS
mc-survival          itzg/minecraft-server Up 3 days

Зайдите внутрь:

docker exec -it mc-survival bash
# Теперь вы внутри контейнера, файлы обычно в /data
cd /data

3. Остановка сервера перед правкой

Никогда не редактируйте server.properties на работающем сервере — изменения перезапишутся при сохранении мира (auto-save) или перезагрузке.

3.1. Остановка через systemd (если настроено)

systemctl stop minecraft-survival
# или
systemctl stop minecraft@survival

3.2. Остановка через screen/tmux (ручной запуск)

# Найдите сессию
screen -ls
# Пример вывода: 12345.minecraft-survival (Detached)
screen -S minecraft-survival -X stuff "stop\n"
# Ждите 10-15 секунд до полной остановки

3.3. Остановка Docker-контейнера

docker stop mc-survival

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

4.1. Открытие файла

nano /opt/minecraft/survival/server.properties
# или внутри Docker:
nano /data/server.properties

4.2. Поиск параметра

Найдите строку:

view-distance=10

Если её нет (старые версии) — добавьте в конец файла.

4.3. Рекомендуемые значения

Профиль нагрузки Значение Комментарий
Экономия ресурсов (слабый CPU, 8-16 ГБ RAM) 4-6 Для больших онлайнов 50+
Баланс (стандарт) 7-9 Дефолт Paper/Spigot часто 10
Качественная графика (мощный CPU, 32+ ГБ RAM) 10-12 Не ставьте >12 — возврат падает экспоненциально
Мини-игры / Лобби 3-5 Игроки не нуждаются в обзоре

Совет: На Paper/Purpur есть второй параметр — simulation-distance. Он отвечает за тикинг сущностей/блоков. Ставьте simulation-distance на 1-2 меньше view-distance (например, view-distance=10, simulation-distance=8).

4.4. Пример блока настроек

# Network & View
view-distance=8
simulation-distance=6
max-chunk-section-height=384
network-compression-threshold=256

# Performance
ticks-per=animal-spawns:400,monster-spawns:1

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

  • Ctrl+OEnter (запись)
  • Ctrl+X (выход)

5. Дополнительная оптимизация (Paper / Purpur / Spigot)

Изменение view-distance в вакууме дает меньше эффекта, чем комплексная настройка paper-world-configuration.yml (или purpur.yml).

5.1. Путь к файлу

/opt/minecraft/survival/paper-world-configuration.yml
# или
/opt/minecraft/survival/purpur.yml

5.2. Ключевые параметры для снижения нагрузки от чанков

Откройте файл и найдите/раскомментируйте:

# paper-world-configuration.yml
chunks:
  # Отключает отправку пустых чанков (воздуха) клиенту — экономит трафик
  send-chunk-load-distance: true
  
  # Максимальное кол-во чанков в пакете за тик (дефолт 10, ставьте 5-8 при лагах)
  max-chunks-per-tick: 8

# Отключает обработку сущностей за пределами simulation-distance
entities:
  activation-range:
    animal: 16
    monster: 24
    raider: 48
    misc: 8
    water: 4
    villagers: 16
    flying: 16

5.3. Настройка spigot.yml (для Spigot/Paper)

# spigot.yml
settings:
  view-distance: default  # Берет из server.properties, можно зафиксировать числом
  simulation-distance: default
  chunk-gc:
    period-in-ticks: 400
  entity-tracking-range:
    players: 48
    animals: 48
    monsters: 48
    misc: 32
    other: 64

entity-tracking-range не должен превышать view-distance * 16 (блоков). При view-distance=8 (128 блоков) значения 48-64 безопасны.


6. Запуск сервера и проверка

6.1. Запуск

# systemd
systemctl start minecraft-survival

# screen (пример скрипта)
cd /opt/minecraft/survival
screen -dmS minecraft-survival bash -c 'java -Xms8G -Xmx8G -jar paper.jar nogui'

# docker
docker start mc-survival

6.2. Проверка логов на ошибки

# systemd
journalctl -u minecraft-survival -f

# screen
screen -r minecraft-survival

# docker
docker logs -f mc-survival

Ищите строки:

[Server thread/INFO]: Loaded 7 recipes
[Server thread/INFO]: Starting Minecraft server version 1.20.4
[Server thread/WARN]: view-distance (8) is higher than simulation-distance (6). This may cause issues with entity tracking.

Предупреждение нормально, если разница 1-2. Если view-distance < simulation-distance — исправьте.

6.3. Проверка в игре

  1. Зайдите на сервер.
  2. Нажмите F3 (дебаг-скрин).
  3. Строка Chunk Cache (или Client Chunk Cache) покажет радиус в чанках.
    • При view-distance=8 должно быть около 289 чанков (пик) / ~200-250 стабильно.
    • Формула: (2*d+1)^2. Для d=8: (17)^2 = 289.

7. Мониторинг ресурсов после изменения

7.1. CPU / RAM (htop / glances)

htop
# Или установите glances: apt update && apt install glances
glances

Смотрите за:

  • CPU Load (1-min avg) — не должен превышать кол-во ядер * 0.7 постоянно.
  • RAM Used — Java Heap + Metaspace + Direct Memory + OS Cache. Оставляйте 2-4 ГБ под ОС.

7.2. Сеть (iftop / nethogs)

apt install iftop -y
iftop -i eth0

При увеличении view-distance исходящий трафик (TX) растет пропорционально квадрату радиуса. view-distance=10 → ~2.25x трафика от view-distance=6.

7.3. Тикинг (Spark / Timings)

Установите плагин Spark (Paper/Spigot):

# В консоли сервера или через RCON
/plugman load Spark
# или киньте spark.jar в plugins/ и рестарт

Запуск профиля:

/spark profiler --timeout 30

Откройте ссылку в браузере. Смотрите Chunk Packet Send и Player Chunk Map Update — они должны быть в топе при высоком view-distance.


8. Автоматизация через скрипт (опционально)

Создайте скрипт для быстрой смены профиля нагрузки:

cat > /usr/local/bin/mc-view-distance << 'EOF'
#!/bin/bash
# Usage: mc-view-distance <profile> [instance_path]
# Profiles: low, balanced, high, ultra

INSTANCE="${2:-/opt/minecraft/survival}"
PROPS="$INSTANCE/server.properties"

case "$1" in