[section]Getting started[/section] The full list of features provided through the SDK is as follows. [list] [*] [b]glmgr[/b] - The "ToGL" DirectX to OpenGL compatibility layer for macOS. See the [url=https://github.com/ValveSoftware/ToGL]ToGL github[/url] page for more information. [*] [b]public/steam[/b] - [doclink=sdk/api][/doclink] [*] [b]redistributable_bin[/b] - Steamworks API redistributable binaries (see the Steamworks API Overview above.) [*] [b]steamworksexample[/b] - [doclink=sdk/api/example][/doclink] [*] [b]tools[/b] [list] [*] [b]ContentBuilder[/b] - [doclink=sdk/uploading][/doclink] [*] [b]ContentServer[/b] - [doclink=sdk/uploading/local_content_server][/doclink] [*] [b]drm[/b] - [doclink=features/drm][/doclink] [*] [b]goldmaster[/b] - [doclink=sdk/goldmaster][/doclink] [*] [b]linux[/b] - Build instructions. …
For removing an autogrant, hover over the package under the "Autogrants" section and click the red X. For adding an autogrant, click "Add Autogrant", in the Edit Group section, then either search for the package by name or packageID. …
[section]Remote Play on Tablet[/section] If you have checked this feature, it means you have [doclink=features/remoteplay#7]created a recommended Steam Input touch controller config[/doclink] for your game, and you adapt to the various 4x3 and 16x9 aspect ratios used by tablet devices. You can use the [api]ISteamRemotePlay::BGetSessionClientResolution[/api]() function to get information about the remote device aspect ratio and resolution. …
There are costs associated with issuing each individual payment as well as potential bank fees charged to you upon receiving money that make it prohibitive to pay out for small amounts of money. Therefore, we may hold your payment until a minimum of $100 payout is earned. [*] [b]Q. Can I get paid in my local currency?[/b] A. No. We pay in US Dollars only. Your account needs to be able to accept payment via SWIFT wire transfer in USD. …
Exchange recipes are evaluated atomically by the Inventory Service; if the supplied components do not match the recipe, or do not contain sufficient quantity, the exchange will fail. For example: [code]exchange: 101x1,102x1;103x5;104x3,105x3[/code] Will allow the item to be exchanged for either one #101 and one #102, five #103s or three #104s and three #105s. …
[b]See Also:[/b] [api]ISteamInventory::ConsumeItem[/api], [api]ISteamInventory::TransferItemQuantity[/api] [b]Example:[/b] [code=cpp]// Find an item in the user's inventory with the given itemdef SteamItemInstanceID_t CInventory::GetItemIdFromInventory( SteamItemDef_t itemDefId ); void CInventory::Exchange() { SteamItemInstanceID_t inputItems[2]; uint32 inputQuantities[2]; inputItems[0] = GetItemIdFromInventory( 103 ); inputQuantities[0] = 3; inputItems[1] = GetItemIdFromInventory( 104 ); inputQuantities[1] = 3; SteamItemDef_t outputItems[1]; outputItems[0] = 100; uint32 outputQuantity[1]; outputQuantity[0] = 1; SteamInventory()->ExchangeItems( &s_ExchangeRequestResult, outputItems, outputQuantity, 1, inputItems, inputQuantities, 2 ); }[/code] [subsection=GenerateItems]GenerateItems[/subsection] [code=cpp]bool GenerateItems( SteamInventoryResult_t *pResultHandle, const SteamItemDef_t *pArrayItemDefs, const uint32 *punArrayQuantity, uint32 unArrayLength );[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]pResultHandle[/b][/td][td][apitype]ISteamInventory::SteamInventoryResult_t[/apitype] *[/td][td]Returns a new inventory result handle.…
[docimg=xbox360_controller.png]xbox360_controller.png[/docimg] [subsection=FaceButtons]Face buttons[/subsection] [b]Digital[/b] The Xbox 360 controller features four standard face buttons labeled A, B, X, and Y. [docimg=xbox360_controller_face.png]xbox360_controller_face.png[/docimg] [subsection=Joysticks]Joysticks[/subsection] [b]Analog, 2 axes[/b] (+ digital "click") Like most other gamepads, the Xbox 360 controller features two analog joysticks, on the left and right side, vertically offset. …
A complete list: [list] [*] Left Trigger Full Pull [*] Right Trigger Full Pull [*] Left Trigger Soft Pull* [*] Right Trigger Soft Pull* [*] Left Bumper [*] Right Bumper [*] Left Grip [*] Right Grip [*] Left Pad Click [*] Right Pad Click [*] Left Pad Touch [*] Right Pad Touch [*] Left Joystick Click [*] Right Joystick Click [*] D Pad Up [*] D Pad Down [*] D Pad Left [*] D Pad Right [*] A Button** [*] B Button** [*] X Button** [*] Y Button** [*] Start Button** [*] Select Button** [/list] [i]*Where available - note that Nintendo Switch controllers do not have Analog Triggers[/i] [i]**Actual label will vary between controller models[/i]…
[subsection]On-Screen Horizontal / Vertical Position[/subsection] Same as in [doclink=features/steam_controller/radial_menus][/doclink] [subsection]Menu Opacity[/subsection] Same as in [doclink=features/steam_controller/radial_menus][/doclink] [subsection]Menu Size[/subsection] Same as in [doclink=features/steam_controller/radial_menus][/doclink] [subsection]Display Binding Label on Button[/subsection] Same as in [doclink=features/steam_controller/radial_menus][/doclink] [section]Menu Buttons[/section] Each "Menu Button X" option can have an action (and/or legacy key binding) assigned to it. The basic configuration screen has four menu buttons, but you can assign up to sixteen (select "Additional Settings" for bindings for menu buttons 5-16). …
In cases where an API key is required, it can be provided either as a standard parameter or by setting the 'x-webapi-key' request header value. [section=user-keys]User Keys[/section] The standard user keys are available to everyone, all that is required is a Steam account and the domain name that will be associated with this key. …
Instead, we ask that you use the new Developer & Publisher homepage for these activities. For clarity, this includes pages such as "Developer X's July Sale", "Publisher X's Autumn Sale", and other adhoc pages. Developer, Publisher, and Franchise sale pages are still available once a calendar year regardless of curation status. …
[/td][/tr] [tr][td][b]pflPercent[/b][/td][td]float *[/td][td]Variable to return the percentage of people that have unlocked this achievement from 0 to 100.[/td][/tr] [tr][td][b]pbAchieved[/b][/td][td]bool *[/td][td]Variable to return whether the current user has unlocked this achievement.…
[/td][/tr] [tr][td][b]pflPercent[/b][/td][td]float *[/td][td]Variable to return the percentage of people that have unlocked this achievement from 0 to 100.[/td][/tr] [tr][td][b]pbAchieved[/b][/td][td]bool *[/td][td]Variable to return whether the current user has unlocked this achievement.…
The Steam folder will already have a very similarly named folder so make sure you've put it in the "controller_config" folder and not the "controller_base" folder. Rename the file to the following: "game_actions_X.vdf", where X is your game's Steam AppID. If you don't know what your game's Steam AppID is, it can be found by logging into your Steam partner site. [callout] [h3]NOTE: These are the typical controller_config locations for each platform:[/h3] Windows: C:\Program Files (x86)\Steam\controller_config macOS: ~/Library/Application Support/Steam/Steam.AppBundle/Steam/Contents/MacOS/controller_config Linux: ~/.steam/steam/controller_config [/callout] Now open up the file in your favorite text editor. …
At the bottom, you can upload an image to help customers compare editions. Simply drag an image (748px x 896px) that compares the various editions of your game. These images help customers understand what content is included in each edition and which purchase option is right for them. …
[subsection]Background[/subsection] You can upload a custom background image, which includes your product branding if you wish to change the overall feel of the store. This image should be 1920px x 1080px and the edges should fade to a solid background color which you can also specify. [subsection]Top-level filters[/subsection] You can associate a top-level filter with one or more tags, which are delimited by the ";" character. …
[section]Customized Tags[/section] [docimg=custom_tags_01.jpg]custom_tags_01.jpg[/docimg] You can also customize the tags that are shown in the left-most column of your tabbed area. You can hit the blue X to remove tags that aren't relevant to the games you make and you can use the controls below them to add other tags that are more relevant. …
Unless others noted below, requests should be HTTP POST requests presented as form data and should set this header: [code]Content-Type: application/x-www-form-urlencoded[/code] [Section=RetrieveSteamID]Retrieving the User's SteamID[/Section] Once you have an OAuth token for a user, you can make a server to server call to securely get the SteamID for the user associated with that token by calling: [code]https://api.steampowered.com/ISteamUserOAuth/GetTokenDetails/v1/?…
[subsection=FaceButtons]Face buttons[/subsection] [b]Digital[/b] The A, B, X, and Y buttons follow the physical layout and coloring of the XInput standard seen in devices like the Xbox 360 controller. [docimg=steam_controller_face.png]steam_controller_face.png[/docimg] [subsection=Joystick]Joystick[/subsection] [b]Analog, 2 axes[/b] (+ digital "click") The analog joystick is essentially identical to a traditional controller's, including digital "click the stick" functionality. …
. [*] If you need to specify another port then 80, it must be "ip:port" in quotes [*] Don't add "http://" in front, HTTPS is not supported [/list] Note: The default location of the Steam executable is: [list] [*] [b]For Windows[/b]: [code]C:\Program Files (x86)\Steam\[/code] [*] [b]For macOS[/b]: [code]Steam.app/contents/macOS/[/code] [*] [b]For Linux[/b]: [code]~/.local/share/Steam/[/code] [/list] [b]Note[/b] As of September 2026, Steam will begin requiring newly-created "local" app branches to be [b]password-protected[/b]. …
([i]Recommendations: Whenever possible, we recommend you support the Deck's native resolutions of 1280x800 (preferred) or 1280x720.[/i]) [*][b]Text Legibility[/b]: Interface text must be easily readable at a distance of 12 inches/30 cm from the screen. In other words, the smallest on-screen font character should never fall below 9 pixels in height at 1280x800. ([i]Recommendations: We expect Steam Deck will be used in a wide variety of lighting and physical configurations, such as being connected to a TV, monitor or keyboard. …
Otherwise, [b]false[/b] under the following conditions: [list] [*] The file you're trying to write is larger than 100MiB as defined by [apitype]ISteamRemoteStorage::k_unMaxCloudFileChunkSize[/apitype]. [*] [code-inline]cubData[/code-inline] is less than [b]0[/b]. [*] [code-inline]pvData[/code-inline] is [b]NULL[/b]. [*] You tried to write to an invalid path or filename. …
Returns [apitype]steam_api::k_uAPICallInvalid[/apitype] under the following conditions: [list] [*] The file you're trying to write is larger than 100MiB as defined by [apitype]ISteamRemoteStorage::k_unMaxCloudFileChunkSize[/apitype]. [*] [code-inline]cubData[/code-inline] is less than [b]0[/b]. [*] [code-inline]pvData[/code-inline] is [b]NULL[/b]. [*] You tried to write to an invalid path or filename. …