Документация Steamworks
Скриншоты Steam

Введение

Пользователь может делать скриншоты в любой игре с поддержкой оверлея Steam, а Steamworks предоставляет набор API, которые позволяют взаимодействовать с этой системой. API скриншотов позволяет делать скриншоты, добавлять их в библиотеку скриншотов пользователей вместе с метаданными (к примеру, о локации в игре), а также помечать на изображении появившихся на нём пользователей.
ВНИМАНИЕ: для работы системы скриншотов в игре должен быть активирован оверлей Steam.

Для создания скриншота пользователи могут нажать заданную в Steam кнопку (по умолчанию F12).

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

screenshot_hotkey.png

Загрузчик скриншотов

При выходе из игры автоматически откроется окно загрузки скриншотов, в котором будут представлены все сделанные во время игровой сессии скриншоты. Пользователи могут отключить это поведение в меню «Настройки» -> Cloud, где можно снять галочку с опции «Открывать окно загрузки скриншотов после выхода из игры, если были сделаны новые».

screenshot_uploader.png

Загрузчик скриншотов также в любое время можно открыть в меню «Вид» -> «Скриншоты» или нажав «Скриншоты» в оверлее.

Если пользователь загрузит скриншоты, они будут показаны в его профиле и в центре сообщества игры.

API скриншотов

В SDK Steamworks предоставлен доступ к ISteamScreenshots. Он позволяет вам использовать расширенные функции и интегрировать систему скриншотов в игру.

По умолчанию Steam контролирует создание скриншотов, но вы можете перехватить этот процесс, используя ISteamScreenshots::HookScreenshots. Если вы воспользуетесь этой фукцией, вы будете получать обратный вызов ScreenshotRequested_t, когда пользователь нажимает кнопку создания скриншотов. ISteamScreenshots::IsScreenshotsHooked проверяет, есть ли у вас контроль над скриншотами.

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

Если вы хотите делать скриншоты с помощью другой кнопки или автоматически в определённой точке игры, к примеру, в конце раунда, вы можете сделать это программно, используя ISteamScreenshots::TriggerScreenshot, записав RGB-данные скриншота с помощью ISteamScreenshots::WriteScreenshot или добавив файл с диска с помощью ISteamScreenshots::AddScreenshotToLibrary/ISteamScreenshots::AddVRScreenshotToLibrary.