RE:NODE

Minecraft10 мин чтения

Сервер All the Mods: установка ATM10 и ATM9

Как запустить сервер All the Mods: серверные файлы, RAM для ATM10 и ATM9, долгий первый запуск, загрузка чанков, прегенерация и обновление без потери мира.

0 прочтений

Сервер All the Mods - это большой модовый сервер с несколькими особыми привычками. ATM10 работает на NeoForge для Minecraft 1.21.1 с Java 21 и содержит гораздо больше 400 модов; ATM9 работает на Forge для 1.20.1 с Java 17 или новее. Оба поставляют на странице сборки в CurseForge zip с серверными файлами, где есть скрипт запуска, устанавливающий загрузчик при первом запуске, и user_jvm_args.txt, задающий память, - серверные файлы ATM10 выставляют -Xmx8G. Это реалистичный минимум: рассчитывайте на 8 ГБ для нескольких игроков и 10-12 ГБ для активной группы, ожидайте, что первый запуск займёт несколько минут, а последующие - две-три, и закладывайте основные усилия на то, из-за чего большие сборки со временем начинают лагать: принудительно загруженные чанки, автоматизированные заводы и рельеф, генерируемый на лету.

Общие сведения о модовых серверах - версии Java, чтение отчётов о крашах, клиентские моды - есть в статье Модовый сервер без крашей. Это руководство о том, что специфично для сборок ATM.

Какая сборка и что ей нужно#

Команда All the Mods выпускает несколько сборок. Обычно имеют в виду эти:

СборкаMinecraftЗагрузчикJavaПримечания
All the Mods 101.21.1NeoForge21Текущая основная сборка
All the Mods 91.20.1Forge17+Зрелая, очень большая, многие серверы всё ещё на ней
Варианты «To the Sky»По-разномуПо-разномуПо-разномуСкайблок-версии; генерация дешевле
Старые (ATM8, ATM7)1.19.2 / 1.18.2Forge17В них ещё играют, но они больше не в фокусе

Точная версия загрузчика зафиксирована в каждом релизе сборки. Используйте ту, которую ставят серверные файлы; не «обновляйте» NeoForge или Forge отдельно от сборки.

Сборка велика во всех измерениях: сотни модов, больше гигабайта серверных файлов и мир, который быстро растёт, потому что сборка добавляет измерения, структуры и генерацию руд. Место на диске важнее, чем в ванилле, - см. таблицу ниже.

Как положить серверные файлы на сервер#

На странице сборки в CurseForge у каждого релиза есть отдельная загрузка серверных файлов (ищите в дополнительных файлах релиза, обычно с названием вроде ServerFiles-<version>.zip). Не пытайтесь собрать сервер из клиентской сборки: в серверных файлах уже удалены клиентские моды и включены скрипты запуска.

  1. Скачайте серверные файлы ровно той версии сборки, которой будут пользоваться игроки.
  2. Распакуйте их в корневую папку сервера. Вы получите mods/, config/, defaultconfigs/, kubejs/ и другие папки, а также startserver.sh, startserver.bat и user_jvm_args.txt.
  3. Запустите startserver.sh. При первом запуске он скачивает и устанавливает загрузчик и его библиотеки, записывает server.properties по умолчанию и запускает сервер.
  4. Если попросит, примите EULA (eula=true в eula.txt) и запустите снова.
  5. Ждите. Первый запуск генерирует конфиги и мир и идёт медленно.
bash
$ unzip ServerFiles-<version>.zip -d /srv/atm10$ cd /srv/atm10$ chmod +x startserver.sh$ ./startserver.sh

В панели те же шаги выполняются в файловом менеджере и консоли: загрузите zip, распакуйте его на месте и задайте переменные запуска так, чтобы сервер стартовал через установленный загрузчик, а не через обычный jar сервера. Установленный загрузчик записывает собственный файл аргументов запуска (в libraries/), который использует скрипт запуска; как эти файлы связаны между собой, объясняет статья Настройка сервера NeoForge.

Память, CPU и диск#

Серверные файлы ATM10 выставляют -Xms4G -Xmx8G в user_jvm_args.txt, и это нижняя граница, а не комфортное значение. По опыту работы с этими сборками:

ИгрокиКуча (-Xmx)Контейнер / тарифCPU
1-3, новый мир8 ГБ10 ГБ2+ быстрых ядра
4-810 ГБ12 ГБ2,5-3 ядра
8-15, зрелый мир12 ГБ14 ГБ+3,5+ ядра

Разница между кучей и лимитом контейнера не опциональна. Java использует память вне кучи - metaspace для классов сотен модов, стеки потоков, прямые буферы, - и на сборке такого размера эти накладные расходы составляют гигабайт-два. Сервер, у которого -Xmx равен лимиту контейнера, убивают снаружи без отчёта о краше, обычно во время генерации чанков. Арифметику объясняет статья Сколько RAM нужно серверу Minecraft, а сторону сборщика мусора - статья Флаги JVM.

На тарифах RE:NODE это означает тариф на 10 ГБ для небольшой группы с кучей 8 ГБ и тариф на 14 ГБ для активного сервера с кучей 12 ГБ. CPU растёт вместе с тарифом, и здесь это так же важно, как память: большая сборка упирается в скорость тика в одном потоке задолго до того, как кончится куча.

Диск:

  • Серверные файлы: около 1,3 ГБ в распакованном виде, больше после того, как первый запуск создаст библиотеки.
  • Мир: несколько ГБ для хорошо исследованного зрелого мира; гораздо больше, если игроки летают и генерируют рельеф во всех измерениях.
  • Backup: умножьте размер мира на число хранимых копий.

Двадцати гигабайт для долгоживущего сервера ATM мало; закладывайте больше.

Время запуска и watchdog#

Большая сборка загружает каждый мод, каждый рецепт и каждый реестр до того, как откроется мир. Несколько минут при первом запуске и две-три при последующих - норма на хорошем железе.

Для больших сборок важны две настройки в server.properties:

server.properties
max-tick-time=180000allow-flight=true

max-tick-time - ванильный watchdog: если один тик длится дольше указанного числа миллисекунд, сервер завершает себя и записывает дамп потоков. Значения по умолчанию 60000 (одна минута) во время игры обычно хватает, но на большой сборке оно может сработать при тяжёлой генерации мира или дальней телепортации. Подняв его до трёх минут, вы дадите медленным операциям запас; значение -1 полностью отключает watchdog, и тогда действительно зависший сервер будет висеть вечно. В конфигах сборок ATM также может быть собственная настройка watchdog на уровне мода.

allow-flight=true не даёт ванилле кикать игроков за «полёт», который постоянно вызывают джетпаки, кольца полёта и предметы творческого полёта. Это нужно каждому модовому серверу. Остальной файл разобран в статье server.properties: подробный разбор.

Загрузка чанков и почему серверы ATM со временем замедляются#

Новый мир ATM работает хорошо. Через шесть недель тот же сервер с теми же игроками лагает. Причина почти всегда в загрузке чанков.

Сборки ATM включают приваты и загрузку чанков, обычно через FTB Chunks и FTB Teams. Игроки приватят базу и принудительно загружают её, чтобы машины работали, пока они не в сети. Каждый принудительно загруженный чанк тикает вечно - каждая машина, каждая ферма, каждая сеть труб, - независимо от того, есть ли кто-то онлайн. Двадцать игроков, каждый из которых держит загруженной базу на девять чанков, полную машин, - это сервер, постоянно гоняющий двадцать заводов.

Что делать:

  • Установите лимит принудительной загрузки на игрока в серверном конфиге FTB Chunks - небольшие числа, например от четырёх до девяти чанков на игрока, - норма для загруженных серверов.
  • Периодически проверяйте принудительно загруженные чанки. Базы ушедших игроков продолжают тикать.
  • Просите строителей делать машины компактными. Базу, раскинувшуюся на сорок чанков, нельзя держать загруженной без больших затрат.
  • Предпочитайте конструкции, терпимые к офлайну. Многие машины могут работать, пока игроки онлайн, и наверстывать по запросу вместо того, чтобы тикать всю ночь.

Другая медленно растущая статья расходов - содержимое этих чанков. Главные тяжеловесы зрелого мира ATM - большие автоматизированные системы: сети AE2 с множеством крафтовых процессоров и интерфейсов, заводы и цифровые шахтёры Mekanism, мобофермы с модами на гринд и трубы, перемещающие большие объёмы предметов. Всё это законно, всё это стоит тиков, и всё это должно попасть в профиль spark раньше, чем в спор. Как читать отчёт spark работает на NeoForge так же; spark часто уже есть в сборке.

Прегенерация мира#

Генерация рельефа - самое дорогое, что делает модовый сервер, а сборки ATM генерируют много: дополнительные руды, модовые структуры, несколько дополнительных измерений. Игроки, исследующие мир на элитрах или джетпаках, генерируют чанки быстрее, чем сервер способен комфортно переварить, и весь сервер подтормаживает, пока они этим заняты.

Прегенерация переносит эти затраты на время, когда никто не играет. У Chunky есть сборки для NeoForge и Forge, и он часто уже включён; если нет, добавьте его только на сервер (он серверный).

code
/chunky world minecraft:overworld/chunky center 0 0/chunky radius 5000/chunky start

Радиус в 5000 блоков на большой сборке занимает много часов. Запускайте на ночь, когда никого нет онлайн, выставьте соответствующую границу мира и повторите для Нижнего мира и любого измерения, где игроки проводят время. Сколько это занимает и насколько вырастают файлы, описано в статье Граница мира и прегенерация.

Шахтёрские измерения, которые задуманы как сбрасываемые, не прегенерируйте; они временные по замыслу.

Обновление сборки без потери мира#

Сборки ATM обновляются часто, и обновления - это в основном обновления модов и изменения конфигов, а не новые миры. Безопасная процедура:

  1. Прочитайте список изменений. Ищите удалённые моды - блоки из удалённого мода исчезают из мира - и заметки о том, что какую-то папку конфигов нужно заменить.
  2. Корректно остановите сервер и сделайте полный backup.
  3. Из новых серверных файлов замените mods/, config/, defaultconfigs/, kubejs/ и любые другие папки сборки, упомянутые в примечаниях к релизу. Сначала удалите старую mods/; не копируйте поверх, иначе удалённые и переименованные jar останутся.
  4. Сохраните world/, server.properties, ops.json, whitelist.json, banned-players.json и свои настройки памяти в user_jvm_args.txt.
  5. Если версия загрузчика изменилась, запустите скрипт запуска, чтобы он установил новый загрузчик.
  6. Запустите сервер, следите за логом, зайдите и проверьте основные базы, прежде чем сообщать игрокам.

Если вы сами меняли конфиги сборки, ведите список. Замена config/ стирает ваши изменения; по списку вы их вернёте. План восстановления - в статье Что делать, когда обновление мода всё сломало.

Ошибки, с которыми на самом деле сталкиваются серверы ATM#

Сервер останавливается во время первого запуска без ошибки. Лог обрывается на полуслове, отчёта о краше нет. Почти всегда это процесс, убитый снаружи за превышение лимита памяти, потому что -Xmx выставили на весь тариф. Уменьшите кучу, чтобы остался запас.

«Mod rejections» или список недостающих модов при входе игроков. Клиент и сервер на разных версиях сборки, или игрок добавил мод, который тоже должен быть на сервере. Сначала сравните версии; в большинстве случаев лаунчер автоматически обновил клиент раньше, чем обновили сервер.

Сервер падает, когда игрок заходит в определённую область. Блочная сущность в этом чанке падает при тике. Отчёт о краше называет блок и координаты. В некоторых сборках есть настройка, которая удаляет сбойные блочные сущности вместо краша; в остальных случаях восстановите регион из backup или удалите блок редактором. Инструменты описаны в статье Ошибки чанков и повреждение мира.

Предупреждения `Can't keep up!` во время исследования. Генерация чанков не успевает. Сделайте прегенерацию, уменьшите дальность прорисовки и ограничьте, как быстро игроки могут перемещаться по новому рельефу.

Запуск каждый раз зависает на одном и том же моде. Конфиг этого мода повреждён или взят из другой версии. Уберите конфиг этого мода из config/ и дайте ему сгенерироваться заново. Как прочитать, где остановился запуск, показывает статья Отчёты о крашах: разбор.

На RE:NODE линейка Minecraft поставляется с Paper, так что сервер ATM - ваша собственная установка: установщика модпаков в один клик нет, и ничто в панели не читает сборки CurseForge. Помогает то, что файловый менеджер распаковывает zip с серверными файлами на месте, консоль показывает долгий первый запуск без фильтров, а слоты для backup на каждом тарифе восстанавливаются одной кнопкой. Если сервер достигает лимита памяти, его останавливают и чисто перезапускают, а не оставляют уходить в своп, - именно поэтому куча должна оставлять запас ниже лимита тарифа.

FAQ#

Сколько RAM нужно серверу All the Mods 10?

Минимум 8 ГБ кучи - столько выставляют серверные файлы - внутри тарифа, где ещё на гигабайт-два больше. Для более чем нескольких игроков или зрелого мира комфортнее куча на 10-12 ГБ.

Почему мой сервер ATM так долго запускается?

Перед открытием мира он загружает сотни модов, каждый рецепт и каждый реестр. Несколько минут при первом запуске и две-три потом - это нормально. Запуск, который длится гораздо дольше обычного, часто означает мод, застрявший на сетевой проверке, или повреждённый конфиг; лог покажет, где он остановился.

Можно ли добавлять моды на сервер All the Mods?

Да, если игроки добавят те же моды для всего, что содержит блоки, предметы или сущности. Чисто серверным модам вроде Chunky ничего не нужно на клиенте. Добавив моды, вы получаете сервер, который больше не совпадает со стандартной сборкой, поэтому ведите список на случай обновлений.

Почему мой сервер с каждой неделей становится медленнее?

Обычно из-за принудительно загруженных чанков и растущих заводов. Каждая приваченная и принудительно загруженная база тикает постоянно. Ограничьте принудительную загрузку на игрока, проверяйте старые приваты и снимайте профиль spark, чтобы найти завод, который делает больше всего работы.

Нужно ли прегенерировать мир?

Настоятельно рекомендуется. Генерация рельефа на большой сборке дорогая и вызывает подтормаживания у всех, пока игроки исследуют мир. Прегенерируйте несколько тысяч блоков вокруг спавна за ночь и выставьте соответствующую границу мира.


Комментарии

Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.

0/2000