Steamworks Documentation
Руководство по мастерской Steam

Общая информация

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

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

Для создания модификаций или нового контента пользователи вашей игры, как правило, могут воспользоваться инструментами, предоставляемыми вместе с покупкой игры. Затем авторы контента могут отправить его вам на подтверждение, используя механизм, встроенный в инструментарий мастерской. Другие пользователи затем смогут просмотреть, отсортировать, оценить и подписаться на работы, которые они хотели бы добавить в игру, перейдя в мастерскую в сообществе Steam. Эти работы затем можно скачать из Steam. Если вы получаете обратный вызов ISteamUGC::ItemInstalled_t в игре, вы можете вызвать ISteamUGC::GetItemInstallInfo, чтобы получить информацию о месте папки установки и прочитать данные напрямую из неё. Новый контент будет соответствующим образом распознан игрой и создан.

Типы мастерских Steam, монетизация и рекомендации

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

Управление отображением мастерской Steam

Мастерская Steam — это сайт с общим контентом на сервере Steam, где пользователи могут комментировать и голосовать за работы, доступные в сообществе. По умолчанию приложения не будут видны пользователям в мастерской. Это позволяет скрывать контент, не предназначенный для общего просмотра на сайте мастерской Steam, если она не является общедоступной.
Инструкции по настройке видимости мастерской представлены ниже:
  1. Перейдите на главную страницу приложения на сайте Steamworks.
  2. Нажмите «Изменить настройки приложения».
  3. Во вкладке «Мастерская» выберите «Общие».
  4. Справа на странице найдите раздел «Состояние видимости».
  5. Выберите один из желаемых уровней видимости, включающих «Только разработчики», «Разработчики и тестировщики», «Пользователи и разработчики» и «Видимое для всех».
  6. Во вкладке «Опубликовать» нажмите кнопку «Подготовка к публикации».
  7. Нажмите «Опубликовать в Steam».
Обратите внимание: чтобы изменить статус приложения на «Видимое для всех», контрольный список мастерской должен быть заполнен, включая пункты с фирменными изображениями, названием, описанием, а также хотя бы одной работой, доступной для просмотра всем пользователям.

Технический обзор

Чтобы добавлять и использовать контент, созданный сообществом, необходимо использовать API ISteamUGC, который можно найти в разделе SDK Steamworks. Представленные методы дадут возможность добавлять контент, который пользователи затем смогут увидеть в мастерской Steam или внутри приложения.

Вход в API мастерской необходимо произвести через указатель, возвращённый SteamUGC().

Пример:
SteamAPICall_t hSteamAPICall = SteamUGC()->CreateItem( SteamUtils()->GetAppID(), k_EWorkshopFileTypeMicrotransaction );

Активация ISteamUGC в игре или приложении

Перед тем, как предметы мастерской можно будет загрузить на внутренний сервер Steamworks, необходимо настроить квоты Steam Cloud и активировать API ISteamUGC.

Steam Cloud используется для хранения изображений, которые показываются при предпросмотре работ в мастерской. Квоты Steam Cloud можно настроить следующим образом:
  1. Перейдите на страницу настройки функции Cloud в разделе управления приложением.
  2. Установите соответствующие значения для настроек «Квота байтов на пользователя» и «Квота файлов на пользователя» для сохранения изображений для предпросмотра.
  3. Нажмите «Сохранить».
  4. Во вкладке «Опубликовать» нажмите кнопку «Подготовка к публикации».
  5. Нажмите «Опубликовать в Steam».

API ISteamUGC можно активировать следующим образом:
  1. Перейдите на страницу конфигурации мастерской Steam в разделе управления приложением.
  2. Найдите раздел «Расширенные настройки».
  3. Пометьте галочкой опцию «Активировать ISteamUGC для передачи файлов».
  4. Нажмите «Сохранить».
  5. Во вкладке «Опубликовать» нажмите кнопку «Подготовка к публикации».
  6. Нажмите «Опубликовать в Steam».
Когда настройки будут готовы, контент мастерской можно будет загрузить через API.

Создание и загрузка контента

Процесс создания и загрузки контента мастерской – это простой и воспроизводимый процесс, отражённый в блок-схеме ниже.

ISteamUGCFlow-CreateUpload-Web2.png

Создание работы в мастерской

  1. Создание всех работ в мастерской начинается с вызова функции ISteamUGC::CreateItem.
    • Переменная nConsumerAppId должна содержать AppID игры или приложения. Не передавайте AppID инструмента создания работы мастерской, если это отдельный номер.
    • EWorkshopFileType – это перечисляемый тип, определяющий, каким образом сообществу будет предоставлен доступ к добавленному файлу. Допустимые значения:
      • k_EWorkshopFileTypeCommunity — этот тип файла используется для описания файлов, загружаемых пользователями и доступных для скачивания всеми участниками сообщества. Обычно используется для обеспечения доступа к созданным пользователями модификациям.
      • k_EWorkshopFileTypeMicrotransaction — этот тип файла используется для описания файлов, загружаемых пользователями, но предназначенных только для добавления в игру в качестве официального контента. Эти файлы не будут скачиваться пользователями через мастерскую, однако будут доступны сообществу для просмотра с возможностью проголосовать.
        Примером подобного внедрения служит игра Team Fortress 2.
  2. Создайте обработчик результата вызова для CreateItemResult_t
  3. Сначала проверьте функцию m_eResult, чтобы убедиться в успешном создании работы.
  4. После применения обработчика результата вызова прочтите значение m_nPublishedFileId и сохраните его для последующих обновлений работы мастерской (например, в файле проекта, связанного с инструментом создания).
  5. Переменную m_bUserNeedsToAcceptWorkshopLegalAgreement также следует проверить, и если её значение true, пользователь должен быть перенаправлен на страницу соглашения мастерской, чтобы его принять. Ознакомьтесь с разделом «Соглашение мастерской Steam» для дополнительной информации.

Отправка работы из мастерской

  1. Когда работа будет создана и значение PublishedFileId_t возвращено, содержание работы может быть заполнено и отправлено в мастерскую Steam.
  2. Обновление работы начинается с вызова функции ISteamUGC::StartItemUpdate.
  3. Используя значение UGCUpdateHandle_t, возвращённое после вызова ISteamUGC::StartItemUpdate, можно отправить вызовы для обновления названия, описания, видимости, меток, содержания работы и изображения её предпросмотра с помощью различных методов ISteamUGC::SetItem[...].
    • ISteamUGC::SetItemTitle задаёт новое название работы.
    • ISteamUGC::SetItemDescription задаёт новое описание работы.
    • ISteamUGC::SetItemUpdateLanguage задаёт язык названия и описания, который будет установлен в этом обновлении работы.
    • ISteamUGC::SetItemMetadata задаёт произвольные метаданные работы. Эти метаданные могут быть возвращены с запросов без необходимости скачивать и устанавливать сам контент.
    • ISteamUGC::SetItemVisibility задаёт видимость работы.
    • ISteamUGC::SetItemTags задаёт произвольные метки работы, указанные разработчиком.
    • ISteamUGC::AddItemKeyValueTag добавляет метку пары ключ-значение к работе. Ключи могут соотноситься со множеством различных значений (отношение «один-ко-многим»).
    • ISteamUGC::RemoveItemKeyValueTags удаляет метку пары ключ-значение, добавленную к работе.
    • ISteamUGC::SetItemContent задаёт папку, которая будет содержать контент для работы.
    • ISteamUGC::SetItemPreview задаёт основное изображение для предпросмотра работы.
  4. После завершения вызовов обновления вызов ISteamUGC::SubmitItemUpdate инициирует загрузку в мастерскую Steam.
    • Создайте обработчик результата вызова для SubmitItemUpdateResult_t.
    • После выполнения обработчика результата вызова проверьте m_eResult, чтобы подтвердить успешное завершение загрузки.
    • Обратите внимание: после вызова обновления и загрузки предмета его невозможно отменить.
  5. При желании прогресс загрузки можно отслеживать с помощью ISteamUGC::GetItemUpdateProgress.
    • EItemUpdateStatus определяет прогресс загрузки и обновления.
    • punBytesProcessed и punBytesTotal могут использоваться, чтобы предоставить исходные данные для управления пользовательским интерфейсом, к примеру: индикатор для указания прогресса загрузки.
    • punBytesTotal может обновиться во время загрузки в зависимости от того, на какой стадии обновления находится работа.
  6. Как и при создании работы в мастерской, подтвердите, что пользователь принял условия соглашения мастерской Steam. Это необходимо в случае, если пользователь не создавал работу, но редактирует уже существующую.

Примечания:

  • Ранее работы в мастерской обозначались как отдельные файлы. С использованием ISteamUGC работа представляется в виде папки файлов.
  • Если работе в мастерской нужны дополнительные метаданные, затребованные использующим его приложением, вы можете прикрепить метаданные с помощью вызова ISteamUGC::SetItemMetadata. Эти метаданные могут быть возвращены из запросов без необходимости скачивать и устанавливать сам контент.
    Ранее мы рекомендовали сохранять эти метаданные в файле внутри папки работы в мастерской, и вы по-прежнему можете это делать.

Использование контента

Использование контента делится на две категории: подписка на работу и её установка.

Подписка на работу

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

Для поддержки управлением подписками внутри игры ISteamUGC предоставляет два программных способа добавлять подписку на работы в мастерской и отменять её.
  • ISteamUGC::SubscribeItem вызывается, чтобы подписаться на работу в мастерской. Скачивание и установка работы произойдёт в максимально короткие сроки.
  • Вызов ISteamUGC::UnsubscribeItem отменяет подписку на работу в мастерской. Это приведёт к удалению работы при выходе из игры.

Существует два дополнительных способа подсчёта работ, на которые подписан пользователь.
  • ISteamUGC::GetNumSubscribedItems подсчитывает общее число работ, на которые подписан пользователь, в игре или приложении.
  • ISteamUGC::GetNumSubscribedItems подсчитывает общее число работ в текущей игре, на которые подписан пользователь.

Получение уведомлений о внешних действиях подписки

Получение уведомлений в игре возможно, если пользователь подписался или отменил подписку на файл посредством какого-либо механизма (например, с помощью ISteamUGC или на сайте мастерской Steam):
  • Создайте обработчик обратного вызова для RemoteStoragePublishedFileSubscribed_t и RemoteStoragePublishedFileUnsubscribed_t.
  • Структуры будут заполнены функцией ISteamRemoteStorage::PublishedFileId_t, которую затем можно использовать для доступа к информации о работе в мастерской.
  • Структуры также содержат номер приложения (m_unAppID), связанного с работой в мастерской. Его нужно сравнить с номером запущенного приложения, поскольку обработчик будет вызван для всех подписок на работы независимо от приложения.

Установка работы

После получения информации о подписке на работу можно применить оставшиеся методы для её использования. Данные методы возвращают информацию о прогрессе скачивания и установке работы обратно в игру. Скачивание работ из мастерской выполняется через клиент Steam и происходит автоматически, следуя правилам ниже:
  1. Когда клиент Steam укажет на готовое к запуску приложение, все обновлённые хранилища приложения будут скачаны и установлены.
  2. Все уже установленные работы из мастерской обновятся при необходимости.
  3. Затем произойдёт запуск игры или приложения.
  4. Ещё не скачанные работы из мастерской, относящиеся к новой подписке, будут загружены и установлены в фоновом режиме.
    • Файлы подписки будут загружены в клиент в том же порядке, в котором произошла подписка.
    • На странице загрузки Steam появятся скачиваемые работы из мастерской с особым обозначением для активного процесса скачивания.
Обратите внимание: функция «Проверка целостности файлов игры» в клиенте Steam также инициирует скачивание работ из мастерской.

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

Статус работы в мастерской

  • ISteamUGC::GetItemState выдаёт текущее состояние работы мастерской в клиенте.

Состояние загрузки работы из мастерской

Инициация или увеличение приоритета загрузки работы из мастерской

  • ISteamUGC::DownloadItem
    • Задайте значение bHighPriority как true, чтобы приостановить все текущие процессы загрузки и немедленно начать загружать данную работу из мастерской.
    • Если возвращаемое значение — true, зарегистрируйтесь и дождитесь обратного вызова ISteamUGC::DownloadItemResult_t перед отправкой вызова ISteamUGC::GetItemInstallInfo или получения доступа к работе из мастерской на диске.
    • Если у пользователя нет подписки на работу в мастерской (к примеру, используется анонимный вход на игровой сервер), то она будет скачана и временно кэширована.
    • Если у работы в мастерской ISteamUGC::EItemState состояние k_EItemStateNeedsUpdate, можно вызвать ISteamUGC::DownloadItem, чтобы инициировать обновление. Не пытайтесь получить доступ к работе из мастерской на диске, пока не будет отправлен обратный вызов ISteamUGC::DownloadItemResult_t.
    • Данный метод действует только для работ в мастерской, созданных с помощью ISteamUGC. С работами, созданными с помощью устаревшей функции ISteamRemoteStorage, он не сработает.
    • Структура обратного вызова ISteamUGC::DownloadItemResult_t содержит номер приложения (m_unAppID), связанный с работой в мастерской. Его нужно сравнить с номером запущенного приложения, поскольку обработчик будет вызван для всех подписок на работы независимо от приложения.

Получение информации о локальной копии работы из мастерской

Уведомление при установке или обновлении работы в мастерской

Запрос контента

Интерфейс ISteamUGC представляет собой гибкий способ организации различных видов пользовательского контента в Steam (например, работы в мастерской, скриншоты, видео и пр.).

ISteamUGCFlows-QueryingContent-web2.png

  1. Создайте обработчик результата вызова для SteamUGCQueryCompleted_t.
  2. Существует несколько методов для создания запроса в зависимости от требуемого сценария: запрос по контенту, связанному с пользователем, запрос всего контента или запрос деталей контента, идентификаторы которых у вас есть.
    • ISteamUGC::CreateQueryUserUGCRequest. Запрос контента, связанного с пользователем. Его также можно использовать для перечисления пользовательского контента, на который подписан пользователь.
    • ISteamUGC::CreateQueryAllUGCRequest. Запрос всего соответствующего пользовательского контента. Его можно использовать для перечисления всего доступного пользовательского контента для вашего приложения.
    • ISteamUGC::CreateQueryUGCDetailsRequest. Запрос информации об определённых работах в мастерской.
  3. Задайте настройки запроса соответствующим образом, вызвав методы установок параметров:
    • Запрос информации о пользовательском контенте, которым обладает пользователь:
      • ISteamUGC::SetCloudFileNameFilter возвращает только предметы с определённым названием файла в обрабатываемом запросе пользовательского контента.
    • Запрос информации обо всём пользовательском контенте:
      • ISteamUGC::SetMatchAnyTag определяет, возвращать ли предметы при наличии одной или более соответствующих меток, а также должны ли все метки в обрабатываемом запросе пользовательского контента совпадать.
      • ISteamUGC::SetSearchText определяет строку, с которой должны совпадать название или описание предмета в обрабатываемом запросе пользовательского контента.
      • ISteamUGC::SetRankedByTrendDays определяет, будет ли обновлена очерёдность результатов в зависимости от предпочтения рейтинга предмета над сроком его пребывания в обрабатываемом запросе пользовательского контента.
    • При запросе любого из типов пользовательского контента
      • ISteamUGC::AddRequiredTag добавляет требуемую метку к обрабатываемому запросу пользовательского контента. Послужит лишь возврату пользовательского контента с определённой меткой.
      • ISteamUGC::AddExcludedTag добавляет исключённую метку к обрабатываемому запросу пользовательского контента. Послужит лишь возврату пользовательского контента без определённой метки.
      • ISteamUGC::AddRequiredKeyValueTag добавляет требуемую метку ключ-значение к обрабатываемому запросу пользовательского контента. Будут возвращены лишь работы в мастерской с ключом = [param]pKey[/param] и значением = [param]pValue[/param].
      • ISteamUGC::SetReturnOnlyIDs определяет возвращение только идентификаторов вместо подробной информации по обрабатываемому запросу пользовательского контента. Может пригодиться, когда не требуется вся информация (например, если вам нужны лишь идентификаторы предметов в списке желаемого пользователя).
      • ISteamUGC::SetReturnKeyValueTags определяет возвращение меток ключ-значение для предметов в обрабатываемом запросе пользовательского контента.
      • ISteamUGC::SetReturnLongDescription определяет возвращение полного описания для предметов в обрабатываемом запросе пользовательского контента.
      • ISteamUGC::SetReturnLongDescription определяет возвращение указанных разработчиком метаданных для предметов в обрабатываемом запросе пользовательского контента.
      • ISteamUGC::SetReturnLongDescription определяет возвращение идентификаторов для дочерних элементов предметов в обрабатываемом запросе пользовательского контента.
      • ISteamUGC::SetReturnKeyValueTags определяет возвращение дополнительных изображений или видео, привязанных к предметам в обрабатываемом запросе пользовательского контента.
      • ISteamUGC::SetReturnTotalOnly определяет, что будет возвращено лишь общее число совпадающих предметов в обрабатываемом запросе пользовательского контента. При вызове ISteamUGC::SteamUGCQueryCompleted_t сами предметы возвращаться не будут.
      • ISteamUGC::SetLanguage определяет язык возвращения названия и описания для предметов в обрабатываемом запросе пользовательского контента.
      • ISteamUGC::SetAllowCachedResponse определяет возвращение из кэша результатов обрабатываемого запроса пользовательского контента на определённое время.
  4. Отправьте запрос в Steam с помощью ISteamUGC::SendQueryUGCRequest, который вызовет обработчик результата вызова ISteamUGC::SteamUGCQueryCompleted_t, созданный в пункте 1 пошаговых инструкций.
  5. В обработчике результата вызова для ISteamUGC::SteamUGCQueryCompleted_t вызовите ISteamUGC::GetQueryUGCResult, чтобы получить информацию для каждого возвращённого предмета.

  6. Эти функции также можно использовать для получения дополнительной информации о каждом предмете (некоторые данные не возвращаются по умолчанию, поэтому вам необходимо соответствующим образом настроить ваш запрос):
    • ISteamUGC::GetQueryUGCPreviewURL находит ссылку на изображение для предпросмотра для отдельной работы в мастерской после получения результата вызова запроса информации о пользовательском контенте.
    • ISteamUGC::GetQueryUGCMetadata находит установленные разработчиком метаданные отдельной работы в мастерской после получения результата вызова запроса информации о пользовательском контенте.
    • ISteamUGC::GetQueryUGCChildren находит идентификаторы дочерних элементов отдельной работы в мастерской после получения результата вызова запроса информации о пользовательском контенте.
    • ISteamUGC::GetQueryUGCMetadata находит различные данные статистики отдельной работы в мастерской после получения результата вызова запроса информации о пользовательском контенте.
    • ISteamUGC::GetQueryUGCNumAdditionalPreviews и ISteamUGC::GetQueryUGCAdditionalPreview находят информацию о дополнительном предпросмотре, связанном с отдельной работой в мастерской, после получения результата вызова запроса информации о пользовательском контенте.
    • ISteamUGC::GetQueryUGCNumAdditionalPreviews и ISteamUGC::GetQueryUGCAdditionalPreview находят информацию о метке ключ-значение, связанной с отдельной работой в мастерской, после получения результата вызова запроса информации о пользовательском контенте.
  7. Вызовите функцию ISteamUGC::ReleaseQueryUGCRequest, чтобы освободить память, выделенную во время запроса или поиска результатов.

Просмотр результатов

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

Отслеживание времени в игре

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

Вы также сможете сортировать работы, используя различные показатели в запросах ISteamUGC::CreateQueryAllUGCRequest. Можно использовать следующие типы запросов, основанных на времени в игре:

Удаление контента мастерской

Чтобы удалить работу из мастерской, вызовите ISteamUGC::DeleteItem. Помните, что работа удаляется без запроса подтверждения у пользователя и это действие нельзя отменить.

Пример интеграции игры SpaceWar в Steamworks

Приложение Приложение-образец с API Steamworks (SpaceWar), сопровождаемое SDK Steamworks, демонстрирует подмножество API ISteamUGC.
  • CSpaceWarClient::LoadWorkshopItem демонстрирует проверку информации о том, загружена ли работа из мастерской и установлена ли она на диске, а также запрос данных о работе с помощью ISteamRemoteStorage::PublishedFileId_t.
  • CSpaceWarClient::LoadWorkshopItems демонстрирует получение списка работ в мастерской, на которые подписан текущий пользователь приложения SpaceWar.
  • CSpaceWarClient::OnWorkshopItemInstalled демонстрирует обработчик обратного вызова для ISteamUGC::ItemInstalled_t.

Правовая информация о мастерской

Работы в мастерской скрыты по умолчанию до тех пор, пока автор не примет условия соглашения мастерской Steam. Чтобы автор легко мог сделать работу общедоступной, следуйте этим инструкциям.
  1. Добавьте текст рядом с кнопкой, нажатие которой отправляет работу в мастерскую для публикации. Пример текста: «Отправляя работу в мастерскую, вы принимаете условия использования мастерской Steam» (с приложенной ссылкой).
  2. После того как автор отправит свою работу, откройте окно браузера на её странице в мастерской Steam, вызвав функцию ISteamFriends::ActivateGameOverlayToWebPage с pchURL, установленным на steam://url/CommunityFilePage/<PublishedFileId_t>, заменив <PublishedFileId_t> на ID работы.
Таким образом, вы направите автора на страницу созданной им работы в мастерской, чтобы он смог увидеть свой продукт, добавить настройки по необходимости и упростить для пользователя ознакомление и принятие условий соглашения мастерской Steam.

Веб-API

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

Выделенные игровые серверы

Игровые серверы также можно использовать для скачивания и установки предметов.
  • Игровому серверу понадобится информация дескриптора PublishedFileId_t, чтобы запросить работу в мастерской. Данные могут быть предоставлены клиентами игры или установлены администраторами серверов. Затем нужно вызвать функцию ISteamUGC::DownloadItem, чтобы получить временную копию работы из мастерской.
  • Далее можно вызвать ISteamUGC::GetItemInstallInfo для получения информации о местоположении и использовании работы в мастерской.
  • Ознакомьтесь с разделом «Установка работы» выше, чтобы узнать больше об этих методах API.

Интеграция SteamCmd

Наряду с API ISteamUGC инструмент командной строки steamcmd.exe можно использовать для создания и обновления работ в мастерской в целях тестирования. Его необходимо использовать только для тестирования, поскольку от пользователя потребуется ввести свои данные аккаунта Steam (чего мы пытаемся избежать).

Чтобы создать новую работу в мастерской Steam с использованием steamcmd.exe, необходимо открыть новый файл в формате VDF. VDF-файл — это обычный текстовый файл, содержащий следующие ключи:
"workshopitem" { "appid" "480" "publishedfileid" "5674" "contentfolder" "D:\\Content\\workshopitem" "previewfile" "D:\\Content\\preview.jpg" "visibility" "0" "title" "Team Fortress Green Hat" "description" "A green hat for Team Fortress" "changenote" "Version 1.2" }

Примечания:
  • Ключи соотносятся с различными методами ISteamUGC::SetItem[...]. Подробная информация об этом процессе представлена в разделе выше.
  • Показанные значения предоставлены только в качестве примеров и должны быть изменены соответствующим образом.
  • Для создания новой работы appid должен быть указан, а publishedfileid — либо не указан, либо равен 0.
  • Чтобы обновить существующую работу, необходимо указать как appid, так и publishedfileid.
  • Оставшиеся пары ключ-значение должны входить в VDF-файл, если ключ нужно обновить.
После создания VDF-файла можно запустить steamcmd.exe с параметром файла workshop_build_item <build config filename>. Пример:
steamcmd.exe +login myLoginName myPassword +workshop_build_item workshop_green_hat.vdf +quit
Если команда выполнена успешно, значение publishedfileid в VDF-файле будет автоматически обновлено, чтобы содержать идентификатор работы в мастерской. Таким образом, последующие вызовы с помощью steamcmd.exe для того же VDF-файла приведут не к созданию, а к обновлению работы.

Ошибки и ведение журнала

Большинство методов ISteamUGC возвращают логические значения. Узнать больше об определённых ошибках можно здесь:
  • Steam\logs\Workshop_log.txt — журнал всех передач, происходящих во время скачивания и установки работы из мастерской.
  • Steam\workshopbuilds\depot_build_<appid>.log — журнал всех действий во время загрузки и обновления работы в мастерской.
  • ISteamUGC::SteamUGCQueryCompleted_t, ISteamUGC::CreateItemResult_t и ISteamUGC::SubmitItemUpdateResult_t содержат переменные EResult, которые можно проверить.

Частые вопросы

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

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

Для этого перейдите в самый конец страницы конфигурации мастерской основного приложения. Введите ID другого приложения в поле под разделом «Разрешения для приложения на опубликование в мастерской» и нажмите «Добавить».

ПРИМЕЧАНИЕ: для хранения изображений, используемых при предпросмотре работ в мастерской, для обоих AppID должна быть включена квота Steam Cloud.

После публикации настроек редактирующее приложение сможет публиковать контент в мастерской основного приложения.