Документация 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.

После запуска run_build.bat вывод сборки будет находиться в папке, указанной в файле сценария. Если сборка типа preview производит ожидаемый манифест, запустите её заново с "preview" "0" в сценарии сборки приложения.

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

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

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

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

У вас могут быть несколько настроек сопоставления файлов, используемых при добавлении файлов в хранилище. Они должны быть указаны первыми.
С помощью фильтров можно настроить исключения для файлов или папок.
Сценарии установки могут быть добавлены в процессе сборки, так чтобы клиент Steam знал, что их нужно запустить для всех приложений, в которые включено данное хранилище.
Файлам или подпапкам можно задать новые правила сопоставления, так что подпапки в папке content можно сопоставить с любым местом в хранилище.
Файлы можно пометить специальными флагами:
  • 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" // этот файл будет изменён во время выполнения } }

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

Если при сборке произошёл сбой, информация об ошибках будет находиться в папке output, а не в консоли, где был запущен сценарий сборки. Большинство ошибок будут находиться в файлах *.log.
Вы можете использовать следующие файлы и команды клиента Steam для отладки:
  • "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

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

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

В большинстве случаев это система работает хорошо, но, тем не менее, есть несколько подводных камней, которые необходимо избежать при проектировании файловой структуры игрового контента. Не сжимайте и не шифруйте файлы игры. Это и так делается контентной системой Steam в процессе загрузки, а также при создании розничных дисков. Если и вы выполните это действие, это снизит эффективность технологии отслеживания изменений в исправлениях. Если вы упаковываете несколько файлов данных в один пакетный файл, убедитесь, что с каждой переупаковкой вы не производите ненужных изменений. Проблему, к примеру, может вызвать практика включения полных названий исходных файлов на диске, поскольку названия могут меняться, в зависимости от компьютера для сборки. Также не рекомендуется включать временные метки сборок для каждого файла. Если возможно, всегда добавляйте новый контент в конец пакетных файлов и сохраняйте порядок существующих файлов. Также храните метаданные пакетных файлов (смещения и размеры отдельных файлов) отдельно в одном месте и не смешивайте их с файлами контента. Используйте утилиты сравнения файлов, такие как BeyondCompare, для просмотра сборок пакетных файлов, чтобы убедиться в отсутствии нежелательных изменений.

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

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

Для создания розничного диска для игр SteamPipe сначала вам потребуется настроить файл проекта сборки.
В данном примере SKU-файл называется "sku_goldmaster.txt":
"sku" { "name" "Test Game Installer" "appid" "202930" "disk_size_mb" "640" "included_depots" { "1" "202931" "2" "202932" } }
Несколько замечаний:
  • Создайте новую папку, где будут записаны образы дисков, к примеру, "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 на нескольких дисках, убедитесь, что название тома каждого диска является корректным. Название тома становится частью пути подключения, и если названия некорректны, установщик не распознает следующий диск.

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

Описанный выше процесс относится к созданию розничного установочного диска с помощью данных ветки по умолчанию. Если вам необходимо создать установочный диск с помощью бета-ветки, сначала вам потребуется создать бета-ветку с названием baseline. Затем используйте следующую команду для создания диска с помощью ветки baseline:
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

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

В некоторых обстоятельствах вам может потребоваться создать розничный диск, на который будет включены комплекты с доп. контентом. Тогда создание диска потребует всего нескольких изменений.
Включите номера приложений доп. контента (DLC AppID) в раздел included_depots файла sku_goldmaster.txt. После того, как процесс build_installer будет завершён, найдите сгенерированный файл sku.sis и откройте его в текстовом редакторе.
В раздел apps добавьте номера приложений доп. контента. К примеру, если игра имеет номер AppID 1000, а доп. контент — 1010, раздел apps нужно отредактировать следующим образом:
"apps" { "0" "1000" "1" "1010" }
Это необходимо, чтобы Steam проверил, что пользователь владеет данным доп. контентом, а в случае, если на аккаунте пользователя данного доп. контента нет, Steam попросит пользователя ввести ключ продукта.

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

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

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

См. раздел о настройке «золотого» мастер-диска.

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

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

Переключение игры в режим предзагрузки рекомендуется в следующих случаях:
  • Отправка розничных дисков с ключами продукта до дня её выпуска (пиратство нулевого дня).
  • Игры, у которых есть предзаказ, и её размер больше 20 Гбайт.

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

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

Доп. контент является хранилищем основной игры. Дополнительная информация доступна в разделе «Дополнительный контент (DLC)».

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

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

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

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

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

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

Если вы тестируете установку игры или приложения на нескольких ОС с помощью Steam, вы можете столкнуться с ситуацией, когда сборка доставляет файлы на Windows, но не на Mac или Linux, несмотря на то, что процесс SteamPipe настроен так, чтобы загружать их. Дело в том, что легко упустить необходимое добавление альтернативных хранилищ в отправляемый комплект. Вы можете проверить, какие хранилища включены в комплект, выполнив следующие инструкции:
  1. Откройте раздел управления приложением
  2. В разделе «Связанные пункты» нажмите «Все связанные комплекты, инструменты, демо-версии и дополнительный контент»
  3. Нажмите на название комплекта, которые вы пытаетесь скачать
  4. Изучите раздел Включённые хранилища
  5. С помощью кнопки «Добавить/удалить хранилища» выберите хранилища, которые должны быть в данном комплекте
На форуме также можно найти несколько тем, которые связаны с данным вопросом:

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

Решение: откройте Свойства обозревателя->Подключения->Параметры локальной сети и отметьте Автоматическое определение параметров.

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

Возможные причины:
  • У аккаунта нет необходимых разрешений для приложения.
    • Проверьте, что в 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)"

Это означает, что Steam не удалось получить информацию о приложении, либо потому, что оно не существует, либо из-за того, что у пользователя нет доступа к нему.
  • Проверьте, что NNNNN — это номер приложения, назначенный вашему приложению.
  • Проверьте, что в app_build.vdf указан корректный номер приложения.
  • Если это новое приложение, проверьте, что настройки управления приложением опубликованы в Steamworks. У новых приложений должны быть указаны папка установки на вкладке «Установка» и хранилища на вкладке «Хранилища», а все изменения опубликованы на соответствующей вкладке.
  • Если всё это настроено правильно, убедитесь, что ваш аккаунт владеет данным номером приложения.

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

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

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

Это означает, что серверы CEG отклоняют запрос на проверку исполняемого файла. Проверьте состояние выпуска приложения на странице игры. Если игра не помечена как «готовая» (playable), вам потребуется запросить ключи, предназначенные для переопределения состояния.

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

Это означает, что серверам CEG не удалось найти соответствующий исполняемый файл. Перепроверьте, что у вас есть работающий исполняемый файл с CEG-защитой. Это можно сделать на вкладке «Система защиты CEG». Нажмите кнопку «Состояние», чтобы убедиться, что защита прикреплена.

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

Используйте команду 'find' для поиска команд SteamCMD. При поиске будет использоваться частичное соответствие названия команды. Будет показан синтаксис команды.
Steam>find build_installer ConVars: Commands: build_installer : <project file> <target folder> <beta key> <beta pwd>