По умолчанию для пользователей, которые подписались на работу в мастерской Steam, скачивается её последняя версия. Все последующие обновления работы будут также доступны текущим подписчикам.
С выходом Steamworks SDK версии 1.60 авторы могут указать, что определённая версия их работы предназначена для конкретной сборки игры, загруженной в Steam.
Контроль версий для сложных модификаций
Контроль версий игровых сборок и модификаций может быть очень важен для поддержки сложных модификаций и развития игры. Например, это может быть игра, где некоторые игроки провели десятки или сотни часов в определённой версии, работающей с конкретным набором модификаций. В этом случае автоматическое обновление игры может привести к тому, что некоторые установленные игроками модификации и сохранения перестанут работать. Теперь у вас есть возможность вызвать API Steam, чтобы переключить игрока на определённую ветку игры, если обнаружится, что недавнее обновление нарушило её совместимость с установленными модификациями.
В данной документации описывается, как настроить сборки игры и процесс создания модификаций, чтобы всё работало корректно.
Настройка игры для хранения истории версий
Чтобы поддерживать модификации, работающие с определёнными версиями игры, вам нужно тщательно продумать, как сохранять её старые версии. Обязательно учтите следующие моменты:
- Организуйте хранение старых версий. Порядок версий сборок (а именно бета-веток) очень важен! Начните с систематизации прошлых версий игры и наведите порядок в своих бета-версиях. Для этого нужно выбрать порядок веток игры на сайте Steamworks. Откройте вкладку SteamPipe и перейдите на страницу сборок. Здесь вы можете изменить порядок созданных веток: от более старых к более новым. Это нужно сделать, если вы хотите дать пользователям возможность указать, что версия их работы действительна для разных веток, например, «минимальной» и «максимальной», а не только одной конкретной ветки.
- Включите функцию. На странице настройки мастерской для вашей игры выберите «Включить поддержку версий для веток игр» и опубликуйте изменения, когда всё будет готово.
- Проверьте текущую версию игры у пользователя. Узнать прямо в игре, какая версия установлена у пользователя, можно с помощью API Steamworks ISteamApps::GetBetaInfo.
- Определите модификации, на которые подписан пользователь. Прямо в игре создайте запрос для получения списка модификаций в мастерской, на которые подписан текущий пользователь, и проверьте с помощью ISteamUGC::GetSupportedGameVersionData версию игры, с которой работает каждая из них.
- При необходимости предупредите пользователя. Если вы обнаружите, что пользователь подписан на модификации, которые могут не работать с установленной у него версией игры, вы можете показать в интерфейсе соответствующее сообщение и спросить, хочет ли он перейти на другую версию. Если он согласится, вы можете вызвать ISteamApps::SetActiveBeta, чтобы переключиться на одну из прошлых версий игры, которая точно поддерживает модификации.
После вызова этого API Steam выйдет из запущенной игры, переключится на другую ветку сборки (запустив установку контента в этой ветке) и перезапустит игру в новой версии.
Получить информацию о текущей версии игры и задать её настройки можно с помощью следующих вызовов API Steamworks:
ISteamApps::GetCurrentBetaNameISteamApps::GetNumBetasISteamApps::GetBetaInfoISteamApps::SetActiveBetaНастройка мастерской Steam для контроля версий модификаций
При включении контроля версий модификаций для работ в мастерской Steam можно добавить информацию об одной или нескольких игровых сборках, которые поддерживает каждая версия модификации. Если диапазон сборок не указан, Steam предполагает, что версия модификации работает с любой сборкой игры. Если для нескольких версий работы из мастерской указана совместимость с текущей версией игры у пользователя, Steam скачает последнюю загруженную версию этой работы.
Для работ в мастерской информация о поддерживаемых версиях может быть задана двумя способами: её могут указать авторы модификаций или инструмент для загрузки.
- Авторы модификаций могут указать поддерживаемые версии. Авторы модификаций в мастерской могут настроить поддержку версий на странице истории работы — её интерфейс позволяет задать версии игры, с которыми она работает.
- Настроить поддержку версий можно с помощью инструмента загрузки работ в мастерскую. Если для загрузки работ в мастерскую вы используете инструмент, который позволяет проверить поддержку версий, вы можете автоматически пометить работу как поддеживающую соответствующие версии или создать интерфейс, в котором автор работы сможет выбрать версии игры или их диапазоны в момент загрузки.
При загрузке версии работы достаточно просто вызвать ISteamUGC::SetRequiredGameVersions с минимальным и максимальным значениями ветки Steam. Эти значения могут совпадать, если работа действительна только для одной ветки. Если минимальное значение не указано, работа будет действительна для всех версий веток Steam до максимальной и наоборот. Авторы могут указать минимальную и максимальную версию ветки для каждой работы на её странице в разделе «Список изменений».
Пользователи, выбравшие конкретную ветку игры в Steam, скачают версию работы, которая действительна для соответствующей ветки. Если автор обновит версию своей работы, изменения загрузятся для всех подписчиков, которые выбрали соответствующую ветку.
Получить и добавить информацию о версиях игры для работы в мастерской можно с помощью следующих вызовов API Steamworks:
Рекомендации для разработчиков игр
Если версии игры и модификаций настроены правильно, Steam автоматически загрузит нужную версию модификации для запускаемой версии игры.
Ниже приведено несколько важных моментов, о которых следует помнить разработчикам игр, чтобы правильно использовать эти функции и обеспечить поддержку сообществу разработчиков модификаций.
- Продумайте, как будет организовано управление ветками сборок. На странице управления сборками в Steamworks тщательно подготовьте систему предыдущих версий игры. Вы можете указать для веток названия в соответствии с номерами версий, которые вы используете для сборок игры. Выберите систему нумерации, которая подходит именно для вашей игры. Например, одну ветку можно назвать version_1.4, а другую — version_1.5.
- Выберите опцию «Включить поддержку версий для веток игр» для мастерской. Она находится в настройках мастерской и позволяет авторам модификаций указывать диапазоны веток, которые поддерживают их работы.
- Выстройте последовательный процесс тестирования и внедрения. Важно дать авторам возможность создавать и загружать новые версии модификаций или обновлять информацию о поддержке версий для уже существующих, если они хорошо работают с последней версией игры. Создание последовательного процесса тестирования, в рамках которого новые сборки добавляются в бета-ветки перед их выпуском для всех пользователей, даст авторам возможность проверить свои модификации и при желании загрузить для них новые версии.
- Добавьте внутриигровой интерфейс управления версиями игры. Если обновления игры могут нарушать работу установленных у пользователей модификаций, рекомендуется отображать интерфейс с предложением обновить игру или остаться на предыдущей версии. Вы даже можете получить список работ из мастерской, на которые подписан пользователь, и проверить поддерживаемые версии игр для каждой из них, чтобы предупредить пользователя, если новая версия игры не работает с одной или несколькими модификациями.
Если вы знаете, что предстоящие изменения игры могут нарушить её совместимость со многими модификациями, то можете заранее подготовиться, чтобы обеспечить оптимальный опыт взаимодействия для пользователей.
- Запланируйте внедрение обновлений: сначала обновите версию игры в стандартной ветке — как сигнал для Steam оставить для пользователя именно эту ветку игры.
- Затем, когда вы выпустите новую версию игры, она должна распознать, что конкретного пользователя нужно оставить на определённой версии и предложить ему выбор: перейти на новую или остаться на текущей.