Skip to main content

Как использовать манифест SteamTools и файлы Lua

Шаг за шагом: найдите Steam App ID, сгенерируйте манифест + Lua ZIP, установите SteamTools и поместите файлы в depotcache. Включает распространенные ошибки и исправления.

Последнее обновление: 2026-07-15

На этой странице описан генератор Steamtools.games: введите название игры или App ID, загрузите ZIP (Lua + key.vdf + README), затем используйте эти файлы с клиентом SteamTools для настольных компьютеров. Сам сайт не требует регистрации. Вам все равно необходимо установить SteamTools на свой компьютер, прежде чем файлы принесут какую-либо пользу.

1. Вы вводите название игры.

Поле ввода на домашней странице замедляет нажатие клавиш на 250 мс, а затем запрашивает у нашей конечной точки /api/search короткий список совпадений. Конечная точка передает результаты поиска в общедоступном магазине Steam и возвращает пять первых результатов, каждый из которых содержит App ID, отображаемое имя и небольшое изображение капсулы.

Локального индекса нет. Каждый поиск — это прямой путь к Steam. Мы не кэшируем результаты поиска в базе данных, поскольку каталог Steam достаточно велик, поэтому вероятность попадания в кэш будет низкой, а устаревшие результаты будут хуже, чем отсутствие кэша.

Если вы уже знаете App ID — а вам следует это сделать, поскольку поиск его — это 30-секундная работа для любой игры на Steam — вставьте его прямо в поле ввода. Генератор обнаруживает число из 4–10 цифр, отключает раскрывающийся список поиска и позволяет сразу перейти к шагу 3.

2. Вы выбираете результат

При нажатии на результат в раскрывающемся списке устанавливаются два скрытых значения состояния: App ID (целое число) и название игры. Поле ввода обновится и появится отображаемое имя, и кнопка «Создать» станет активной.

В раскрывающемся списке можно перемещаться с помощью клавиатуры. Клавиши со стрелками перемещают выделение, Enter выбирает, Escape закрывает его. Первый результат предварительно выделен, поэтому быстрый ввод выбирает лучший результат.

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

3. Генерация запроса

Нажатие кнопки «Создать» отправляет запрос POST /api/generate с App ID (и необязательным именем ветки — полезно для бета-веток Steam). Конечная точка:

  1. Проверяет, что App ID является положительным целым числом в допустимом диапазоне (от 1 до 2 147 483 647).
  2. Вызывает конечную точку appdetails Steam, чтобы подтвердить, что игра действительно существует, и получить каноническое имя и изображение капсулы. Это единственное место, где мы касаемся API Steam для генерации потока.
  3. Считывает список хранилищ для запрошенной ветки из интерфейса appinfo Steam, выбирает последнюю общедоступную сборку для каждого хранилища и определяет соответствующие ключи расшифровки хранилища.
  4. Отрисовывает текст манифеста и текст сценария Lua на основе этих значений.
  5. Возвращает оба файла в виде text/plain, чтобы браузер мог сохранить их с правильными именами без какого-либо состояния на стороне сервера.

Весь цикл туда-обратно обычно занимает 200–400 мс на теплом фронте и до 1,2 с на холодном (первый запрос после вытеснения кэша Cloudflare). Если вы когда-нибудь увидите, что это занимает больше 3 секунд, узким местом является конечная точка Steam appdetails, а не мы.

##4. Скачиваете ZIP и размещаете файлы

На карточке результатов предлагается Загрузить ZIP (рекомендуется), а также дополнительные прямые ссылки на файлы Lua и key.vdf. ZIP называется appmanifest_<APPID>_public.zip и содержит:

  • <APPID>_public.lua
  • key.vdf
  • README.txt с краткими примечаниями по установке

Вы также можете нажать /api/files/<APPID>/zip с помощью curl, если вы автоматизируете установку.

Размещение (рекомендуется для пакетов с этого сайта):

  1. Установите SteamTools, если вы еще этого не сделали.
  2. Скопируйте .lua и key.vdf в корень установки SteamTools — ту же папку, что и исполняемый файл SteamTools / Watt Toolkit (см. README внутри ZIP).
  3. Полностью закройте и снова откройте SteamTools, затем обновите библиотеку.

Этот генератор не отправляет классические файлы appmanifest_*.acf. Макеты depotcache/scripts, используемые при разблокировке .acf, см. в разделе Файлы манифеста.

Веб-сайт никогда не запускает установщик на вашем компьютере и не хранит игровой контент — только небольшие текстовые файлы, которые вы загружаете.

Как эти четыре шага сочетаются друг с другом

┌────────────┐  debounce   ┌────────────┐  proxy       ┌──────────────┐
│ Input box  │ ──────────► │ /api/search│ ───────────► │ Steam store  │
└────────────┘   250ms     └────────────┘              │  search API  │
                                                          └──────────────┘
       │ pick result (AppID + name)
       ▼
┌────────────┐  POST       ┌────────────┐  render      ┌──────────────┐
│ Generate   │ ──────────► │/api/generate│ ───────────► │ .acf + .lua  │
│  button    │             │  (server)  │              │  text/plain  │
└────────────┘             └────────────┘              └──────────────┘
       │ download (user click)
       ▼
   ┌─────────┐    ┌────────────────┐
   │depotcache│   │ SteamTools/    │
   │ /manifest│   │ scripts/lua    │
   └─────────┘    └────────────────┘
       │ restart SteamTools
       ▼
    game unlocked

Что работает в браузере

Домашняя страница представляет собой приложение TanStack Start, отображаемое на сервере. После гидратации пользовательский интерфейс продукта запускается:

  • Устранен дребезжащий поисковый ввод.
  • Карта результатов генерации/загрузки. — Полоса «Недавние», считывающая localStorage.

Дополнительные сторонние скрипты (например, аналитика или реклама) могут загружаться при настройке — см. политику конфиденциальности. Они не требуются для поиска или генерации для работы.

Что работает на сервере

  • Сервер Nitro, который обслуживает маршруты и объединяет модули сообщений параплана.
  • Два маршрута API, оба в src/routes/api/.
  • Ограничитель скорости на 1,5 с для каждого IP на /api/generate и на 300 мс на /api/search. — Регистрация запросов на периферийном уровне для обнаружения злоупотреблений. Журналы меняются каждые 14 дней.

Пять ошибок и как исправить каждую

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

1. «Приложение не найдено» (HTTP 404 от /api/generate)

Конечная точка appdetails Steam вернула success: false. Наиболее распространенной причиной является приложение, исключенное из списка Steam, но все еще установленное на вашем компьютере. Steam делает appdetails доступным для некоторых приложений, исключенных из списка, и недоступным для других. С нашей стороны нет обходного пути — см. страницу файлов манифеста, чтобы узнать, что делать, если это ваш случай.

Вторая наиболее распространенная причина — опечатка в App ID. App ID — целые числа; «Портал 2» — это 620, а не 620 (конечный пробел) или 0620 (начальный ноль). Повторно вставить без пробелов.

2. «Ветка не найдена»

Вы ввели имя ветки, которого нет в целевом приложении. Имена ветвей Steam чувствительны к регистру и должны точно совпадать: public, beta, beta_1, ptb, experimental. Если вы оставите поле пустым, вы получите публичную ветку.

Чтобы обнаружить доступные ветки для данного приложения, проверьте [вкладку ветвей SteamDB] (https://steamdb.info/) — эта страница является авторитетным источником названий ветвей и идентификаторов сборки каждой из них.

3. «Превышен лимит скорости»

Вы сделали более одного запроса /api/generate со своего IP за последние 1,5 секунды или более трех запросов /api/search за последние 300 мс. Подождите немного и повторите попытку. Невозможно «разблокировать» запрет на ограничение скорости — ограничение устанавливается автоматически, для каждого IP-адреса и сбрасывается самостоятельно.

Если у вас есть законная потребность в более высокой пропускной способности (сервер сборки, конвейер автоматизации), используйте public API и поместите свои запросы в цикл отсрочки. Обход ограничения скорости с несколькими IP-адресами является основанием для постоянной блокировки.

4. «Steam тайм-аут сведений о приложении»

Конечная точка Steam appdetails не вернулась в течение 5 с. Это происходит примерно раз в несколько тысяч запросов. Генератор возвращает 503 с заголовком Retry-After: 2. Нажмите кнопку «Создать» еще раз; вторая попытка почти всегда оказывается успешной, поскольку пограничный кэш Steam разогрелся.

5. «Пустой файл манифеста»

Манифест загружается успешно, но его размер равен 0 байт или он содержит только заголовок AppState и не содержит полей. Это означает, что у приложения нет общедоступных хранилищ — приложение существует в каталоге Steam, но сборка не опубликована. Обычное явление для приложений, все еще находящихся в статусе «Скоро», для приложений, сборки которых ограничены закрытой бета-версией, а также для некоторых инструментов издателя.

С нашей стороны исправления нет. Как только издатель опубликует общедоступную сборку, генератор начнет возвращать непустой манифест для App ID.

SteamTools.games против Watt Toolkit против GreenLuma против SteamDB

Полезно знать, какой инструмент что делает, поскольку все четыре упоминаются в одних и тех же обсуждениях разблокировки Steam.

ИнструментЧто это такоеЧто он делаетКогда его использовать
SteamTools.games (этот сайт)Веб-манифест + генератор LuaСоздает два файла, необходимые SteamTools; не изменяет вашу установку SteamЕсли вам нужен манифест и Lua для конкретного приложения, ничего не устанавливая
Watt Toolkit (ранее Steam++)Пакет утилит Steam, включающий вилку SteamToolsЗапускается локально; обеспечивает ускорение сети, разблокировку достижений и функцию разблокировки рабочего стола SteamToolsЕсли вам нужен полный локальный набор модов Steam, а не просто одноразовый манифест
SteamTools (клиент для настольных компьютеров)Кэш ключей хранилища Steam и бегун LuaСчитывает манифест + Lua из depotcache и scripts/ и запускает их при запуске SteamЕсли у вас есть файлы и вы хотите разблокировать приложение
GreenLumaОтдельный разблокировщик Steam, использующий другой механизмИсправляет сам Steam, чтобы он мог принимать произвольные хранилищаКогда вам нужна разблокировка, не совместимая с SteamTools (редко)
SteamDBТрекер метаданных Steam только для чтенияПоказывает, какие buildid, склады и филиалы существуют для приложенияКогда вам нужно найти имена ветвей или проверить последнюю сборку

Эти инструменты не являются конкурентами — они охватывают разные уровни одного и того же рабочего процесса. SteamTools.games передает SteamTools (клиент для настольных компьютеров), что большинство людей имеют в виду, когда говорят «SteamTools».

Производительность и ограничения

  • Сайт размещен в периферийной сети Cloudflare. Первый запрос после выселения кэша — холодный старт (~600–1200 мс); последующие запросы к тому же AppID теплые (~150–300 мс).
  • /api/generate имеет ограничение по скорости: 1 запрос за 1,5 с на IP. /api/search — 1 на 300 мс для каждого IP. Эти ограничения являются преднамеренными, не подлежат обсуждению, и они существуют, поскольку конечная точка appdetails Steam также ограничена по скорости в восходящем направлении.
  • Генератор не поддерживает приложения с более чем 100 депо. Мы не видели реального приложения с более чем 30. Если вы его найдете, сообщите об ошибке с помощью App ID.
  • Генератор не поддерживает идентификаторы приложений выше 2,147,483,647 (ограничение int32). Самый высокий показатель App ID, который мы когда-либо разрешали, находится в диапазоне 4 миллионов; Steam сам по себе не присваивает более высокие идентификаторы.

Чего не делает сервис

  • Он не изменяет файлы игры на вашем компьютере.
  • Он не обходит DRM Steam, проверку лицензии или аутентификацию.
  • Он не хранит вашу историю поиска на сервере. Полоса «Последние» на главной странице считывает данные из localStorage вашего браузера, а не из нашего.
  • Для этого не требуется учетная запись, адрес электронной почты или номер телефона.
  • Он не объединяет и не распространяет какой-либо игровой контент. Два файла, которые он создает, представляют собой крошечные текстовые файлы (манифест имеет размер менее 4 КБ; Lua — менее 1 КБ).

Если вы когда-нибудь захотите убедиться, что служба делает то, что говорит, вся серверная часть находится в src/routes/api/ и src/server.ts проекта с открытым исходным кодом. Клиентская часть находится в src/blocks/generator.tsx. Каждый путь кода представляет собой один или два файла; ничто не скрыто за этапом сборки, который вы не можете проверить.

Дальнейшее чтение

См. также