RE:NODE

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

Сохранения игрового сервера: где хранится мир

Где выделенные серверы хранят миры и данные игроков для Minecraft, Valheim, Palworld, 7 Days to Die, Zomboid, Satisfactory и других и как безопасно их копировать.

0 прочтений

Мир игрового сервера - это несколько файлов в папке, которую можно назвать точно, и эта папка редко находится рядом с исполняемым файлом сервера. Большинство Linux-серверов пишут сохранения в домашнюю папку пользователя, от которого запущены, - в ~/.config, ~/.local/share или в скрытую папку с именем разработчика, - а другие держат их внутри папки установки, в Saved или saves. В таблице ниже указан путь для каждой распространённой игры. Для всех действуют два правила: копируйте сохранение, только когда сервер остановлен или только что его записал, и проверьте, где живут персонажи игроков - на сервере или на их собственных ПК, потому что от этого зависит, что на самом деле переносится при переезде.

Четыре способа хранить мир#

Зная, какой тип сохранения использует игра, вы понимаете, как оно ломается и как делать его backup.

ФормаПримерыЧто это значит
Один файлValheim .db, Terraria .wld, Satisfactory .sav, Factorio .zipЛегко копировать; повреждение уносит всё
Папка с файлами регионовMinecraft, 7 Days to Die, Project ZomboidПовреждение обычно затрагивает один регион
Файл мира плюс файлы игроковPalworld, ARK, Rust, UnturnedМир и персонажей можно восстанавливать по отдельности
База данныхFiveM, DarkRP, данные игроков DayZНужен дамп базы, а не просто копия файлов

Игры с одним файлом удобны, пока файл не повреждён, а после этого спасать уже нечего. Игры с регионами прощают больше: плохой чанк в Minecraft затрагивает свою область, а остальной мир загружается. Серверам с базой данных нужен совсем другой инструмент backup, и именно поэтому владельцы серверов FiveM, которые копируют только папку сервера, при восстановлении обнаруживают, что деньги и инвентарь всех игроков пропали. Эта сторона разобрана в статье о backup и восстановлении баз данных.

Где каждая игра хранит сохранения#

Это расположения по умолчанию на выделенном Linux-сервере. ~ - домашняя папка пользователя, от которого запущен сервер.

ИграГде лежат сохраненияКлючевые файлы
Minecraft (Paper)world/, world_nether/, world_the_end/ в папке сервераlevel.dat, region/*.mca, playerdata/
Valheim~/.config/unity3d/IronGate/Valheim/worlds_local/<World>.db, <World>.fwl
Terraria~/.local/share/Terraria/Worlds/<World>.wld
PalworldPal/Saved/SaveGames/0/<WorldID>/Level.sav, LevelMeta.sav, Players/*.sav
7 Days to Die~/.local/share/7DaysToDie/Saves/<World>/<GameName>/Region/, Player/
Project Zomboid~/Zomboid/Saves/Multiplayer/<servername>/чанки карты, players.db
Satisfactory~/.config/Epic/FactoryGame/Saved/SaveGames/server/<Session>_autosave_N.sav
Factoriosaves/ в папке сервера<name>.zip
Don't Starve Together~/.klei/DoNotStarveTogether/<Cluster>/Master/save/, Caves/save/
Rustserver/<identity>/.map, .sav, player.*.db
DayZmpmissions/<mission>/storage_1/data/, players.db
UnturnedServers/<ServerID>/Level/<Map>/, Players/
ARKShooterGame/Saved/SavedArks/<Map>/.ark, .arkprofile, .arktribe
Garry's Mod (DarkRP)garrysmod/sv.db (SQLite)
Abiotic FactorAbioticFactor/Saved/SaveGames/Server/Worlds/<World>/сохранения мира и игроков

Некоторые из этих путей меняются настройкой. -savedir в Valheim переносит всё. 7 Days to Die читает UserDataFolder из serverconfig.xml. V Rising пишет туда, куда указывает -persistentDataPath, внутри папки Saves с номером версии. Enshrouded использует saveDirectory в enshrouded_server.json. Номер папки хранилища в DayZ соответствует instanceId в serverDZ.cfg. Если мира нет там, где говорит таблица, проверьте строку запуска и конфиг, прежде чем обыскивать диск.

Некоторые игры вообще не хранят мир. Counter-Strike 2, Team Fortress 2 и другие раундовые игры на Source сбрасывают карту каждый раунд; сохранять нужно конфигурацию, баны и данные плагинов. Постоянное состояние FiveM - персонажи, деньги, транспорт - живёт в его базе данных, а в папке сервера лежат только ресурсы и конфиг.

Скрытые папки на хостинге с панелью

На хостинге на базе Pterodactyl сервер работает в контейнере, домашняя папка которого обычно /home/container, - это же корень, который вы видите в файловом менеджере. Поэтому путь вроде ~/.config/unity3d/... выглядит как .config/unity3d/... на верхнем уровне файлов сервера. Папки, начинающиеся с точки, во многих файловых менеджерах и SFTP-клиентах по умолчанию скрыты; включите «показывать скрытые файлы», прежде чем решить, что сохранения нет. Как подключиться клиентом, который их показывает, описано в статье о SFTP и файловом менеджере.

Что хранит сервер, а что остаётся у игроков#

От этого зависит, что на самом деле переносит перенос мира, и это каждый раз застаёт людей врасплох.

  • Персонаж на ПК игрока: Valheim и Terraria. Сервер хранит мир; персонаж, инвентарь и навыки каждого игрока лежат в его собственной папке игры. При переносе мира на новый сервер снаряжение у всех сохраняется автоматически, а сервер не может помешать игроку прийти с предметами из другого места.
  • Персонаж на сервере: Palworld, 7 Days to Die, Project Zomboid, ARK, Rust, DayZ, Unturned, Don't Starve Together и большинство других. Персонажи - часть сохранения. Копируйте всю папку сохранений, иначе игроки придут новыми персонажами.
  • Персонаж в базе данных: фреймворки FiveM и DarkRP. Мир - это карта, которая идёт с игрой; всё важное - это строки в базе данных.

Отдельного упоминания заслуживает Palworld. Персонажи хранятся в Players/ в файлах с именем по ID игрока, и мир, перенесённый из кооперативной игры на выделенный сервер, не совпадает чисто с ID хоста. Обычно хост приходит новым персонажем, а у всех остальных всё в порядке. Исправление требует правки данных сохранения community-инструментами и описано в статье о переносе кооперативного сохранения Palworld на выделенный сервер.

Файлы, которые не сохранения, но всё равно нужны#

Одна папка сохранений сервер не воспроизводит. Другие файлы, в которых хранится состояние:

  • Списки админов, банов и допуска. adminlist.txt, bannedlist.txt и permittedlist.txt в Valheim лежат рядом с worlds_local. ops.json, whitelist.json, banned-players.json и banned-ips.json в Minecraft лежат в корне сервера.
  • Базы аккаунтов. Project Zomboid хранит аккаунты, пароли и whitelist в ~/Zomboid/db/<servername>.db, отдельно от мира. Потеряете её - и каждому игроку придётся регистрироваться заново.
  • Данные плагинов и модов. Плагины Minecraft хранят данные в plugins/<Name>/ - экономику, приваты, права. Плагины Oxide в Rust хранят данные в oxide/data/. Часто они ценнее самого мира.
  • Конфиг сервера. server.properties, serverconfig.xml, файлы .ini Unreal. Хранить дёшево, восстанавливать долго.
  • Сгенерированные карты. Случайные миры 7 Days to Die лежат в GeneratedWorlds/, отдельно от сохранения, которое их использует. Скопируете сохранение без мира - и сервер не сможет его загрузить.

Полезная проверка backup: смогли бы вы восстановить из него сервер на чистой машине так, чтобы никто не заметил? Если ответ зависит от того, вспомните ли вы какую-то настройку, backup неполный.

Как безопасно копировать сохранение#

Каждая игра из таблицы держит часть мира в памяти и периодически сбрасывает её на диск. Файл, скопированный в тот момент, когда игра записала его наполовину, может оказаться обрезанным или несогласованным, а в копии, снятой через двадцать минут после последнего сохранения, не будет двадцати минут игры.

Безопасная последовательность:

  1. Сохраните, затем остановите. Отправьте команду сохранения игры, если она есть (save-all в Minecraft, save в админ-консоли Valheim, saveworld в 7 Days to Die, /save в Palworld), затем корректно остановите сервер и дождитесь подтверждения в логе.
  2. Копируйте всю папку, а не отдельные файлы. Многие игры держат рядом с данными индекс или файл метаданных, и неполная копия хуже, чем никакой.
  3. Запустите сервер и проверьте, что загрузился нужный мир, прежде чем говорить кому-то, что всё снова работает.

Если сервер остановить нельзя, некоторые игры позволяют приостановить запись. В Minecraft последовательность save-off, затем save-all flush, затем копирование, затем save-on даёт согласованную копию работающего сервера. У большинства других игр аналога нет, и backup панели, снятый во время их работы, захватывает то, что последним попало на диск, - поэтому так важно отправлять команду сохранения прямо перед backup по расписанию. Как часто каждая игра пишет на диск и чего стоит это изменить, рассказано в статье об интервалах автосохранения игровых серверов.

В RE:NODE на каждом игровом тарифе есть слоты для backup; backup можно сделать вручную или по расписанию, восстановить одной кнопкой, скачать и заблокировать, чтобы ротация его никогда не удалила. Вкладка Schedules может сначала отправить команду сохранения, а через минуту сделать backup, и это закрывает описанный выше разрыв. Backup хранятся вне машины, которую защищают, но удаляются вместе с сервером, включая заблокированные, - скачайте один, прежде чем что-либо отменять.

Перенос мира на сервер#

Общая процедура подходит почти для любой игры:

  1. Найдите мир на исходной машине. Для одиночных и кооперативных сохранений в Windows обычные места - %USERPROFILE%\AppData\LocalLow\<Developer>\<Game> (игры на Unity, например Valheim), %LOCALAPPDATA%\<Game>\Saved\SaveGames (игры на Unreal, например Palworld и Satisfactory) и Documents\My Games\<Game>.
  2. Остановите целевой сервер.
  3. Загрузите мир в папку сохранений сервера из таблицы, в точности повторив структуру папок.
  4. Укажите серверу на него. Большинству игр нужно задать имя мира или сессии в конфиге или строке запуска, совпадающее с именем файла, включая заглавные буквы.
  5. Запустите и прочитайте лог. Строка о том, что сервер генерирует новый мир, означает, что ваш он не нашёл.

Пошаговые руководства по конкретным играм со всеми подводными камнями: загрузка сохранения Valheim, настройки и сохранения Satisfactory и руководство по переносу мира Terraria.

Насколько большими становятся сохранения и почему это важно#

Новый мир маленький. Мир, в котором люди живут месяцами, - нет, и этот рост настигает квоты диска и слоты backup в самый неудобный момент.

Примерная картина для распространённых игр:

ИграНовый мирДавно живущий мир
Valheimнесколько МБ50-150 МБ плюс backup по таймеру рядом
Terrariaнесколько МБ10-50 МБ
Minecraft100-300 МБ после первых исследованийнесколько ГБ, растёт с каждым посещённым чанком
7 Days to Dieдесятки МБ плюс сгенерированная карта1 ГБ и больше на оживлённом сервере
Palworldдесятки МБсотни МБ при большом количестве баз
Factorioнесколько МБ50-300 МБ на большой базе

Это порядки величин, а не обещания; моды, размер карты и то, сколько игроки исследуют, сильно их сдвигают.

Отсюда три следствия. Во-первых, миры Minecraft и 7 Days to Die растут от исследования, а не от строительства. Каждый чанк или регион, который посещает игрок, генерируется и записывается, и полёт на элитрах над неисследованной местностью может добавить к миру за час больше, чем месяц строительства. Стандартный способ держать это в рамках - граница мира, о ней статья о границе мира и предварительной генерации. Во-вторых, многие игры держат собственные backup рядом с миром: backup по таймеру в Valheim, слоты автосохранения в Factorio, ротируемые автосохранения в Satisfactory, копии .ark с отметкой времени в ARK. Эти копии умножают место, которое мир занимает на диске, и их нужно проверять первыми, когда кончается квота. В-третьих, архив backup примерно равен по размеру всему, что в нём лежит, так что мир, выросший в пять раз, делает в пять раз больше и каждый backup. Если backup вдруг начинают падать или идти намного дольше, обычная причина - рост мира.

Проверяйте размер папки сохранений раз в несколько недель. График диска в панели показывает общий объём; файловый менеджер или du -sh * в командной строке на своей машине покажут, какая папка виновата. Размеры по играм есть в статье о том, сколько места нужно игровому серверу.

Обновления версий и необратимые сохранения#

Большинство игр обновляют сохранение на месте, когда его открывает более новая версия сервера, и многие не могут потом открыть обновлённое сохранение на старой версии. Minecraft говорит об этом прямо: открытие мира в более новой версии его конвертирует, а возврат не поддерживается. У Satisfactory, 7 Days to Die и Project Zomboid были крупные версии, с которыми старые сохранения не были совместимы вовсе и требовался новый мир.

Поэтому копия, сделанная перед обновлением, - самый ценный backup, какой у вас когда-либо будет. Это единственный путь назад, если обновление ломает моды, губит производительность или просто оказывается не тем, чего хотела компания. Как намеренно держать сервер на определённой версии, описано в статье о фиксации версии игрового сервера и откатах.

Решение проблем с сохранениями#

Сервер сгенерировал новый мир вместо моего. Имя мира в конфиге не совпадает с файлом или папкой, часто из-за регистра или расширения. Ваш оригинал на месте; исправьте имя и перезапустите.

Мир загружается, но у всех новые персонажи. Вы скопировали мир, но не данные игроков, или игра на выделенном сервере идентифицирует игроков иначе, чем в кооперативе. Проверьте, что папка игроков перенесена, а для Palworld смотрите заметку о сохранении хоста выше.

Папка сохранений пуста. Вы смотрите в папку установки, а игра пишет в домашнюю папку, или файловый менеджер скрывает папки с точкой.

После вылета пропал прогресс за последний час. Игра с тех пор не сохранялась. Уменьшите интервал автосохранения и убедитесь, что остановки корректные, - статья о том, почему ваш игровой сервер постоянно перезапускается поможет отличить вылет от остановки из-за памяти.

Восстановленный backup старше, чем ожидалось. Backup выполнялся, пока игра держала несохранённые изменения в памяти. Отправляйте команду сохранения перед backup.

FAQ#

Где выделенный сервер хранит мир на Linux?

Обычно в домашней папке пользователя, от которого он запущен, - в ~/.config, ~/.local/share или в скрытой папке конкретной игры - либо внутри папки установки, в папке Saved или saves. В таблице выше перечислены значения по умолчанию для распространённых игр.

Можно ли перенести мир из одиночной игры на выделенный сервер?

Для большинства игр да: скопируйте папку или файл мира в папку сохранений сервера и укажите совпадающее имя мира. Игры, которые хранят персонажей на сервере, могут посчитать бывшего хоста новым игроком.

Нужно ли останавливать сервер, чтобы сделать backup мира?

Для гарантированно согласованной копии - да, или как минимум сначала принудительно сохраните. Копия работающего сервера содержит только то, что игра последним записала на диск, а файл, пойманный посреди записи, может оказаться повреждённым.

Почему моего персонажа нет в мире на сервере?

В Valheim и Terraria персонажи живут на вашем ПК, и вы приносите их с собой. В большинстве других игр персонажи - часть серверного сохранения, так что новый сервер или неполная копия означает нового персонажа.

Насколько большими бывают файлы сохранений?

От нескольких мегабайт у молодого мира Valheim или Terraria до нескольких гигабайт у давно работающего мира Minecraft или 7 Days to Die с большой исследованной территорией. Планируйте диск под мир, его backup и некоторый запас на рост.


Комментарии

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

0/2000