Сервер с Calamity - это выделенный сервер tModLoader с включённым Calamity Mod, где каждый игрок запускает ту же версию tModLoader с теми же модами тех же версий. На практике ему нужно 3-4 GB памяти на Calamity с обычными модами-компаньонами, свежий мир, сгенерированный уже с загруженным Calamity, список модов в enabled.json и несколько минут терпения при каждом запуске. Что идёт не так, предсказуемо: версия мода не совпадает с клиентской, мир создан до того, как добавили Calamity, список модов перерос память, а обновление мода выходит за день до игрового вечера. В этой статье разобрано всё это, и всё сказанное так же относится к Thorium, Fargo's и другим крупным контентным модам.
Основы tModLoader на сервере - установка, папка Mods, стороны модов - описаны в статье сервер Terraria и tModLoader. Здесь речь о том, что меняется, когда моды большие.
Что большой мод делает с сервером#
Calamity - это не пара новых мечей. Он добавляет несколько сотен предметов, десятки боссов, новые биомы, которые генерируются в мире, новых врагов со своим AI, собственные режимы сложности и много кода, который выполняется каждый тик. Thorium, Spirit и Fargo's Souls - из того же класса. Если сложить два-три таких мода, эффект умножается.
На сервере это проявляется в четырёх местах:
- Память. Каждый тип предмета, NPC, снаряда и блока, который определяет мод, загружается в память, пользуется им кто-то или нет. Большой список модов съедает гигабайты ещё до того, как кто-то зашёл.
- Время запуска. При старте сервер загружает, проверяет и настраивает каждый мод. Ванильный сервер стартует за секунды; тяжёлый модовый может запускаться несколько минут.
- Генерация мира. Модовая генерация добавляет биомы и структуры поверх ванильных, и генерация большого мира - пик потребления памяти за всю жизнь сервера.
- CPU во время боёв. Модовые боссы выпускают массу снарядов. Обновление мира однопоточное, поэтому бой с боссом на восьмерых - это то место, где видна тактовая частота.
Ничто из этого не делает модовый сервер сложным. Просто его нужно осознанно подбирать по ресурсам и обслуживать, а не запустить и забыть.
Сколько RAM нужно серверу с модами#
Память определяется в первую очередь списком модов, во вторую - размером мира, и лишь в далёкую третью - числом игроков.
| Конфигурация | RAM | Примечания |
|---|---|---|
| tModLoader, несколько модов для удобства | 1.5-2 GB | Magic Storage, Boss Checklist, Recipe Browser |
| Calamity с обычными компаньонами | 3-4 GB | Типичный случай для компании из 4-8 человек |
| Calamity и Thorium вместе | 4-5 GB | Большой мир доводит до верхней границы |
| Calamity, Thorium, Fargo's Souls и другие | 5-6 GB+ | Большие миры дают пик при генерации |
Считайте это отправными точками. Размер модов меняется от релиза к релизу, и значение имеет только то, сколько потребляет ваш сервер с вашим списком. Понаблюдайте за графиком памяти во время одной генерации мира и одного загруженного вечера и закладывайте пик плюс запас.
Две детали стоит знать. Пик - это генерация мира: большой мир с тремя контентными модами собирается в памяти, прежде чем записывается на диск, так что тариф, на котором готовый мир работает с запасом, может не справиться с его созданием. Генерация среднего мира или генерация локально с последующей загрузкой обходит эту проблему. И память растёт по мере исследования: чем больше мира загружено, тем больше блоков и NPC в памяти, так что сервер, занятый на 60% в первый день, через месяц уже не на 60%.
Тарифы Terraria в RE:NODE - от 512 MB до 4 GB. Calamity с обычными компаньонами помещается на старших тарифах; связка из трёх-четырёх больших контентных модов на большом мире может перерасти 4 GB, и лучше знать это до начала прохождения, чем на середине. Если контейнер достигает лимита, он останавливается и перезапускается начисто, а не уходит в swap - для машины это безопасно, но несохранённый прогресс теряется. Статья CPU или RAM для игровых серверов объясняет, как понять, какого ресурса вам не хватает.
Установка tModLoader и модов#
tModLoader - отдельное от Terraria приложение, бесплатное в Steam для владельцев игры, и его сервер входит в ту же загрузку. На сервере его либо ставят через SteamCMD, либо распаковывают архив релиза со страницы релизов tModLoader на GitHub, а затем запускают входящий в комплект скрипт запуска сервера:
$ cd ~/tmodloader$ ./start-tModLoaderServer.sh -config serverconfig.txtВ репозитории также есть вспомогательные скрипты для выделенных серверов в папке DedicatedServerUtils, которые устанавливают tModLoader и скачивают моды из Workshop по списку ID; актуальный способ использования смотрите в вики tModLoader, потому что он менялся от релиза к релизу.
Моды лежат в папке Mods каталога данных tModLoader - в Linux это ~/.local/share/Terraria/tModLoader/Mods/, если хостинг не перенёс его, - в виде файлов .tmod, а какие из них загружать, решает enabled.json:
[ "CalamityMod", "ThoriumMod", "MagicStorage", "BossChecklist", "RecipeBrowser", "Fargowiltas"]Это внутренние имена, а не отображаемые. Calamity - это CalamityMod, Thorium - ThoriumMod, Fargo's Mutant Mod - Fargowiltas, а его дополнение Souls - FargowiltasSouls. Неправильное имя не вызывает ошибки; мод просто не загружается.
Надёжнее всего вообще не набирать список вручную:
- В tModLoader на своём ПК подпишитесь на моды в Workshop и включите ровно тот набор, который нужен.
- Сохраните включённый набор через меню Mod Packs или скопируйте свой локальный
enabled.json. - Загрузите файлы
.tmodиenabled.jsonв папкуModsна сервере через SFTP или файловый менеджер - подключение описано в статье SFTP и файловый менеджер.
Скачанное из Workshop на вашем ПК лежит в steamapps/workshop/content/1281930/<id>/, каждое в папке с ID предмета Workshop, а .tmod - внутри папки версии. Копируйте тот, что соответствует вашей версии tModLoader.
Стороны модов и что должны установить игроки#
Каждый мод tModLoader указывает в файле сборки свою сторону, и от неё зависит, кому он нужен:
| Сторона | Сервер | Клиенты | Типичный пример |
|---|---|---|---|
Both | Да | Да, той же версии | Calamity, Thorium, Magic Storage |
Client | Нет | По желанию | Доработки интерфейса, многие музыкальные паки |
Server | Да | Нет | Серверные утилиты |
NoSync | Любой | Любой, без проверки | Некоторые утилиты |
Почти все контентные моды - Both. Когда игрок заходит на сервер с модами Both, которых у него нет, tModLoader предлагает скачать их и перезапуститься с набором модов сервера, так что новому игроку нужны только tModLoader и адрес сервера. Спотыкаются на другом: если у игрока уже есть мод другой версии, вход не удаётся, а сообщение о том, какой именно мод отличается, легко пропустить.
Музыкальные дополнения стоит проверить. Музыка Calamity - отдельный мод, CalamityModMusic, и он большой. Нужен ли он на сервере, зависит от стороны, которую объявляет текущий релиз, - она указана на его странице в Workshop; если он клиентский, не ставьте его на сервер и дайте игрокам решать самим.
Создание мира: генерируйте с загруженными модами#
Calamity добавляет биомы и структуры во время генерации мира - Сернистое море и Бездну у одного из океанов, Затонувшее море под пустыней и другие. Они появляются, только если мир генерировался с загруженным Calamity. Добавьте Calamity в мир, созданный без него, и этих областей не будет, а это ломает прогрессию, которая от них зависит.
Поэтому порядок такой:
- Установите на сервер tModLoader и полный список модов.
- Сгенерируйте мир со всеми включёнными контентными модами.
- Только после этого пускайте людей.
Настройки мира задаются в serverconfig.txt, который tModLoader читает так же, как ванильный сервер:
world=/home/container/worlds/Calamitous.wldautocreate=2worldname=Calamitousdifficulty=1maxplayers=8port=7777password=change-thisautocreate=2 - это средний мир, разумный размер для компании с модами: большие миры дольше генерируются, требуют больше памяти и сильнее разносят игроков. difficulty=1 - это Expert, минимум для собственных режимов Calamity Revengeance и Death, которые включаются в самой игре, а не в этом файле; способ их включения менялся между версиями Calamity, так что сверьтесь с актуальной вики Calamity. Каждый ключ этого файла разобран в статье конфиг и команды сервера Terraria.
Если серверу не хватает памяти при генерации, сгенерируйте мир на своём ПК с точно таким же списком модов и загрузите оба файла: .wld и лежащий рядом .twld, в котором хранятся все модовые данные. .wld, загруженный без своего .twld, откроется как ванильный мир с вырезанным модовым контентом.
Конфиги модов на сервере#
У многих больших модов есть настройки, которые хранятся как JSON-файлы в папке ModConfigs рядом с Mods, по одному на конфиг, с именами вида ModName_ConfigName.json. tModLoader разделяет два вида:
- Серверные конфиги влияют на геймплей и синхронизируются с сервера на каждый клиент при входе. Главной считается копия на сервере.
- Клиентские конфиги влияют только на локального игрока - интерфейс, графику, звук - и никогда не синхронизируются.
Чтобы изменить серверную настройку, отредактируйте JSON-файл в ModConfigs на остановленном сервере или выставьте её в своей локальной игре с теми же модами и загрузите получившийся файл. После этого перезапустите сервер. Клиентские настройки - личное дело каждого игрока.
Важнее всего это для модов с переключателями сложности или баланса - хороший пример Fargo's Souls, да и у Calamity есть свои опции геймплея. Договоритесь о них всей компанией до старта мира, потому что смена баланса посреди прохождения обычно заканчивается спорами.
Производительность во время игры#
Нагрузка модовой Terraria неравномерна. Ходить по миру дёшево; бой с боссом, где несколько игроков и сотни снарядов на экране, - вот где сервер работает на пределе.
- Снаряды и NPC. Боссы позднего Calamity заполняют весь экран. Сервер обновляет каждый снаряд и каждого NPC каждый тик в одном потоке. Если сервер лагает только в боях, причина в этом, и помогает только более быстрое ядро.
- Игроки разбрелись. Каждый игрок держит активным своё окружение. Восемь игроков в восьми биомах стоят дороже, чем восемь на одной базе.
- Фермы и спавнеры. Фермы на статуях и фермы вторжений порождают много сущностей. В меру - нормально, четыре одновременно - проблема.
- Хлам из предметов. Брошенные на землю предметы - это сущности. Magic Storage помогает, убирая вещи с пола.
Обычный совет для Terraria остаётся в силе: еженедельный перезапуск держит память ровной и даёт чистую точку сохранения. Аргументы про выбор времени - в статье расписания перезапусков, которые помогают, а как отличить лаг из-за CPU от нехватки памяти, показано в статье как читать график нагрузки сервера.
Обновления, добавление и удаление модов#
Большие моды обновляются часто, и каждое обновление может изменить предметы, рецепты или данные мира. На сервере это значит, что обновление - это ваше решение, а не то, что просто происходит:
- Сначала backup -
.wld,.twld, папкаModsиModConfigs. Копия, сделанная до обновления, - единственный чистый путь назад. - Обновляйте tModLoader раньше модов, и только когда большие моды поддерживают новую версию. Calamity в частности иногда отстаёт от релиза tModLoader.
- Обновляйте сервер и одновременно предупреждайте игроков. Клиент, у которого мод автоматически обновился, а на сервере нет, получит отказ, и наоборот.
- Следите в консоли за первым запуском после обновления на предмет ошибок загрузки.
Добавить мод в работающий мир обычно безопасно, но мод, генерирующий рельеф, разместит свои биомы только в новых мирах или неисследованных областях - в зависимости от того, как он написан. Опасное направление - удаление контентного мода. tModLoader сохраняет данные-заглушки для части контента из модов, которые больше не загружены, так что возврат мода может их восстановить, но всё, что мод хранил в своих данных мира, может не уцелеть, а игроки тем временем увидят, как их предметы превратились в заглушки. Не удаляйте Calamity из мира Calamity в расчёте играть дальше. Полный порядок восстановления - в статье что делать, когда обновление мода всё сломало.
На RE:NODE слоты для бэкапов входят в каждый тариф Terraria и хранятся вне машины, так что копия перед обновлением - это кнопка, а не скачивание, а вкладка Schedules может делать её каждую ночь по cron-выражению.
Устранение неполадок#
Сервер останавливается при создании мира. Не хватает памяти. Возьмите средний мир, сгенерируйте его на своём ПК и загрузите .wld и .twld или перейдите на тариф выше.
«Mod version mismatch» при входе. У клиента другая версия мода, чем на сервере. Игроку стоит дать tModLoader скачать моды сервера или обновить мод в Workshop до той же версии.
Нет Бездны или Затонувшего моря. Мир сгенерирован без загруженного Calamity. Сгенерируйте новый мир с полным списком.
Сервер запускается пять минут. Для большого списка это нормально. Ищите ошибки в консоли, а не смотрите на часы.
Мод лежит в Mods, но не загружается. Его внутреннее имя в enabled.json указано неверно, или его версия не поддерживает этот релиз tModLoader. Консоль перечисляет каждый загружаемый мод.
Лаги только в боях с боссами. Число снарядов и NPC в одном потоке. Единственные настоящие решения - меньше игроков на арене или более быстрое ядро CPU.
FAQ#
Нужно ли друзьям скачивать Calamity перед входом?
Им нужен tModLoader, который они получают, владея Terraria в Steam. При входе tModLoader предложит скачать моды сервера и перезапуститься с ними. Если у них уже есть другая версия какого-то мода, она должна совпадать с серверной.
Можно ли добавить Calamity в уже существующий мир?
Можно, но его генерируемых биомов не будет, а часть прогрессии от них зависит. Начните новый мир с Calamity, загруженным с самого начала.
Могут ли игроки с консолей или мобильных устройств зайти на сервер с Calamity?
Нет. tModLoader есть только на ПК, а модовый сервер принимает только клиенты tModLoader с совпадающими модами.
Calamity и Thorium - не слишком много для одного сервера?
Само по себе нет. Рассчитывайте на 4-5 GB на среднем мире и более долгий запуск. Понаблюдайте за памятью во время генерации мира и первого большого боя с боссом, прежде чем звать всю компанию.
Можно ли запустить TShock на модовом сервере?
Нет. TShock - отдельный сервер для ванильной Terraria. Админские функции на tModLoader дают моды. Руководство по TShock рассказывает, что умеет TShock, если ваша компания решит, что ванили достаточно.




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