MAATRIX GAMES / Блог / tModLoader: установка модов на Terraria-сервер

tModLoader: установка модов на Terraria-сервер

MAATRIX GAMES

Ванильная Terraria — крепкая база, но рано или поздно хочется Calamity, Thorium или Magic Storage, а голый дедик модов не понимает вообще никак. За моды в Terraria отвечает отдельная штука — tModLoader, который распространяется как самостоятельное приложение в Steam, а не патч поверх обычной игры. Разберём, как поставить именно модовый сервер: от установки через SteamCMD до синхронизации версий с игроками, чтобы никто не упёрся в «incompatible mod version» на ровном месте.

Что такое tModLoader и чем модовый сервер отличается от ванильного

tModLoader (в Steam чаще видно как tModLoader, App ID 1281930) — не мод, а отдельный загрузчик модов для Terraria, который сам является полноценным Steam-приложением поверх твоей уже купленной Terraria. Технически это форк движка игры с API для модов на C# — почти как Forge или Fabric у Minecraft: один фреймворк-загрузчик, а вокруг него — тысячи модов на его платформе, от косметики до тотальных конверсий вроде Calamity, которые добавляют десятки боссов и новый эндгейм.

Если сервер под Terraria ещё не поднят вообще — начни с базовой установки, там же разбор serverconfig.txt, порта 7777 и systemd-автозапуска: как поднять сервер Terraria. Дальше в статье считаем, что общая логика дедика тебе знакома, и говорим именно про модовую надстройку — устанавливается она отдельно, со своим набором исполняемых файлов, и с ванильным TerrariaServer.bin не смешивается.

Ключевая разница с ванилью: ванильный дедик Terraria (App ID 105601) ставится анонимно через SteamCMD и не требует привязки к аккаунту. tModLoader — нет: это полноценная Steam-игра, привязанная к владению Terraria, поэтому установка требует логина реальным Steam-аккаунтом (с кодом Steam Guard), анонимный вход тут не пройдёт.

Устанавливаем tModLoader-сервер через SteamCMD

Официальная команда tModLoader публикует вместе с каждым релизом на GitHub готовый набор скриптов для линуксовых дедиков — архив с приставкой dedicated-server-utils в разделе Releases репозитория tModLoader/tModLoader. Внутри — manage-tModLoaderServer.sh, который сам дёргает SteamCMD, ставит моды и запускает сервер. Это удобнее, чем городить SteamCMD-команды руками, поэтому берём его:

cd /opt
sudo mkdir tmodloader-server && sudo chown $USER:$USER tmodloader-server
cd tmodloader-server
wget https://github.com/tModLoader/tModLoader/releases/latest/download/dedicated-server-utils.zip
unzip dedicated-server-utils.zip
chmod +x manage-tModLoaderServer.sh

Установка самого tModLoader:

./manage-tModLoaderServer.sh install-tml --username твой_steam_логин

Скрипт запросит пароль и, если включена двухфакторка, код Steam Guard — введи как обычно при логине в SteamCMD. По умолчанию файлы лягут в ~/Steam/steamapps/common/tModLoader (--folder /путь меняет расположение).

Если по каким-то причинам не хочешь тащить сторонний скрипт, тот же результат даёт и голый SteamCMD — только логиниться придётся под реальным аккаунтом, а не anonymous, как в ванильном дедике:

steamcmd +login твой_steam_логин \
  +force_install_dir /opt/tmodloader-server \
  +app_update 1281930 validate +quit

Оба пути кладут одинаковый набор бинарников: под Linux нужен именно скрипт запуска start-tModLoaderServer.sh, который стоит рядом с исполняемым файлом сервера после установки.

Поднять сервер Terraria за пару минут

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

Создать сервер

Структура папок и мир сервера

После установки полезно понимать, где что лежит — модовый дедик разносит установочные файлы и пользовательские данные по разным путям, в отличие от ванильного сервера, где всё компактно в одной папке:

~/Steam/steamapps/common/tModLoader/     # сам загрузчик, бинарники, скрипты
~/.local/share/Terraria/ModLoader/Mods/  # .tmod-файлы модов и enabled.json
~/.local/share/Terraria/ModLoader/Worlds/  # файлы миров (.wld)

Точные пути к папке модов и миров можно (и часто нужно) переопределить флагами -modpath и -worldpath при запуске — это удобно, если хочешь держать всё внутри /opt/tmodloader-server рядом с бинарником, а не в домашней директории пользователя. Мир создаётся тем же способом, что и в ванильном дедике: либо интерактивным мастером при первом запуске без конфига, либо автоматически через autocreate= в serverconfig.txt — логика та же, что описана в статье про базовую установку, просто путь к файлу мира теперь смотрит в модовую папку.

Если хочешь перенести уже обжитой мир с домашнего компа — учти, что мир, в котором ты успел применить контент из тяжёлых модов (новые руды, боссов, предметы), без этих же модов на сервере откроется с ошибками или вовсе не загрузится. Переносить голый ванильный .wld на модовый сервер безопасно, обратное — не всегда.

Включаем моды: enabled.json, мод-браузер и Steam Workshop

Здесь у tModLoader три параллельных способа получить и включить моды, и разница между ними — частый источник путаницы.

1. Мод-браузер прямо на сервере. Если консоль сервера интерактивна (не через systemd, а обычным запуском в screen/tmux), у tModLoader есть встроенные консольные команды для управления модами через тот же каталог, что видит клиентский Mod Browser. Быстро для одиночных модов, неудобно для большого списка.

2. Ручная раскладка .tmod + enabled.json. Каждый мод — это файл ИмяМода.tmod. Кладёшь нужные файлы в Mods/, а рядом заводишь enabled.json со списком внутренних имён модов (не файлов пользователя, а именно technical name мода — обычно совпадает с названием файла без расширения):

[
  "ThoriumMod",
  "CalamityMod",
  "CalamityModMusic",
  "MagicStorage"
]

Без этого файла сервер вообще не включит ни один установленный мод — сам факт, что .tmod лежит в папке, ничего не гарантирует.

3. Steam Workshop через install.txt. Самый удобный путь для солидного списка модов. На своей машине в клиенте tModLoader подпишись на нужные моды в Workshop, собери их в один пак через "Save Enabled as New Mod Pack" — в результате получишь папку с готовыми enabled.json и install.txt (список Workshop ID модов). Оба файла копируешь в папку сервера, и команда:

./manage-tModLoaderServer.sh install-mods

сама скачает с Workshop всё, что перечислено в install.txt, и включит согласно enabled.json. Это ровно тот же механизм, что используют для клиентских Workshop-модов в Project Zomboid — список ID вместо ручной раскладки архивов.

serverconfig.txt и запуск

Конфиг работает по тем же принципам, что и в ванильном дедике, плюс модовые пути. Пример рабочего serverconfig.txt:

world=/opt/tmodloader-server/Worlds/MyModWorld.wld
autocreate=2
worldname=MyModWorld
difficulty=0
maxplayers=8
port=7777
password=
motd=Модовый сервер, го фармить лут
modpath=/opt/tmodloader-server/Mods
upnp=0

Запуск:

./start-tModLoaderServer.sh -config serverconfig.txt

или через встроенный менеджер:

./manage-tModLoaderServer.sh start

Для боевого сервера так же, как и с ванилью, лучше не держать SSH-сессию открытой руками, а завернуть запуск в systemd-юнит с Restart=on-failure — структура юнита один в один повторяет ту, что разобрана в статье про базовый дедик, просто ExecStart указывает на start-tModLoaderServer.sh вместо TerrariaServer.bin. Учти нюанс: под systemd теряется интерактивная консоль сервера (команды вроде save, kick), для управления на лету по-прежнему актуален вариант с screen/tmux вместо прямого systemd-запуска.

Клиенты: та же версия tModLoader и тот же набор модов

Это главная причина «не могу зайти на модовый сервер друга», и разбираться с ней приходится чаще, чем с портами. Для подключения клиенту тоже нужен tModLoader (не ванильная Terraria) — устанавливается он в Steam так же, как и на сервер, только без флагов -config и -worldpath, обычным запуском через Steam-библиотеку. Дальше два жёстких требования:

  • Версия tModLoader должна совпадать. tModLoader раз в несколько месяцев выпускает новые стабильные сборки, синхронизированные с патчами самой Terraria — клиент со старой версией на новый сервер (и наоборот) не подключится, попытка входа сразу вернёт ошибку о несовместимой версии.
  • Набор модов и их версии должны совпадать один в один. Если на сервере стоит CalamityMod 3.x, а у игрока — 3.y, часть контента (новые предметы, рецепты, сетевые данные) может разъехаться, а в худшем случае сервер откажет в подключении по чек-сумме модов.

Проще всего избежать рассинхрона — раздать игрокам тот же Workshop-пак, что и на сервере: подписка на коллекцию модов в Steam Workshop подтягивает актуальные версии сама, и игроку не нужно вручную гоняться за .tmod-файлами по Discord. Похожая практика с общим профилем модов разобрана в статье про BepInEx для Valheim — идея та же: один источник правды по версиям модов на всех.

Нагрузка на сервер: сколько реально нужно ресурсов

Честно: модовый Terraria-сервер ощутимо прожорливее ванильного, и разница ощутима уже на первом десятке модов. Ванильному дедику Terraria хватает 1 ГБ RAM с запасом (это и есть базовый тариф в каталоге) — модовому нужно закладывать больше, и вот почему:

  • Каждый загруженный мод — это отдельная .NET-сборка, которая занимает память сама по себе, ещё до того, как на сервере появится хоть один игрок.
  • Тяжёлые контент-моды (Calamity, Thorium, Fargo's и подобные) добавляют тысячи новых сущностей — предметов, тайлов, NPC — и это заметно увеличивает как потребление RAM, так и время старта сервера (генерация/загрузка мира с активным контент-модом ощутимо дольше ванильной).
  • CPU-нагрузка растёт не так резко, как RAM, но AI-хуки модовых боссов и NPC (у Calamity их особенно много) дают заметные пики при активном бое, особенно на модовых событиях с толпой врагов.

Точных цифр «столько-то мегабайт на мод» никто честно не назовёт — сильно зависит от конкретного набора модов и того, насколько активно они меняют мир. Как рабочий ориентир: для лёгкого набора из 5–10 QoL-модов 2 ГБ обычно достаточно, а для тяжёлых сборок с Calamity/Thorium и толпой игроков разумнее закладывать 4 ГБ и выше — и проверить это на своём конкретном модлисте до того, как звать всю группу на постоянку, а не постфактум по жалобам на лаги.

Поднять сервер Terraria за пару минут

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

Создать сервер

Частые вопросы

Можно ли использовать один и тот же VPS для ванильного и модового сервера Terraria по очереди?

Да, они ставятся в разные папки и не конфликтуют — можно держать оба набора файлов и переключать, какой юнит/скрипт запускать, но одновременно на одном порту два сервера не поднимешь.

Нужно ли покупать Terraria отдельно для tModLoader?

Нет отдельной покупки — tModLoader бесплатен в Steam, но требует, чтобы на аккаунте, под которым он ставится и запускается, была куплена оригинальная Terraria.

Что делать, если сервер не стартует после добавления нового мода?

Убери его .tmod из папки Mods/ и соответствующую строку из enabled.json, перезапусти — если сервер поднимается, проблема локализована в этом моде (чаще всего это нехватка мод-зависимости, которую тоже нужно положить в Mods/).

Мод-браузер в самой игре — это то же самое, что установка через install.txt?

Нет: внутриигровой Mod Browser — это отдельная площадка модов (не Steam Workshop), у неё свой каталог и свой способ скачивания на сервер через консольные команды, тогда как install.txt работает конкретно со Steam Workshop-подписками. Часть модов есть только в одном из двух мест, часть — в обоих.

Как обновить моды на сервере, не потеряв мир?

Обновление модов не трогает файлы миров в Worlds/ — обнови .tmod-файлы (через install-mods для Workshop-модов или вручную) и перезапусти сервер, мир останется как был.