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

Введение

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

По умолчанию пользователи открывают оверлей в игре, нажав SHIFT+TAB, но они могут сменить это сочетание в настройках Steam.

Требования

В игре не нужно делать ничего специального, чтобы оверлей работал, он автоматически добавляется к любой игре, запущенной через Steam. Во время разработки или при запуске игры в отладчике оверлей загружается при вызове SteamAPI_Init. Поэтому вам придётся вызвать SteamAPI_Init до инициализации устройства OpenGL или D3D, в противном случае обработать создание устройства не удастся.

Оверлей поддерживает игры, которые используют DirectX версий с 7 по 12, OpenGL, Metal или Vulkan. В играх, использующих собственные интерфейсы растеризации, оверлей работать не будет.
Обратите внимание: оверлей автоматически выключен для типа приложений «программное обеспечение». Если вам нужно включить оверлей, пожалуйста, попросите об этом поддержку.

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

Далее представлен набор функций, которые дают прямой доступ к открытию оверлея в игре.
  • ISteamFriends::ActivateGameOverlay
    Эта функция открывает оверлей с указанным диалоговым окном.
  • ISteamFriends::ActivateGameOverlayToUser
    Эта функция открывает оверлей с указанным диалоговым окном, и пользователь передаётся в качестве контекста.
  • ISteamFriends::ActivateGameOverlayToWebPage
    Эта функция открывает оверлей с браузером, в котором открывается указанная ссылка. Она должна быть неусечённой, к примеру, http://www.steamgames.com/.
  • ISteamFriends::ActivateGameOverlayToStore
    Эта функция открывает оверлей для покупки доп. контента к текущей игре (см. Дополнительный контент (DLC))
  • ISteamUtils::SetOverlayNotificationPosition
    Задаёт угол экрана, в котором появится всплывающее уведомление (toast notification). По умолчанию — правый нижний угол.
  • ISteamUtils::IsOverlayEnabled
    Возвращает true, если оверлей открыт и у пользователя есть доступ к нему. Открытие и перехват игрового процесса оверлеем может занять несколько секунд, так что пока оверлей загружается, эта функция будет возвращать false.

Обмен информацией с игрой из оверлея

Steam отправляет следующие сигналы (обратные вызовы) вашей игре, когда пользователь предпринимает то или иное действие в оверлее:
  • GameOverlayActivated_t
    Отправляется, когда оверлей открывается или закрывается. Это можно использовать для приостановки или возобновления игры в однопользовательских играх.
  • GameServerChangeRequested_t
    Отправляется, когда пользователь выбирает игру друга, чтобы подключиться к ней. Содержит описание игрового сервера.
  • GameLobbyJoinRequested_t
    Отправляется, когда пользователь выбирает игру друга, чтобы подключиться к ней. Содержит описание лобби.

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

Обратите внимание: вы можете найти дополнительную информацию на сайте службы поддержки, к примеру, в статье «Оверлей Steam не включается».

В. Почему оверлей вызывает сбои в моём приложении?

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

Для диагностирования, к примеру, сбоев работы оверлея с DirectX, постарайтесь определить, что вызвало некорректное состояние D3D, включив все уровни отображения ошибок в отладчике D3D (информация, предупреждения, ошибки, уведомления). Это может подсказать, какие ресурсы могли быть потеряны. Если этим способом ничего не найдено, проблема с ошибками памяти может быть более общей. Если сбой возникает при закрытии, вероятно, проблема заключается в порядке закрытия игры: очистка не выполняется должным образом.

Если после отладки в приложении всё еще возникают сбои, пожалуйста, сообщите нам в группе разработчиков.

В. Почему оверлей не открывается в моём приложении?

О. Сначала убедитесь, что вы выполнили все требования. Если вы выполнили требования, но оверлей всё ещё не открывается, убедитесь, что вы запускаете приложение в клиенте Steam: либо напрямую из лобби или списка быстрого запуска, либо вызвав SteamAPI_RestartAppIfNecessary.