Сид Valheim - это строка из десяти символов, например Fj3kQ9mXa2, которая хранится в файле метаданных мира на сервере. На текущих сборках выделенного сервера это уже не WorldName.fwl рядом с .db. Теперь каждый мир - это папка, а сид лежит в файле _main.<number>.fwl2 внутри неё. Скачайте самый новый из них, откройте в любом простом текстовом просмотрщике, и сид - это короткая строка сразу после имени мира. Если вы играете на консоли и до файлов вообще не добраться, это за пару минут может сделать тот, кто держит сервер.
Дальше в статье - где находится эта папка, как прочитать файл, не повредив его, какой из нескольких копий доверять и что делать, если поиск .fwl не находит вообще ничего. Обычно именно так люди и узнают, что структура файлов поменялась.
Почему поиск .fwl ничего не находит#
Большую часть жизни Valheim мир состоял из двух файлов с одинаковым именем: Midgard.fwl - несколько сотен байт с именем и сидом, и Midgard.db - всё, что изменилось в мире. Большинство руководств в интернете, включая нашу собственную более старую статью о расположении сохранений, описывают именно эту пару, и большинство ответов на вопрос «как найти сид» звучат как «откройте .fwl в Блокноте».
На серверах, которые мы держим сегодня, работающий мир записывает другое. Лог сервера описывает каждое сохранение в пять шагов:
World save (1/5) Cloud & Backup checks done [0ms] => Save number 435World save (2/5) Chunks writing done [223ms]World save (3/5) DB2 writing done [20ms]World save (4/5) FWL writing done [3ms]World save (5/5) done. Total time [289ms]Эти шаги соответствуют файлам в папке, названной по имени мира, и ни один из них не заканчивается на .fwl или .db. Поэтому поиск *.fwl - ровно то, что советует большинство инструкций, - возвращает пустой результат, хотя сервер сохранил мир сотни раз. Ничего не пропало. Расширение - .fwl2, и файл лежит на уровень глубже, чем вы искали.
Точную версию, в которой это поменялось, мы назвать не можем и гадать не хотим. Если нужно понять, какую структуру использует конкретный сервер, загляните в его папку worlds_local: папки означают новую структуру, файлы .fwl и .db - старую.
Новая папка мира, файл за файлом#
Вот настоящая папка мира на выделенном сервере под Linux, в сокращённом виде. Мир называется Midgard, и сервер сохранил его 435 раз:
worlds_local/ Dedicated/ Midgard/ _main.435.fwl2 _main.435.db2 _main.435.chunks _main.435.ok 1e_1e__1_1.chunk 1e_20__1_1.chunk ... Midgard_backup_auto-20261019-200416/ Midgard_backup_auto-20261019-111133/Для чего нужен каждый тип файла - в той мере, в какой это нужно владельцу сервера:
| Файл | Что в нём | Размер |
|---|---|---|
_main.N.fwl2 | Имя мира, сид, метаданные | Сотни байт |
_main.N.db2 | Состояние мира, не попавшее в чанки | От десятков до сотен KB |
_main.N.chunks | Индекс файлов чанков | Крошечный |
*.chunk | Сохранённое состояние участков карты | От KB до MB каждый |
_main.N.ok | Отметка о том, что сохранение N завершено | 4 байта |
N - это номер сохранения из лога. Он увеличивается на единицу при каждом сохранении, так что самый большой номер в папке - самое свежее сохранение. Стоит разобраться с файлом .ok: он записывается после всего остального в этом сохранении, поэтому служит удобным признаком того, что набор полный. _main.N.fwl2 без соответствующего _main.N.ok рядом относится к сохранению, которое, возможно, не завершилось.
Файлы чанков названы по участкам карты, и файл появляется только у тех участков, где кто-то побывал и что-то изменил. У совсем нового мира их несколько штук, у мира, в котором группа играет неделями, - десятки. Папка Dedicated в списке - это имя мира, которое использует стандартный скрипт запуска, и обычно она означает, что сервер один раз запустили до того, как кто-то указал имя мира. Это отдельный, почти пустой мир, и на него можно не обращать внимания.
Где папка лежит на выделенном сервере#
Папка мира находится в профиле пользователя, от имени которого запущен процесс сервера, в каталоге настроек Unity:
| Система | Путь по умолчанию |
|---|---|
| Linux | ~/.config/unity3d/IronGate/Valheim/worlds_local/ |
| Windows | %USERPROFILE%\AppData\LocalLow\IronGate\Valheim\worlds_local\ |
| Egg Pterodactyl | /home/container/.config/unity3d/IronGate/Valheim/worlds_local/ |
На старых установках последняя папка может называться worlds, а не worlds_local; если первая пуста, проверьте обе. Если сервер запущен с -savedir, всё переезжает в указанный каталог, и этот аргумент - первое, что стоит проверить, если ожидаемая папка пуста. В справочнике аргументов запуска он описан вместе с остальными.
На Linux-сервере, к которому у вас есть доступ, структуру можно проверить одной командой:
$ ls -la ~/.config/unity3d/IronGate/Valheim/worlds_local/$ ls -t ~/.config/unity3d/IronGate/Valheim/worlds_local/Midgard/*.fwl2 | head -1Вторая строка выводит самый новый файл метаданных - тот, который вам нужен. Замените Midgard на имя своего мира в точности, с учётом заглавных букв - имя папки совпадает со значением -world.
На хостинговом сервере с веб-файловым менеджером путь тот же, что в строке Pterodactyl, только без /home/container. Папка .config начинается с точки, поэтому некоторые файловые менеджеры её скрывают. На RE:NODE файловый менеджер её показывает, а к тем же файлам можно подключиться по SFTP с данными со страницы настроек сервера.
Как прочитать сид из файла .fwl2#
Сид - это обычный текст внутри небольшого бинарного файла, поэтому прочитать его легко, а редактировать - плохая идея.
- Найдите папку мира и выберите
_main.N.fwl2с самым большимN, у которого есть и_main.N.ok. - Скачайте его. Не открывайте его в браузерном редакторе, даже просто посмотреть, - см. предупреждение ниже.
- Откройте скачанную копию в простом текстовом редакторе, например в Блокноте, TextEdit или VS Code.
- В самом начале вы увидите имя мира, а за ним короткий набор букв и цифр. Этот набор и есть сид.
Большая часть файла будет выглядеть как случайные символы, потому что он бинарный. Искать нужно два читаемых слова рядом в начале: Midgard, а почти сразу за ним Fj3kQ9mXa2. Сид обычно состоит из десяти символов в разном регистре, и он чувствителен к регистру: fj3kq9mxa2 - это другой мир.
Если вы уверенно работаете в терминале, скачивать ничего не нужно. strings выводит читаемые фрагменты бинарного файла, и первые два из них - имя и сид:
$ strings -n 3 _main.435.fwl2 | head -2MidgardFj3kQ9mXa2Что на самом деле в первых байтах
Если вы хотите читать файл скриптом или проверить, что он не повреждён, начало файла имеет простую фиксированную структуру. Все числа в little-endian.
| Байты | Значение | Пример |
|---|---|---|
| 4 | Длина остальной части файла | 6b 01 00 00 (363) |
| 4 | Версия формата метаданных | 2a 00 00 00 (42) |
| 1 + n | Имя мира, сначала длина | 07, затем Midgard |
| 1 + n | Текст сида, сначала длина | 0a, затем Fj3kQ9mXa2 |
Текстовые поля - это строки в стиле .NET: длина, а за ней столько же байт UTF-8. Для чего-то настолько короткого, как имя мира или сид, длина занимает один байт. Первое число стоит проверять: у исправного файла оно равно размеру файла минус четыре, так что оборванная загрузка или файл, испорченный редактором, выдают себя сразу. После сида идёт число, которое игра вычисляет из него, и дальше поля, на которые мы не опираемся. Номер версии на наших серверах сегодня - 42; считайте его тем, что меняется между версиями игры, а не константой.
Короткий скрипт на Python читает его надёжно и работает и со старыми файлами .fwl, потому что они начинаются так же:
import struct, sysdata = open(sys.argv[1], "rb").read()length, version = struct.unpack_from("<ii", data, 0)pos = 8def read_string(pos): size = shift = 0 while True: byte = data[pos]; pos += 1 size |= (byte & 0x7F) << shift; shift += 7 if byte < 0x80: break return data[pos:pos + size].decode("utf-8"), pos + sizename, pos = read_string(pos)seed, pos = read_string(pos)print(f"world={name} seed={seed} version={version} intact={length == len(data) - 4}")$ python valheim_seed.py _main.435.fwl2world=Midgard seed=Fj3kQ9mXa2 version=42 intact=TrueКакой копии доверять: сохранения и backup#
В активной папке миров лежит один текущий набор файлов, а сервер продолжает создавать рядом папки backup. Они называются WorldName_backup_auto-YYYYMMDD-HHMMSS, а сколько их и как часто они появляются, задают аргументы запуска -backups, -backupshort и -backuplong. Каждая из них - полноценная папка мира с той же структурой и со своим _main.N.fwl2.
Чтобы найти сид, подойдёт любая из них: сид не меняется за всю жизнь мира, так что самый старый backup и самое новое сохранение содержат одну и ту же строку. Это полезно, когда текущая папка в плохом состоянии. Если самый новый .fwl2 не проходит проверку длины, прочитайте файл из последней папки backup.
Для восстановления порядок важнее:
- Используйте текущую папку, если у её самого нового
_main.N.fwl2есть соответствующий.ok. - Иначе берите самую свежую папку
_backup_auto-- на момент создания это было завершённое сохранение. - Остановите сервер, прежде чем менять папки, иначе следующее сохранение перезапишет то, что вы вернули.
Как часто происходит основное сохранение, задаёт -saveinterval в секундах, по умолчанию 1800 - каждые полчаса. При сбое теряется не больше этого времени игры. Восстановление подробно описано в нашем руководстве по backup и повреждению мира. Одно правило из него стоит запомнить уже здесь: backup на том же диске, что и мир, защищает от неудачного сохранения, но не от потери диска.
Как узнать сид, если вы играете на PlayStation или Xbox#
С появлением кроссплея консольные игроки могут заходить на те же серверы, что и игроки на ПК, и обычные советы - «выберите мир в списке миров, там показан сид» или «откройте .fwl в Блокноте» - к ним не подходят. Консольный игрок, заходящий на чужой выделенный сервер, вообще не имеет файлов мира. Мир существует только на сервере, а у консольного клиента нет способа его просмотреть.
Поэтому консольному игроку остаётся спросить того, кто держит сервер. Если это вы и у вас спрашивает кто-то с PlayStation, это займёт минуту:
- Откройте файловый менеджер сервера или подключитесь по SFTP.
- Перейдите в
.config/unity3d/IronGate/Valheim/worlds_local/и откройте папку с именем вашего мира. - Скачайте самый новый
_main.N.fwl2или выполните для негоstrings, если у вас есть shell. - Отправьте им эти десять символов в точности так, как они записаны.
Полезно приложить ссылку на просмотрщик карты. Сайты вроде valheim-map.world принимают сид и рисуют весь мир, включая биомы, боссов и торговцев, и работают в браузере телефона, что важно для того, у кого нет ПК. Напомните, что карта показывает мир таким, каким он был сгенерирован, а не то, что с тех пор построили или выкопали. Что стоит проверить в просмотрщике, когда сид уже есть, рассказывает наше руководство по сидам.
Если вы консольный игрок на сервере, который держите не вы, спросите владельца, а на арендованном сервере - поддержку хостинга. Назовите им имя сервера так, как оно отображается в браузере, и, если знаете, имя мира. И то и другое есть в настройках сервера, так что нужную папку найдут, даже если у хостинга сотни миров.
Как сменить или задать сид#
Сменить сид существующего мира невозможно, а у выделенного сервера вообще нет аргумента для сида. Все параметры сервера - это аргументы запуска, и ни один из них не принимает сид. Если -world указывает на несуществующую папку, сервер создаёт под этим именем новый мир со случайным сидом и пишет об этом в лог - поэтому неверное имя мира выглядит в точности как стёртый мир.
Чтобы запустить сервер на конкретном сиде, создайте мир с этим сидом на своём ПК, запустите его один раз, чтобы записались файлы, и загрузите результат в worlds_local сервера. Это пошагово описано в руководстве по загрузке. Два момента, связанных с новой структурой:
- Загружайте папку целиком, с именем, в точности совпадающим со значением
-worldна сервере. - Проверьте, какую структуру записала ваша локальная игра. Если ваш ПК создал файлы
.fwlи.db, а сервер ожидает папки, или наоборот, остановитесь и обновите обе стороны до одной версии игры перед загрузкой, вместо того чтобы смешивать файлы.
Правка текста сида внутри .fwl2, чтобы «сменить» сид, не работает и быстрее всего портит мир. И поле длины, и сохранённое состояние мира зависят от исходного сида. Считайте этот файл доступным только для чтения.
Устранение неполадок#
Поиск `.fwl` ничего не находит. Сервер использует структуру с папками. Ищите *.fwl2 или откройте worlds_local и загляните в папку с именем вашего мира.
Есть папка `Dedicated` и больше ни одного мира. Сервер работает без заданного имени мира, поэтому он запускает мир под названием Dedicated. Если ваша группа в нём играла, это и есть ваш мир, а его сид лежит в Dedicated/_main.N.fwl2. Если нет, проверьте имя мира в настройках запуска и путь -savedir.
Папка мира есть, но в ней нет `.fwl2`. Либо сервер ещё ни разу не завершил сохранение, либо список, который вы смотрите, обрезан. Дождитесь следующего сохранения - в логе появится World save (5/5) done - и посмотрите снова. Если лог показывает сохранения, а папка остаётся пустой, сервер пишет в другое место, и почти всегда причина в -savedir.
Сид выглядит бессмысленно или содержит странные символы. Скорее всего, вы читаете числовое поле после сида, или файл открыт в странной кодировке. Используйте strings или скрипт выше - они читают точные байты.
Проверка длины не проходит. Загрузка прервалась, или файл был сохранён через редактор. Скачайте его заново; если не проходит и копия на самом сервере, прочитайте сид из последней папки _backup_auto- и перед следующим перезапуском загляните в руководство по падениям при запуске.
Просмотрщик карты показывает не тот мир. Сначала проверьте регистр каждой буквы, затем убедитесь, что сид взят из того мира, в котором вы играете: на сервере может быть несколько папок миров, а загружается та, которую указывает -world.
FAQ#
Можно ли узнать сид Valheim консольной командой?
Не на выделенном сервере, к которому вы подключаетесь только как игрок. Надёжный источник - файл метаданных мира на сервере. Если мир есть у вас локально, список миров в игре показывает сид, когда вы выбираете мир.
Сид одинаковый во всех backup?
Да. Сид задаётся при создании мира и никогда не меняется, так что в каждой папке backup и в каждом номере сохранения одна и та же строка. Поэтому backup - безопасное место, чтобы прочитать сид, когда текущие файлы выглядят повреждёнными.
Нужны ли файлы .db2 и чанки, чтобы прочитать сид?
Нет. Сид есть только в .fwl2, файле размером в несколько сотен байт, так что скачивать нужно только его. Все остальные файлы важны, лишь когда вы переносите или восстанавливаете мир.
Нужно ли игроку на PlayStation что-нибудь из файлов сервера?
Нет. Консольным игрокам нужен только текст сида, который можно вставить в просмотрщик карты в браузере. Файлы мира на консоли бесполезны, так что отправляйте строку, а не файл.
Загрузится ли моя старая пара .fwl и .db на новом сервере?
Обещать это для каждой версии мы не можем, поэтому не проверяйте на единственной копии. Сохраните исходную пару в надёжном месте, загрузите копию на остановленный сервер, запустите его и прочитайте лог, прежде чем что-либо удалять.


