Документация Steamworks
Управление версиями работ в мастерской Steam
По умолчанию для пользователей, которые подписались на работу в мастерской Steam, скачивается её последняя версия. Все последующие обновления работы будут также доступны текущим подписчикам.

С выходом Steamworks SDK версии 1.60 авторы могут указать, что определённая версия их работы предназначена для конкретной сборки игры, загруженной в Steam.

Контроль версий для сложных модификаций

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

В данной документации описывается, как настроить сборки игры и процесс создания модификаций, чтобы всё работало корректно.

Настройка игры для хранения истории версий

Чтобы поддерживать модификации, работающие с определёнными версиями игры, вам нужно тщательно продумать, как сохранять её старые версии. Обязательно учтите следующие моменты:

  1. Организуйте хранение старых версий. Порядок версий сборок (а именно бета-веток) очень важен! Начните с систематизации прошлых версий игры и наведите порядок в своих бета-версиях. Для этого нужно выбрать порядок веток игры на сайте Steamworks. Откройте вкладку SteamPipe и перейдите на страницу сборок. Здесь вы можете изменить порядок созданных веток: от более старых к более новым. Это нужно сделать, если вы хотите дать пользователям возможность указать, что версия их работы действительна для разных веток, например, «минимальной» и «максимальной», а не только одной конкретной ветки.

  2. Включите функцию. На странице настройки мастерской для вашей игры выберите «Включить поддержку версий для веток игр» и опубликуйте изменения, когда всё будет готово.

  3. Проверьте текущую версию игры у пользователя. Узнать прямо в игре, какая версия установлена у пользователя, можно с помощью API Steamworks ISteamApps::GetBetaInfo.

  4. Определите модификации, на которые подписан пользователь. Прямо в игре создайте запрос для получения списка модификаций в мастерской, на которые подписан текущий пользователь, и проверьте с помощью ISteamUGC::GetSupportedGameVersionData версию игры, с которой работает каждая из них.

  5. При необходимости предупредите пользователя. Если вы обнаружите, что пользователь подписан на модификации, которые могут не работать с установленной у него версией игры, вы можете показать в интерфейсе соответствующее сообщение и спросить, хочет ли он перейти на другую версию. Если он согласится, вы можете вызвать ISteamApps::SetActiveBeta, чтобы переключиться на одну из прошлых версий игры, которая точно поддерживает модификации.

    После вызова этого API Steam выйдет из запущенной игры, переключится на другую ветку сборки (запустив установку контента в этой ветке) и перезапустит игру в новой версии.

Получить информацию о текущей версии игры и задать её настройки можно с помощью следующих вызовов API Steamworks:
ISteamApps::GetCurrentBetaName
ISteamApps::GetNumBetas
ISteamApps::GetBetaInfo
ISteamApps::SetActiveBeta

Настройка мастерской Steam для контроля версий модификаций

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

Для работ в мастерской информация о поддерживаемых версиях может быть задана двумя способами: её могут указать авторы модификаций или инструмент для загрузки.

  1. Авторы модификаций могут указать поддерживаемые версии. Авторы модификаций в мастерской могут настроить поддержку версий на странице истории работы — её интерфейс позволяет задать версии игры, с которыми она работает.

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

    При загрузке версии работы достаточно просто вызвать ISteamUGC::SetRequiredGameVersions с минимальным и максимальным значениями ветки Steam. Эти значения могут совпадать, если работа действительна только для одной ветки. Если минимальное значение не указано, работа будет действительна для всех версий веток Steam до максимальной и наоборот. Авторы могут указать минимальную и максимальную версию ветки для каждой работы на её странице в разделе «Список изменений».

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

Получить и добавить информацию о версиях игры для работы в мастерской можно с помощью следующих вызовов API Steamworks:
  • ISteamUGC::SetRequiredGameVersions – при отправке обновления пользователь может указать минимальную и максимальную версии бета-веток, с которыми работа будет корректно функционировать.
  • ISteamUGC::GetNumSupportedGameVersions – возвращает число версий работы.
  • ISteamUGC::GetSupportedGameVersionData –возвращает мин. и макс. версию бета-ветки для определённой версии работы.

Рекомендации для разработчиков игр


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

Ниже приведено несколько важных моментов, о которых следует помнить разработчикам игр, чтобы правильно использовать эти функции и обеспечить поддержку сообществу разработчиков модификаций.

  • Продумайте, как будет организовано управление ветками сборок. На странице управления сборками в Steamworks тщательно подготовьте систему предыдущих версий игры. Вы можете указать для веток названия в соответствии с номерами версий, которые вы используете для сборок игры. Выберите систему нумерации, которая подходит именно для вашей игры. Например, одну ветку можно назвать version_1.4, а другую — version_1.5.

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

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

  • Добавьте внутриигровой интерфейс управления версиями игры. Если обновления игры могут нарушать работу установленных у пользователей модификаций, рекомендуется отображать интерфейс с предложением обновить игру или остаться на предыдущей версии. Вы даже можете получить список работ из мастерской, на которые подписан пользователь, и проверить поддерживаемые версии игр для каждой из них, чтобы предупредить пользователя, если новая версия игры не работает с одной или несколькими модификациями.

    Если вы знаете, что предстоящие изменения игры могут нарушить её совместимость со многими модификациями, то можете заранее подготовиться, чтобы обеспечить оптимальный опыт взаимодействия для пользователей.
    1. Запланируйте внедрение обновлений: сначала обновите версию игры в стандартной ветке — как сигнал для Steam оставить для пользователя именно эту ветку игры.
    2. Затем, когда вы выпустите новую версию игры, она должна распознать, что конкретного пользователя нужно оставить на определённой версии и предложить ему выбор: перейти на новую или остаться на текущей.