Документация Steamworks
Отправка в Steam

Введение в систему управления контентом SteamPipe

SteamPipe — система управления контентом игр и приложений Steam. В SteamPipe реализованы следующие функции:
  • Эффективная и быстрая доставка контента.
  • Неограниченное число как публичных, так и скрытых бета-веток. Это позволяет тестировать несколько сборок.
  • Простой сайт для управления сборками: публикация и удаление сборок происходит всего в несколько кликов.
  • Возможность видеть размер обновления до публикации сборки.
  • Контент может быть общим для нескольких приложений.
  • Возможность создавать установочные диски из общедоступного и бета-контента.
  • Игры/приложения остаются доступными в офлайн-режиме даже после того, как началась загрузка обновлений.
  • Весь контент всегда зашифрован, а пользователи не видят неактивные версии.
  • Во время разработки может использоваться локальный сервер контента.
Обратите внимание: некоторые понятия являются весьма существенными для понимания функционирования SteamPipe, поэтому перед началом работы вам необходимо ознакомиться со всеми статьями раздела Приложения. Даже если у вас будет самое базовое понимание о том, как эти части связаны в единое целое, это пригодится при отправке вашего продукта в Steam.

Видеоурок Steamworks: создание игры в Steampipe

Данный видеоурок (англ.) представляет собой введение в SteamPipe, в котором описаны пошаговые инструкции по созданию образца приложения для Steam с использованием инструментов SteamPipe.
https://www.youtube.com/watch?v=SoNH-v6aU9Q

Видеоурок Steamworks Video - Добавление новых платформ и языков

В этом видеоуроке рассказано, как добавить новые платформы и языки в игру, добавив к приложению дополнительные хранилища.
https://www.youtube.com/watch?v=PShS32hcing

Техническое описание SteamPipe

Для доставки контента SteamPipe использует протокол HTTP. Поскольку загрузки являются обычным веб-трафиком, любой сторонний HTTP-кэш между пользователем и серверами Steam увеличит скорость загрузки. Хостинг может осуществляться внешними провайдерами услуг распространения контента (CDN), которых можно легко добавить в нашу контентную сеть. Большинство пользовательских брандмауэров разрешают HTTP-трафик и не блокируют загрузки.

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

Аккаунт для сборок

Прежде чем создавать сборки в Steam, у вас должен иметься аккаунт Steamworks с разрешениями на изменение метаданных приложения и публикацию изменений в Steam. В целях безопасности рекомендуется создать отдельный аккаунт, на котором будут только эти разрешения (создать новый аккаунт в Steam можно здесь: https://store.steampowered.com/join).

Любой администратор вашего партнёрского аккаунта сможет затем добавить этот аккаунт и выдать ему необходимые разрешения. Дополнительную информацию об можно найти в разделе «Управление аккаунтом Steamworks». Пример того, как может выглядеть данный аккаунт:

create_build_account.png

Начальная настройка приложений SteamPipe

Далее приведены пошаговые инструкции для настройки новых приложений SteamPipe:
  1. Найдите номер приложения (App ID, его можно узнать, выбрав приложение на главной странице Steamworks)
  2. Перейдите в раздел «Общие параметры установки» вашего приложения.
  3. Создайте как минимум один вариант запуска (путь и, опционально, условия, требуемые для запуска игры). При наведении на значок (?) вы увидите всплывающую подсказку о каждом из полей.

    На примере ниже представлены четыре варианта запуска, два для Windows и по одному для MacOS и Linux. Вариант запуска №3 будет показан в Windows, только если пользователь владеет указанным доп. контентом.

    updatedlaunchoptions.png
  4. Перейдите в раздел «Хранилища» и добавьте необходимые приложению хранилища. Одно хранилище может быть уже настроено по умолчанию.
    1. Нажмите на название хранилища, чтобы его отредактировать. Выберите подходящее узнаваемое название (к примеру, Base Game Content или Windows Content).
    2. Оставьте параметр [Все языки], кроме случаев, когда это хранилище относится к тому или иному языку.
    3. Оставьте параметр [Все ОС], кроме случаев, когда это хранилище относится к той или иной операционной системе (если приложение запускается на всех ОС, либо только на ПК, либо только на Mac, оставьте [Все ОС]). Этот параметр можно изменять, только если хранилище относится к той или иной операционной системе.
    4. Для добавления нового хранилища нажмите соответствующую кнопку.
    5. Нажмите «Сохранить» для сохранения изменений.
  5. Как только вы закончите редактировать хранилища, опубликуйте изменения в соответствующем разделе.
  6. Свежеотредактированные хранилища необходимо включить в соответствующий комплект, которым вы владеете. У каждой игры есть комплект разработчика Developer Comp, который автоматически передаётся аккаунтам, перечисленным в издательской группе.
    Вы можете добавить новые хранилища в этот и другие комплекты в разделе «Связанные комплекты и дополнительный контент».
Примечание: если исполняемый файл находится в подпапке папки основной установки, добавьте имя вложенной папки в поле «исполняемый файл». Не используйте косую черту (/) в начале или точки.

Настройка отправок в SteamPipe через SDK

Загрузите и распакуйте последнюю версию SDK Steamworks на компьютере, с которого вы будете отправлять сборки.

Инструменты SteamPipe можно найти в папке tools, где располагаются две важные подпапки.

В папке ContentBuilder будет находиться контент игры и инструменты SteamPipe. Эта папка содержит следующие подпапки:
  • builder — изначально содержит только steamcmd.exe, т.е. консольный клиент Steam.
  • builder_linux — steamcmd для Linux.
  • builder_osx — steamcmd для macOS.
  • content — здесь хранятся все файлы игры, которые затем будут собраны в хранилища.
  • output — эта папка будет содержать логи сборок, блоки кэша и промежуточный вывод. Обратите внимание: из этой папки можно в любое время удалить всё содержимое или даже её саму, но после удаления время следующей отправки увеличится.
  • scripts — сюда необходимо поместить все сценарии сборок для хранилищ игры.
steampipebuilddir.png

Рекомендуется запустить steamcmd.exe прямо в папке builder используемой ОС, чтобы провести начальную настройку системы. Это действие заполнит папку builder всеми необходимыми для создания хранилищ файлами.

Папка ContentServer содержит инструменты для локального сервера контента, если вы решите его использовать.

SteamCmd на macOS

Чтобы использовать SteamCmd на macOS выполните следующие инструкции:
  1. Откройте папку tools\ContentBuilder\builder_osx\osx32 в Терминале
  2. Выполните команду chmod +x steamcmd
  3. Перейдите в папку tools\ContentBuilder\builder_osx
  4. Введите bash ./steamcmd.sh
  5. SteamCmd запустится, обновится до последней версии, после чего вы увидите командную строку SteamCmd
  6. Введите exit и нажмите кнопку Enter, чтобы закрыть командную строку
Затем вы можете продолжить работу с документацией (соответствующим образом заменяя пути) для создания хранилищ и файлов настроек приложения для отправки контента в Steam.

Создание файлов настроек SteamPipe

Чтобы отправить приложение с помощью SteamPipe, потребуется сценарии, которые описывают вашу сборку и каждое хранилище, которое должно быть включено в неё. В папке ContentBuilder\scripts есть образец сценария для приложения с одним хранилищем.

Обратите внимание: вы можете назвать эти сценарии как вам угодно, но в целях непротиворечивости мы используем названия app_build_<AppID> и depot_build_<AppID>. Если вы знаете, что на этом компьютере вы будете работать с несколькими приложениями, рекомендуем создать подпапки для каждого приложения в папке scripts, чтобы организовать сценарии сборок.

Графический интерфейс SteamPipe

Если вы работаете на Windows и предпочли бы использовать графический интерфейс для создания файлов настроек и отправки сборок, вы можете использовать SteamPipeGUI.exe, доступный в папке tools SDK Steamworks. В архив включён файл readme с дополнительными инструкциями (англ.).

Даже если вы будете использовать SteamPipeGUI, мы всё равно рекомендуем прочесть дальнейшие инструкции, чтобы подробнее ознакомиться с работой системы SteamPipe.

Сценарии сборки хранилищ

Создайте сценарий сборки хранилища для каждого отправляемого хранилища. Скопируйте сценарий depot_build_1001.vdf и дайте ему номер отправляемого хранилища (Depot ID).

Пример сценария сборки хранилища:
"DepotBuildConfig" { // Замените 1001 номером отправляемого хранилища. "DepotID" "1001" // Задайте корневой каталог для всего контента. // Все относительные пути, указанные ниже (LocalPath в FileMapping и пути FileExclusion) // будут сопоставлены с этим корнем. // Если не задать ContentRoot, тогда будет подставлен каталог // с данным файлом сценария, что, вероятно, вам не подходит. "ContentRoot" "D:\MyGame\rel\master\" // Включить все файлы рекурсивно "FileMapping" { // Это может быть как полный путь, так и путь относительно ContentRoot "LocalPath" "*" // Это путь относительно папки установки игры "DepotPath" "." // Если в LocalPath включены подстановочные знаки, установка данной настройки // будет означать, что подходящие подкаталоги LocalPath // будут также включены. "recursive" "1" } // Исключить все файлы символов // Это может быть как полный путь, так и путь относительно ContentRoot "FileExclusion" "*.pdb" }

ВНИМАНИЕ: заданный в сценарии сборки хранилища ContentRoot имеет приоритет над ContentRoot, заданным в сценарии сборки приложения.

Сценарий сборки приложения

После настройки сценариев хранилищ необходимо создать сценарий сборки приложения. Скопируйте сценарий app_build_1000.vdf и дайте ему номер приложения (AppID).

В SteamPipe поддерживаются следующие типы сборок:
  • Preview. Этот тип сборки выводит только логи и файловый манифест. Этот тип сборки выводит только логи и файловый манифест. Создание сборки этого типа — хороший способ тестирования сценариев сборки.
  • Local. Сборка для локального сервера контента (LCS) Сборки этого типа отправляются на ваш LCS и позволяют протестировать установку игры с помощью клиента Steam.
  • SteamPipe. Сборки этого типа отправляют хранилища в Steam. Отправка безопасна даже для игр, которые уже выпущены, поскольку, прежде чем пользователи смогут загрузить сборку себе, вам нужно будет опубликовать её.

Пример сценария сборки приложения:
"appbuild" { // Замените 1000 номером приложения. "appid" "1000" // Описание данной сборки. // Описание будет видно только вам в разделе «Сборки» партнёрского сайта. // Его можно изменить в любое время после отправки сборки в соответствующем разделе сайта. "desc" "Описание сборки" // Является ли данная сборка предпросмотром (preview)? // Рекомендуется использовать такую сборку при начальной настройке SteamPipe, // чтобы убедиться, что манифест хранилища содержит верные файлы. "preview" "1" // Путь к LCS, если включено. "local" "" // Название ветки, которую нужно автоматически опубликовать после сборки. Если пусто, игнорируется. // Обратите внимание, что ветку по умолчанию нельзя опубликовать автоматически. Это делается на партнёрском сайте. "setlive" "" // Следующие пути могут быть как абсолютными, так и относительными по отношению к расположению сценария. // Эта папка будет содержать логи сборок, блоки кэша и промежуточный вывод. // Хранящийся здесь кэш ускоряет последующие отправки через SteamPipe, используя отслеживание изменений. "buildoutput" "..\output\" // Корень папки с контентом. "contentroot" "..\content\" // Список хранилищ, включённых в сборку. "depots" { "1001" "depot_build_1001.vdf" } }

Сборка хранилищ

Чтобы начать сборку, отредактируйте файл run_build.bat и впишите имя аккаунта для сборок и пароль (см. выше), а также путь сценария сборки приложения:
builder\steamcmd.exe +login "account" "password" +run_app_build ..\scripts\[build_script_name].vdf +quit

ВНИМАНИЕ: первая попытка запуска сборки может не пройти из-за Steam Guard. Если попытка войти не удалась из-за Steam Guard, проверьте, есть ли в вашей электронной почте код Steam Guard, и запустите steamcmd как steamcmd.exe "set_steam_guard_code <код>", после чего попробуйте заново. После того, как вы войдёте при помощи кода Steam Guard, для проверки последующих логинов будет использоваться sentryfile.

If you are using steamcmd from a machine or VM that gets re-imaged frequently, you should include the sentry file in your image so you won't be prompted for a Steam Guard every time. The sentry file is located in <Steam>\ssfn<hashOfNumbers>.

After you run run_build.bat, your build output should be in the directory specified in your build script file. If the preview build produces the expected manifest, run the build again with "preview" "0" in your app build script.

The following steps occur during a SteamPipe build:
  1. Steamcmd.exe заходит на сервер Steam, используя указанный аккаунт для сборки.
  2. Начало сборки приложения регистрируется системой MDS (Master Depot Server, главный сервер хранилищ), который проверяет, есть ли у пользователя разрешения на редактирование приложения.
  3. Для каждого включённого в сборку приложения хранилища генерируется список файлов, соответствующий файлам в папке content и учитывающий фильтры, описанные в файле настроек сборки хранилища.
  4. Каждый файл сканируется и разделяется на блоки размером около 1 Мб. Если сборка хранилища осуществлялась ранее, данное разбиение не затронет неизменные блоки, насколько это возможно.
  5. Новые файловые блоки сжимаются, шифруются и затем отправляются на MDS.
  6. Генерируется окончательный манифест для данной версии хранилища. Каждому манифесту присваивается уникальный 64-битный номер манифеста.
  7. Как только хранилища обработаны, MDS завершает работу с данной сборкой приложения и назначает ей глобальный номер сборки (BuildID).
  8. После того, как сборка готова, в папке вывода могут появиться файлы *.csm и *.csd. Они временные и могут быть удалены, но они ускоряют время последующих сборок.

Управление обновлениями

After your app releases to customers, your customers will be receiving the build marked as the Default build. When uploading a new build it's always a good idea to test it before shipping it to your customers, for more information on how to successfully do this see Тестирование в Steam.

Расширенные правила сопоставления файлов

There can be multiple file mappings that add files to the depot. They should be listed first.
Files or subfolders can be excluded with filter expressions.
Steam install scripts can be marked during the build process so the Steam client knows to run them for any application which mounts the Depot.
Files or folders can be remapped, so sub-folders in the content folder can be mapped to anywhere in the depot.
Files can be tagged with special flags:
  • userconfig. Данный файл изменяется пользователем или игрой. Он не будет заменён при обновлении, и при проверке различий с предыдущей версией файла он не будет выдавать сообщение об ошибке.
  • readonly. Данный файл будет помечен как «только для чтения» для файловой системы клиента.
  • hidden. Данный файл будет помечен как скрытый для файловой системы клиента.
  • executable. Это исполняемый файл (только для OS X).
    "DepotBuildConfig" { "DepotID" "202931" "FileMapping" { // заменим видео-файлы в \\videos немецкими версиями. "LocalPath" "localization\\german\\videos\\*" "DepotPath" "videos\\" } "FileMapping" { // заменим аудио-файлы в \\audio немецкими версиями. "LocalPath" "localization\\german\\audio\\*" "DepotPath" "audio\\" } "FileMapping" { "LocalPath" "localization\\german\\german_installscript.vdf" "DepotPath" "." } "FileExclusion" "bin\\server.exe" // исключим этот файл "FileExclusion" "*.pdb" // исключим файлы .pdb везде "FileExclusion" "maps\\testroom*" // исключим все файлы из maps/testroom/ "InstallScript" "localization\\german\\german_installscript.vdf" "FileProperties" { "LocalPath" "bin\\setup.cfg" "Attributes" "userconfig" // этот файл будет изменён во время выполнения } }

Отладка проблем со сборками

If your build wasn't successful, you should look in your output directory for error information, not the console where the build script was run. Most error information can be found in the *.log files.
You can use these Steam client commands and client-side files to debug issues:
  • "app_status [appid]". Показывает текущее состояние приложения на данном клиенте.
  • "app_info_print [appid]". Показывает текущие настройки приложения в Steamworks (хранилища, варианты запуска и проч.).
  • "app_config_print [appid]". Показывает текущие пользовательские настройки для приложения (язык, папка установки и проч.).
  • file "logs\content_log.txt". Перечисляет все записанные операции и ошибки Oxcart.
  • file "steamapps\appmanifest_[appid].acf". Показывает текущее состояние установки данного приложения (KeyValues).

Создание эффективных хранилищ для SteamPipe

The old Steam content system would patch updates on a file level, which meant that if a single byte in a file changed, the entire new file would be downloaded by all users. This was especially inefficient if the game used pack files, which are collections of game content files in a single big file. Pack files can easily exceed 1 GB, so updates often led to unnecessarily large downloads. A common way to avoid these large downloads was to add new pack files that overrode content of already shipped pack files. That worked for updates, but it hurt new users long-term, since they ended up downloading unused, already-patched content.

The new content system fixes this problem by splitting each file into roughly 1-MB chunks. Each chunk is then compressed and encrypted before being distributed by the Steam content system. If the game content has large redundant parts, these chunks are reused and the user only has to download each repeated chunk once. However, the real strength of this system is building efficient update patches. While the system is building a patch, the new content is scanned for already known chunks. If it finds them, it reuses them. This means if you change or inject a few bytes in a big file, the user only has to download the changes.

This works well in most cases, but there are still a few pitfalls that need to be avoided when designing the content layout of a game. Do not compress or encrypt your game data. This is already done for in-flight downloads and retail discs by the Steam content system. If you do it too, you will reduce the effectiveness of delta patching. If you package multiple data files in a single pack file, make sure that with each re-packaging, no unnecessary changes are made. One problematic practice is including the full name of the original source files on disk, because the names may change, depending on the build machine. Another bad pattern is including build time stamps for each file. If possible, always add new content to the end of your pack files and keep the order of existing files. Also, keep your pack file’s metadata (offset and sizes to individual files) in one place and don’t intersperse it with content files. Use a binary diff’ing tool like BeyondCompare to look at two builds of your pack files to make sure that hundreds of unwanted changes don’t show up.

If you follow these rules you will minimize patch sizes and only new content will need to be downloaded. Your customers will thank you for that and you will be able to increase the quality of your product by shipping more updates.

Создание розничных установочных дисков

To build retail install disc for SteamPipe games, you must first setup a build project file.
In this example, the SKU file is called "sku_goldmaster.txt":
"sku" { "name" "Test Game Installer" "appid" "202930" "disk_size_mb" "640" "included_depots" { "1" "202931" "2" "202932" } }
Some tips to keep in mind:
  • Создайте новую папку, где будут записаны образы дисков, к примеру, "D:\retail_disks". Будут добавлены только хранилища, включённые в папку included_depots, без исключений.
  • Для сборки установочных дисков вы можете использовать Steam.exe (с параметрами командной строки -dev и -console) или steamcmd.exe. В обоих случаях используется команда "build_installer".
  • Войдите в аккаунт Steam, который владеет игрой и всеми хранилищами, которые вы хотите записать на розничный диск. Аккаунту не потребуются иные специальные права, так что создавать установочные диски может кто угодно.
  • Если вы используете Steam.exe, остановите все загрузки.
  • Перейдите в консоль и запустите команду build_installer:
    build_installer sku_goldmaster.txt "D:\retail_disks"
    Сборка может занять некоторое время, поскольку все хранилища загружаются заново.
  • Если вы создаёте «золотой» мастер-диск, используя локальный сервер контента, выполните данную команду:
    @localcontentserver "webserver"
    build_installer sku_goldmaster.txt "D:\retail_disks" local
    Вы увидите сообщение о резервной копии, поскольку розничный установочный диск и локальная резервная копия — это почти одно и то же.
  • Как только вы увидите "Backup finished for AppID...", образы установочных дисков созданы. Дополнительная информация о созданной резервной копии будет доступна в файле logs\backup_log.txt.
  • В "D:\retail_disks" будут созданы новые папки (Disk_1, Disk_2 и т. д.), каждая не больше 640 Мб, что было задано в "disk_size_mb". Каждая папка содержит файл sku.sis, а также .csd и .csm для каждого хранилища. Хранилища большего размера записываются на несколько дисков. Контент розничных установочных дисков всегда шифруется (в отличие от локальных файлов резервных копий). Скопируйте SDK-файлы настройки «золотого» мастер-диска (setup.exe, setup.ini и др.) в папку первого диска, и розничные диски установки готовы.
  • При создании «золотого» мастер-диска для macOS откройте образ goldmaster/disk_assets/SteamRetailInstaller.dmg на Маке. Затем скопируйте приложение оттуда в корневой каталог носителя. Вам, вероятно, захочется переименовать приложение, создать собственную иконку и сделать так, чтобы окно показывало только установщик.
  • При создании «золотой» копии для macOS на нескольких дисках, убедитесь, что название тома каждого диска является корректным. Название тома становится частью пути подключения, и если названия некорректны, установщик не распознает следующий диск.

Создание розничного диска с помощью бета-ветки

The process above will create a retail installer based on the default branch. If you need to create an installer based on a beta branch, you must first create a beta branch named "baseline". Then use the following command to build from the baseline branch:
build_installer <project file> <target folder> <beta key> <beta pwd> steamcmd ex: build_installer sku_goldmaster.txt "D:\retail_disks" baseline superSecret script ex: steamcmd.exe +login user_name password +build_installer "..\Build\GameDataSku.txt" c:\destination beta_key beta_password +exit

Установка доп. контента с розничного диска

In some circumstances, you may wish to create a retail installer that includes your DLC packages. In such cases, the process to create the installer requires only a few changes.
In "sku_goldmaster.txt", include the DLC AppIDs under the "included_depots" section. Once you have run the "build_installer" process, find the generated sku.sis file for the installer and open it with a text editor.
Add the DLC AppID in the "apps" section. For example, if I had a game with AppID 1000 and DLC AppID 1010, I would adjust the "apps" section as follows:
"apps" { "0" "1000" "1" "1010" }
This will ensure that Steam checks for ownership of the DLC and prompt the user for a key if the DLC is not owned by the account that they are logging into on Steam.

Создание одного установочного диска/комплекта для нескольких приложений

To build a GM containing multiple Steam Pipe apps. Build each app installer one by one but point them all to the same output folder. Each build will merge itself with the already existing install image.

Настройка розничного установочного диска

See Customizing a gold master for more details on customizing your retail install disk.

Предзагрузка игр до выпуска

By default, all content is always encrypted, on all retail discs and on all content servers. Switching a game to preload mode means owners can download the content, but it stays encrypted on the users' disk and can't be played. Once the game becomes officially released, Steam will decrypt the preloaded content and the user can play the game.

Switching a game to preload mode is recommended in these cases:
  • Отправка розничных дисков с ключами продукта до дня её выпуска (пиратство нулевого дня).
  • Игры, у которых есть предзаказ, и её размер больше 20 Гбайт.

Please submit a ticket to Steam Publishing if you believe your game requires preloading.

Сборка доп. контента

DLC is built as a depot of the base game. See the Дополнительный контент (DLC) documentation for more information.

Устранение неполадок SteamPipe

"Login Failure: Account Logon Denied Failed" при входе в аккаунт с помощью SteamCMD

Cause: Probably SteamGuard is preventing login. Resolution:
  • Проверьте электронную почту, связанную с аккаунтом, с помощью которого вы пытаетесь войти, и найдите письмо от службы поддержки Steam. Скопируйте код из письма.
  • В SteamCMD выполните: set_steam_guard_code <code>
  • Заново войдите через SteamCMD: Steam>logon <buildaccount> <password>

Устранение неполадок при проблемах с загрузкой

  • Перезагрузите компьютер, модем, раутер, и т. д.
  • Проверьте настройки брандмауэра. Новая система требует для работы порт 80 (HTTP), а также другие порты, указанные здесь.
  • Временно отключите локальные антивирусные и блокирующие спам программы.
  • Проверьте регион загрузки Steam (НастройкиЗагрузки). Он должен совпадать с вашим местонахождением.
  • Остановите загрузки, удалите и переустановите игру (очистите кэши манифестов).
  • Выйдите из Steam, удалите папки appcache и depotcache из папки установки Steam.
  • Попробуйте изменить регион загрузки на какое-то другое место, подальше от вас. Это может сработать, если ближайший к вам сервер отправляет испорченные данные.

Сборки для Mac и/или Linux не устанавливают файлы. Почему?

If you're testing via Steam the installation of your game or application across multiple platforms, you may run into a situation where the build deploys on Windows but doesn't deploy any files on Mac or Linux despite your SteamPipe process being setup to upload Mac and/or Linux depots. There is a step that is easily missed which involves adding your alternate Depots to the Package being deployed. You can check what depots are included in a package via the following steps:
  1. Откройте раздел управления приложением
  2. В разделе «Связанные пункты» нажмите «Все связанные комплекты, инструменты, демо-версии и дополнительный контент»
  3. Нажмите на название комплекта, которые вы пытаетесь скачать
  4. Изучите раздел Включённые хранилища
  5. С помощью кнопки «Добавить/удалить хранилища» выберите хранилища, которые должны быть в данном комплекте
There are a number of discussion threads about this that may also assist:

Запуск steamcmd.exe приводит к следующей ошибке: "SteamUpdater: Error: Steam needs to be online to update. Please confirm your network connection and try again." (Ошибка: ля обновления Steam должен быть онлайн. Проверьте ваше подключение к сети и повторите попытку.)

Resolution: Go to Internet Options->Connections->Lan Settings and check Automatically detect settings.

Запуск сборки приложения вызывает следующую ошибку: "ERROR! Failed 'DepotBuild for scriptname.vdf' - status = 6."

Possible Causes:
  • У аккаунта нет необходимых разрешений для приложения.
    • Проверьте, что в app_build.vdf указан корректный номер приложения.
    • Проверьте, что у используемого для сборки аккаунта правильно настроены разрешения для данного приложения.
  • Steamcmd не находит содержимое хранилищ.
    • Убедитесь, что значение contentroot в сценарии app_build является правильным путём относительно файла сценария.
    • Убедитесь, что значение LocalPath в сценарии depot_build является правильным путём относительно сценария app_build. Проверьте, что контент действительно располагается в указанной папке.

Запуск сборки приложения вызывает следующую ошибку: "ERROR! Failed to get application info for app NNNNN (check login and subscription)"

This means that Steam can't retrieve information about the app, either because it doesn't exist or the user doesn't have access to the app.
  • Проверьте, что NNNNN — это номер приложения, назначенный вашему приложению.
  • Проверьте, что в app_build.vdf указан корректный номер приложения.
  • Если это новое приложение, проверьте, что настройки управления приложением опубликованы в Steamworks. У новых приложений должны быть указаны папка установки на вкладке «Установка» и хранилища на вкладке «Хранилища», а все изменения опубликованы на соответствующей вкладке.
  • Если всё это настроено правильно, убедитесь, что ваш аккаунт владеет данным номером приложения.

"An error occurred while installing [название приложения] (Invalid content configuration)" в время запуска

Possible Causes:
  • В ветке, которую вы пытаетесь установить, нет опубликованных сборок.
    Решение: опубликуйте сборку в ветке, перейдя по ссылке https://partner.steamgames.com/apps/builds/<YourGameAppId>, и выберите эту ветку в клиенте Steam (как это описано здесь).
  • Неверные параметры запуска игры.
    Решение: проверьте варианты запуска на вкладке «Установка», перейдя по ссылке https://partner.steamgames.com/apps/config/<YourGameAppId>.
  • Вы не владеете хранилищами, которые входят в игру.
    Решение: убедитесь, что необходимые хранилища добавлены в комплект разработчиков (см. Редактирование комплектов).

"Error code 15" в время запуска

This is the CEG servers rejecting the request to CEG the exe. Check the release state on the game page. If it is not 'playable', you will need to request Steam keys that override the release state.

"The Steam Servers are too busy to handle your request... Error Code (2)" во время запуска

This is the CEG servers failing to find a matching CEG exe. Double check that you have a working CEG executable on the CEG tab of your app admin. Click the 'status' button to make sure that it's propped.

Я не помню, какую команду я использовал в SteamCMD, или как она работает

Use the 'find' command in steamcmd to search for any steamcmd command. It will do partial matching on the command name and it will list out the command syntax.
Steam>find build_installer ConVars: Commands: build_installer : <project file> <target folder> <beta key> <beta pwd>