Check out the Steamworks documentation for more details. [*]Before your store page or game build can go live, there is a brief review process where we run your game, look at your store page, and check that it is configured correctly and running as expected and not doing anything harmful. …
This will help you start building your audience of interested customers that can wishlist your game or participate in discussions. This also gives you the opportunity to practice how you talk about your product so that you can have the best presentation when you hit the ‘release’ button. …
Action set layers are intended for narrow use cases and a good practice is to apply and remove them only on specific game state changes. [/callout] For games with native Steam Input support, the developer can define specific action set layers activated by the game's code. …
[section]A practical example[/section] Imagine a class-based shooter with vehicles. This game has native Steam Input support and makes use of action set layers. For basic gameplay, a base action set is always active and covers running around, picking up items, jumping, etc. …
Players can launch apps, connect with friends and explore different environments in private or public lobbies, complete quests, create and customize avatars and environments, and browse the Steam store and community. [url=https://steamcommunity.com/games/250820/announcements/detail/1256913672017157095]Read the launch announcement for SteamVR Home here[/url] [subsection]SteamVR Collectibles[/subsection] SteamVR Collectibles are 3D items granted to players based on ownership and playtime of VR games. …
If you would like to discussing submitting a Collectible, please [url=https://partner.steamgames.com/home/contact_steam]Contact Us[/url]. [url=https://steamcommunity.com/games/250820/announcements/detail/3062859752419079879]Read more about SteamVR Collectibles[/url] [section]SteamVR In the Enterprise[/section] SteamVR is designed to be distributed along with Steam, and receive updates via Steam. …
[/list] [callout]IMPORTANT: You should use a new SteamID for sign up. This account should not own any personal game licenses, or act actual authority for a development group in Steamworks. If you sign the PC Cafe Agreement with an account that has personal licenses, you will be blocked from buying any future personal game licenses and only allowed to buy commercial licenses going forward. …
Please note that once the account was turned into a Café account, it will no longer be able to purchase any regular end user games and can only be used as a commercial account to manage your location(s) and have the option to purchase commercial game licenses. …
In addition to working great for top-down style games, regions can be restricted to certain areas of the screen, scaled, stretched and mode-shifted in to select mini-maps, toolbars, inventory, etc. For example, you can use this in legacy mode for games that require precision clicking on UI elements in fixed locations. Note that mouse regions do not fire any actions or mouse events automatically, by default they just control the mouse position. …
There is no option on your store page for customers to purchase or play your game at this stage. This will make your store page and community hub visible to customers and listed as upcoming, with whatever release date you set. This is a great way to start building an audience and providing customers the ability to add your game to their wishlist in anticipation of your launch. You must have a Coming Soon page up on Steam for at least two weeks before you can release your product. …
. [*]Any newly defined depots will need to be included in a package to grant you ownership of them. Each game on Steam should have a [b]Developer Comp[/b] package which is automatically granted to the accounts listed within your publisher group. …
[/list] [callout]Adding depots (regardless of associated package access) to a released game will be publicly visible. Instead, you can add to an unreleased DLC.[/callout] [subsection]File layout[/subsection] Game files should be laid out with a top-level [b].apk[/b] that is listed as the [b]Executable[/b] in the launch options for the app in Steamworks. …
Here are social media PSD templates to celebrate your game on Steam Deck. (If your game is not Verified, please be sure to turn off those layers' visibility.) The templates use [url=https://fonts.adobe.com/fonts/motiva-sans]Motiva Sans[/url] from Adobe Fonts. …
[/b] A. The presence of the Game or Application app overrides all other non-Game/Application content in the package. The sales of this package will accrue towards the Game or Application app. [*] [b]Q. …
The Additional Revenue Share system will attribute revenue from this package to the parent app for the DLC, so long as the parent app is a Game or Application. [*] [b]Q. I created a package that has more than one Game or Application app in it, how does Steam decide which app accrues additional revenue share?…
[/td][/tr] [tr][td]✔[/td][td][b]appid[/b][/td][td]uint32[/td][td][/td][td]✔[/td][td][/td][td]The appid for the item being sold.[/td][/tr] [tr][td]✔[/td][td][b]game_item_id[/b][/td][td]int32[/td][td][/td][td]✔[/td][td][/td][td]The game item id of the item being sold. Equivalent to "ItemID" from the old CSV feed.…
[/td] [/tr] [tr] [td][b]wishlist_adds_windows[/b][/td] [td]uint32[/td] [td]How many wishlist adds occurred from users browsing for Windows games.[/td] [/tr] [tr] [td][b]wishlist_adds_mac[/b][/td] [td]uint32[/td] [td]How many wishlist adds occurred from users browsing for Mac games.…
[section=overview]Overview[/section] Many games and applications require shared components to be installed on the user's machine before they can successfully run. Steam has long used [doclink=sdk/installscripts]install scripts[/doclink] to allow these redistributables to be installed. …
[section=SeeInstallScript]What If I Need Something Else?[/section] If you believe your game or application is using a redistributable which is not listed in the app admin, but might be used by many other apps, please let us know in the [url=steamcommunity.com/groups/steamworks/discussions/]Steamworks Development Group[/url], and we might be able to get it added. …
Defaults to false. [*] [b]Reads[/b] - If this is set to Friends, the game can only read leaderboard scores for friends of the user, all scores can always be read by WebAPI. Defaults to false. [/list] [docimg=spacewar_leaderboards]spacewar_leaderboards[/docimg] [section]Step 2 - Encapsulating Leaderboard work[/section] The following code is game independent and can be added to your game as you see fit. …
bIOFailure) { m_nLeaderboardEntries = min(pCallback->m_cEntryCount, 10); for (int index = 0; index < m_nLeaderboardEntries; index++) { SteamUserStats()->GetDownloadedLeaderboardEntry( pCallback->m_hSteamLeaderboardEntries,index,&m_leaderboardEntries[index],NULL,0); } } } [/code] [section]Step 3 - Integrating into your game[/section] The following is a complete listing of code snippets that you would need to integrate into your game in the appropriate locations. …
Returns NULL if any of the arguments are not valid. [subsection=GetISteamGameServer]GetISteamGameServer[/subsection] [code=cpp]ISteamGameServer * GetISteamGameServer( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion );[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]hSteamUser[/b][/td][td][apitype]ISteamClient::HSteamUser[/apitype][/td][td]The user handle to get the interface from.…
Returns NULL if any of the arguments are not valid. [subsection=GetISteamGameServerStats]GetISteamGameServerStats[/subsection] [code=cpp]ISteamGameServerStats * GetISteamGameServerStats( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion );[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]hSteamUser[/b][/td][td][apitype]ISteamClient::HSteamUser[/apitype][/td][td]The user handle to get the interface from.…
Steam Deck is a next generation handheld gaming device - letting players take their Steam library with them to their couch or on the go. Steam Deck includes a high resolution display, full-size ergonomic controls, updated Steam UI, and enough horsepower to run current-gen games. …
A touch menu is an on-screen overlay of game actions, displayed as a grid of choices selectable with a controller. These are very similar to [doclink=features/steam_controller/radial_menus][/doclink], except that instead of aiming a virtual pointer to select an action, the player must touch a specific location on the input device. You can use these to e.g. switch weapons in a first-person shooter, toggle hotkeys in a real-time-strategy game or MMO, or any other use you can think of. Touch menus can be configured in many different ways in both behavior and appearance, and can be adorned with custom labels and icons (provided by either Valve, the developer, or the player). …
This call is rate-limited on a per user basis, so you will want to batch up your modifications and send them at an appropriate time for your game. There is also a maximum of 1024 bytes of JSON per item at this time. [h4]Applying Restrictions[/h4] As mentioned previously, you can white-list certain properties so they can be set from the client. …
There are a couple of ways to do this, but regardless of which method you choose, you will want to batch up property modifications, as the calls to modify item properties are rate limited as mentioned above. [h4]WebAPI[/h4] On your secure game server, you can accumulate that statistic and at the end of the game round or other appropriate time, you can POST the results to the [webapi]IInventoryService/ModifyItems[/webapi] Web API using your secure publisher key. …
Type_filter can used to specify certain app types to be returned. Possible values are "game,application,tool,demo,dlc,music". When type_filter is blank or not used, all apps are returned. Version 2 will output the app name. …
[section=UpToDateCheck]UpToDateCheck[/section] [code=http]GET https://api.steampowered.com/ISteamApps/UpToDateCheck/v1/[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Required[/th][th]Description[/th][/tr] [tr][td][b]appid[/b][/td][td]uint32[/td][td]✔[/td][td]AppID of game[/td][/tr] [tr][td][b]version[/b][/td][td]uint32[/td][td]✔[/td][td]The installed version of the game[/td][/tr] [/table] …
One of the primary scenarios for this call is to grant an item to users who also own a specific other game. This can be useful if your game has custom UI for showing a specific promo item to the user otherwise if you want to grant multiple promotional items then use [api]ISteamInventory::AddPromoItems[/api] or [api]ISteamInventory::GrantPromoItems[/api]. …
[/td][/tr] [/table] Serialized result sets contain a short signature which can't be forged or replayed across different game sessions. A result set can be serialized on the local client, transmitted to other players via your game networking, and deserialized by the remote players. …
[/td][/tr] [tr][td][b]appid[/b][/td][td]uint32[/td][td]✔[/td][td]appid of game[/td][/tr] [tr][td][b]assetid[/b][/td][td]uint64[/td][td]✔[/td][td]The asset ID to operate on[/td][/tr] [tr][td][b]contextid[/b][/td][td]uint64[/td][td]✔[/td][td]The context to fetch history for[/td][/tr] [/table] [b]NOTE:[/b] This call requires a publisher API key to use this method. …
[/td][/tr] [tr][td][b]appid[/b][/td][td]uint32[/td][td]✔[/td][td]appid of game[/td][/tr] [tr][td][b]itemdefs[/b][/td][td]JSON array[/td][td]✔[/td][td]One or more Item Definitions, presented as a JSON array, to be updated or created.…
When using OpenXR, your input binding setup will dramatically affect how many users can buy and play your game. If your game submits a suggested input binding for Meta Quest 2 controllers, SteamVR will automatically rebind most controller types so they will work. …
[docimg=SystemRequirementsVRFields.png]SystemRequirementsVRFields.png[/docimg] In the fields under "VR Devices and Support" you should describe both the SDKs and the specific devices that your game supports. Start with the SDK such as OpenXR or SteamVR and then describe any individual headsets, controllers, and/or room size requirements.…