Документация Steamworks
Служба инвентаря Steam
Служба инвентаря Steam — это набор функций, позволяющий использовать сохраняемый инвентарь, не требуя специальных серверов для управления информацией о пользователях или предметах.

Вы можете задавать вопросы об инвентаре в соответствующей ветке форума группы разработчиков Steamworks.

Описание

Служба инвентаря может использоваться двумя способами: либо без сервера, либо с добавлением доверенного сервера, которому известно состояние игры.

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

Тем не менее, поскольку клиент не надёжен (а ключи на стороне клиента могут быть перехвачены злоумышленником), вы не можете выдавать пользователям конкретные предметы, используя эту схему. Вместо этого вы можете выбрать предметы, которые могут выпасть пользователям, и определить частоту выпадения. В подходящее время игровой клиент вызывает ISteamInventory::TriggerItemDrop. Серверы Steam управляют информацией об игровом времени и частоте выпадения для каждого игрока. Эти функции вызываются с использованием внутреннего клиентского ключа API, о котором предполагается, что он не надёжен.

Если у вас есть подходящий надёжный сервер, тогда вы можете использовать привилегированный ключ API на сервере и в соответствующих ситуациях выдавать конкретные предметы. Важно, тем не менее, помнить, что вы не можете доверять пользователям, поэтому вы можете поступать таким образом, только если сервер управляет состоянием игры.

В дополнение к службе инвентаря вы можете продавать отдельные предметы или наборы предметов в игре или в интернет-магазине.

Посмотрите это выступление с конференции Steam Dev Days 2016, где докладчик рассказывает о внедрении инвентаря, проблемах, которые решаются благодаря службе, а также приводит примеры того, как партнёры уже используют систему в интересах своих пользователей.

https://www.youtube.com/watch?v=jDfhPTSOLis

Обзор реализации

  1. Создание определений предметов
    Начать необходимо с создания и загрузки определений предметов (ItemDefs).
    Они описывают возможное множество предметов в игре. Вам не обязательно использовать определения в самой игре, но они нужны Steam для корректного отображения инвентаря. Определения предметов создаются на странице инвентаря на сайте Steamworks. Вы можете перейти к ней отсюда: https://partner.steamgames.com/apps/inventoryservice/
  2. Включение службы инвентаря
    Как только вы загрузите определения, включите службу инвентаря на той же странице. Обратите внимание, что если предметы скрыты в настройках экономики Steam, только аккаунты группы на партнёрском сайте Steamworks получат доступ к предметам в игре.
  3. Установка ключа сервера ресурсов
    Сначала сгенерируйте ключ веб-API издателя для вашего приложения (см. инструкции здесь) и поместите его в поле «Ключ сервера ресурсов» на странице настройки экономики Steam.
  4. Загрузка инвентаря пользователя
    Игровой клиент загружает инвентарь пользователя, вызвав ISteamInventory::GetAllItems.
    Желательно время от времени выполнять эту процедуру, на случай, если пользователь купил или выменял себе новые предметы.
    В зависимости от игры, проверка в начале игровой сессии или уровня может быть резонной.
  5. Выдача тестовых предметов
    Используйте ISteamInventory::GenerateItems для добавления конкретных предметов текущему игроку.
  6. Выдача случайных предметов за игровое время (опционально)
    В подходящее время (обычно в конце матча или фазы) вызовите ISteamInventory::TriggerItemDrop, чтобы посмотреть, не заслужил ли игрок новую выдачу.
  7. Продажа предметов (опционально)
    Чтобы добавить поддержку микротранзаций, задайте цены в определениях предметов. Затем пользователи смогут покупать их следующими способами:

Функции API

Описание функций API инвентаря доступно здесь: ISteamInventory

Функции веб-API

Описание функций веб-API инвентаря доступно здесь: IInventoryService

Веб-функции

Далее приводятся веб-страницы, на которые можно перенаправлять пользователей.
  • ItemCart — корзина с предметами для покупки через Steam.
  • BuyItem — страница для покупки отдельного предмета через Steam.