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. …
[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/?…
. [*] 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]. …
[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. …
[list=1] [*] [b]0[/b] - Normal wrap (most protection) [*] [b]6[/b] - Compatibility mode (disables obfuscation) [*] [b]32[/b] - Skip debugger check [*] [b]38[/b] - compatibility mode and also skip debugger check (least protection) [/list] [/list] Example run_build.bat script to login, apply DRM, build and upload the build to Steam (where App ID is 480): [code] builder\steamcmd.exe +login mysteamaccount +drm_wrap 480 "D:\src\steamworkssdk\steamworksexample\release\steamworksexample.exe" "D:\src\steamworkssdk\tools\ContentBuilder\content\windows_content\SteamworksExample.exe" drmtoolp 0 +run_app_build ..…
Please access all previous session recordings [url=https://www.youtube.com/playlist?list=PLckFgM6dUP2iCWK3VkvB8YZI9b7HHCj8m]via this YouTube playlist[/url]. [subsection=contact]Need Help?[/subsection] [url=https://help.steampowered.com/en/wizard/HelpWithPublishing?…
[/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.[/td][/tr] [tr][td][b]usPortServer[/b][/td][td][apitype]steam_api::uint16[/apitype][/td][td]The connection port of the game server, in host order.…
[b]NOTE:[/b] The resulting authorization cookie has an expiration time of one day, so it would be a good idea to request and visit a new auth URL every 12 hours. [b]Returns:[/b] [apitype]steam_api::SteamAPICall_t[/apitype] to be used with a [apitype]ISteamUser::StoreAuthURLResponse_t[/apitype] call result. …
Please access all previous session recordings [url=https://www.youtube.com/playlist?list=PLckFgM6dUP2iCWK3VkvB8YZI9b7HHCj8m]via this YouTube playlist[/url]. [/introblock] [subsection=faq_demo][b]Registration & Eligibility Questions[/b][/subsection] [b]Q: I've changed my plans. …
[b] Q: What is a microtrailer and how is it created?[/b] A: Microtrailers are 6-second looping videos that summarize a game's trailer for use in quick-view locations throughout the Steam Store, as in the various category hubs, special sale pages, and on the homepage during seasonal sales events. …
[code] https://sketchfab.com/models/<model id> https://sketchfab.com/models/7b08add6fb40478a9bc465a8ef0d8ffb [/code] That would automatically generate a summary block about the 3D model in the event description. This summary includes the items name and authors name. …
[docimg=clicks_conversions.png]clicks_conversions.png[/docimg] The report also shows 6 of the 20 visits were by customers signed in to Steam. Steamworks attributed 2 wishlist additions, and 1 purchase, to the 6 "Tracked Visits". …
[/td][/tr] [tr][td][doclink=features/multiplayer][/doclink][/td][td]Steam started as a multiplayer gaming platform with the release of Counter-Strike 1.6 and multiplayer has always been a huge focus. Steam provides many different features and APIs to improve the multiplayer experience for developers and customers alike. …
. [*] cart - is item definition index numbers separated by commas, with optional xN or *N quantity suffix. Order does not matter. Duplicates are treated as additional quantity. [*] total - is the expected total cost of the cart. …
All requests should be sent using HTTP 1.1 and use a secure TLS connection when possible. The Content-Type must be [code-inline]application/x-www-form-urlencoded[/code-inline] and the POST parameters must be in the body of the request in standard form urlencoding format. Text must be transmitted as UTF-8. …
You can check out our past live Q&A sessions on YouTube [url=https://www.youtube.com/playlist?list=PLckFgM6dUP2iCWK3VkvB8YZI9b7HHCj8m]here[/url]. These sessions cover a wide variety of topics to help you prepare for getting the most out of Steam Next Fest. …
You can check out our past live Q&A sessions on YouTube [url=https://www.youtube.com/playlist?list=PLckFgM6dUP2iCWK3VkvB8YZI9b7HHCj8m]here[/url]. These sessions cover a wide variety of topics to help you prepare for getting the most out of Steam Next Fest. …
[section]Getting Started[/section] [b]NOTE:[/b] The Steamworks API officially supports C++, using Microsoft Visual Studio 2008+ on Microsoft Windows, GCC 4.6+ and Clang 3.0+ on macOS and SteamOS / Linux. If you're using a third party engine or a programming language other than C++ then you should first look at [doclink=#thirdparty][/doclink] to see if there are more specific instructions to get started with your engine or language of choice. …
Additional Reading: [url=https://msdn.microsoft.com/en-us/library/9yd93633.aspx]Linking an Executable to a DLL (MSDN)[/url] You must also ship the [code-inline]steam_api[64].dll[/code-inline] in your run-time directory (next to your program's executable, or in your dll search path). [*] [b]macOS[/b] [code-inline]libsteam_api.dylib[/code-inline] provides both the x64 and arm64 version of the Steam API. You must link this in your Xcode project and add it to a Copy Files build phase with destination "Executables" to copy it into your application bundle. …
[subsection]Icons[/subsection] For best results, achievement icons should be 256x256 pixel PNG images. They can be as small as 64x64, but we recommend using the larger size. Icons must be square, and larger icons are scaled down to 256x256. …
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. …