Ванильному серверу Terraria нужно от 512 МБ до 1 ГБ памяти для маленького или среднего мира на четырёх игроков и около 1 ГБ для большого мира на восемь. TShock с набором плагинов или ванильный сервер, разогнанный до шестнадцати игроков, комфортно живут в 2 ГБ. tModLoader полностью меняет ответ: 2-3 ГБ для горстки модов для удобства, 4 ГБ для Calamity с обычными спутниками и до 6 ГБ в пике для крупных контентных паков с собственной генерацией мира. Ключевое слово здесь - пик. Сервер Terraria достигает максимального потребления памяти, когда создаёт мир, а не когда в нём играют, поэтому первым на слишком маленьком тарифе падает именно первый мир с модами.
Что сервер Terraria держит в памяти#
Среди песочниц Terraria необычна одним свойством, которое и определяет расчёт ресурсов: сервер загружает в память весь мир и держит его там. Никакой загрузки и выгрузки чанков по мере движения игроков нет. Каждый тайл карты, каждая стена, каждая жидкость, каждый сундук и каждая табличка находятся в памяти от запуска до остановки.
Поэтому первый фактор - размер мира, и это известное число:
| Размер мира | Размеры (тайлы) | Всего тайлов |
|---|---|---|
| Маленький | 4200 x 1200 | около 5 миллионов |
| Средний | 6400 x 1800 | около 11,5 миллиона |
| Большой | 8400 x 2400 | около 20 миллионов |
В большом мире вчетверо больше тайлов, чем в маленьком, а данные тайлов - основная часть памяти ванильного сервера. Поэтому на ванильную цифру размер мира влияет сильнее, чем игроки.
Остальная память ванили ограничена так, как у большинства игр не бывает. Terraria хранит активных NPC, снаряды и выпавшие предметы в таблицах фиксированного размера - 200 NPC, 1 000 снарядов, 400 предметов одновременно, - а в мире может быть не больше 8 000 сундуков. Память под них не растёт, когда вторжение заполняет экран; растёт нагрузка на CPU. Растут подключения игроков и их буферы, а на tModLoader - всё, что добавляют моды.
RAM по миру, игрокам и типу сервера#
| Сервер | RAM | vCPU | Примечания |
|---|---|---|---|
| Ваниль, маленький или средний мир, 1-4 игрока | 512 MB - 1 GB | 0.5 | С запасом |
| Ваниль, большой мир, 5-8 игроков | 1 GB | 0.75 | Типичный случай |
| Ваниль, 8-16 игроков, события и вторжения | 2 GB | 1-1.5 | Скорее всплески, чем постоянная нагрузка |
| TShock с набором плагинов | 2 GB | 1-1.5 | Плагины и их база данных стоят больше, чем игроки |
| tModLoader, моды для удобства | 2-3 GB | 1 | Моды загружаются в тот же процесс |
| tModLoader, Calamity и спутники | 4 GB | 1-1.5 | Обычный большой сервер с модами |
| tModLoader, крупные контентные паки с генерацией мира | 6 GB в пике | 1.5-2 | Пик - создание мира |
Эти цифры совпадают с более подробным руководством по серверу Terraria и tModLoader, где также описана установка. Стоит выделить две вещи.
Игроки дешёвые. Значение maxplayers по умолчанию - 8, а настройка принимает до 255, но каждый дополнительный игрок добавляет сетевые буферы и немного состояния, а не кусок мира - мир и так полностью загружен. Большее число игроков меняет нагрузку на CPU во время событий, когда сервер обновляет каждого NPC и каждый снаряд в одном потоке.
Серверы с модами - отдельная категория. Сервер с Calamity на четырёх человек потребляет в несколько раз больше, чем ванильный на шестнадцать, и вся разница - это моды.
Настройка размера мира#
Размер мира выбирается один раз, при создании. На выделенном сервере это значение autocreate в serverconfig.txt, которое используется, если мира с указанным именем ещё нет:
world=/home/container/worlds/Hallowed_Acres.wldautocreate=3worldname=Hallowed_Acresdifficulty=1maxplayers=8port=7777password=change-mesecure=1npcstream=60autocreate=1 - маленький, 2 - средний, 3 - большой. difficulty: 0 - классика, 1 - эксперт, 2 - мастер, 3 - путешествие. npcstream уменьшает то, как часто враги у игроков перескакивают по экрану; снижение сглаживает движение ценой чуть большего трафика и на память не влияет. Каждый ключ разобран в статье конфигурация и команды сервера Terraria.
Большой мир - правильный выбор для группы из шести-восьми человек, которым нужен простор, а разница в памяти со средним на ванили - несколько сотен мегабайт. Для двух-трёх человек средний мир играется лучше и стоит меньше. На серверах с модами выбор важнее, потому что контентные моды добавляют биомы, сооружения и руды в каждый мир, а их проходы генерации масштабируются вместе с размером мира.
Генерация мира - это пик#
Когда сервер Terraria создаёт мир, он строит его целиком в памяти за десятки проходов генерации - рельеф, пещеры, биомы, руды, сооружения, данжи, храмы, сундуки и их лут - и только потом записывает файл .wld. Во время этого процесса он держит рабочие данные поверх самого мира. На ванили эти накладные расходы скромные. На tModLoader каждый мод, добавляющий проходы генерации, добавляет и свои рабочие данные, а крупные контентные моды добавляют их много.
Последствия:
- Тариф, на котором мир работает, может не справиться с его созданием. Если сервер остановился посреди генерации, первым делом посмотрите на память.
- Генерация длится дольше, чем ожидают. Большой мир с модами может создаваться несколько минут. Следите за процентами в консоли, а не считайте, что сервер завис.
- Есть дешёвый обходной путь. Сгенерируйте мир в игровом клиенте на своём компьютере ровно с теми же модами и версиями, а затем загрузите на сервер файл
.wld(и на tModLoader - его спутник.twld). Тогда серверу нужно будет только запускать мир, а не строить его.
tModLoader: сколько стоят моды#
tModLoader запускает моды внутри процесса сервера на современной среде .NET. Выделенный сервер пропускает большую часть графической работы, но всё равно загружает код каждого мода, регистрирует его предметы, NPC, тайлы, снаряды и баффы и держит всё состояние, которое хранит мод. Цена сильно зависит от типа.
- Моды для удобства - magic storage, браузеры рецептов, чек-листы боссов, автоудаление мусора - добавляют каждый немного. Исключение, которое растёт, - Magic Storage: он держит в одной системе много предметов, и в итоге в нём оказываются все запасы сервера.
- Контентные моды добавляют сотни или тысячи новых предметов, врагов и тайлов. Эталонный случай - Calamity; Thorium и подобные паки ведут себя так же.
- Моды-спутники и дополнения к крупным контентным модам добавляют поверх свой контент.
- Моды генерации мира добавляют сооружения и биомы, и их цена в основном приходится на создание мира.
Практический порядок работы:
- Выберите список модов и версии вместе с группой до начала и держите на сервере и у клиентов абсолютно одинаковый список.
- Запустите сервер один раз без игроков и запишите память в простое после загрузки мира. Это ваш базовый уровень.
- Сгенерируйте мир или загрузите сгенерированный локально.
- Следите за памятью во время первой битвы с боссом, когда онлайн все. Базовый уровень плюс этот всплеск плюс запас - это ваш тариф.
Установка крупных паков и синхронизация клиентов описаны в статье Calamity и крупные моды на сервере.
TShock и плагины#
TShock - серверный фреймворк для ванильной Terraria, который добавляет учётные записи, группы и права, защиту регионов, проверки античита и большой набор команд администратора. Он работает поверх ванильного сервера и хранит данные в базе данных, по умолчанию SQLite. Клиентам ничего не нужно.
Его цена по памяти скромная: фреймворк, подключение к базе данных и всё, что держат его плагины. Плагины, которые логируют каждое изменение тайла, ведут статистику или запускают мини-игры, держат больше. Серверу TShock с десятком плагинов для большинства сообществ вполне хватает 2 ГБ. Он ещё и даёт инструменты администратора, которых нет в ванили, - например, /butcher, чтобы убрать враждебных NPC, когда событие пошло не так, - что полезно скорее для проблем с CPU, чем с памятью. Настройка и права описаны в руководстве по серверу TShock.
Один мир на сервер#
Процесс сервера Terraria запускает один мир за раз. Это удивляет группы, которым нужен основной мир плюс отдельный мир для фарма, тестовый мир для хардмода или босс-раш, и напрямую влияет на расчёт ресурсов.
Запустить несколько миров можно двумя способами:
- Один сервер, переключение миров. Остановите сервер, поменяйте
world=вserverconfig.txtна другой файл.wldи запустите снова. Память остаётся как для одного мира - загружен только один, - но в обоих одновременно никто быть не может, а переключение требует перезапуска. - Несколько серверов. Запустите отдельный сервер для каждого мира, каждый со своим портом и своей памятью. Каждый держит в памяти весь свой мир, поэтому двум большим ванильным мирам нужно примерно вдвое больше памяти, чем одному, а двум мирам с Calamity - вдвое больше цифры для модов.
Для большинства групп правильный вариант - первый. Мир, в котором никто не играет, не обязан работать, а клиент Terraria позволяет игрокам свободно переносить персонажей между мирами - персонажи хранятся на машине каждого игрока, а не на сервере, если только сервер не включил серверных персонажей через TShock.
Последнее тоже важно для расчёта. Серверные персонажи в TShock хранят инвентарь каждого игрока в базе данных сервера, а не на его машине, что добавляет немного памяти и диска на игрока и делает сервер ответственным за backup не только миров, но и персонажей. Для публичного сервера, где важен античит, это того стоит; для друзей обычно не нужно.
На tModLoader все миры на сервере используют один и тот же список включённых модов, потому что моды загружаются на процесс сервера, а не на мир. Группе, которой нужны ванильный мир и мир с Calamity, понадобятся либо два сервера, либо смена enabled.json и перезапуск между ними.
CPU, события и то, что не является проблемой памяти#
Лаги в Terraria обычно вызывает CPU во время событий, а не память. Сервер каждый тик обновляет каждого активного NPC и каждый снаряд в одном потоке, и Морозная луна при шестнадцати игроках, босс с экраном, полным снарядов, или модовый босс с сотнями снарядов - это тяжёлые несколько минут. Память в это время стоит ровно, потому что эти таблицы фиксированного размера.
Поэтому, когда игроки жалуются на лаги:
- Во время вторжений, боссов и событий - это CPU. Тариф выше поможет, если график CPU ровно стоит на лимите; меньше одновременных событий и меньше ферм с десятками статуй помогут в любом случае.
- Постоянно на сервере с модами - проверьте, не близка ли память к лимиту и не собирает ли среда выполнения мусор непрерывно. Это тариф, слишком маленький для списка модов.
- Только у одного игрока - это соединение этого игрока.
Как читать графики, описано в статье CPU или RAM: что тормозит ваш сервер, а почему число слотов обещает меньше, чем кажется, - в статье сколько игроков помещается на сервер.
Сохранения, backup и остановки по памяти#
Сервер периодически сохраняется автоматически и сохраняется при корректном exit. Команда save в ванильной консоли принудительно сохраняет мир в любой момент. Всё, что завершает процесс без сохранения - перезагрузка хоста, kill, остановка по памяти, - теряет то, что произошло с последней записи.
Мир Terraria - это один файл (два на tModLoader), поэтому повреждённая запись портит весь мир, а не регион. Храните резервные копии не в папке самого сервера и делайте их перед каждым обновлением и каждым изменением модов. Файлы и восстановление описаны в статье backup и перенос мира Terraria.
На RE:NODE сервер, достигший лимита памяти, останавливается и чисто перезапускается, а не уходит в swap - для машины это безопасно, но несохранённый прогресс теряется, поэтому на сервере с модами оставляйте запас, а не работайте на грани. Тарифы Terraria - от 512 МБ за $3 в месяц до 4 ГБ, с одним выделенным портом и слотами backup на каждом тарифе. Переход на тариф выше поднимает лимит на уже существующем сервере, поэтому мир, переросший свой тариф, остаётся на месте.
FAQ#
Хватит ли серверу Terraria 1 ГБ?
Для ванили - да, вплоть до большого мира примерно на восемь игроков. TShock с несколькими плагинами или шестнадцать игроков с частыми событиями комфортнее себя чувствуют на 2 ГБ. Любому серверу tModLoader с чем-то большим, чем пара маленьких модов, нужно больше.
Сколько RAM нужно серверу с Calamity?
Закладывайте 4 ГБ для Calamity с обычными модами-спутниками и несколькими игроками. Пик - генерация мира; если сгенерировать мир на своём компьютере и загрузить его, серверу хватит памяти, чтобы его просто запускать. Крупные паки с собственной генерацией мира могут давать пик около 6 ГБ.
Потребляет ли большой мир больше RAM?
Да. Весь мир держится в памяти, а в большом мире вчетверо больше тайлов, чем в маленьком. На ванили разница - несколько сотен мегабайт; на серверах с модами больше, потому что моды добавляют контент в каждую часть карты.
Почему сервер остановился при создании мира?
Почти всегда из-за памяти. Генерация мира даёт пик заметно выше памяти, нужной для работы готового мира, особенно с модами, добавляющими сооружения и биомы. Сгенерируйте мир локально с теми же модами и загрузите .wld и .twld или создайте его один раз на тарифе побольше.
Нужно ли в Terraria больше RAM при большем числе игроков?
Немного. Мир уже полностью загружен, поэтому каждый игрок добавляет состояние подключения, а не рельеф. Большее число игроков в основном меняет нагрузку на CPU во время событий и боссов, когда каждый NPC и каждый снаряд обновляются в одном потоке.




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