Попинал железного друга разобраться. Тот разобрался и настрогал прототип альтернативного легкого клиента Steam на Rust, код которого мы смотреть не будем, чтобы не придавило от легкости. А рассмотрим лучше машинерию взаимодействия с библиотекой.
Получение библиотеки
• Получить библиотеку можно через Web API.
• Web API требует API-ключ и ID64 пользователя.
• Для получения API-ключа пользователь должен создать ключ в личном кабинете.
• Имея API-ключ возможности понять кто ты (ID64) — нет! Соответственно, нельзя просто так взять и получить свою библиотеку.
• Для получения ID64 нужно отдельным шагом совершить OAuth авторизацию Steam аккаунтом для сайта 127.0.0.1 (в нашем случае так, ведь сайта нет — только desktop-приложение).
Скачивание игр
• Скачать игры можно с помощью SteamCMD, но изначально он преднаначен для установки серверов сетевых игр.
• Одновременная сессия в SteamCMD и в Steam невозможна, поэтому после запуска Steam (например, для игры c DRM) — креды в SteamCMD ломаются.
• Поэтому скачивать с помощью SteamCMD — это часто вводить пароль и одобрять в SteamGuard.
Запуск игр
• Подтянуть установленные игры просто — достаточно просканировать локальные папки и манифесты.
• Запустить игру без DRM просто — достаточно запустить. Такие игры есть, в основном идни.
• Запустить игру с DRM сложнее — только через Steam, помогают аргументы запуска
-applaunch $APPID и -silent, чтобы сохранить Steam свернутым.• Закрыть Steam за DRM игрой можно поллингом наличия процесса игры, после чего вежливо предложить Steam закрыться.
Почему нет альтернативного легкого клиента Steam?
Возможно, потому и нет альтернативного легкого клиента Steam. Именно клиента библиотеки — для легкой навигации, установки и запуска без грузного комбайна. Не стабильно, костыльно, без официальной поддержки, креды слетают, Valve не помогает.
Что делать? Отложить надежду на быстрый запуск игр как в конце видео и продолжать использовать официальный клиент Steam 😄