Документация Steamworks
steam_api.h
Основа для инициализации и доступа к API Steamworks.

Все перечисленные здесь типы являются глобальными определениями и не связаны с каким-либо конкретным API.

Функции


Эти глобальные функции, которые не требуют настройки интерфейсов. Подробнее они описаны в документации API Steamworks.

SteamAPI_Init

S_API bool S_CALLTYPE SteamAPI_Init();
Инициализирует API Steamworks.

Для получения дополнительной информации см. раздел «Инициализация и завершение работы».

Возвращаемые значения: bool
true означает, что все необходимые интерфейсы получены и доступны.
false указывает на одно из следующих условий:
  • Не запущен клиент Steam. Запуск клиента Steam обязателен для корректной работы интерфейсов Steamworks.
  • Клиенту Steam не удалось определить App ID игры. Если вы запускаете приложение напрямую из исполняемого файла или отладчика, в папке игры должен находится файл steam_appid.txt, в котором должен присутствовать исключительно номер приложения. Steam попытается найти этот файл в текущей папке. Если вы запускаете исполняемый файл из другой папки, вам может потребоваться переместить steam_appid.txt.
  • Ваше приложение запущено не с тем же пользовательским контекстом в операционной системе, что и клиент Steam, к примеру, одно запущено под обычным пользователем, а второе — с правами администратора.
  • Убедитесь, что активный аккаунт Steam владеет приложением. Игру должно быть видно в вашей библиотеке Steam.
  • Приложение не настроено полностью, к примеру, Release State: Unavailable, или в нём отсутствуют комплекты по умолчанию.

Пример:
int main() { if ( SteamAPI_RestartAppIfNecessary( k_uAppIdInvalid ) ) // Замените вашим AppID { return 1; } if ( !SteamAPI_Init() ) { printf( "Fatal Error - Steam must be running to play this game (SteamAPI_Init() failed).\n" ); return 1; } return 0; }

SteamAPI_ReleaseCurrentThreadMemory

S_API void S_CALLTYPE SteamAPI_ReleaseCurrentThreadMemory();
Высвобождает внутреннюю память API Steamworks, связанную с потоком вызовов.

Большинство функций API Steamworks выделяют небольшой локальный по отношению к потоку объём памяти для хранения параметров. Вызов данной функции вручную его высвобождает. Она автоматически вызывается SteamAPI_RunCallbacks, так что программе, которая получает доступ к API Steamworks из одного потока, не требуется явно вызывать данную функцию.

SteamAPI_RestartAppIfNecessary

S_API bool S_CALLTYPE SteamAPI_RestartAppIfNecessary( uint32 unOwnAppID );
НазваниеТипОписание
unOwnAppIDuint32AppID данного продукта.

Проверяет, запущен ли исполняемый файл через Steam, и если нет, перезапускает его в Steam.

Для получения дополнительной информации см. раздел «Инициализация и завершение работы».

Возвращает: bool
Если возвращается true, будет запущен клиент Steam (если это необходимо), а затем через клиент и игра. Вы должны завершить свой процесс как можно скорее. В этот момент запускается steam://run/<AppId>, так что необязательно будет запущен тот исполняемый файл, который вызвал эту функцию, поскольку всегда будет перезапускаться версия, установленная в папке с библиотекой Steam.

Если же будет возвращено значение false, игра была запущена клиентом, и никаких действий предпринимать не нужно. В то же время, если файл steam_appid.txt имеется в наличии, этот вызов всегда будет возвращать false. Это позволяет разрабатывать и тестировать игру без необходимости запускать её из клиента. Не забудьте удалить steam_appid.txt перед отправкой игры в хранилище Steam!

К примеру:
int main() { if ( SteamAPI_RestartAppIfNecessary( k_uAppIdInvalid ) ) // Замените вашим AppID { return 1; } if ( !SteamAPI_Init() ) { printf( "Fatal Error - Steam must be running to play this game (SteamAPI_Init() failed).\n" ); return 1; } return 0; }

SteamAPI_RunCallbacks

S_API void S_CALLTYPE SteamAPI_RunCallbacks();
Подготавливает обратные вызовы и результаты вызовов ко всем зарегистрированным слушателям.

Лучше всего вызывать с частотой 10 Гц, поскольку чем больше времени проходит между вызовами, тем больше возможная задержка между получением событий и результатами от API Steamworks. Большинство игр делают этот вызов один раз за одну отрисовку кадра. Во время вызова будут вызваны все функции, зарегистрированные как слушатели в контексте потока, где был отправлен вызов.

SteamAPI_RunCallbacks безопасно вызывать из нескольких потоков одновременно, но если вы это сделаете, код обратного вызова может быть выполнен в любом из потоков. Альтернатива заключается в том, чтобы вызывать SteamAPI_RunCallbacks только из главного потока, а из других потоков — регулярно вызывать SteamAPI_ReleaseCurrentThreadMemory.

SteamAPI_SetMiniDumpComment

S_API void S_CALLTYPE SteamAPI_SetMiniDumpComment( const char *pchMsg );
НазваниеТипОписание
pchMsgconst char *Сообщение, прикрепляемое к минидампу. Нуль-терминированная строка.

Создаёт произвольный комментарий для вставки в минидамп.

К примеру, вы можете включить в минидамп информацию об уровне, на котором находился игрок, сколько игроков было на сервере, объём свободной памяти и проч.
Это необходимо вызвать до SteamAPI_WriteMiniDump.
Внимание: работает только на 32-битной Windows!

SteamAPI_Shutdown

S_API void S_CALLTYPE SteamAPI_Shutdown();
Закрывает API Steamworks, высвобождает память и указатели.

Если возможно, вы должны сделать этот вызов при завершении процесса.

Этот вызов не отключит оверлей от приложения, поскольку нет гарантии, что ваш API выведения изображений перестал его использовать.

SteamAPI_WriteMiniDump

S_API void S_CALLTYPE SteamAPI_WriteMiniDump( uint32 uStructuredExceptionCode, void* pvExceptionInfo, uint32 uBuildID );
НазваниеТипОписание
uStructuredExceptionCodeuint32Структурированный код исключения.
pvExceptionInfovoid*Указатели исключений, содержащие информацию об исключениях.
uBuildIDuint32ID сборки для отслеживания, какая версия приложения отправила данный минидамп. Это не тот же самый BuildID, который используется в Steam, он используется только для сообщений о сбоях.

Записывает и отправляет минидампы с сообщениями о сбоях.

Дополнительная информация доступна в разделе «Отчёты об ошибках».

Вы можете добавить необязательный комментарий, вызвав SteamAPI_SetMiniDumpComment до вызова этой функции.
Внимание: поддерживается только 32-битная версия Windows.

К примеру:
#ifdef _WIN32 #include <Windows.h> void MiniDumpFunction( unsigned int nExceptionCode, EXCEPTION_POINTERS *pException ) { // Вы можете создать произвольный комментарий для вставки в минидамп здесь, // это может быть уровень, на котором находился игрок, сколько игроков было на сервере, // сколько памяти было свободно и пр... SteamAPI_SetMiniDumpComment( "Minidump comment: SteamworksExample.exe/n" ); // 0 здесь — ID сборки, мы его не устанавливаем SteamAPI_WriteMiniDump( nExceptionCode, pException, 0 ); } int RealMain( HINSTANCE hInstance, LPSTR lpCmdLine, int nCmdShow ) { __debugbreak(); return 0; } int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { // Всё, что здесь делается — вызов реальной основной функции после настройки _set_se_translator // Это позволяет отлавливать исключения и передавать сообщения об ошибках в Steam. // // Обратите внимание, что для структурированной обработки исключений // флаги компилятора должны быть настроены корректно. if ( IsDebuggerPresent() ) { // При отладке мы не хотим маскировать исключения (или отправлять их в Steam!). // Если вы хотите пошагово пройти все строки обработчика исключений // подключите отладчик после запуски игры вне отладчика. return RealMain( lpCmdLine, hInstance, nCmdShow ); } _set_se_translator( MiniDumpFunction ); try // это обеспечит работу SE translator { return RealMain( hInstance, lpCmdLine, nCmdShow ); } catch( ... ) { return -1; } } #endif

Структуры

Далее приведён список структур, которые возвращают функции в steam_api, и с которыми они взаимодействуют.

CGameID

Уникальный глобальный идентификатор игр Steam.

CSteamID

Уникальный глобальный идентификатор аккаунтов, групп, лобби и чатов в Steam.
См. EAccountType и EUniverse.

Перечисления

Далее приведён список перечислений, которые определены для использования с steam_api.

EAccountType

Типы аккаунта Steam. Используется для внутренних целей в CSteamID.

НазваниеЗначениеОписание
k_EAccountTypeInvalid0Используется для недействительных Steam ID.
k_EAccountTypeIndividual1Обычный пользовательский аккаунт.
k_EAccountTypeMultiseat2Многопользовательский аккаунт (к примеру, интернет-кафе).
k_EAccountTypeGameServer3Аккаунт-постоянный игровой сервер (неанонимный).
k_EAccountTypeAnonGameServer4Аккаунт анонимного игрового сервера.
k_EAccountTypePending5На рассмотрении.
k_EAccountTypeContentServer6Внутренний аккаунт контент-сервера Valve.
k_EAccountTypeClan7Группа Steam (клан).
k_EAccountTypeChat8Групповой чат и лобби Steam.
k_EAccountTypeConsoleUser9Фиктивный SteamID для локального аккаунта PlayStation на PS3 или аккаунта Live на 360 и проч.
k_EAccountTypeAnonUser10Анонимный пользовательский аккаунт. (Используется для создания аккаунта или сброса пароля)
k_EAccountTypeMax11В этом поле не более 16 предметов.

EAppOwnershipFlags

Флаги, представляющие информацию о владении приложением (используются только внутри Steam).

НазваниеЗначениеОписание
k_EAppOwnershipFlags_None0x0000Неизвестно.
k_EAppOwnershipFlags_OwnsLicense0x0001Пользователь владеет приложением.
k_EAppOwnershipFlags_FreeLicense0x0002Пользователь не заплатил за приложение.
k_EAppOwnershipFlags_RegionRestricted0x0004Владеет приложением, но не имеет права играть в данном регионе.
k_EAppOwnershipFlags_LowViolence0x0008Владеет версией с низким уровнем насилия.
k_EAppOwnershipFlags_InvalidPlatform0x0010Приложение не поддерживается на текущей платформе.
k_EAppOwnershipFlags_SharedLicense0x0020Общая лицензия получена на авторизованном устройстве с помощью функции Steam Family Sharing.
k_EAppOwnershipFlags_FreeWeekend0x0040Владение по лицензии «Бесплатные выходные».
k_EAppOwnershipFlags_RetailLicense0x0080Владеет розничной лицензией на игру (розничные ключи и проч.) (Устарело)
k_EAppOwnershipFlags_LicenseLocked0x0100Общая лицензия заблокирована (используется) другим пользователем.
k_EAppOwnershipFlags_LicensePending0x0200Владеет приложением, но транзакция по-прежнему рассматривается. Пользователь пока не может устанавливать игру и играть в неё.
k_EAppOwnershipFlags_LicenseExpired0x0400Больше не владеет приложением, поскольку истёк срок действия лицензии.
k_EAppOwnershipFlags_LicensePermanent0x0800Постоянная лицензия, не заимствованная, не гостевая, не «Бесплатные выходные» и проч.
k_EAppOwnershipFlags_LicenseRecurring0x1000Периодическая подписка, в рамках которой с пользователя время от времени списываются средства.
k_EAppOwnershipFlags_LicenseCanceled0x2000Лицензия помечена как отменённая, но может быть активной, если является периодической.
k_EAppOwnershipFlags_AutoGrant0x4000Владение является результатом автоматической выдачи.
k_EAppOwnershipFlags_PendingGift0x8000У пользователя есть неактивированный подарок.
k_EAppOwnershipFlags_RentalNotActivated0x10000Прокат не активирован.
k_EAppOwnershipFlags_Rental0x20000Выдано напрокат.
k_EAppOwnershipFlags_SiteLicense0x40000Получено на площадке Steam.

EAppReleaseState

Состояние выпуска приложения (используются только внутри Steam).

НазваниеЗначениеОписание
k_EAppReleaseState_Unknown0Неизвестно, либо невозможно получить информацию о приложении, либо информация о лицензии отсутствует.
k_EAppReleaseState_Unavailable1Даже если пользователь владеет игрой, он её не видит.
k_EAppReleaseState_Prerelease2Можно купить, игра будет видна в списке игр, но ничего больше.
k_EAppReleaseState_PreloadOnly3Владельцы могут предзагрузить приложение, но не запустить его.
k_EAppReleaseState_Released4Владельцы могут загрузить приложение и запустить его.

EAppType

Тип приложения. Больше информации представлено в разделе «Типы приложений» (используются только внутри Steam)

НазваниеЗначениеОписание
k_EAppType_Invalid0x000Тип приложения неизвестен или недействителен.
k_EAppType_Game0x001Игра, тип по умолчанию.
k_EAppType_Application0x002Программное обеспечение.
k_EAppType_Tool0x004Наборы средств разработки, редакторы и выделенные серверы.
k_EAppType_Demo0x008Демоверсия игры.
k_EAppType_Media_DEPRECATED0x010Использовалось для трейлеров игр. Сейчас это просто видео в сети.
k_EAppType_DLC0x020Дополнительный контент.
k_EAppType_Guide0x040Руководства к играм, PDF-файлы и проч.
k_EAppType_Driver0x080Средство обновления драйверов (ATI, Razor и проч.)
k_EAppType_Config0x100Скрытое приложение, используемое для настройки функций Steam (рюкзаки, скидки и проч.)
k_EAppType_Hardware0x200Устройство Steam (Steam Machine, Steam Controller, Steam Link и проч.)
k_EAppType_Franchise0x400Коллекции нескольких приложений, к примеру, фильмов, сериалов или игр.
k_EAppType_Video0x800Видеокомпонент фильма или сериала (полный метр, эпизод, предпросмотр, фильм о кулуарах и проч.)
k_EAppType_Plugin0x1000Подключаемые типы для других приложений.
k_EAppType_Music0x2000Музыкальные файлы.
k_EAppType_Series0x4000Приложение-контейнер для сериала.
k_EAppType_Shortcut0x40000000Просто ярлык, используется только на стороне клиента.
k_EAppType_DepotOnly0x80000000Заглушка. Используется, поскольку хранилища и приложения имеют общее пространство имён.

EAuthSessionResponse

Значения обратных вызовов для ValidateAuthTicketResponse_t, возвращаемые в ответ на ISteamUser::BeginAuthSession и ISteamGameServer::BeginAuthSession.

НазваниеЗначениеОписание
k_EAuthSessionResponseOK0Steam удостоверился, что пользователь в сети, билет действителен и не использовался ранее.
k_EAuthSessionResponseUserNotConnectedToSteam1Запрошенный пользователь не подключен к Steam.
k_EAuthSessionResponseNoLicenseOrExpired2У пользователя нет лицензии на приложение или истёк срок действия билета.
k_EAuthSessionResponseVACBanned3У пользователя есть блокировка VAC для данной игры.
k_EAuthSessionResponseLoggedInElseWhere4Пользователь вошёл в Steam в другом месте и сессия с игрой была отключена.
k_EAuthSessionResponseVACCheckTimedOut5Системе VAC не удалось выполнить античит-проверку данного пользователя.
k_EAuthSessionResponseAuthTicketCanceled6Билет отменён тем, кто его выпустил.
k_EAuthSessionResponseAuthTicketInvalidAlreadyUsed7Билет уже был использован, он недействителен.
k_EAuthSessionResponseAuthTicketInvalid8Билет не относится к пользователю, подключённому в данный момент к Steam.
k_EAuthSessionResponsePublisherIssuedBan9Пользователь заблокирован в данной игре. Блокировка выпущена с помощью веб-API, а не в системе VAC.

EBeginAuthSessionResult

Результаты, возвращаемые ISteamUser::BeginAuthSession и ISteamGameServer::BeginAuthSession.

НазваниеЗначениеОписание
k_EBeginAuthSessionResultOK0Билет действителен для данной игры и данного SteamID.
k_EBeginAuthSessionResultInvalidTicket1Билет недействителен.
k_EBeginAuthSessionResultDuplicateRequest2Билет для этого SteamID уже отправлен.
k_EBeginAuthSessionResultInvalidVersion3Билет относится к несовместимой версии интерфейса.
k_EBeginAuthSessionResultGameMismatch4Билет не относится к данной игре.
k_EBeginAuthSessionResultExpiredTicket5Срок действия билета истёк.

EBroadcastUploadResult

Результат отправки трансляции из BroadcastUploadStop_t.

НазваниеЗначениеОписание
k_EBroadcastUploadResultNone0Состояние трансляции неизвестно.
k_EBroadcastUploadResultOK1Трансляция прошла удачно, проблем нет.
k_EBroadcastUploadResultInitFailed2Инициализация трансляции не удалась.
k_EBroadcastUploadResultFrameFailed3Не удалось выполнить отправку кадров трансляции.
k_EBroadcastUploadResultTimeout4Время на отправку трансляции истекло.
k_EBroadcastUploadResultBandwidthExceeded5Трансляция отправила слишком много данных.
k_EBroadcastUploadResultLowFPS6Число кадров трансляции в секунду слишком мало.
k_EBroadcastUploadResultMissingKeyFrames7Трансляция отправляет недостаточно ключевых кадров.
k_EBroadcastUploadResultNoConnection8Клиенту трансляции не удалось подключиться к узлу ретрансляции.
k_EBroadcastUploadResultRelayFailed9Узел ретрансляции остановил отправку.
k_EBroadcastUploadResultSettingsChanged10Клиент изменил настройки трансляции.
k_EBroadcastUploadResultMissingAudio11Клиенту не удалось отправить аудиоданные.
k_EBroadcastUploadResultTooFarBehind12Клиенты слишком медленно отправляли данные.
k_EBroadcastUploadResultTranscodeBehind13Серверу не удалось справиться с перекодировкой.

EChatEntryType

Типы сообщений в чатах.

Возвращается ISteamFriends::GetFriendMessage, ISteamFriends::GetClanChatMessage и ISteamMatchmaking::GetLobbyChatEntry.

НазваниеЗначениеОписание
k_EChatEntryTypeInvalid0Недействительный тип.
k_EChatEntryTypeChatMsg1Нормальное текстовое сообщение от другого пользователя.
k_EChatEntryTypeTyping2Другой пользователь печатает, не используется в многопользовательских чатах.
k_EChatEntryTypeInviteGame3Приглашение от другого пользователя в его текущую игру.
k_EChatEntryTypeEmote4Текстовое сообщение с эмотиконом (устарело, используется как ChatMsg).
k_EChatEntryTypeLeftConversation6Пользователь покинул беседу (закрыл окно чата).
k_EChatEntryTypeEntered7Пользователь вошёл в беседу, используется в многопользовательских чатах и групповых чатах.
k_EChatEntryTypeWasKicked8Пользователь выгнан (данные: SteamID выгнавшего пользователя).
k_EChatEntryTypeWasBanned9Пользователь заблокирован (данные: SteamID заблокировавшего пользователя).
k_EChatEntryTypeDisconnected10Пользователь отсоединён.
k_EChatEntryTypeHistoricalChat11Сообщение в чате из истории пользователя или офлайн-сообщение.
k_EChatEntryTypeLinkBlocked14Ссылка удалена фильтром чата.

EChatRoomEnterResponse

Ответ на попытку входа в чат.

НазваниеЗначениеОписание
k_EChatRoomEnterResponseSuccess1Готово!
k_EChatRoomEnterResponseDoesntExist2Чат не существует (скорее всего закрыт).
k_EChatRoomEnterResponseNotAllowed3Общий отказ: у пользователя нет разрешения на присоединение к чату.
k_EChatRoomEnterResponseFull4Чат достиг предельного размера.
k_EChatRoomEnterResponseError5Неожиданная ошибка.
k_EChatRoomEnterResponseBanned6Вы заблокированы в данном чате и не можете присоединиться.
k_EChatRoomEnterResponseLimited7Присоединение к данному чату запрещено, поскольку ваш аккаунт ограничен (нет средств).
k_EChatRoomEnterResponseClanDisabled8Попытка присоединиться к чату клана, когда клан заблокирован или отключен.
k_EChatRoomEnterResponseCommunityBan9Попытка присоединиться к чату, когда аккаунт пользователя заблокирован в сообществе.
k_EChatRoomEnterResponseMemberBlockedYou10Присоединиться не удалось: пользователь в чате заблокировал присоединение.
k_EChatRoomEnterResponseYouBlockedMember11Присоединиться не удалось: вы заблокировали пользователя, находящегося в чате.
k_EChatRoomEnterResponseRatelimitExceeded15Присоединиться не удалось: слишком много попыток подключения за короткий период времени.

EChatSteamIDInstanceFlags

Специальные флаги для аккаунтов чатов: они занимают 8 верхних битов «экземпляра» SteamID, оставляя 12 битов для действительных экземпляров.

НазваниеЗначениеОписание
k_EChatAccountInstanceMask0x00000FFF8 верхних битов являются флагами.
k_EChatInstanceFlagClan( k_unSteamAccountInstanceMask + 1 ) >> 1SteamID — для группы Steam.
k_EChatInstanceFlagLobby( k_unSteamAccountInstanceMask + 1 ) >> 2SteamID — для лобби.
k_EChatInstanceFlagMMSLobby( k_unSteamAccountInstanceMask + 1 ) >> 3SteamID — для лобби подбора игр.

EDenyReason

Значения результатов, когда клиенту не удалось подключиться или он был выгнан с игрового сервера. Получаются из GSClientDeny_t и GSClientKick_t.

НазваниеЗначениеОписание
k_EDenyInvalid0Неизвестно.
k_EDenyInvalidVersion1Клиент и сервер не одной версии.
k_EDenyGeneric2Общего характера.
k_EDenyNotLoggedOn3Клиент не залогинен.
k_EDenyNoLicense4У клиента нет лицензии на данную игру.
k_EDenyCheater5Клиент заблокирован VAC.
k_EDenyLoggedInElseWhere6Этот аккаунт используется из другого места.
k_EDenyUnknownText7
k_EDenyIncompatibleAnticheat8
k_EDenyMemoryCorruption9
k_EDenyIncompatibleSoftware10
k_EDenySteamConnectionLost11Сервер потерял соединение со Steam.
k_EDenySteamConnectionError12При соединении сервера со Steam произошла ошибка общего характера.
k_EDenySteamResponseTimedOut13Истекло время ожидания при соединении сервера со Steam.
k_EDenySteamValidationStalled14Клиент пока не авторизован Steam.
k_EDenySteamOwnerLeftGuestUser15Владелец общей игры вышел, вызывается для каждого гостя.

EGameIDType

Используется для описания типа CGameID.

НазваниеЗначениеОписание
k_EGameIDTypeApp0GameID — обычное приложение Steam.
k_EGameIDTypeGameMod1GameID — модификация.
k_EGameIDTypeShortcut2GameID — ярлык.
k_EGameIDTypeP2P3GameID — ярлык.

ELaunchOptionType

Коды определённых типов запуска. Соответствуют типам запуска в разделе «Варианты запуска», которые находятся на странице «Общие параметры установки» приложения.

Существует специальная функция BIsVRLaunchOptionType, проверяющая, является ли тип запуска вариантом VR.

НазваниеЗначениеОписание
k_ELaunchOptionType_None0Не указано.
k_ELaunchOptionType_Default1Запускает приложение в режиме по умолчанию.
k_ELaunchOptionType_SafeMode2Запускает приложение в безопасном режиме.
k_ELaunchOptionType_Multiplayer3Запускает приложение в многопользовательском режиме.
k_ELaunchOptionType_Config4Запускает инструмент настройки для этой игры.
k_ELaunchOptionType_OpenVR5Запускает игру в режиме VR с использованием OpenVR.
k_ELaunchOptionType_Server6Запускает выделенный сервер для данной игры.
k_ELaunchOptionType_Editor7Запускает редактор игры.
k_ELaunchOptionType_Manual8Открывает руководство к игре.
k_ELaunchOptionType_Benchmark9Запускает тест производительности игры.
k_ELaunchOptionType_Option110Опция общего характера, использует поле описания для названия игры.
k_ELaunchOptionType_Option211Опция общего характера, использует поле описания для названия игры.
k_ELaunchOptionType_Option312Опция общего характера, использует поле описания для названия игры.
k_ELaunchOptionType_OculusVR13Запускает игру в режиме VR с использованием SDK Oculus.
k_ELaunchOptionType_OpenVROverlay14Запускает меню оверлея OpenVR.
k_ELaunchOptionType_OSVR15Запускает игру в режиме VR с использованием SDK OSVR.
k_ELaunchOptionType_Dialog1000Показать диалоговое окно с вариантами запуска.

EMarketingMessageFlags

Внутренние флаги системы продвижения Steam, сообщающие клиенту, как обращаться с ними.

НазваниеЗначениеОписание
k_EMarketingMessageFlagsNone0
k_EMarketingMessageFlagsHighPriority1 << 0
k_EMarketingMessageFlagsPlatformWindows1 << 1
k_EMarketingMessageFlagsPlatformMac1 << 2
k_EMarketingMessageFlagsPlatformLinux1 << 3
k_EMarketingMessageFlagsPlatformRestrictions=все флаги

ENotificationPosition

Возможное положение уведомлений в оверлее. Используется с ISteamUtils::SetOverlayNotificationPosition.

НазваниеЗначениеОписание
k_EPositionTopLeft0Левый верхний угол.
k_EPositionTopRight1Правый верхний угол.
k_EPositionBottomLeft2Левый нижний угол.
k_EPositionBottomRight3Правый нижний угол.

EResult

Коды ошибок.

Эти коды возвращаются функциями, обратными вызовами, результатами вызовов как API Steamworks, так и веб-API. Та или иная функция может вернуть произвольный код ошибки EResult, изучите документацию данной функции или обратного вызова, чтобы увидеть, что именно может быть возвращено и что это означает в контексте данного вызова.
Эти коды подобны типу HRESULT в Win32 или errno в POSIX.

НазваниеЗначениеОписание
k_EResultOK1Готово!
k_EResultFail2Ошибка общего характера.
k_EResultNoConnection3Клиент Steam не подключен к серверу Steam.
k_EResultInvalidPassword5Пароль или билет недействителен.
k_EResultLoggedInElsewhere6Этот пользователь использует аккаунт из другого места.
k_EResultInvalidProtocolVer7Некорректная версия протокола.
k_EResultInvalidParam8Некорректный параметр.
k_EResultFileNotFound9Файл не найден.
k_EResultBusy10Вызванный метод занят, действие не предпринято.
k_EResultInvalidState11Вызванный объект находится в некорректном состоянии.
k_EResultInvalidName12Название некорректно.
k_EResultInvalidEmail13Указан неверный адрес эл. почты.
k_EResultDuplicateName14Название не является уникальным.
k_EResultAccessDenied15Доступ запрещён.
k_EResultTimeout16Время ожидания операции истекло.
k_EResultBanned17Этот пользователь заблокирован системой VAC.
k_EResultAccountNotFound18Аккаунт не найден.
k_EResultInvalidSteamID19Некорректный SteamID.
k_EResultServiceUnavailable20Запрошенная служба в данный момент недоступна.
k_EResultNotLoggedOn21Пользователь не залогинен.
k_EResultPending22Запрос рассматривается, он может быть в процессе обработки или ожидать ответа третьей стороны.
k_EResultEncryptionFailure23Шифрация или дешифрация не удалась.
k_EResultInsufficientPrivilege24Недостаточно полномочий.
k_EResultLimitExceeded25Лимит превышен.
k_EResultRevoked26Доступ отозван (используется для отзыва гостевого пропуска).
k_EResultExpired27Истек срок действия лицензии или гостевого пропуска, к которому пользователь пытается получить доступ.
k_EResultAlreadyRedeemed28Гостевой пропуск уже активирован на аккаунте, не может быть использован заново.
k_EResultDuplicateRequest29Этот запрос является дубликатом, действие уже произошло в прошлом, игнорируйте в этот раз.
k_EResultAlreadyOwned30Все игры, которые пользователь запросил по гостевому пропуску, уже есть на его аккаунте.
k_EResultIPNotFound31IP-адрес не найден.
k_EResultPersistFailed32Не удалось сохранить изменения в хранилище данных.
k_EResultLockingFailed33Не удалось получить блокировку доступа для данной операции.
k_EResultLogonSessionReplaced34Сеанс входа в систему был заменён.
k_EResultConnectFailed35Не удалось соединиться.
k_EResultHandshakeFailed36Не удалось подтвердить аутентификацию.
k_EResultIOFailure37Отказ устройства ввода-вывода общего характера.
k_EResultRemoteDisconnect38Соединение с удалённым сервером разорвано.
k_EResultShoppingCartNotFound39Не удалось найти запрошенную корзину.
k_EResultBlocked40Пользователь заблокировал действие.
k_EResultIgnored41Цель игнорирует отправляющего.
k_EResultNoMatch42Не найдено ничего, удовлетворяющего запросу.
k_EResultAccountDisabled43Аккаунт отключен.
k_EResultServiceReadOnly44В данный момент служба не принимает изменений.
k_EResultAccountNotFeatured45На аккаунте нет средств, поэтому функция недоступна.
k_EResultAdministratorOK46Действие позволено, но только потому, что запрос отправлен администратором.
k_EResultContentVersion47По протоколу Steam передано несоответствие версий контента.
k_EResultTryAnotherCM48Текущий сервер CM не может обслуживать пользователя, делающего запрос, пользователь должен попробовать другой.
k_EResultPasswordRequiredToKickSession49Вы уже вошли из другого места, этот кэшированный логин не удался.
k_EResultAlreadyLoggedInElsewhere50Этот пользователь использует аккаунт из другого места. (Используйте k_EResultLoggedInElsewhere вместо этого!)
k_EResultSuspended51Долго продолжающаяся операция прекращена/поставлена на паузу (к примеру, загрузка контента).
k_EResultCancelled52Операция отменена, обычно пользователем к примеру, загрузка контента).
k_EResultDataCorruption53Операция отменена, поскольку данные неправильно сформированы или безвозвратно потеряны.
k_EResultDiskFull54Операция отменена, недостаточно места на диске
k_EResultRemoteCallFailed55Удалённый или межпроцессный вызов не удался.
k_EResultPasswordUnset56Не удалось проверить пароль, так как он не задан на сервере.
k_EResultExternalAccountUnlinked57Внешний аккаунт (PlayStation, Facebook и пр.) не привязан к аккаунту Steam.
k_EResultPSNTicketInvalid58Билет PlayStation недействителен.
k_EResultExternalAccountAlreadyLinked59Внешний аккаунт (PlayStation, Facebook и пр.) уже привязан к другому аккаунту, должен явно запросить заменить или удалить связь.
k_EResultRemoteFileConflict60Синхронизация не может быть возобновлена из-за конфликта локального и удалённого файлов.
k_EResultIllegalPassword61Запрошенный новый пароль недопустим.
k_EResultSameAsPreviousValue62Новое значение равно старому. Используется для секретного вопроса и ответа.
k_EResultAccountLogonDenied63Вход в аккаунт запрещён из-за ошибки во время двухфакторной аутентификации.
k_EResultCannotUseOldPassword64Запрошенный новый пароль незаконен.
k_EResultInvalidLoginAuthCode65Вход в аккаунт запрещён из-за недействительного кода авторизации.
k_EResultAccountLogonDeniedNoMail66Вход в аккаунт запрещён из-за ошибки во время двухфакторной аутентификации: не отправлено письмо.
k_EResultHardwareNotCapableOfIPT67Устройство пользователя не поддерживает технологию защиты конфиденциальности Intel (IPT).
k_EResultIPTInitError68Технологии защиты конфиденциальности Intel (IPT) не удалось провести инициализацию.
k_EResultParentalControlRestricted69Операция не удалась из-за ограничений родительского контроля, наложенных на текущего пользователя.
k_EResultFacebookQueryError70Запрос к Facebook вернул ошибку.
k_EResultExpiredLoginAuthCode71Вход в аккаунт запрещён из-за просроченного кода авторизации.
k_EResultIPLoginRestrictionFailed72Войти в аккаунт не удалось из-за ограничения по IP.
k_EResultAccountLockedDown73Использование текущего аккаунта в данный момент заблокировано. Это произошло из-за вероятного взлома, ожидается подтверждение владения.
k_EResultAccountLogonDeniedVerifiedEmailRequired74Вход не удался, поскольку эл. почта аккаунта не подтверждена.
k_EResultNoMatchingURL75Нет ссылки, соответствующей предоставленному значению.
k_EResultBadResponse76Некорректный ответ из-за сбоя чтения, отсутствующего поля и т.п.
k_EResultRequirePasswordReEntry77Пользователь не может завершить действие, пока не введёт пароль ещё раз.
k_EResultValueOutOfRange78Введённое значение находится за пределами допустимого диапазона.
k_EResultUnexpectedError79Произошло нечто, чего не должно было произойти.
k_EResultDisabled80Запрошенная служба настроена таким образом, что она недоступна.
k_EResultInvalidCEGSubmission81Отправленные на сервер CEG файлы недействительны.
k_EResultRestrictedDevice82Используемое устройство не позволяет выполнить данное действие.
k_EResultRegionLocked83Действие не может быть выполнено, поскольку оно ограничено регионом.
k_EResultRateLimitExceeded84Временное превышение лимита, попробуйте позже. Отличается от k_EResultLimitExceeded, который может быть постоянным.
k_EResultAccountLoginDeniedNeedTwoFactor85Для входа требуется двухфакторный код.
k_EResultItemDeleted86Сущность, к которой пытаемся получить доступ, удалена.
k_EResultAccountLoginDeniedThrottle87Ошибка при попытке входа, попытайтесь активировать реакцию на возможного злоумышленника.
k_EResultTwoFactorCodeMismatch88Неверный код двухфакторного аутентификатора (Steam Guard)
k_EResultTwoFactorActivationCodeMismatch89Код активации двухфакторного аутентификатора (Steam Guard) не совпадает с отправленным.
k_EResultAccountAssociatedToMultiplePartners90Текущий аккаунт связан с несколькими партнёрами.
k_EResultNotModified91Данные не изменились.
k_EResultNoMobileDevice92К данному аккаунту не привязано мобильное устройство.
k_EResultTimeNotSynced93Представленное время находится за пределами диапазона или в недопустимом формате.
k_EResultSmsCodeFailed94Ошибка SMS-кода: не совпадает, нет ожидания, и пр.
k_EResultAccountLimitExceeded95Слишком много аккаунтов пытаются получить доступ к данному ресурсу.
k_EResultAccountActivityLimitExceeded96Слишком много изменений в этом аккаунте.
k_EResultPhoneActivityLimitExceeded97Слишком много изменений для этого номера телефона.
k_EResultRefundToWallet98Невозможно вернуть средства на использованный способ оплаты, необходимо использовать кошелёк.
k_EResultEmailSendFailure99Невозможно отправить письмо.
k_EResultNotSettled100Невозможно выполнить операцию, пока платёж не прошёл.
k_EResultNeedCaptcha101Пользователю необходимо отправить действительную капчу.
k_EResultGSLTDenied102Токен входа на игровой сервер, принадлежащий владельцу этого билета, был заблокирован.
k_EResultGSOwnerDenied103Владелец игрового сервера заблокирован по какой-то другой причине: заблокирован аккаунт, получил блокировку в сообществе или в системе VAC, не указан номер телефона и проч.
k_EResultInvalidItemType104Тип объекта, в отношении которого запрошено действие, недействителен.
k_EResultIPBanned105IP-адресу запрещено выполнять данное действие.
k_EResultGSLTExpired106Из-за бездействия истек срок действия токен входа на игровой сервер (GSLT), его можно использовать заново после сброса.
k_EResultInsufficientFunds107У пользователя недостаточно средств для выполнения действия.
k_EResultTooManyPending108Слишком много запрошенного уже ожидает рассмотрения.

ESteamUserStatType

Используемые для внутренних целей поля для хранения пользовательской статистики.

НазваниеЗначениеОписание
k_ESteamUserStatTypeINVALID0Недействительный тип.
k_ESteamUserStatTypeINT132-битное целое число.
k_ESteamUserStatTypeFLOAT232-битное число с плавающей точкой.
k_ESteamUserStatTypeAVGRATE3Читается как число с плавающей точкой. Устанавливается вместе с длиной сессии.
k_ESteamUserStatTypeACHIEVEMENTS4Стандартное пользовательское достижение.
k_ESteamUserStatTypeGROUPACHIEVEMENTS5Устарело.
k_ESteamUserStatTypeMAX6Общее число типов пользовательских статистик, используется для проверки работоспособности.

ETextFilteringContext

Параметр ISteamUtils::FilterText.

НазваниеЗначениеОписание
k_ETextFilteringContextUnknown0Неизвестный контекст.
k_ETextFilteringContextGameContent1Контент игры, выполняется только предписанная законом фильтрация.
k_ETextFilteringContextChat2Чат другого пользователя.
k_ETextFilteringContextName3Название символа или объекта.

EUniverse

Среды Steam. Каждая среда является автономным экземпляром Steam.

НазваниеЗначениеОписание
k_EUniverseInvalid0Недействительный тип.
k_EUniversePublic1Стандартная общедоступная среда.
k_EUniverseBeta2Бета-среда, используемая внутри Valve.
k_EUniverseInternal3Внутренняя среда, используемая внутри Valve.
k_EUniverseDev4Среда для разработчиков, которая используется внутри Valve.
k_EUniverseMax5Общее число сред, используемых для проверки работоспособности.

EUserHasLicenseForAppResult

Результат ISteamUser::UserHasLicenseForApp.

НазваниеЗначениеОписание
k_EUserHasLicenseResultHasLicense0У пользователя есть лицензия на указанное приложение.
k_EUserHasLicenseResultDoesNotHaveLicense1У пользователя нет лицензии на указанное приложение.
k_EUserHasLicenseResultNoAuth2Проверка подлинности пользователя не выполнена.

EVoiceResult

Результаты для использования с функциями голосового чата.

НазваниеЗначениеОписание
k_EVoiceResultOK0Вызов успешно завершён.
k_EVoiceResultNotInitialized1Интерфейс Steam Voice не инициализирован.
k_EVoiceResultNotRecording2В данный момент запись не ведётся.
k_EVoiceResultNoData3Голосовые данные недоступны.
k_EVoiceResultBufferTooSmall4Размера предоставленного буфера недостаточно для получения данных.
k_EVoiceResultDataCorrupted5Голосовые данные повреждены.
k_EVoiceResultRestricted6Этому пользователю запрещено пользоваться чатами.
k_EVoiceResultUnsupportedCodec7Устарело.
k_EVoiceResultReceiverOutOfDate8Устарело.
k_EVoiceResultReceiverDidNotAnswer9Устарело.

EVRHMDType

Кодовые точки для поставщиков и моделей гарнитур виртуальной реальности. Используйте специальные функции BIsOculusHMD и BIsViveHMD для проверки и определения бренда.

НазваниеЗначениеОписание
k_eEVRHMDType_None-1Неизвестный поставщик и модель.
k_eEVRHMDType_Unknown0Неизвестный поставщик и модель.
k_eEVRHMDType_HTC_Dev1Оригинальный набор разработчика HTC.
k_eEVRHMDType_HTC_VivePre2Набор разработчика HTC Vive Pre.
k_eEVRHMDType_HTC_Vive3Пользовательский экземпляр HTC Vive.
k_eEVRHMDType_HTC_Unknown20Неизвестный шлем HTC.
k_eEVRHMDType_Oculus_DK121Набор разработчика Oculus Rift 1.
k_eEVRHMDType_Oculus_DK222Набор разработчика Oculus Rift 2.
k_eEVRHMDType_Oculus_Rift23Пользовательский экземпляр Oculus Rift 1.
k_eEVRHMDType_Oculus_Unknown40Неизвестный шлем Oculus.

Typedefs

Далее приведён список объявлений typedef, которые определены для использования со steam_api.

НазваниеБазовый типОписание
AccountID_tuint32Используется для внутренних целей в CSteamID, представляет аккаунт конкретного пользователя вне зависимости от среды Steam, в которой он находится.
AppId_tuint32Уникальный идентификатор приложения. Больше информации здесь.
AssetClassId_tuint64Используется для внутренних целей в Steam.
BREAKPAD_HANDLEvoid *Используется внутренними интерфейсами обработчиков сбоев Steam для обращения к конкретным установленным обработчиком сбоев.
BundleId_tuint32Уникальный идентификатор набора. (Используется для внутренних целей в Steam).
CellID_tuint32Используется для внутренних целей в Steam.
DepotId_tuint32Уникальный идентификатор хранилища.
GID_tuint64Используется для внутренних целей в Steam.
HAuthTicketuint32Дескриптор билета аутентификации пользователя. Тип возвращаемого значения ISteamUser::GetAuthSessionTicket.
int16shortВерсия 16-битного целого числа, используемая в Steam. Эквивалент int16_t.
int32intВерсия 32-битного целого числа, используемая в Steam. Эквивалент int32_t.
int64long longВерсия 64-битного целого числа, используемая в Steam. Эквивалент int64_t.
int8signed charВерсия 8-битного целого числа, используемая в Steam. Эквивалент int8_t.
intpint/long longТип со знаком, используемый в Steam, который может хранить указатель. Эквивалент intptr_t. (Используется для внутренних целей в Steam.)
JobID_tuint64Используется для внутренних целей в Steam.
lint64long intИспользуется для внутренних целей в Steam.
ManifestId_tuint64Используется для внутренних целей в Steam.
PackageId_tuint32Используется для внутренних целей в Steam.
PartnerId_tuint32Используется для внутренних целей в Steam.
PhysicalItemId_tuint32Используется для внутренних целей в Steam.
RTime32uint32Версия системы исчисления UNIX-времени, используемая Steam, отсчитывается по 1 секунде, начиная с 1970-01-01 00:00:00 +0000 (UTC)
SteamAPICall_tuint64Уникальный дескриптор вызова API Steam.
Если функция возвращает один из них, вы должны отслеживать его статус, используя систему результатов вызовов.
TxnID_tGID_tИспользуется для внутренних целей в Steam.
uint16unsigned shortВерсия 16-битного целого числа без знака, используемая в Steam. Эквивалент uint16_t.
uint32unsigned intВерсия 32-битного целого числа без знака, используемая в Steam. Эквивалент uint32_t.
uint64unsigned long longВерсия 64-битного целого числа без знака, используемая в Steam. Эквивалент uint64_t.
uint8unsigned charВерсия 8-битного целого числа без знака, используемая в Steam. Эквивалент uint8_t.
uintpunsigned int/unsigned long longТип без знака, используемый в Steam, который может хранить указатель. Эквивалент uintptr_t. (Используется для внутренних целей в Steam.)
ulint64unsigned long intИспользуется для внутренних целей в Steam.

Константы

Далее приведён список констант, которые определены для использования со steam_api.

НазваниеТипЗначениеОписание
BREAKPAD_INVALID_HANDLEint(BREAKPAD_HANDLE)0
k_cchGameExtraInfoMaxint64Максимальный размер (в байтах формата UTF-8, включая знак завершения 'null') параметра pchExtraInfo вызова ISteamUser::TrackAppUsageEvent.
k_cubSaltSizeint8Используется для внутренних целей в Steam.
k_GIDNilGID_t0xffffffffffffffffullИспользуется для внутренних целей в Steam.
k_HAuthTicketInvalidHAuthTicket0Недействительный билет аутентификации пользователя.
k_JobIDNilJobID_t0xffffffffffffffffullИспользуется для внутренних целей в Steam.
k_steamIDLanModeGSintCSteamID(Данный SteamID получен от пользовательского игрового соединения с игровым сервером типа sv_lan.
k_steamIDNilintCSteamID()Общий недействительный CSteamID.
k_steamIDNonSteamGSintCSteamID(Данный SteamID получен от пользовательского игрового соединения с игровым сервером, не использующим систему аутентификации Steam, но
желающим поддерживать функцию «Присоединится к игре» в списке друзей.
k_steamIDNotInitYetGSintCSteamID(Данный SteamID получен от пользовательского игрового соединения с игровым сервером, который только что запущен, но еще не инициализировал
компонент steam3 и не начал вход.
k_steamIDOutofDateGSintCSteamID(Данный SteamID получен от пользовательского игрового соединения с устаревшим игровым сервером, который не внедрил протокол для передачи SteamID.
k_TxnIDNilGID_tk_GIDNilИспользуется для внутренних целей в Steam.
k_TxnIDUnknownGID_t0Используется для внутренних целей в Steam.
k_uAPICallInvalidSteamAPICall_t0x0Недействительный дескриптор вызова API Steam.
k_uAppIdInvalidAppId_t0x0Недействительный номер приложения.
k_uBundleIdInvalidBundleId_t0Используется для внутренних целей в Steam.
k_uCellIDInvalidCellID_t0xFFFFFFFFИспользуется для внутренних целей в Steam.
k_uDepotIdInvalidDepotId_t0x0Недействительный номер хранилища.
k_ulAssetClassIdInvalidAssetClassId_t0x0Используется для внутренних целей в Steam.
k_uManifestIdInvalidManifestId_t0Используется для внутренних целей в Steam.
k_unSteamAccountIDMaskunsigned int0xFFFFFFFFИспользуется в CSteamID для маскировки AccountID_t.
k_unSteamAccountInstanceMaskunsigned int0x000FFFFFИспользуется в CSteamID для маскировки экземпляра аккаунта.
k_unSteamUserConsoleInstanceunsigned int2Используется в CSteamID для идентификации пользователей, вошедших через консоль.
k_unSteamUserDesktopInstanceunsigned int1Используется в CSteamID для идентификации пользователей, вошедших через настольный клиент.
k_unSteamUserWebInstanceunsigned int4Используется в CSteamID для идентификации пользователей, вошедших из сети.
k_uPackageIdFreeSubPackageId_t0x0Используется для внутренних целей в Steam.
k_uPackageIdInvalidPackageId_t0xFFFFFFFFИспользуется для внутренних целей в Steam.
k_uPartnerIdInvalidPartnerId_t0Используется для внутренних целей в Steam.
k_uPhysicalItemIdInvalidPhysicalItemId_t0x0Используется для внутренних целей в Steam.
QUERY_PORT_ERRORint0xFFFEНе удалось получить порт запросов данного сервера.
QUERY_PORT_NOT_INITIALIZEDint0xFFFF-----------------------------------------------------------------------------
Константы, используемые для порта запросов.
-----------------------------------------------------------------------------
Мы пока не спросили игровой сервер о текущем значении порта запросов.