[section]Steam Tags[/section] In addition to helping Steam users quickly learn about your game, tags help Steam determine where your game should be displayed to customers. We began requiring at least 5 tags be applied to a title before its launch on Steam, but we recommend you add up to 20. In addition to displaying tag data on store pages, a robust set of tags helps Steam serve better results when users: [list] [*]Browse genres & categories [*] Search with tags [*]Explore tag-driven recommendations [*]Utilize tag-driven dynamic Collections in the Library and more [/list] Below is some information on how tags work and some tools you can use to manage them. …
Note that this is not a direct reflection of the [i]More Like This[/i] algorithm's results, but rather, a strictly tag-driven comparison of title similarity. So, as a recap, start setting tags and their weight by using the Tag Wizard. Customers will also tag your game and those tags will be mixed in with the tags you had set with the Tag Wizard. …
[subsection]BeginAppUploadBatch[/subsection] The first operation for a set of file modifications is to call [code-inline]BeginAppUploadBatch[/code-inline]. This call communicates the set of intended uploads and deletes to the SteamCloud, as well as information about the user's machine which is doing the update. …
This request may look like: [code] PUT https://steamcloud-us-west1.storage.googleapis.com/00/00/00/00/1234/012_3_4A77D494_9D267_1464.dat?GoogleAccessId=numbersandletters@developer.gserviceaccount.com&Expires=1595961837&Signature=morestuffhere HTTP/1.1 Host: steamcloud-us-west1.storage.googleapis.com Content-Type: application/octet-stream Content-Length: <body length> Header-from-Steam1: value1 Header-from-Steam2: value2 <file data> [/code] When that completes (whether a success or a failure), call: [subsection]CommitHTTPUpload[/subsection] Example: [code] POST https://api.steampowered.com/ICloudService/CommitHTTPUpload/v1/ HTTP/1.1 Host: api.steampowered.com Content-Type: application/x-www-form-urlencoded Content-Length: <body length> access_token=<token>&input_json={ "appid": "1234", "transfer_succeeded": "1", "filename": "%25WinAppDataLocal%25Foobar%2FGamename%2Fcloud%2Fgames%2Fsave.sav", "file_sha": "FDFE308499263F9361B472648E9F49DC0B8799C8" } [/code] [table] [tr][th]Name[/th][th]Type[/th][th]Required[/th][th]Description[/th][/tr] [tr][td][b]access_token[/b][/td][td]string[/td][td]✔[/td][td]OAuth access token for the user[/td][/tr] [tr][td][b]appid[/b][/td][td]uint32[/td][td]✔[/td][td]Your App ID[/td][/tr] [tr][td][b]transfer_succeeded[/b][/td][td]bool[/td][td]✔[/td][td]true if the PUT request succeeded[/td][/tr] [tr][td][b]filename[/b][/td][td]string[/td][td]✔[/td][td]the file name[/td][/tr] [tr][td][b]file_sha[/b][/td][td]string[/td][td]✔[/td][td]Hex string (40 digits) representing the SHA1 digest of the file.…
A few special things are going on here -- first of all, there's two [doclink=features/steam_controller/action_set_layers]action layers[/doclink] for the Unit and Build menus, but it's also set up to use actions in chords. In this game, you can assign units, buildings, or groups of units to ten groups bound to ten hotkeys (implemented here as actions "Group 0" through "Group 9"). …
Base actions such as "click", "cancel", "select", and "inspect" are always available in the base action set, whereas other actions come in via [doclink=features/steam_controller/action_set_layers]action set layers[/doclink] depending on context. …
In this section, you'll find information about becoming a Steamworks partner. Steamworks is a set of tools that enable you to distribute your product to Steam customers and a set of features you can use in your product, such as matchmaking, leaderboards, Steam Workshop, etc. …
If you're trying to just get up to speed on Steam, check out our [doclink=quickstart]quick-start guide here.[/doclink] [olist] [*] [h4]Set Up Steamworks Account[/h4] The first step in getting started is to sign up to become a Steamworks partner. Once you have set up your account and your bank, tax and company information has been verified, you can add more users and start to set up your first product, or "[doclink=store/application]Application[/doclink]". [*] [h4]Download the Steamworks SDK[/h4] Once you have completed the onboarding process, you'll need to download the Steamworks SDK, which contains all the scripts and templates for building and uploading your product to Steam. …
[/callout] Users can press a hotkey controlled by Steam (F12 by default), to trigger a screenshot. The user can change the hotkey and other screenshot settings that will take effect in any game they play in Steam by going to Settings -> In-Game. [docimg=screenshot_hotkey.png]screenshot_hotkey.png[/docimg] [subsection]Screenshot Uploader[/subsection] Upon quitting a game the Screenshot Uploader will automatically open with all of the screenshots that were taken during the previous session. …
After receiving this callback you should then check the result, and if it was successful, you can then use the [apitype]ISteamScreenshots::ScreenshotHandle[/apitype] provided to set tags with: [list] [*] [api]ISteamScreenshots::SetLocation[/api] [*] [api]ISteamScreenshots::TagUser[/api] [*] [api]ISteamScreenshots::TagPublishedFile[/api] [/list] If you want to take a screenshot either with your own button, or automatically at some point, such as the end of a round, you can do that programmatically with [api]ISteamScreenshots::TriggerScreenshot[/api] or by writing the RGB bytes out with [api]ISteamScreenshots::WriteScreenshot[/api], or by adding a file from the disk with [api]ISteamScreenshots::AddScreenshotToLibrary[/api]/[api]ISteamScreenshots::AddVRScreenshotToLibrary[/api].…
This name is used within the Steam store, including search results. [*][b]Steamworks Info[/b] - On the "General Application Settings" tab under Steamworks Settings. This name is used within the Steam library and the Steam Community. [*][b]Package Info[/b] - Each store package that sells your game. …
[*]Is there anything about the existing game name that you need to change for legal reasons? [*]Is the product that was advertised to customers changing along with the name? …
It will default to show the small capsule for the game being broadcasted and then show a screenshot from the live broadcast when the user hovers over it. This allows Steam customers to quickly browse through available live broadcasts. [docimg=live_stream_widget.png]live_stream_widget.png[/docimg] [subsection]Prioritization order[/subsection] When a person visits your sale page, the Broadcast player will choose a livestream to show based on the following logic: [olist] [*] Broadcasts from Steam accounts explicitly added on the "Broadcast" tab and set to priority "Primary" [*] Broadcasts from either of these sources: [list] [*] Steam accounts explicitly added on the "Broadcast" tab and set to priority "Featured" [*] Broadcasts who have a current live slot in the Event Schedule widget (if a schedule widget is included in the sales events) are treated as equal to "Featured" above [doclink=marketing/event_tools/sales/sections#schedule]Learn more about the event schedule sale section.[/doclink] [/list] [*] Broadcasts from Steam accounts explicitly added on the "Broadcast" tab and set to priority "Default" [*] Broadcasts from either of these sources: [list] [*] Broadcasts from Steam accounts explicitly added on the "Broadcast" tab and set to priority "General" [*] Any Official Broadcast associated with a game featured on the Sale page. …
[subsection]Custom Sets[/subsection] You can create additional sets to organize your achievements. Each set has a name, which is shown to players, and an optional restriction: [table] [tr] [th]Restriction[/th] [th]Who can earn achievements in the set[/th] [/tr] [tr] [td][b]All players of the game[/b][/td] [td]Anyone who can play the game.…
[subsection]Deleting a Set[/subsection] Open the set's menu and choose [b]Delete set[/b]. You must move or delete all achievements in a set before you can delete it. …
The visibility of your event here will vary slightly from player to player depending on which games they play, how recently, how much they play, and personalization settings they have set. [docimg=doc_event_library_whatsNew.jpg]doc_event_library_whatsNew.jpg[/docimg] [*][b]Your game's library page[/b] - Major Updates will show up in the list of all events on your game's library page. …
Patch notes following your build updates is helpful for your customers to realize you are continuing work on and improve your game. [docimg=41b67b4a94e6487c5e07c6085dbb9d63d8d9e166.jpg]41b67b4a94e6487c5e07c6085dbb9d63d8d9e166.jpg[/docimg] You can always use the regular event editor to post the patch notes at a later time. …
Your game must show up in your Steam library. [*] Your App ID is not completely set up, i.e. in [code-inline]Release State: Unavailable[/code-inline], or it's missing default packages. [/list] [b]Example:[/b] [code=cpp]int main() { if ( SteamAPI_RestartAppIfNecessary( k_uAppIdInvalid ) ) // Replace with your App ID { return 1; } if ( !…
[/td][/tr] [tr=k_EChatInstanceFlagClan][td][b]k_EChatInstanceFlagClan[/b][/td][td]( k_unSteamAccountInstanceMask + 1 ) >> 1[/td][td]The Steam ID is for a Steam group.[/td][/tr] [tr=k_EChatInstanceFlagLobby][td][b]k_EChatInstanceFlagLobby[/b][/td][td]( k_unSteamAccountInstanceMask + 1 ) >> 2[/td][td]The Steam ID is for a Lobby.…
[/td][/tr] [tr][td][b]steamid[/b][/td][td]uint64[/td][td]✔[/td][td]SteamID of user[/td][/tr] [tr][td][b]appid[/b][/td][td]uint32[/td][td]✔[/td][td]appID of product[/td][/tr] [tr][td][b]startidx[/b][/td][td]uint32[/td][td]✔[/td][td]Starting index in the result set (0 based)[/td][/tr] [tr][td][b]count[/b][/td][td]uint32[/td][td]✔[/td][td]Number Requested[/td][/tr] [tr][td][b]tagcount[/b][/td][td]uint32[/td][td]✔[/td][td]Number of Tags Specified[/td][/tr] [tr][td][b]usertagcount[/b][/td][td]uint32[/td][td]✔[/td][td]Number of User specific tags requested[/td][/tr] [tr][td][b]hasappadminaccess[/b][/td][td]bool[/td][td][/td][td]Whether the user making the request is an admin for the app and can see private files[/td][/tr] [tr][td][b]fileType[/b][/td][td]uint32[/td][td][/td][td]EPublishedFileInfoMatchingFileType, defaults to k_PFI_MatchingFileType_Items[/td][/tr] [tr][td][b]days[/b][/td][td]uint32[/td][td][/td][td][1,7] number of days for the trend period, including today[/td][/tr] [tr][td][b]tag[0][/b][/td][td]string[/td][td][/td][td]Tag to filter result set[/td][/tr] [tr][td][b]usertag[0][/b][/td][td]string[/td][td][/td][td]A user specific tag[/td][/tr] [/table] [b]NOTE:[/b] This call requires a publisher API key to use this method. …
As such this API [b]MUST[/b] be called from a secure server, and can never be used directly by clients! [section=ResultSetSummary]ResultSetSummary[/section] [code=http]POST https://partner.steam-api.com/ISteamPublishedItemSearch/ResultSetSummary/v1/[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Required[/th][th]Description[/th][/tr] [tr][td][b]key[/b][/td][td]string[/td][td]✔[/td][td]Steamworks Web API publisher authentication key.…
[/td][/tr] [tr][td][b]appid[/b][/td][td]uint32[/td][td]✔[/td][td]AppID of game[/td][/tr] [tr][td][b]starttime[/b][/td][td]uint32[/td][td][/td][td]Start time, set as a Unix timestamp[/td][/tr] [tr][td][b]endtime[/b][/td][td]uint32[/td][td][/td][td]End time, set as a Unix timestamp[/td][/tr] [tr][td][b]continue_token[/b][/td][td]string[/td][td][/td][td]Pagination token from the previous response. …
[section=GetServersAtAddress]GetServersAtAddress[/section] [code=http]GET https://api.steampowered.com/ISteamApps/GetServersAtAddress/v1/[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Required[/th][th]Description[/th][/tr] [tr][td][b]addr[/b][/td][td]string[/td][td]✔[/td][td]IP or IP:queryport to list[/td][/tr] [/table] [section=SetAppBuildLive]SetAppBuildLive[/section] [code=http]POST https://partner.steam-api.com/ISteamApps/SetAppBuildLive/v2/[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Required[/th][th]Description[/th][/tr] [tr][td][b]key[/b][/td][td]string[/td][td]✔[/td][td]Steamworks Web API publisher authentication key.…
[/td][/tr] [tr][td][b]steamid[/b][/td][td]uint64[/td][td]✔[/td][td]The player we're asking about[/td][/tr] [tr][td][b]include_appinfo[/b][/td][td]bool[/td][td]✔[/td][td]true if we want additional details (name, icon) about each game[/td][/tr] [tr][td][b]include_played_free_games[/b][/td][td]bool[/td][td]✔[/td][td]Free games are excluded by default. If this is set, free games the user has played will be returned.[/td][/tr] [tr][td][b]appids_filter[/b][/td][td]uint32[/td][td]✔[/td][td]if set, restricts result set to the passed in apps[/td][/tr] [/table] Returns a list of games owned by the player if their owned games/game details are visible to you. [section=GetSteamLevel]GetSteamLevel[/section] [code=http]GET https:/partner.steam-api.com/IPlayerService/GetSteamLevel/v1/[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Required[/th][th]Description[/th][/tr] [tr][td][b]key[/b][/td][td]string[/td][td]✔[/td][td]Steamworks Web API user authentication key.…
The [b]Steam PC Café Program[/b] enables PC Cafés, Schools, Libraries, and other organizations to let customers and students use their own Steam accounts onsite while also giving them access to any games or software purchased by the organization for use by end users. …
For some locations, such as VR Arcades, they typically use their own set of accounts to provide access to games. In those situations, there is no exchange or connection made between the organization's system and your Steam account.…
That value will correspond to [api]ISteamRemoteStorage#EWorkshopFileType[/api][/callout] [section=SetDeveloperMetadata]SetDeveloperMetadata[/section] [code=http]POST https://partner.steam-api.com/IPublishedFileService/SetDeveloperMetadata/v1/[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Required[/th][th]Description[/th][/tr] [tr][td][b]key[/b][/td][td]string[/td][td]✔[/td][td]Steamworks Web API publisher authentication key.…
[/td][/tr] [tr][td][b]publishedfileid[/b][/td][td]uint64[/td][td]✔[/td][td][/td][/tr] [tr][td][b]appid[/b][/td][td]uint32[/td][td]✔[/td][td][/td][/tr] [tr][td][b]add_tags[/b][/td][td]string[][/td][td][/td][td]Tags to add. Example usage: add_tags[0]='yourtag1', add_tags[1]='yourtag2', etc.[/td][/tr] [tr][td][b]remove_tags[/b][/td][td]string[][/td][td][/td][td]Tags to remove. Example usage: remove_tags[0]='tag_to_remove1', remove_tags[1]='tag_to_remove2', etc.…
Steam has a set of tools for creating and configuring a custom sale landing page that you can use to highlight games for a special sale, game festival, or digital companion for a physical convention. …
[/td][/tr] [tr][td][b]onlytrustedwrites[/b][/td][td]bool[/td][td][/td][td]if this is true the leaderboard scores cannot be set by clients, and can only be set by publisher via SetLeaderboardScore WebAPI. Defaults to false.[/td][/tr] [tr][td][b]onlyfriendsreads[/b][/td][td]bool[/td][td][/td][td]if this is true the leaderboard scores can only be read for friends by clients, scores can always be read by publisher. …
As such this API [b]MUST[/b] be called from a secure server, and can never be used directly by clients! [section=SetLeaderboardScore]SetLeaderboardScore[/section] [code=http]POST https://partner.steam-api.com/ISteamLeaderboards/SetLeaderboardScore/v1/[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Required[/th][th]Description[/th][/tr] [tr][td][b]key[/b][/td][td]string[/td][td]✔[/td][td]Steamworks Web API publisher authentication key.…
These events occur when the application frame times are too high, or the application is being throttled (for example via SteamVR Settings for the application or when using SteamVR Motion Smoothing). [*][b]peakGpu(MHz)[/b]: The peak GPU clock, in Megahertz. [*][b]peakPower(W)[/b]: The peak total system power, in Watts. [*][b]refresh(Hz)[/b]: The headset's refresh rate (as set by the user in the SteamVR Settings for the application). [*][b]throttle[/b]: The frame limit, either set by the user through SteamVR Settings for the application, or by SteamVR when Motion Smoothing is active. [*][b]width[/b] and [b]height[/b]: The minimum resolution of any frame submitted by the application during the period since the last sample. …
[/callout] [/list] Before your game will show up, you will need to launch it with the renderdoc vulkan layer enabled. This can be done by setting the environment variable ENABLE_VULKAN_RENDERDOC_CAPTURE=1. You can do this in Steam by clicking the app's gear icon and editing the command line to be: [code]ENABLE_VULKAN_RENDERDOC_CAPTURE=1 %command%[/code] If the capture button is disabled or not working and you see the API listed as Not Presenting you may need to add EnableFrameEndMarkers=1 to your launch options as well (before %command%). …
[subsection=AdvertiseGame]AdvertiseGame[/subsection] [code=cpp]void AdvertiseGame( CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer );[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]steamIDGameServer[/b][/td][td][apitype]steam_api::CSteamID[/apitype][/td][td]This should be [apitype]steam_api::k_steamIDNonSteamGS[/apitype] if you're setting the IP/Port, otherwise it should be [apitype]steam_api::k_steamIDNil[/apitype] if you're clearing this.[/td][/tr] [tr][td][b]unIPServer[/b][/td][td][apitype]steam_api::uint32[/apitype][/td][td]The IP of the game server in host order, i.e 127.0.0.1 == 0x7f000001.…
[/list] [subsection=GetGameBadgeLevel]GetGameBadgeLevel[/subsection] [code=cpp]int GetGameBadgeLevel( int nSeries, bool bFoil );[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]nSeries[/b][/td][td]int[/td][td]If you only have one set of cards, the series will be [b]1[/b].[/td][/tr] [tr][td][b]bFoil[/b][/td][td]bool[/td][td]Check if they have received the foil badge.…
Change history: [list] [*] [b]Version 2[/b] - Fixes returning the game name in XML. [/list] [section=SetUserStatsForGame]SetUserStatsForGame[/section] [code=http]POST https://partner.steam-api.com/ISteamUserStats/SetUserStatsForGame/v1/[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Required[/th][th]Description[/th][/tr] [tr][td][b]key[/b][/td][td]string[/td][td]✔[/td][td]Steamworks Web API publisher authentication key.[/td][/tr] [tr][td][b]steamid[/b][/td][td]uint64[/td][td]✔[/td][td]SteamID of user[/td][/tr] [tr][td][b]appid[/b][/td][td]uint32[/td][td]✔[/td][td]appid of game[/td][/tr] [tr][td][b]count[/b][/td][td]uint32[/td][td]✔[/td][td]Number of stats and achievements to set a value for (name/value param pairs)[/td][/tr] [tr][td][b]name[0][/b][/td][td]string[/td][td]✔[/td][td]Name of stat or achievement to set[/td][/tr] [tr][td][b]value[0][/b][/td][td]uint32[/td][td]✔[/td][td]Value to set[/td][/tr] [/table] Sets a stat for the specified user for the game. …