RE:NODE

Руководства13 мин чтения

Сервер Terraria: serverconfig.txt и команды

Все настройки serverconfig.txt в Terraria, консольные команды ванильного сервера, создание мира и секретные сиды, права Journey и когда нужен TShock.

0 прочтений

Сервер 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, и пароль. На настольном компьютере это удобно, а на сервере бесполезно, потому что процесс, ждущий ввода, выглядит точно так же, как зависший процесс. Вместо этого укажите ему файл конфигурации:

bash
$ ./TerrariaServer.bin.x86_64 -config serverconfig.txt

У каждой настройки в файле есть эквивалент в командной строке, и если заданы оба, побеждает командная строка. Файл - обычные строки key=value, по одной на строку, # для комментариев, без пробелов вокруг знака равенства и без кавычек вокруг значений. Он читается один раз при запуске, поэтому любое изменение требует перезапуска.

На панели эту команду вы не вводите. На RE:NODE мир создаётся при первом запуске, а размер и сложность - это поля на вкладке Startup, которые задают те же значения, о которых спросил бы мастер.

Требования, число игроков и производительность#

Terraria - самая лёгкая игра в этом каталоге, и цифры здесь действительно небольшие.

КонфигурацияRAMCPUПримечания
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 большой
worldnameTerrariaНазвание при автосоздании
seed-Сид мира для автосоздания
difficulty00 классика, 1 эксперт, 2 мастер, 3 journey
maxplayers8От 1 до 255
port7777Слушающий TCP-порт
password-Пароль для входа. Пусто - сервер открыт
motd-Сообщение, показываемое при входе
worldrollbackstokeep2Сколько скользящих копий мира хранится
banlistbanlist.txtПуть к списку банов
secure-1 включает дополнительную защиту от читов
languageen-USКод языка сервера
upnp1Автоматический проброс портов на домашнем роутере
npcstream60Меньше - больше данных и меньше пропусков движения врагов
priority1Приоритет процесса, от 0 реального времени до 5 простоя
slowliquids-1 ограничивает одновременное движение жидкости

Рабочий пример для частного сервера с большим миром на уровне эксперт:

serverconfig.txt
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, и включение любого из них перекрывает текст сида:

properties
#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 менять может любой.

properties
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.

Порты, пароли и подключение#

ПортПротоколНазначение
7777TCPИгровой трафик. Единственный порт, который использует сервер

Один порт, и он 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. Зайдите на сервер обычным клиентом и получите права:

code
/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Мир только для чтения, для витрины или музея
PvPModenormal, 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. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.

0/2000