Сервер Terraria - это один исполняемый файл и один текстовый файл. TerrariaServer читает serverconfig.txt, открывает один TCP-порт, загружает файл .wld, и на этом вся архитектура заканчивается: нет порта запросов, нет списка серверов, нет RCON, нет системы плагинов. Это приятно мало, и именно поэтому ванильный сервер даёт вам двадцать четыре консольные команды и больше ничего: ни прав, ни whitelist, ни телепорта, ни защиты. В этом руководстве разобраны все настройки файла конфигурации, все консольные команды, которые в сервере действительно есть, создание мира вместе с секретными сидами, блок прав режима Journey и то, где всё берёт на себя TShock. Цифры приведены для выделенного сервера 1.4.5; ключ, которого нет в вашей сборке, просто игнорируется.
Как настраивается сервер Terraria#
Выделенный сервер - бесплатная загрузка с terraria.org, отдельная от игры; в одном архиве лежат сборки для Windows, Linux и Mac. Его версия должна совпадать с версией клиентов вплоть до четвёртой цифры: клиент 1.4.5.8 не сможет зайти на сервер 1.4.5.7.
Если запустить сервер без аргументов, он запускает интерактивный мастер: выберите мир или создайте новый, укажите размер, сложность, тип зла в мире, название, порт, нужно ли пробросить его через UPnP, и пароль. На настольном компьютере это удобно, а на сервере бесполезно, потому что процесс, ждущий ввода, выглядит точно так же, как зависший процесс. Вместо этого укажите ему файл конфигурации:
$ ./TerrariaServer.bin.x86_64 -config serverconfig.txtУ каждой настройки в файле есть эквивалент в командной строке, и если заданы оба, побеждает командная строка. Файл - обычные строки key=value, по одной на строку, # для комментариев, без пробелов вокруг знака равенства и без кавычек вокруг значений. Он читается один раз при запуске, поэтому любое изменение требует перезапуска.
На панели эту команду вы не вводите. На RE:NODE мир создаётся при первом запуске, а размер и сложность - это поля на вкладке Startup, которые задают те же значения, о которых спросил бы мастер.
Требования, число игроков и производительность#
Terraria - самая лёгкая игра в этом каталоге, и цифры здесь действительно небольшие.
| Конфигурация | RAM | CPU | Примечания |
|---|---|---|---|
| 1-4 игрока, малый или средний мир | 512 МБ - 1 ГБ | 0,5 ядра | С запасом |
| 5-8 игроков, большой мир | 1 ГБ | 0,75 ядра | Самый частый случай |
| 8-16 игроков, события и вторжения | 2 ГБ | 1-1,5 ядра | Пики, а не постоянная нагрузка |
| TShock с набором плагинов | 2 ГБ | 1,5 ядра | Плагины обходятся дороже игроков |
| tModLoader с большой сборкой модов | 4-6 ГБ | 2 ядра | Совсем другой зверь |
maxplayers принимает любое значение от 1 до 255. Число, которое вы реально можете потянуть, - это вопрос не памяти, а NPC: сервер обновляет всех активных NPC и снаряды в одном потоке, а Frost Moon при шестнадцати игроках - это совсем другая нагрузка, чем шестнадцать человек, копающих шахту. Нагрузка не постоянная, а скачкообразная, поэтому сервер Terraria может час простоять без дела, а потом девяносто секунд подтормаживать во время вторжения.
Для этого существуют две настройки. npcstream меняет пропускную способность на пропуски движения врагов: меньшие значения отправляют больше данных и дают меньше телепортаций, 0 выключает ограничение. slowliquids=1 ограничивает, сколько жидкости движется одновременно, что помогает при большом затоплении, но заставляет воду дольше успокаиваться.
Тяжёлый вариант - tModLoader, где каждый мод загружается в один и тот же процесс, а пик приходится на генерацию мира. Он описан отдельно в статье Terraria и tModLoader, размещённые как следует; рассчитывайте ресурсы под генерацию, а не под установившийся режим.
serverconfig.txt, настройка за настройкой#
| Настройка | По умолчанию | Что делает |
|---|---|---|
world | - | Полный путь к загружаемому файлу .wld |
worldpath | - | Каталог, в котором хранятся миры |
autocreate | - | Создать мир, если его нет: 1 малый, 2 средний, 3 большой |
worldname | Terraria | Название при автосоздании |
seed | - | Сид мира для автосоздания |
difficulty | 0 | 0 классика, 1 эксперт, 2 мастер, 3 journey |
maxplayers | 8 | От 1 до 255 |
port | 7777 | Слушающий TCP-порт |
password | - | Пароль для входа. Пусто - сервер открыт |
motd | - | Сообщение, показываемое при входе |
worldrollbackstokeep | 2 | Сколько скользящих копий мира хранится |
banlist | banlist.txt | Путь к списку банов |
secure | - | 1 включает дополнительную защиту от читов |
language | en-US | Код языка сервера |
upnp | 1 | Автоматический проброс портов на домашнем роутере |
npcstream | 60 | Меньше - больше данных и меньше пропусков движения врагов |
priority | 1 | Приоритет процесса, от 0 реального времени до 5 простоя |
slowliquids | - | 1 ограничивает одновременное движение жидкости |
Рабочий пример для частного сервера с большим миром на уровне эксперт:
world=/home/terraria/.local/share/Terraria/Worlds/Hardmode.wldworldpath=/home/terraria/.local/share/Terraria/Worlds/autocreate=3worldname=Hardmodedifficulty=1maxplayers=10port=7777password=copper-shortswordmotd=Be nice. No grief. Boss fights are announced in Discord.worldrollbackstokeep=3secure=1npcstream=60priority=1Три замечания, которые сэкономят вам вечер. world требует полный путь к файлу вместе с расширением; worldpath требует каталог и используется при автосоздании и для списка миров. autocreate срабатывает, только когда файла из world нет, поэтому оставлять его после создания мира безопасно: это не та же ловушка, что --create в Factorio. И upnp предназначен для домашнего роутера; на хостинговой инфраструктуре он не приносит пользы, и его можно оставить по умолчанию или задать 0.
secure=1 стоит включить. Он добавляет серверные проверки против нескольких распространённых клиентских читов. Это не античит, и решительного любителя редакторов инвентаря он не остановит, но ничего не стоит.
Создание мира: размер, сложность, зло и секретные сиды#
Размер мира - это значение autocreate: 1 малый, 2 средний, 3 большой. Большие миры дольше генерируются, содержат больше контента, и их выбирает большинство компаний. Сложность задаётся один раз при создании и позже из конфигурации не меняется: 0 классика, 1 эксперт, 2 мастер, 3 journey.
Тип зла в мире - corruption или crimson - выбирается при создании. Ключа в конфигурации для него нет, но в командной строке есть -worldevil, и интерактивный мастер тоже спрашивает. На панели этот выбор обычно оформлен полем на вкладке Startup рядом с размером и сложностью.
Ещё есть секретные сиды: для них отдельные ключи конфигурации, а не ввод в seed. Каждый - переключатель 0 или 1, и включение любого из них перекрывает текст сида:
#seed_celebration=1#seed_theconstant=1#seed_notthebees=1#seed_notraps=1#seed_fortheworthy=1#seed_remix=1#seed_drunk=1#seed_zenith=1Это drunk world, for-the-worthy, мир без ловушек и остальные. Они радикально меняют генерацию мира и необратимы, поэтому задайте их до первого запуска или не задавайте вовсе. Если включено несколько, игра их комбинирует, и так люди получают мир, который не могут описать.
Права режима Journey на сервере
Режим Journey на многопользовательском сервере - это не вседозволенность. У каждой его возможности есть своя настройка прав с тремя значениями: 0 закрыто для всех, 1 менять может только хост, 2 менять может любой.
journeypermission_time_setfrozen=1journeypermission_time_setdawn=2journeypermission_time_setnoon=2journeypermission_time_setdusk=2journeypermission_time_setmidnight=2journeypermission_godmode=0journeypermission_wind_setstrength=1journeypermission_rain_setstrength=1journeypermission_time_setspeed=1journeypermission_rain_setfrozen=1journeypermission_wind_setfrozen=1journeypermission_increaseplacementrange=2journeypermission_setdifficulty=0journeypermission_biomespread_setfrozen=0journeypermission_setspawnrate=1В поставляемом примере у каждого из них значение по умолчанию 2, а значит, на стандартном сервере Journey любой может заморозить время, включить режим бога, изменить сложность и остановить распространение биомов. Для публичного сервера это почти наверняка не то, что вам нужно. Первыми стоит закрыть journeypermission_setdifficulty и journeypermission_godmode.
Порты, пароли и подключение#
| Порт | Протокол | Назначение |
|---|---|---|
7777 | TCP | Игровой трафик. Единственный порт, который использует сервер |
Один порт, и он TCP, что делает Terraria исключением в каталоге игр на UDP. Правило для UDP вам не поможет, а правила для TCP достаточно. Почему большинство игр делает наоборот, объясняет статья порты игрового сервера.
Публичного списка серверов и протокола запросов нет, поэтому ничто нигде не рекламирует ваш сервер. Игроки заходят через Multiplayer, затем Join via IP, затем вводят адрес, порт и пароль в трёх отдельных запросах. В первом поле работает и имя хоста, так что запись A, указывающая на сервер, и имя вместо четырёх чисел стоят пяти минут работы: нужная запись описана в статье как привязать домен к игровому серверу.
Путь через Steam другой. Если запустить сервер с -steam и -lobby friends, друзья по Steam смогут зайти из списка друзей вообще без адреса; -lobby private ограничивает вход приглашениями. Это удобно для небольшой компании и неактуально для размещённого сервера, куда заходят по адресу.
Пароли отправляются при подключении и задаются в конфигурации или во время работы. Используйте только буквы, цифры и дефисы: у парсера конфигурации нет кавычек, поэтому пароль с пробелами или знаком равенства окажется не тем, что вы думаете.
Консольные команды#
Ванильный сервер читает команды со стандартного ввода. Вот полный список.
| Команда | Что делает |
|---|---|
help | Выводит список команд |
playing | Показывает подключённых игроков |
clear | Очищает окно консоли |
save | Сохраняет мир |
exit | Сохраняет и выключает сервер |
exit-nosave | Выключает без сохранения |
kick <player> | Выгоняет игрока |
ban <player> | Банит игрока и записывает список банов |
password | Выводит текущий пароль |
password <pass> | Меняет его |
motd | Выводит сообщение дня |
motd <words> | Меняет его |
say <words> | Отправляет сообщение от сервера |
time | Выводит игровое время |
dawn | Ставит рассвет |
noon | Ставит полдень |
dusk | Ставит закат |
midnight | Ставит полночь |
settle | Успокаивает всю воду |
seed | Выводит сид мира |
port | Выводит слушающий порт |
maxplayers | Выводит лимит игроков |
version | Выводит версию |
fps | Включает или выключает счётчик кадров |
Это действительно всё. Нет понятия оператора, нет whitelist, нет телепорта, нет команды предметов, нет защиты регионов и нет способа откатить гриферство. settle полезнее, чем кажется: затопленная база после того, как кто-то опустошил коллекцию вёдер, - решённая проблема.
Обратите внимание, чего не хватает в конце этого списка: ничто здесь не ограничивает, кто что может делать. Ванильный сервер Terraria доверяет каждому, кто знает пароль. Если это неприемлемо, вам нужен TShock.
TShock: аккаунты, группы и команды, которых нет в ванили#
TShock заменяет TerrariaServer сборкой, которая сохраняет ту же игру и добавляет серверный фреймворк: учётные записи, группы и права, регионы, whitelist, запрет предметов, журналирование, API плагинов и интерфейс REST. Это стандартный ответ для любого сервера Terraria, открытого для посторонних.
При первом запуске в консоль выводится код настройки, который записывается в tshock/setup-code.txt. Зайдите на сервер обычным клиентом и получите права:
/setup 12345678/user add myname a-long-password owner/login myname a-long-password/setupПервая команда даёт временные права суперадмина, вторая создаёт постоянную учётную запись в группе owner, третья входит в неё, а четвёртая закрывает режим настройки, чтобы код перестал работать. Сделайте все четыре за один раз: сервер, оставленный в режиме настройки, - это сервер, который может захватить любой.
Конфигурация - tshock/config.json. Начиная с TShock 4.4 ключи лежат внутри объекта Settings, а названия между крупными версиями менялись, поэтому читайте тот файл, который у вас есть, а не руководство, написанное для более старой версии. Чаще всего меняют вот что:
| Ключ | Что делает |
|---|---|
ServerPort | Порт, переопределяющий конфигурацию Terraria |
MaxSlots | Лимит игроков |
ServerPassword | Пароль для входа |
EnableWhitelist | Включает проверку по tshock/whitelist.txt |
DisableBuild | Мир только для чтения, для витрины или музея |
PvPMode | normal, always, disabled или pvpwithnoteam |
AutoSave | Периодическое сохранение мира |
BackupInterval | Минут между резервными копиями, 0 - выключено |
BackupKeepFor | Сколько минут их хранить |
RestApiEnabled | Включает административный интерфейс HTTP |
RestApiPort | Порт, который он слушает, по умолчанию 7878 |
StorageType | По умолчанию sqlite, либо база данных |
Смысл TShock - в группах. Из коробки есть лестница от guest через default, vip и административные уровни вплоть до owner, у каждой свой список прав, а /group addperm и /user group перемещают людей по ней. Повседневное администрирование тогда выглядит как /kick, /ban add, /mute, /tp, /spawn, /butcher, /time day, /region define, /save и /off. Серверные персонажи можно включить так, чтобы инвентарь хранился на сервере, а не на машине каждого игрока: это единственная настоящая защита от тех, кто приходит с предметами из взломанного одиночного мира.
Цена TShock - отставание с обновлениями. Его нужно пересобирать для каждого релиза Terraria, так что после патча вы ждёте дни или недели, пока ваши игроки уже обновились сами. Планируйте это до большого обновления контента, а не во время него.
Миры, резервные копии и откаты#
Мир Terraria - это один файл .wld, обычно несколько мегабайт для малого мира и десятки мегабайт для большого мира в hardmode. Поэтому резервное копирование тривиально, и потерять мир так же тривиально. Сервер хранит скользящие копии в соответствии с worldrollbackstokeep и записывает .bak рядом с миром, и то и другое на том же диске, что и оригинал.
- Останавливайте сервер правильно.
exitсохраняет и выключает.exit-nosaveне сохраняет, как и убийство процесса. Всё, что построено с последнего сохранения, пропадёт. - Сохраняйте перед копированием. Копирование
.wldпри работающем сервере даёт файл, записанный наполовину. Выполнитеsave, дождитесь подтверждения, затем копируйте. - Храните копии вне машины. Скользящие резервные копии защищают от неудачного решения, а не от потерянного сервера. На RE:NODE слоты резервных копий в каждом тарифе Terraria хранятся вне машины, которую они защищают, и восстанавливаются кнопкой, а вкладка Schedules может делать ночную копию по выражению cron. Почему непроверенные копии - не копии, объясняет статья резервные копии, которые действительно восстанавливаются.
- Делайте копию перед hardmode. Разрушение алтаря необратимо меняет мир и создаёт новые полосы биомов. Это самый частый запрос на откат в Terraria.
На ванильном сервере персонажи - не забота сервера: инвентарь каждого игрока живёт на его собственной машине, поэтому персонаж может переносить снаряжение между мирами, а вы не можете помешать кому-то прийти полностью экипированным. Серверные персонажи TShock это меняют, и это главная причина, по которой публичные серверы используют его.
Диагностика#
Сервер запускается и ничего не делает. Он находится в интерактивном мастере и ждёт нажатия клавиши. Добавьте -config serverconfig.txt и проверьте, что путь в world существует.
«Lost connection» сразу при входе. Версии не совпадают. Клиент обновился сам, а сервер нет. Проверьте точные номера сборок, включая четвёртую цифру.
Никто снаружи сети не может подключиться. TCP 7777 не открыт, или адрес неверный. У Terraria нет порта запросов, так что второй проверки нет: если порт открыт и процесс его слушает, всё работает.
Пароль отклоняется, хотя он правильный. В значении в конфигурации пробел, кавычка или знак равенства. Упростите пароль и перезапустите.
Мир откатился на несколько часов назад. Процесс остановили без сохранения. Используйте exit, а если сервер перезапускается по расписанию, следите, чтобы расписание отправляло чистую остановку, а не убийство процесса.
Враги телепортируются во время вторжений. Это npcstream делает своё дело при значении по умолчанию 60. Уменьшите до 30, если у вас есть запас по трафику, или смиритесь: альтернатива - больше данных на игрока.
Команды TShock ничего не делают. Вы не вошли. Учётные записи отделены от персонажей, поэтому /login после каждого входа, если группе не выдан автоматический вход.
FAQ#
Сколько игроков вмещает сервер Terraria?
maxplayers допускает до 255, а честный ответ - гораздо меньше. От восьми до шестнадцати - обычная компания; дальше ломаются вторжения и бои с боссами, а не само число игроков, потому что сервер обновляет всех NPC и снаряды в одном потоке.
Можно ли изменить сложность мира после создания?
Нет. Классика, эксперт, мастер и journey фиксируются при генерации мира. Изменение difficulty в конфигурации позже повлияет на следующий мир, который вы создадите, а не на тот, что уже лежит в файле.
Нужны ли серверу Terraria порты UDP?
Нет. Terraria работает по TCP на одном порту, по умолчанию 7777. Для игры это необычно, и поэтому половина советов по firewall, которые вы найдёте для других игр, здесь не применима.
Нужен ли мне TShock?
Только если вам нужны права, защита или плагины. Для сервера с паролем среди друзей ваниль проще, обновляется в день выхода игры, и в ней нечему лишнему ломаться. Для всего публичного отсутствие в ванильном сервере какой-либо системы прав делает TShock почти обязательным.
Где лежат файлы миров?
Там, куда указывает worldpath. По умолчанию это папка Terraria в Documents на Windows и в локальном каталоге share пользователя на Linux. На панели они находятся в собственном дереве файлов сервера, где до них дотягиваются файловый менеджер и SFTP.
Можно ли перенести одиночный мир на сервер?
Да, это простое копирование файла. Остановите сервер, загрузите файл .wld в папку миров, укажите его в world с точным именем файла и запустите. Ваш персонаж переносится отдельно, потому что персонажи хранятся на машине каждого игрока.




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