steamworks sdk redist что это
Как установить Steamworks SDK
Настройка SDK для загрузки SteamPipe for Windows
Загрузите и распакуйте последнюю версию Steamworks SDK на машине, на которой вы будете загружать свои сборки.
Инструменты SteamPipe можно найти в SDK в папке инструментов, которая содержит 2 соответствующих подкаталога.
В каталоге ContentBuilder вы найдете контент вашей игры и инструменты сборки SteamPipe. Этот каталог содержит следующие подкаталоги:
Рекомендуется запускать steamcmd.exe непосредственно в корневой папке для вашей платформы. Это должно заполнить каталог вашего builder`a всеми файлами, необходимыми для создания хранилищ.
Каталог ContentServer содержит инструменты для запуска вашего собственного Локального сервера контента SteamPipe, если вы решите это сделать.
SteamCmd на macOS
Чтобы включить SteamCmd в macOS, вы должны выполнить следующие шаги:
1. С терминала перейдите к папке tools \ ContentBuilder \ builder_osx \ osx32.
2. Запустить chmod + x steamcmd.
3. Перейдите к родительской папке (tools \ ContentBuilder \ builder_osx).
5. Затем SteamCmd запускается и обновляется до последней сборки, оставляя вас в приложении SteamCmd.
6. Нажмите exit и нажмите Return, чтобы выйти из приложения.
7. Далее документация соответствует обеим платформам.
Создание файлов конфигурации SteamPipe Build
Чтобы загрузить приложение с помощью SteamPipe, вы должны создать скрипт, описывающий вашу сборку и каждый дополнительный пакет, который будет включен в нее. В папке ContentBuilder \ scripts для приложения с одним файлом есть простые примеры сценариев.
ВНИМАНИЕ. Вы можете назвать эти скрипты как угодно, но имена app_build_ AppID и depot_build_ AppID запрещены. Если вы знаете, что будете создавать приложения на этом компьютере, может быть хорошей идеей создать подкаталоги в вашем каталоге сценариев для каждого приложения, чтобы помочь организовать скрипты сборки каждого приложения.
Инструмент GUI SteamPipe
Если вы работаете в Windows и предпочтете, чтобы инструмент графического интерфейса помогал создавать эти файлы конфигурации и загружал ваши сборки, вы можете использовать SteamPipeGUI, который доступен в папке инструментов Steamworks SDK
Скрипт сборки файлов
Сначала создайте скрипт сборки для каждого пакета, который вы хотите загрузить. Начните с дублирования скрипта depot_build_1001.vdf и переименуйте его с идентификатором пакета, который будет загружаться.
Пример скрипта построения пакета:
Скрипт создания приложений
После настройки сценариев сборки Depot вам понадобится скрипт сборки приложения, который описывает детали сборки. Начните с дублирования скрипта app_build_1000.vdf и переименуйте его с идентификатором приложения, которое он будет создавать.
Следующие типы сборок, поддерживаемые SteamPipe:
Пример сценария создания приложения:
Построение пакета:
Чтобы запустить сборку, отредактируйте файл run_build.bat, чтобы включить учетную запись и пароли сборки Steamworks и путь к скрипту создания приложения.
После запуска run_build.bat ваш вывод сборки должен находиться в каталоге, указанном в файле скрипта сборки. Если сборка предварительного просмотра создает ожидаемый манифест, запустите сборку снова с помощью «предварительного просмотра» «0» в скрипте создания приложения.
Во время сборки SteamPipe выполняются следующие шаги:
Steamworks sdk redist что это
Введение
Многие игры и приложения для запуска требуют установки на компьютере пользователя общих распространяемых компонентов.
Steam долгое время использовал сценарии для установки этих компонентов.
Однако это означало, что каждому разработчику приходилось заново создавать сценарий установки, а одни и те же программы установки запускались у пользователей по несколько раз.
Steam apps can now simply opt into common redistributables, which will be installed only if necessary. Valve создаёт и поддерживает сценарии установки для этих компонентов и обновляет их, если становятся доступны исправления. При этом в тех случаях, когда это необходимо, на 64-битные системы устанавливаются как 64-битные, так и 32-битные версии компонентов.
Использование общих распространяемых компонентов
Использовать общие распространяемые компоненты очень просто. Выберите пункт «Распространяемые компоненты» на вкладке «Установка» в разделе управления приложением, после чего отметьте те компоненты, которые нужны для работы приложения или игры.
Не забудьте опубликовать изменения!
Доступные компоненты
Полный список компонентов всегда доступен на вкладке Распространяемые компоненты.
Тестирование
Если вы хотите протестировать приложение с выбранными общими компонентами, наилучшим способом сделать это будет использование чистой операционной системы или виртуальной машины.
Что, если мне нужны другие компоненты?
Если для работы игры или приложения используются не перечисленные в соответствующей вкладке распространяемые компоненты, и вы считаете, что они могут быть использованы другими разработчиками, пожалуйста, сообщите об этом в группе обсуждения разработчиков Steamworks, и, вероятно, мы сможем добавить эти компоненты.
Если компонент или установщик, которые вы используете, является редким или разработанным под заказ, вы можете использовать сценарий для его установки вручную.
Steamworks sdk redist что это
Цель данной документации — предоставить вам информацию и ресурсы, которые потребуются для выпуска вашей продукции на одной из ведущих развлекательных платформ в мире: Steam.
В этом разделе вы найдете информацию о том, как стать партнёром Steamworks. Steamworks представляет собой набор инструментов, с помощью которых вы сможете распространять свою продукцию среди пользователей Steam, а также набор функций, которые вы можете интегрировать в ваш продукт, такие как подбор игр, списки лидеров, Мастерская Steam и проч. Управление продуктами, аккаунтом и информацией о компании осуществляется на партнёрском сайте Steamworks.
Настройка аккаунта Steamworks
Начните с регистрации в качестве партнёра Steamworks.
После регистрации аккаунта и подтверждения сведений о банке, налогах и компании, вы сможете добавить дополнительных пользователей и начать процесс регистрации своего первого продукта или приложения.
Загрузка SDK Steamworks
После завершения процесса регистрации загрузите SDK Steamworks, содержащий все скрипты и шаблоны для создания и отправки вашего продукта в Steam.
Последнюю версию SDK Steamworks можно найти здесь, а дополнительную информацию о нём — в соответствующем разделе документации.
Создание сборок и хранилищ для Steam
Чтобы выпустить приложение в Steam, вам потребуется отправить сборку и задать настройки. Данный процесс подробно изложен в разделе об отправке в Steam. When you want to build and test your application is up to you.
Настройка функций Steamworks
Вы можете использовать столько функций Steamworks, сколько хотите. Дополнительная информация доступна в разделе Список возможностей.
Создание страницы в магазине и установка цен
В процессе работы над приложением вы также можете начать подготовку страницы вашей игры (или программы) в магазине. Если у вас возникнут вопросы, вы можете задать их на форумах, посвящённых страницам в магазине и маркетингу. Дополнительная информация доступна в разделе Облик в магазине.
Подготовка к выпуску
Большую часть работы для подготовки вашего продукта к выпуску в Steam можно провести самостоятельно, используя существующие инструменты и документацию. Однако непосредственно перед выпуском сотрудникам Valve понадобится провести проверку страницы вашего продукта в магазине, предлагаемую цену и сборку игры.
Дополнительная информация доступна в разделе Процесс проверки.
Простая работа со Steamworks
Unity, C#, Steamworks.NET и Facepunch.Steamworks
Введение
Как и большинству разработчиков игр, мне очень хочется выложить мою игру в Steam.
Как и большинству инди-разработчиков игр, мне не хватает доступа к ресурсам/знаниям, которые дали бы мне чётко понять, что же действительно значит «быть в Steam».
Сложно заполнить этот пробел в знаниях, потому что, несмотря на подробную документацию возможностей Steam, трудно понять, с чего начать в этом огромном хранилище документов и как связаны между собой его отдельные части. Кроме того, основные обсуждения платформы Steam проходят в закрытом форуме, доступном только для подтверждённых платформой через Steam Direct или реферальную ссылку Valve разработчиков. То есть для начинающих поиск ответов на простые вопросы может оказаться сложной задачей.
Поэтому я решил написать высокоуровневый обзор для людей, которые только начинают разбираться в том, как заставить Steam работать с их играми. В частности, я подробно рассмотрю Steamworks SDK, программную библиотеку Valve, предоставляющую доступ к таким аспектам, как мастерская (Workshop), таблицы лидеров (Leaderboards), достижения (Achievements) и так далее.
Steamworks хорошо задокументирована компанией Valve, но документация написана с точки зрения человека, использующего нативную библиотеку C++ и уже имеющего представление о том, как все эти функции пересекаются. Если это не ваш случай, то так даже лучше! Ниже представлено объяснение для другого человека, который пишет игру на языке более высокого уровня и просто хочет обеспечить простую интеграцию со Steamworks (а это возможно, я гарантирую!). Конкретнее, этот пост предназначен для людей, использующих в той или иной форме C#, а в идеале — работающих в игровом движке Unity.
Steamworks
Steamworks состоит из двух частей. Во-первых, это портал для разработчиков, предназначенный для управления всем, что связано с существованием игры в Steam, от изменения баннеров игры до управления продажами и списка поддерживаемых контроллеров. Во-вторых, это SDK, предоставляемый Valve для того, чтобы разработчик мог взаимодействовать со всем остальным в Steam, в том числе с мастерской, таблицами лидеров, серверами, достижениями и т.д. Не забывайте об этой системе! SDK «обязателен только для загрузки контента в Steam». Это означает, что можно полностью воздержаться от возни со всеми вышеперечисленными возможностями SDK и сосредоточиться только на том, как загрузить игру в Steam. Однако SDK предоставляет множество других полезных функций, так что давайте настроим его и заставим работать!
Если вы пишете на C++, то можете просто добавить библиотеку к вашей игре, следуя этим инструкциям.
Steamworks.NET обеспечивает взаимно однозначное преобразование функций Steamworks в функции C#, но это значит, что для работы вам потребуется полное понимание Steamworks как библиотеки. Для новичков, желающих отделаться простой работой, этого может оказаться слишком много. Если вы хотите сделать что-то посложнее, для Steamworks.NET придётся написать собственную обёртку поверх её обёртки, что лишает смысла саму идею обёртывания.
Facepunch.Steamworks
Из-за этих ограничений и по другим причинам, Facepunch Studios (известная по играм Rust и Garry’s Mod) захотела написать более удобную библиотеку Steamworks для C#/Unity.
Она избавляет от необходимости писать кучу кода для реализации простых (и сложных) задач в Steamworks, позволяя сосредоточиться на самой «работе» со Steam. Библиотека используется в Rust, то есть её работа тестируется на игре с одним из самых больших сообществ игроков в Steam. Сложные задачи абстрагируются в простые вызовы функций, сама библиотека состоит всего из трёх файлов, то есть не особо раздувает проект. Не могу выразить, насколько она полезна для новичков, это настоящая находка. Создатель Steamworks.NET даже сказал, что Facepunch.Steamworks — это «именно то, что во что я хотел превратить Steamworks.NET дальше» и что «для большинства разработчиков она должна стать выбором по умолчанию». Steamworks.NET по-прежнему доступна для тех, кто хочет реализовать собственную версию Facepunch.Steamworks, но, по-моему, что хорошо для Rust, то достаточно хорошо и для меня. Как же работает библиотека и что в ней особенного? Давайте начнём разбираться.
Начало работы
Во-первых, можно подумать, что для начала работы с Steamworks нужно быть подтверждённым разработчиком Steamworks, но на самом деле, использовать SDK можно сразу, не проходя процесс регистрации. Valve предоставила разработчикам тестовый «AppID» 480, для которого можно программировать.
AppID
AppID — это уникальный идентификатор игры в Steam (и в Steamworks). Его вы получаете в сразу после регистрации игры. Он «занимает» вам место в Steam/Steamworks и позволяет полностью распоряжаться всем, связанным с этим AppID. AppID 480 соответствует «SpaceWar», демонстрационной игре, созданной Valve. Она имеет открытые исходники и показывает некоторые из возможностей Steamworks (обязательно изучите её!).
Уникальный AppID — это удобно и очевидно необходимо для вашей игры на определённом этапе, тестовый же AppID (480) позволяет вам работать со службами Steam как будто ваша игра уже готова. Когда вы получите реальный AppID, то подставьте его, а пока вполне подойдёт 480. То есть не стоит создавать сервер с названием «Сервер с названием моей игры, ожидающей регистрации в качестве торговой марки».
Скачивание и импорт Facepunch.Steamworks
Unity
Скопировав все файлы библиотеки в соответствующие каталоги, вы практически закончили настройку! Единственное, что нам нужно — написать немного кода, чтобы всё интегрировать. Я скопирую тестовый файл из тестового проекта и просто сокращу его для понятности.
И… на этом всё! Если прикрепить этот скрипт к «GameObject» в сцене и перейти в игровой режим, то вы увидите, что в Steam вы играете в «Spacewar», а в консоли выводится базовая информация Steam о вас (если не получилось, проверьте, выполнен ли вход в Steam).
Жизнь с Facepunch.Steamworks
Возможности
После настройки доступ к более глубоким функциям Steam становится довольно простым, потому что библиотека FP обрабатывает и обёртывает почти все части стандартного Steamworks SDK. Однако по-прежнему стоит вопрос: какие же это части? Вот небольшой список с описаниями того, с чем можно работать (в библиотеке FP):
1. Серверы — создание серверов с помощью клиента игрока или запуск «безголового» сервера в любом другом месте. Используется для чувствительных к пингу игр, имеющих высокие требования к сети (таких как Dota 2, Overwatch и т.д.)
2. Лобби — это «места встреч» игроков, используемые для обмена SteamID или другой информацией пользователей.
3. Друзья — вы и ваши друзья-игроки в Steam.
4. Мастерская — загрузка/скачивание контента в мастерскую Steam Workshop и из неё.
5. Таблицы лидеров — создание и хранение глобальных таблиц лидеров для игры.
6. Достижения — создание и выдача достижений.
7. Сеть — отправка P2P-данных клиентам.
8. Steam Cloud — сохранение данных в облако Steam Cloud! Очень полезно для сохранений игр.
9. Голос — взаимодействие с голосовым API Steam для внутриигрового чата.
10. Статистика — задание статистики на стороне Steam для заданного игрока.
Наилучший способ научиться использованию нужных функций — посмотреть, есть ли её рабочий пример в тестовом проекте Facepunch.Steamworks (ПРИМЕЧАНИЕ: это не тестовый проект Unity), и смоделировать её реализацию в своей игре.
Большинство из возможностей задокументировано в wiki библиотеки FP, но на самом деле достаточное описание есть у нескольких классов. Если вы не можете найти пример, изучите код библиотеки и посмотрите, реализована ли функция вообще. Если нет, то посмотрите, насколько далеко вы можете зайти в её реализации со своей стороны или просто отправьте сообщение об ошибке в библиотеку. Обычно разработчики Facepunch очень отзывчивы, они могут вам рассказать, работают ли они над чем-то или нет, и даже могут посодействовать вам в помощи сообществу, если вы решите реализовать что-то самостоятельно.
Подписчики и обратные вызовы
Если вам нужно получить список всех лобби в игре с помощью библиотеки FP, то вы напишете следующее:
Заметьте, что здесь не выполняется возврат или присваивание. Но в таком случае как нам получить то, что мы запрашиваем? После вызова функции в Steamworks бэкенд Steam подготавливает всё необходимое, а затем отправляет вам данные через «обратный вызов» (callback). Steam почти буквально «вызывает вас», чтобы сообщить: «Эй, твои данные готовы!».
Для получения вызова нам нужно «поднять трубку», или, как это обычно называется, «подписаться» на обратный вызов. Это реализуется определением функции, получаемой передаваемые обратным вызовом данные. Иногда он не передаёт данных, тогда обратный вызов используется в основном как «обработчик» или как способ сообщить, что можно продолжать. Когда вы находитесь внутри обработчика обратного вызова, можно безопасно продолжать работу. Вот пример:
Понимание этого паттерна будет очень полезно при использовании библиотеки. Также очень полезно разобраться в том, что же в действительности делает Steamworks, так что стоит изучить его документацию. Если вы хотите более подробно изучить принцип работы, рекомендую прочитать документацию Valve по этой теме, а также некоторые разделы веб-сайта Steamworks.NET.
Двигаемся дальше
С этого момента вы можете делать всё, что угодно! Valve не ставит никаких требований, но если уж вы попали на платформу, то очевидно, что вам в первую очередь интересно связаться с ней и с её сообществом теми способами, которые предоставила Valve. После регистрации в Steam Direct вам достаточно просто заменить AppID и перенести все функции Steam, которые вы реализовали для тестового AppID.
Steamworks sdk redist что это
Введение
API Steamworks предоставляет играм все преимущества Steam благодаря доступу ко всем основным системам с помощью API. Сюда входят, к примеру, постановка игры на паузу в момент открытия пользователем оверлея Steam, приглашение друзей в игру, достижения Steam, соревнование игроков в списках лидеров Steam и так далее.
В разделе Справочник по API Steamworks задокументированы все интерфейсы, функции, обратные вызовы и типы, поддерживаемые в API.
Интеграция с API Steamworks не требуется для доставки продуктов пользователям Steam, но мы рекомендуем её реализацию, поскольку она позволяет удовлетворить ожидания пользователей Steam.
С чего начать
ВНИМАНИЕ: API Steamworks официально поддерживает C++, использование Microsoft Visual Studio 2008+ на Microsoft Windows, GCC 4.6+ и Clang 3.0+ на macOS и SteamOS / Linux. Если вы используете сторонние движки или отличные от C++ языки программирования, вам следует ознакомиться с разделом Commercial engine and non-C++ language support, где могут быть изложены инструкции, относящиеся к вашему движку или выбранному языку. В некоторых случаях вы можете пропустить некоторые из нижеследующих инструкций.
Инициализация и завершение работы
SteamAPI_Init
После того, как вы настроите API Steamworks в своём проекте, вы можете начать использовать его, вызывая SteamAPI_Init для инициализации. Это настроит глобальное состояние и заполнит его указателями интерфейсов, доступных с помощью глобальных функций, соответствующих названиям интерфейсов. Вызов SteamAPI_Init и получение сообщения о его успехе ОБЯЗАТЕЛЬНЫ до выполнения вызовов к другим интерфейсам!
SteamAPI_RestartAppIfNecessary
SteamAPI_RestartAppIfNecessary проверяет, запущен ли исполняемый файл через Steam, и если нет, перезапускает его в Steam.
Это необязательно, но крайне рекомендуется, поскольку контекст Steam (включая номер приложения) не будет настроен, если пользователь запустит исполняемый файл напрямую. Если это случится, вызов SteamAPI_Init не состоится, и вы не сможете использовать API Steamworks.
Если вы решите его использовать, это должен быть первый вызов Steamworks, выполняемый непосредственно перед SteamAPI_Init.
Если же будет возвращено значение false, игра была запущена клиентом, и никаких действий предпринимать не нужно. В то же время, если файл steam_appid.txt имеется в наличии, этот вызов всегда будет возвращать false. Это позволяет разрабатывать и тестировать игру без необходимости запускать её из клиента. Не забудьте удалить steam_appid.txt перед отправкой игры в хранилище Steam!
ВНИМАНИЕ: если вы используете оболочку DRM для первичного исполняемого файла, эта проверка необязательна, поскольку оболочка выполнит её самостоятельно.
SteamAPI_Shutdown
Когда вы завершите использование API Steamworks вы должны вызвать SteamAPI_Shutdown, чтобы освободить ресурсы, используемые приложением в Steam. Если возможно, вы должны сделать этот вызов при завершении процесса.
Этот вызов не отключит оверлей от приложения, поскольку нет гарантии, что ваш API выведения изображений перестал его использовать.
Интерфейсы Steamworks
API Steamworks состоит из множества интерфейсов, которые предоставляют ограниченную, конкретную функциональность.
Вы можете использовать интерфейсы для подобных вызовов:
Обратные вызовы
Обратные вызовы — один из самых важных элементов Steamworks, который позволяет получать данные из Steam асинхронно, без необходимости блокировать игру. Цель обратных вызовов в том, чтобы предоставить простой, легкий, типобезопасный, потокобезопасный метод представления событий любому объекту, зарегистрированному в качестве слушателя.
Обратные вызовы обычно срабатывают, когда то или иное событие происходит в Steam, к примеру когда друг входит в сеть или выходит из неё, или в результате функций API. Каждый обратный вызов состоит из структуры (struct), содержащей уникальный идентификатор и небольшой набор данных. Обратные вызовы объявлены в заголовочных файлах ISteam*.h и сгруппированы по интерфейсам, которым они принадлежат в наибольшей степени.
ВНИМАНИЕ: Обратите внимание: вы должны убедиться, что Steam инициализирован до того, как создавать объекты, которые слушают обратные вызовы.
Пример
Один из обратных вызовов, который вы, скорее всего, будете использовать, — это ISteamFriends::GameOverlayActivated_t. Как и подразумевает его название, он отправляется всякий раз, когда пользователь открывает или закрывает оверлей.
Результаты вызова
Многие методы Steamworks используют результаты вызова вместо обратных вызовов для отправки асинхронных результатов вызова функции. Разница между обратным вызовов и результатом вызова состоит в том, что обратные вызовы транслируются всем слушателям, а результаты вызова — только определённому слушателю. Как и в случае с обратными вызовами, игре необходимо вызвать SteamAPI_RunCallbacks для подготовки отправки результатов вызовов их слушателям.
ВНИМАНИЕ: Обратите внимание: обратные вызовы и результаты вызова не взаимозаменимы. Вы получите информацию о событии только так или иначе, но не с помощью обоих средств. Вы должны убедиться, что слушатель зарегистрирован для нужного типа события!
Результаты вызова должны быть созданы в качестве члена в структуре или классе при помощи типа CCallResult.
Пример
Manual Callback Dispatch
Steam Game Servers
The Steamworks API includes support for running game servers as well as regular clients. A game server, in Steamworks API terms, is an entity in the system that normal users connect to to play multi-player games. This can be connecting over the Internet to a remote game server, or connecting locally to a game server that’s in the same process as the client. Game servers have their own set of API functions to use, and their own unique Steam ID for other users to refer to them by.
See Приложение-образец с API Steamworks (SpaceWar) for a fully loaded example of using the game server API.
Unlike a game, a dedicated server will usually be run in an environment where there is no Steam Client installed to provide the latest steamworks binaries. In order for the dedicated server to have the latest steam binaries, you will need to include the Dedicated Server Redistributables with your app. Log into partner.steamgames.com and navigate to the technical settings for your app. Then look under «Installation / Redistributables» and check «Dedicated Server Redistributables»
Commercial engine and non-C++ language support
If you’re using a commercial game engine or a language other than C or C++ you will want to see what level of support for the Steamworks API is provided for it.
In some engines they provide native built-in support, for others you may need a third-party solution.
If your engine does not have native support you can use the Steam Web API to access many features that Steam supports.
Regardless of how the Steamworks SDK is implemented in your engine you will need to have the latest Steamworks SDK to upload your application to Steam.
ВНИМАНИЕ: If some of the software you are shipping on steam is available under a restrictive open source license then please see Распространение приложений с открытым кодом в Steam.
Here are some common engines that people routinely use to ship games on Steam and the relevant documentation on how to get started using the Steamworks SDK with them.
ВНИМАНИЕ: Valve does not in any way endorse any of these engines or the third-party solutions. This list is sorted exclusively by name, and is in no way comprehensive, it exists solely as a starting guide. Engines will only be listed if they include native support or have a third-party solution that fits the guidelines. Third-party solutions will only be listed if they are kept reasonably up to date with the Steamworks SDK, are freely available under a permissive license (See: Распространение приложений с открытым кодом в Steam), and have a thread on the Steamworks Discussion Board. We recommend that you consult the community to see which option would work best for your specific setup.
Движки:
Языки:
Flat interface for binding to other languages
The SDK has a few features to facilitate the creation of binding layers for other languages.
Technical Details
Steam uses a variety of techniques to expose functionality to your application. It’s by no means critical to understand exactly how the Steamworks API works but it’s fairly simple and can be useful in planning out how to code your game with Steam integration in mind.