Ванильный сервер Terraria - одна из самых лёгких вещей, которые можно запустить: большой мир с восемью игроками спокойно умещается в гигабайт, использует один TCP-порт и не требует регистрации в списке серверов. tModLoader - совсем другой зверь, потому что каждый мод загружается в один и тот же процесс, а некоторые из них ведут себя нескромно. Списку размера Calamity нужно 4 ГБ, причём большую часть из них он требует во время генерации мира, а не во время игры, и поэтому первый мир, который люди создают на слишком маленьком тарифе, - это тот, что не создаётся. Это руководство охватывает оба варианта: установку каждого, все настройки serverconfig.txt, которые стоит менять, консольные команды, то, как моды сопоставляются между сервером и клиентом, и как не потерять мир, живущий в одном файле.
Vanilla, tModLoader или TShock: какой сервер вы запускаете#
Под словами «сервер Terraria» скрываются три разные программы, и они не взаимозаменяемы.
- Ванильный выделенный сервер поставляется вместе с игрой. Это
TerrariaServer.exeна Windows иTerrariaServer.bin.x86_64на Linux, и отдельного бесплатного приложения в Steam для него нет: его копируют из собственной установки игры или скачивают пакет Dedicated Server со страницы официальных релизов terraria.org. Он запускает немодифицированные миры и немодифицированных клиентов. - tModLoader - это бесплатное отдельное приложение (Steam app id
1281930, также публикуется в релизах на GitHub), которое оборачивает игру и загружает файлы.tmod. Его сервер - этоstart-tModLoaderServer.shили соответствующий.bat. Клиенты тоже должны запускать tModLoader, той же версии. - TShock заменяет ванильный сервер таким, который добавляет группы и права, защиту регионов, серверные персонажи, базу данных и большой набор команд. Игроки по-прежнему запускают немодифицированную Terraria, и в этом его главная привлекательность. Моды tModLoader он не загружает, поэтому выбирать нужно что-то одно.
tModLoader привязан к конкретной версии Terraria, а мод, собранный под один релиз tModLoader, не загрузится на другом. Эта жёсткая привязка к версии - корень большинства проблем tModLoader, и поэтому сервер стоит закрепить на одной версии, а не брать каждое обновление в день выхода.
Требования и потребление ресурсов#
Рассчитывайте на генерацию мира, а не на установившийся режим.
| Конфигурация | RAM | CPU | Диск |
|---|---|---|---|
| Vanilla, малый или средний мир, 2-4 игрока | 512 МБ - 1 ГБ | 0,5 ядра | 5 ГБ |
| Vanilla, большой мир, 8-16 игроков | 1-2 ГБ | 1 ядро | 10 ГБ |
| tModLoader, несколько модов для удобства | 2-3 ГБ | 1 ядро | 15 ГБ |
| tModLoader, Calamity и обычные спутники | 4 ГБ | 1-1,5 ядра | 20 ГБ |
| tModLoader, большой контентный пак с генерируемыми структурами | 6 ГБ на пике | 1,5-2 ядра | 30 ГБ |
- Пик - это генерация мира. Большой мир с модами строится в памяти, а потом записывается, и этот момент - высшая точка за всю жизнь сервера. Тариф, на котором готовый мир работает прекрасно, всё равно может не потянуть его создание.
- CPU: обновление мира идёт в одном потоке. Важна тактовая частота, число ядер почти не влияет. Ванильный сервер не потревожит и половину ядра; тяжёлый список модов с сотнями своих NPC займёт целое.
- Диск: сам ванильный сервер крошечный. Файл большого мира - десятки мегабайт; tModLoader добавляет рядом второй файл с данными модов, который может быть больше самого мира. Ни то ни другое не повод покупать диск, а вот ротируемый набор backup обоих файлов - повод.
- Сеть: скромная, и в основном уходит на секции мира. Terraria передаёт тайлы вокруг каждого игрока при первом посещении области, поэтому восемь игроков, разбросанных по большому миру, обходятся намного дороже, чем восемь игроков в одной базе.
Установка и запуск ванильного сервера#
На Linux, из распакованного пакета Dedicated Server:
$ cd /home/terraria/server/Linux$ chmod +x TerrariaServer.bin.x86_64$ ./TerrariaServer.bin.x86_64 -config serverconfig.txtБез -config сервер задаёт вопросы в интерактивном режиме: какой мир или какого размера и сложности создать, затем порт, максимальное число игроков и пароль. Один раз такой путь вполне годится. Для всего, что вы будете перезапускать, используйте файл конфигурации, потому что сервер, остановившийся с неотвеченным запросом, не поднимется сам.
Лобби Steam тоже поддерживаются: -steam и -lobby friends или -lobby private позволяют заходить через список друзей Steam, а не по адресу. На арендованном сервере вам почти всегда нужен обычный путь по адресу.
serverconfig.txt: настройки, которые важны#
serverconfig.txt - это одна пара key=value на строку, комментарий начинается с #. Файл, поставляемый с сервером, уже документирован; вот строки, которые меняют поведение.
world=/home/terraria/.local/share/Terraria/Worlds/Midgard.wldworldpath=/home/terraria/.local/share/Terraria/Worlds/autocreate=3worldname=Midgarddifficulty=1seed=maxplayers=10port=7777password=herring-barrelmotd=Welcome. Rules are in the Discord.banlist=banlist.txtsecure=1language=en/USupnp=0npcstream=60priority=1| Ключ | По умолчанию | Что делает |
|---|---|---|
world | - | Полный путь к загружаемому .wld. Приоритетнее autocreate |
worldpath | по умолчанию для платформы | Где хранятся и создаются миры |
autocreate | - | 1 малый, 2 средний, 3 большой. Используется, только если world отсутствует |
worldname | World | Название создаваемого мира |
difficulty | 0 | 0 classic, 1 expert, 2 master, 3 journey |
seed | случайный | Сид мира, включая особые сиды |
maxplayers | 8 | Жёсткий максимум - 255. Играбельный - совсем не столько |
port | 7777 | TCP, и единственный порт, который нужен серверу |
password | пусто | Пароль для входа |
motd | - | Печатается каждому игроку при входе |
banlist | banlist.txt | Файл забаненных игроков |
secure | 0 | Дополнительная защита от читов. Включите |
upnp | 1 | Проброс порта на домашнем роутере. На арендованном сервере поставьте 0 |
npcstream | 60 | Меньше значение - меньше пропусков врагов и больше трафика |
priority | 1 | Приоритет процесса, от 0 realtime до 5 idle |
На двух из них люди спотыкаются. world и autocreate по действию взаимоисключающи: если world указывает на существующий файл, этот мир загружается, а autocreate игнорируется; если на несуществующий, сервер создаёт мир размера autocreate с именем worldname, и именно так группа молча оказывается на совершенно новой карте после опечатки в пути. И difficulty в этом файле - это сложность мира: в мирах режима journey могут играть только персонажи journey, поэтому сервер с difficulty=3 отсекает всех с их существующими персонажами.
Миры journey также читают набор ключей journeypermission_, которые определяют, какими элементами меню силы может пользоваться каждый игрок. Они действуют только в мире journey и отличают общую песочницу от ситуации, когда один человек замораживает время для всех.
Порты и подключение#
| Порт | Протокол | Назначение |
|---|---|---|
7777 | TCP | Всё |
Terraria - одна из немногих многопользовательских игр, работающих по TCP, а не по UDP, и это важно, как только вы пишете правило файрвола или спрашиваете хостера, что открыть. Правило UDP для 7777 здесь ничего не делает. Почему почти все остальные игры пошли другим путём и в чём компромисс, объясняет статья TCP или UDP для игровых серверов.
Нет также ни списка серверов, ни query-порта. Игроки открывают Multiplayer, затем Join via IP и вводят адрес и порт. Это и есть весь механизм обнаружения, так что адрес вы раздаёте, а не его находят. Если вы хотите раздавать имя, а не число, запись A разобрана в статье как подключить домен к игровому серверу, и Terraria - один из самых простых случаев, потому что порт фиксирован и виден.
Кроссплея не существует. Мобильная и консольная Terraria - это отдельная многопользовательская экосистема, и они не могут подключаться к выделенному серверу для ПК, что бы ни подсказывали номера версий.
Консольные команды#
Консоль сервера принимает короткий список команд, которые вводятся прямо в работающий процесс:
| Команда | Что делает |
|---|---|
help | Выводит список команд |
playing | Подключённые игроки |
say <text> | Сказать от имени сервера |
motd | Вывести текущее сообщение дня |
password <text> | Сменить пароль для входа на лету |
kick <player> | Отключить игрока |
ban <player> | Отключить и добавить в список банов |
save | Немедленно записать мир |
exit | Сохранить и выключить |
exit-nosave | Выключить без сохранения |
settle | Принудительно успокоить все жидкости |
time, dawn, noon, dusk, midnight | Прочитать и задать время |
seed | Вывести сид мира |
settle стоит запомнить. Большая затопленная область с движущейся водой - одна из немногих вещей, которые действительно тормозят сервер Terraria, а успокоение жидкостей мгновенно. exit-nosave стоит опасаться: он делает ровно то, что написано, и подтверждения нет.
Сервер автосохраняется примерно раз в десять минут и при чистом exit. Всё, что убивает процесс иначе - остановка из-за нехватки памяти, перезагрузка хоста, кнопка Kill в панели, - теряет всё, что произошло после последней записи.
tModLoader на выделенном сервере#
Установите tModLoader из релиза на GitHub или из Steam, затем запускайте скрипт сервера, а не бинарный файл игры:
$ cd /home/terraria/tmodloader$ ./start-tModLoaderServer.sh -config serverconfig.txtМоды - это файлы .tmod. На сервере они лежат в папке Mods внутри каталога сохранений tModLoader рядом с enabled.json, где перечислены внутренние имена тех, что нужно загружать:
[ "CalamityMod", "CalamityModMusic", "MagicStorage", "BossChecklist", "RecipeBrowser"]Внутреннее имя - это не отображаемое имя. Это имя папки мода внутри .tmod, и ошибка в нём означает, что мод тихо не загрузится, а не вызовет ошибку. Надёжный способ не ошибиться - один раз включить моды в локальном клиенте tModLoader, а затем скопировать enabled.json и папку Mods этого клиента на сервер по SFTP; подробности подключения есть в статье SFTP и файловый менеджер.
Каждый мод объявляет, к какой стороне он относится, и именно это решает, кому что нужно устанавливать:
- Both - по умолчанию. Нужен и серверу, и каждому клиенту, той же версии. Контентные моды, моды боссов, всё, что меняет игру.
- Client - моды интерфейса и удобства. Сервер их не имеет и о них не заботится.
- Server - работает только на сервере; клиентам ничего не нужно.
- NoSync - можно загрузить с любой стороны, и он вообще не проверяется.
tModLoader предлагает подключающимся клиентам скачать синхронизируемые моды сервера, и это снимает большую часть неудобства «сначала установите этот список». Проблему версий оно не снимает: клиент, у которого уже есть другая версия мода, должен обновиться или откатиться до нужной, и сообщение, которое он видит, не всегда это ясно объясняет.
Миры, сохранения и привычка делать backup#
Ванильный мир - это один файл: Midgard.wld, а рядом Midgard.wld.bak с предыдущим сохранением. tModLoader добавляет Midgard.twld для данных модов и Midgard.twld.bak. Оба файла принадлежат друг другу: .wld, восстановленный без парного .twld, загружается как мир, из которого исчезли все модовые предметы и тайлы.
| Платформа | Ванильные миры | Миры tModLoader |
|---|---|---|
| Windows | Documents\My Games\Terraria\Worlds\ | ...\Terraria\tModLoader\Worlds\ |
| Linux | ~/.local/share/Terraria/Worlds/ | ~/.local/share/Terraria/tModLoader/Worlds/ |
Из-за того, что весь мир - один файл, backup делаются тривиально, и потерять его так же тривиально. Файл .bak - это не backup: это предыдущее сохранение на том же диске, перезаписываемое каждые десять минут. Настоящий backup - это копия в другом месте, по расписанию, которую вы хотя бы раз восстанавливали: довод лучше, чем ещё один абзац здесь, приведён в статье бэкапы, которые действительно восстанавливаются, а десять минут, которые это доказывают, описаны в статье проверка восстановления до того, как оно понадобится.
Персонажей на сервере нет. Файл .plr лежит на машине каждого игрока, поэтому инвентарь сохраняется при переходе между серверами, а ванильный сервер не может помешать кому-то прийти с полным набором экипировки для эндгейма. Серверные персонажи TShock - единственный способ это изменить, и это главная причина, по которой крупные публичные серверы работают на TShock.
На RE:NODE тарифы Terraria включают два слота backup, панель делает их по запросу или по расписанию, а восстановление - это кнопка, а не тикет. Вкладка Schedules также может выполнить команду save перед задачей backup, и это стоит сделать: backup, снятый в середине интервала, - это backup последнего сохранения, а не текущего момента.
Производительность и что на самом деле вызывает лаги#
Terraria редко упирается в CPU. Когда это случается, почти всегда причина одна из четырёх:
- Несмирившиеся жидкости. Большой проект с перекачкой или затоплением держит в обновлении тысячи тайлов.
settleисправляет это за секунды. - Предметы на земле. Тысячи выпавших с фермы предметов - каждый это сущность, которую нужно синхронизировать. Со временем они исчезают; перезапуск очищает их мгновенно.
- Проводка и фермы статуй. Таймеры, срабатывающие сотни раз в секунду в большом механизме, отнимают реальное время у потока мира.
- Конкретный мод. В tModLoader ответ на вопрос «сервер стал медленным после вторника» - это мод, который вы добавили во вторник. Убирайте по одному.
А вот число игроков обычно не причина. Движок Terraria справляется с гораздо большим числом игроков, чем игра рассчитана на удовольствие; практический потолок социальный и связан с общим миром, а не технический. Общий вариант этого вопроса разобран в статье сколько игроков помещается на сервер. Если вы всё же поднимаете maxplayers выше стандартных восьми, поднимайте вместе с ним память, а не надейтесь.
Устранение неполадок#
Сервер создал новый мир вместо загрузки нашего. Путь world неверен, или имя файла не совпадает точно, включая регистр. Исходный .wld лежит там, где лежал; исправьте путь и перезапустите.
Игроки не могут подключиться, хотя сервер работает. Порт 7777 открыт для UDP, а не для TCP, или upnp=1 на арендованном сервере всё запутал. Поставьте upnp=0.
«You do not have the same mods as the server». Несовпадение версий, а не отсутствие мода. Сначала сравните версию tModLoader, затем версию каждого мода. Именно такой результат даёт мод, обновлённый у одного игрока и не у остальных.
Генерация мира зависает или сервер убивают при создании мира. Память. Генерация даёт пик намного выше рабочего значения, особенно с модами, добавляющими структуры. Генерируйте мир на тарифе с запасом или создайте его локально и загрузите.
Модовые предметы пропали из всех сундуков. Мод был удалён, или .twld потерян, а .wld уцелел. Восстановите оба файла вместе из состояния до изменения.
Сервер замирает на секунду каждые несколько минут. Это автосохранение. В большом мире с модами оно заметно, и убрать его настройкой нельзя: более быстрое хранилище делает его короче.
Память растёт всю неделю. До известного предела это нормально, а еженедельный перезапуск по расписанию держит её ровной. Если она растёт так быстро, что упирается в лимит за сутки, виноват мод.
FAQ#
Сколько RAM нужно серверу Terraria?
Гигабайта достаточно для ванильного сервера с большим миром и полной компанией. Вопрос в tModLoader: два-три гигабайта для лёгкого списка модов, четыре для размера Calamity и шесть, если пак генерирует собственные структуры, потому что создание мира даёт пик далеко выше рабочего значения.
Нужно ли игрокам устанавливать моды перед подключением к серверу tModLoader?
Обычно нет. tModLoader предлагает подключающемуся клиенту скачать синхронизируемые моды сервера. Но им нужен сам tModLoader той же версии, а клиент, у которого уже есть другая версия одного из этих модов, должен её заменить, а не докачивать поверх.
Могут ли игроки с консолей или мобильных устройств подключиться к серверу Terraria для ПК?
Нет. Консольная и мобильная версии образуют собственную многопользовательскую экосистему и не могут подключиться к выделенному серверу для ПК. Режима кроссплея, который можно включить, не существует.
TShock лучше ванильного сервера?
Для публичного сервера - да: он добавляет права, защиту регионов и серверных персонажей, а это единственный настоящий ответ на тех, кто приходит с дублированным снаряжением. Для частной группы на модах - нет, потому что TShock не запускает моды tModLoader.
Почему мир сбрасывается при каждом перезапуске?
Он не сбрасывается: вы загружаете другой мир. Либо world указывает на несуществующий путь, и autocreate строит новый мир каждый раз, либо worldpath отличается от места, где на самом деле лежит нужный вам мир.
Сколько игроков вмещает сервер Terraria?
maxplayers принимает до 255, и ничто в игре не рассчитано на такое число. Шестнадцать - это оживлённый сервер, восемь по умолчанию не случайно, а после примерно двадцати пяти общий мир теряет смысл задолго до того, как процесс начнёт испытывать трудности.




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