Объяснение файлов манифеста Steam
Что такое файл appmanifest_*.acf, что в нем содержится, зачем он нужен SteamTools и как его прочитать в текстовом редакторе.
Последнее обновление: 2026-07-05
Для каждой разблокировки SteamTools требуется два файла. На этой странице описан первый из них — файл appmanifest_<APPID>.acf — достаточно подробно, чтобы вы могли прочитать его в текстовом редакторе и понять, что делает каждая строка. Файл Lua — это легкая половина (это всего лишь короткий скрипт, который сообщает SteamTools, какие склады загружать); манифест — это та часть, которая сбивает людей с толку. Мы также рассмотрим все распространенные ошибки и крайние случаи, которые могут возникнуть в манифесте, чтобы в следующий раз, когда вы увидите такую ошибку, вы точно знали, что с ней делать.
Что это за файл
Манифест представляет собой небольшой текстовый файл в формате Valve «ACF» (файл конфигурации приложения). ACF — это формат «ключ-значение» с заголовками разделов, аналогичный INI. Steam записывает один из них для каждого приложения, которое вы когда-либо устанавливали, в каталоге steamapps. Соглашение об именах — appmanifest_<APPID>.acf, где <APPID> — это App ID игры.
Чтобы SteamTools работал, вам нужна копия этого файла (или того, который указывает на правильные хранилища и сборку), находящаяся в папке, которую наблюдает SteamTools, обычно <SteamTools>/depotcache/. Манифест не обязательно должен быть именно тем файлом, который Steam написал для вашей установки — он просто должен описывать правильную сборку нужного приложения. SteamTools читает манифест, чтобы узнать, какую сборку какого хранилища взять, и читает файл Lua (вторая загрузка), чтобы узнать, какой ключ дешифрования использовать.
Что находится внутри манифеста
Настоящий appmanifest_400.acf (Портал) выглядит так:
"AppState"
{
"appid" "400"
"name" "Portal"
"installdir" "Portal"
"StateFlags" "4"
"UpdateLocalTime" "Wed Jan 1 12:34:56 2025"
"buildid" "1234567"
"LastOwner" "12345678901234567"
"BytesToDownload" "0"
"BytesDownloaded" "0"
"AutoUpdateBehavior" "0"
"UserConfig"
{
"language" "english"
}
"MountedDepots"
{
"400" "2345678"
}
}
Большинство этих полей говорят сами за себя, если вы знаете, что искать. Для SteamTools важны два:
appid— App ID. Должно совпадать с именем файла. SteamTools даже не смотрит на имя файла, но Steam откажется загружать манифест, если имя файла не начинается сappmanifest_<appid>.acf. Поэтому они должны совпадать.MountedDepots— сопоставление идентификатора хранилища с идентификатором сборки этого хранилища. SteamTools использует это, чтобы узнать, какую сборку каждого хранилища загрузить. ЕслиMountedDepotsпуст или неправильный, SteamTools не сможет найти нужную сборку и игра не запустится.
Остальные поля (UpdateLocalTime, UserConfig, LastOwner и т. д.) — это бухгалтерия Steam. SteamTools их игнорирует. Генератор не включает их, поскольку копирование LastOwner из чужого манифеста будет указывать на его установку Steam, а не на вашу — это проблема конфиденциальности и корректности.
Что на самом деле дает вам генератор
Когда вы запрашиваете манифест с этого сайта, вы получаете небольшой текстовый файл с полями, которые нужны SteamTools, и больше ничего. Конкретно:
appidname(разрешается изappdetailsво время запроса)installdir(условное обозначение каталога установки Steam, строчные буквы)buildid(последняя публичная сборка или сборка для запрошенной вами ветки)MountedDepots, с одной записью на каждое депо в приложении.
Мы не включаем UpdateLocalTime, UserConfig или LastOwner, поскольку SteamTools не читает их, а копирование их из чужого манифеста будет указывать на чью-то установку Steam, а не на вашу.
Манифест от генератора обычно занимает 200–600 байт, в зависимости от количества хранилищ. Сравните это с полным манифестом Steam, размер которого может составлять 2–4 КБ.
Файл Lua за 60 секунд
Файл Lua (второй из двух загружаемых вами файлов) представляет собой крошечный скрипт, который сообщает SteamTools, какие хранилища загружать для этого приложения. Типичный 400_public.lua примерно такой:
addappid(400, 1, "abcdef0123456789abcdef0123456789")
setmanifest("2345678", "1234567890abcdef1234567890abcdef")
addappid(<appid>, 1, <depot_key>)регистрирует приложение и предоставляет ключ дешифрования для его основного хранилища.setmanifest(<depot_id>, <manifest_id>)указывает SteamTools на конкретную сборку этого депо.
Генератор извлекает ключ хранилища и идентификатор манифеста из общедоступных данных Steam. Никакого секретного соуса нет. Ключ депо — это ключ дешифрования депо, который представляет собой 32-значную шестнадцатеричную строку, которую Steam публикует публично. Идентификатор манифеста — это SHA-1 файла манифеста хранилища, который также является общедоступным.
Почему SteamTools нужны оба файла
Разделение намеренное:
- В манифесте SteamTools указывается какая сборка приложения для загрузки.
- Файл Lua сообщает SteamTools, как его загрузить (какие хранилища, какой ключ дешифрования).
Если у вас есть только манифест, SteamTools не знает, как расшифровать депо. Если у вас есть только файл Lua, SteamTools не знает, какую сборку брать. Оба файла обязательны, и они должны согласовываться по App ID.
.acf manifest .lua script
│ │
│ "I want build 1234567 │ "use depot key X for app 400,
│ of app 400, with depots │ and point at manifest Y for
│ 400 → 2345678" │ depot 2345678"
│ │
└──────────┬───────────────────┘
▼
SteamTools
(desktop client)
│
▼
game launches with
the right decrypted
build
##Заметка о ветках
В некоторых играх помимо public есть ветка beta или ptb. Генератор предоставляет поле «Ветвь» в пользовательском интерфейсе; если вы его установите, возвращаемый манифест и Lua будут нацелены на сборку этой ветки, а не на общедоступную сборку. По умолчанию — public.
Имя ветки должно точно совпадать с тем, что показывает Steam. Общие значения: public, beta, beta_1, ptb и experimental. Если вы не уверены, какую ветку вам нужна, оставьте поле пустым, и вы получите общедоступную сборку.
Чтобы обнаружить доступные ветки для данного приложения, проверьте вкладку ветвей SteamDB для App ID. SteamDB является авторитетным источником названий ветвей и buildid каждой из них.
Распространенные крайние случаи
Это случаи, на которые не распространяется базовая процедура «перетащите файл в depotcache».
Приложения без общедоступных хранилищ
Некоторые приложения существуют в каталоге Steam, но не имеют опубликованных сборок. Они появляются в поиске, у них есть App ID, но appdetails возвращает пустой список депо. Генератор вернет 0-байтовый манифест или манифест, содержащий только заголовок AppState. На странице как это работает для этого есть специальная ошибка.
Зашифрованные и незашифрованные хранилища
Каждое хранилище на Steam зашифровано, независимо от того, является ли игра «без DRM» или нет. Шифрование применяется к фрагментам хранилища, а не к самим файлам игры — файлы игры выходят расшифрованными, как только SteamTools получает ключ хранилища. Файл Lua — это то, что дает SteamTools этот ключ.
Вот почему файл Lua является обязательным даже для игр, рекламируемых как «без DRM». DRM находится на уровне мастерской Steam (ни одна учетная запись Steam не владеет игрой), а не на уровне хранилища (куски хранилища по-прежнему зашифрованы с помощью AES).
Саундтреки и DLC
DLC и саундтреки — это обычные приложения Steam. У них есть свой App ID, свой манифест и свой файл Lua. Чтобы разблокировать DLC или саундтрек, сгенерируйте манифест + Lua для App ID DLC, а не для базовой игры. Обычными DLC являются такие вещи, как «Оригинальный саундтрек» (App ID в пределах 200 000) и «Сезонный абонемент» (App ID варьируется).
Если у вас есть комбинация базовая игра + DLC, которую вы хотите разблокировать, вам потребуются две пары манифест/Lua: одна для App ID базовой игры и одна для App ID DLC. Оба находятся в одних и тех же папках depotcache и scripts.
Межрегиональные склады
Некоторые игры публикуют отдельные склады для разных регионов (CN, EU, US, ASIA). Генератор выбирает склады, соответствующие региону вашего клиента Steam. Если вы меняете регионы, заново сгенерируйте манифест — сопоставление MountedDepots будет другим.
Инструменты (Proton, Steamworks, Source SDK)
Такие инструменты, как Proton, Source SDK и общие распространяемые файлы Steamworks, являются обычными приложениями Steam. Их можно разблокировать таким же образом. App ID хорошо известны (Proton — 858280; Steamworks — 243750).
Примечание об исключенных приложениях
Если игра была исключена из Steam, манифест и Lua могут все еще существовать в этом генераторе, но они не будут работать. Ни SteamTools, ни SteamDB не могут получить рабочую сборку для исключенного из списка приложения. Обходного пути нет — единственный способ продолжать использовать приложение, исключенное из списка, — это сохранить его копию, установленную до того, как оно было исключено, и никогда не удалять его.
Некоторые исключенные из списка приложения остаются технически доступными через конечную точку appdetails Steam в течение нескольких недель после исключения из списка. В течение этого окна генератор вернет рабочий манифест. После закрытия окна возвращается ошибка 404, и мы ничего не можем сделать.
Проверка правильности манифеста
Прежде чем поместить манифест в depotcache, выполните следующий контрольный список:
- Имя файла соответствует
appid. Файл должен иметь видappmanifest_<APPID>.acf, и полеappidвнутри должно совпадать. Если они не совпадают, SteamTools откажется от этого. nameсоответствует игре, которую вы ожидаете. Если имя неверное, значит у вас неправильный App ID.MountedDepotsнепусто. Пустой блокMountedDepotsозначает, что у приложения нет общедоступных сборок.- Сборка выглядит разумно. Идентификаторы сборки Steam представляют собой целые числа, обычно состоящие из 7–8 цифр, и со временем они растут.
buildid1или0неверен.
Если все четыре пройдены, манифест хороший. Поместите его в depotcache, поместите Lua в scripts, перезапустите SteamTools.
Устранение неполадок: «Я закинул файлы, но SteamTools по-прежнему показывает, что игра заблокирована»
В девяти случаях из десяти причиной является одно из них:
- Вы поместили манифест не в ту папку. Он должен находиться в папке
depotcacheв корне вашей установки SteamTools, а не в подпапке. - Вы поместили Lua не в ту папку. Он должен находиться в папке
scriptsв корне вашей установки SteamTools, а не вdepotcache. - Вы не перезапустили SteamTools. Файлы читаются при запуске SteamTools. Если вы скопируете их во время работы SteamTools, ничего не произойдет.
- Сборка в манифесте старше, чем сборка, предлагаемая Steam. Перегенерируйте манифест — идентификатор сборки в новом будет последним общедоступным.
- Ветка в Lua не соответствует ветке в манифесте. Если вы установили в поле «Ветвь» значение
beta, но Lua был создан дляpublic, они не согласятся. Регенерировать с одной и той же веткой в обоих местах (генератор делает это по умолчанию). - Ключ хранилища в Lua неправильный. Такое случается редко — это означает, что ключ хранилища был изменен. Генератор подхватит новый ключ при следующем запросе.
Манифест SteamTools.games, необработанный манифест Steam и манифест GreenLuma
Формат тот же, но содержание разное.
| Источник | Имеет appid | Имеет правильный MountedDepots | Имеет LastOwner | Работает с SteamTools |
|---|---|---|---|---|
| Этот генератор | Да | Да (последняя общедоступная сборка) | Нет (опущено) | Да |
| Необработанный манифест Steam (из вашей собственной установки) | Да | Да (ваша установленная сборка) | Да (ваш идентификатор Steam) | Да, но LastOwner — это ваш собственный идентификатор, и это нормально |
| Манифест, которым поделился друг | Да | Да (их установленная сборка) | Да (их идентификатор Steam) | Да, SteamTools игнорирует LastOwner |
| Манифест GreenLuma | Да | Иногда | Нет | Иногда — формат манифеста GreenLuma является подмножеством и может не включать MountedDepots |
Вкратце: манифест из любого источника работает с SteamTools, если appid и MountedDepots верны. Остальные поля являются шумом для целей SteamTools.
Дальнейшее чтение
- Как работает SteamTools.games — четырехэтапный процесс создания манифеста.
- Руководство по устранению неполадок — четыре ошибки, которые может вернуть генератор, и способы исправления каждой.
- Документация SteamTools — объясните, что SteamTools делает с манифестом и Lua после их размещения.
- Страница приложения SteamDB — авторитетный источник
buildidи списка складов. - Как найти Steam App ID — когда у вас есть название игры, но нет App ID
См. также
- Что такое файл манифеста Steam и как его использовать с SteamTools? — полное руководство по входной двери; эта страница представляет собой более глубокое погружение в одну из ее частей.