response_type=token&client_id=client_id_here&state=whatever_you_want[/code] Adding [code-inline]&mobileminimal=1[/code-inline] to the above request is recommended for embedded browsers, as it removes some of the Steam site navigation UI that will not be relevant when the OAuth page is presented directly to a user within your game. …
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/?access_token=token[/code] [Section=Cloud]Accessing Steam Cloud[/Section] To access Steam Cloud on behalf of a user, your OAuth client will need the [code-inline]read_cloud[/code-inline] and/or [code-inline]write_cloud[/code-inline] permission(s). …
Variations: [list] [*] Left Trackpad [*] Right Trackpad [*] Center Trackpad [/list] Sub-inputs: [list] [*] The touch surface itself (analog) [*] Clicking the surface (digital) [/list] [section]Joystick[/section] [docimg=input_joystick_1.png]input_joystick_1.png[/docimg] Joysticks are available on virtually all modern controllers. The PlayStation 4 and Xbox controllers all feature twin sticks, but the Steam Controller only has one, which is considered the "Left Joystick" in this case. …
[url=https://store.steampowered.com/sale/steamcontroller]Learn more here[/url]. [docimg=steam_controller_1.png]Steam Controller[/docimg] The Steam Controller is distinguished from standard XInput devices in several ways: [list] [*] Two haptic trackpads [*] Two digital "grip" paddles on the back [*] An internal gyroscope [*] One analog joystick instead of two [*] Haptic pulses instead of traditional "rumble" [/list] What follows is a detailed breakdown of its physical inputs. …
[docimg=steam_controller_shoulder_buttons.png]steam_controller_shoulder_buttons.png[/docimg] [subsection=ShoulderTriggers]Shoulder triggers[/subsection] [b]Analog, 1 axis[/b] (+ digital "full pull") The analog triggers on the Steam Controller have a distinct digital "click" at the end of the normal analog range distinguishing a "full pull" from a "soft pull", similar to the triggers on the Nintendo GameCube controller. …
. [*]For other commercial or government use you can enter into a royalty-free [url=https://www.docusign.net/Member/PowerFormSigning.aspx?PowerFormId=1b290fb6-bf33-4529-b6b4-0c05174271f7&env=na1&acct=8eb740d5-3d42-42a7-b032-df44d160f47f&v=2]commercial/government use license[/url]. …
The value field is a comma-delimited list of strings to check. [*] "and" (x1 && x2 && ... && xn) "or" (x1 || x2 || ... || xn) "nand" !(x1 && x2 && ... && xn) "nor" !(x1 || x2 || ... || xn) Performs Boolean operation on the following filters. The operand to this filter specifies the "size" of the Boolean inputs to the operation, in Key/value pairs. …
Even though each offset value is only 4 or 8 bytes in size, a change to an 8-byte number will result in a new 1MB chunk being created by SteamPipe. This can have catastrophic effects where even changing a few small assets in a pack file results in clients needing to download over half the entire file to update. …
This alignment can cause cascading asset shifts when building new versions, especially if pack file compression is enabled. Using a padding alignment of 1MB (1048576) will help ensure that re-alignments will shift assets by a multiple of the same blocksize that SteamPipe uses for delta calculations. …
Event visibility will depend on the current schedule of Steam promotions, but some examples of possible marketing visibility include: [table] [tr][td]Steam Home Page Takeover[/td][td]Updates and Offers[/td][/tr] [tr][td][docimg=Steam_Event_Takeover.JPG]Steam_Event_Takeover.JPG[/docimg][/td][td][docimg=Steam_Event_updates_offers_1.jpg]Steam_Event_updates_offers_1.jpg[/docimg][/td][td][/td][/tr] [tr][td] [/td][td] [/td][td] [/td][/tr] [tr][td]Sale Page[/td][td]Takeunder Banner[/td][td] [/td][/tr] [tr][td][docimg=Steam_theme_sale_page.jpg]Steam_theme_sale_page.jpg[/docimg][/td][td][docimg=Steam_Event_Takeunder.jpg]Steam_Event_Takeunder.jpg[/docimg][/td][td][/td][/tr] [tr][td]Marketing Message[/td][td]Steam Social[/td][td] [/td][/tr] [tr][td][docimg=Steam_Event_IM.jpg]Steam_Event_IM.jpg[/docimg][/td][td][docimg=Steam_Theme_Social]Steam_Theme_Social.jpg[/docimg][/td][td][/td][/tr] [tr][td] [/td][td] [/td][td] [/td][/tr] [/table] Additionally, a game participating in a given event typically will have an event banner applied to its store page for the duration of the event. …
[table] [tr][td]Product Page Banner[/td][/tr] [tr][td][docimg=Steam_Theme_product_page_banner_1.jpg]Steam_Theme_product_page_banner_1.jpg[/docimg][/td][td][/td][/tr] [tr][td] [/td][td] [/td][td] [/td][/tr] [/table] [section=game_visibility]Game Visibility Within Each Event[/section] Each Steam themed sale event will be organized into top-level categories including Discounted, VR, Free to Play, Demos, and Upcoming games, as well as sub-sections relevant for the theme. …
The computer that is streaming your game will send video to that upload server. [docimg=stream1.png]stream1.png[/docimg] [*]Locate your RTMP token. You will need to enter this token into your streaming software. [b]What is an RTMP token?…
If you're having issues with videos stuttering, pausing, or not playing back correctly, please check the following: [b]Video encoding requirements[/b] [list][*]Codec: H.264 [*]Profile: High [*]Level: 4.1 [*]Frame Rate: 30 FPS or 60 FPS [*]Frame Ratio: 16:9 [*]Keyframe interval: 2 seconds [*]Maximum bitrate: 7000 kbps CBR[/list] Audio encoding requirements [list][*]Codec: AAC-LC [*]Maximum bitrate: 128 kbps[/list] [b]Streaming Software Notes[/b] VMIX: By default, VMIX uses Profile Main and Level 3.0. …
This offers lists for Top Selling, New Releases, Upcoming, and discounted and provides for ways to customize additional ways of organizing the DLC. [docimg=browse_page_example_1.png]browse_page_example_1.png[/docimg] [subsection]Default Appearance[/subsection] This browse page will automatically list your DLC with a couple of default logic. …
If your game has already been released to the public then you can check the box labeled [code-inline]Enable cloud support for developers only[/code-inline]. If developers-only mode is enabled then only the steam accounts which own a "Developer Comp" license for your title will see the cloud icon and will be able to use the Steam Cloud. …
[subsection=SteamGameServer_Init]SteamGameServer_Init[/subsection] [code=cpp]inline bool SteamGameServer_Init( uint32 unIP, uint16 usSteamPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString );[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]unIP[/b][/td][td]uint32[/td][td]The IP address you are going to bind to. (This should be in host order, i.e 127.0.0.1 == 0x7f000001). You can use INADDR_ANY to bind to all local IPv4 addresses.[/td][/tr] [tr][td][b]usSteamPort[/b][/td][td]uint16[/td][td]The local port used to communicate with the steam servers.…
[/td][/tr] [tr=eServerModeNoAuthentication][td][b]eServerModeNoAuthentication[/b][/td][td]1[/td][td]Don't authenticate user logins and don't list on the server list.[/td][/tr] [tr=eServerModeAuthentication][td][b]eServerModeAuthentication[/b][/td][td]2[/td][td]Authenticate users, list on the server list, don't run VAC on clients that connect.…
[section]HTML Supported[/section] This is the list of support HTML that we convert to their equivalent bbcode [list] [*]<a href="[i]url[/i]">[i]text[/i]</a> turns into URLs [*]<img src="[i]url[/i]"> turns into an image [*]<b></b>, <strong></strong> turns into bold [*]<i></i>, <em></em> turns into italics [*]<u></u>, <span></span> turns into underline [*]<p>, <br> turns into new lines [*]<h1> ... <h6> turns into headline [*]<ul>, <ol> turns into an unordered list [*]<li> turns into list items [*]<table> turns into table start [*]<th> turns into table header row [*]<tr> turns into table row [*]<td> turns into table column [/list] [subsection]HTML Ignored[/subsection] <html>, <head>, <doctype>, <thead>, <tbody>, <title>, <div>, <hr> and any tag not in the previous list. …
[section=PostGameDataFrame]PostGameDataFrame[/section] [code=http]POST https://partner.steam-api.com/IBroadcastService/PostGameDataFrame/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.…
[b]Example:[/b] [code=nohighlight]http://api.steampowered.com/ISteamNews/GetNewsForApp/v0002/?appid=440&count=1&format=xml[/code] The following values can be passed for this parameter: [list] [*] [h4]JSON[/h4] [list] [*] The API always returns an object containing the named object with the result data. [*] Arrays are represented as an array with the name of the type of the objects in the array. [*] Null is represented as JSON's null. [*] 64 bit numbers are returned as a string. [*] [b]Example:[/b] [code=json] { "appnews": { "appid": 440, "newsitems": [ { "gid": "1904306376092568991", "title": "Prince of Prolander Event ", "url": "http://store.steampowered.com/news/externalpost/tf2_blog/1904306376092568991", "is_external_url": true, "author": "", "contents": "<a href=\"http://rgl.gg/default.aspx\"><img src=\"https://steamcdn-a.akamaihd.net/steam/news/29555/prince.png?…
</p><br>", "feedlabel": "TF2 Blog", "date": 1495218420, "feedname": "tf2_blog", "feed_type": 0, "appid": 440 } ], "count": 2385 } } [/code] [/list] [*] [h4]XML[/h4] [list] [*] XML Attributes are not used. [*] Arrays are represented as a series of sub-elements in the containing element of the type of the array. [*] Null is represented by the word "null" between the element's tags. [*] [b]Example[/b]: [code=xml] <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE appnews> <appnews> <appid>440</appid> <newsitems> <newsitem> <gid>1904306376092568991</gid> <title>Prince of Prolander Event </title> <url>http://store.steampowered.com/news/externalpost/tf2_blog/1904306376092568991</url> <is_external_url>true</is_external_url> <author/> <contents><a href="http://rgl.gg/default.aspx"><img src="https://steamcdn-a.akamaihd.net/steam/news/29555/prince.png?…
For general information about communicating with customers, see our [doclink=marketing/community_moderation]Moderation Best Practices documentation[/doclink] and watch [url=https://www.youtube.com/watch?v=Fwv1G3WFSfI]Robin Walker’s full presentation[/url] from Steam Dev Days. [callout][b]Note[/b]: Customers expect to be able to download your game and future updates within the Steam client. …
We have found that for our own games it works best to release major updates every 1-2 months at most. This let us put together a big enough update to be exciting and compelling, and allowed for time to tease or pre-announce those updates before they ship to build anticipation. …
[docimg=PublisherSaleExample]PublisherSaleExample[/docimg] [*][b]Franchise Sales[/b] - such as the [url=https://store.steampowered.com/sale/falloutfranchise2024]Fallout Franchise Sale[/url] or the [url=https://store.steampowered.com/sale/TropicoFranchiseSale2026]Tropico Franchise Sale[/url]. [docimg=FranchiseBannerExample_1.]FranchiseBannerExample_1.[/docimg] [/list] [section=how]How It Works[/section] [olist] [subsection]1. Creator Home[/subsection] First, you'll need to set up your [doclink=store/creator_homepage]Creator Home[/doclink], as this group is the owner of your sale event and it needs to be correctly linked to the games that you'd like to have participate in your event. …
Steam no longer supports Google Analytics. On July 1 2023, Google replaced their third-party traffic reporting system (Universal Analytics) with their own, called Google Analytics 4 (GA4). …
[list] [*] [doclink=features/steam_controller/device/steam_controller]Steam Controller[/doclink] [*] [doclink=features/steam_controller/device/ps4_controller]Playstation 4 Controller[/doclink] [*] [doclink=features/steam_controller/device/x360_controller]Xbox 360 Controller[/doclink] [*] [doclink=features/steam_controller/device/xb1_controller]Xbox One Controller[/doclink] [*] [doclink=features/steam_controller/device/nsp_controller]Nintendo Switch Pro Controller[/doclink] [*] Steam Link App Mobile Touch Controller [*] Playstation 3 Controller [*] Any DirectInput gamepad [/list] [docimg=controllers.jpg]controllers.jpg[/docimg] Note that the terms "Playstation 4 controller", "Xbox 360 controller", and "Xbox One controller" also refer to any variant devices (such as fighting game joysticks) that use the same input protocol as the base model.…
[list] [*]A product priced at the $0.99 USD tier could discount up to 50% off [*]A product priced at $1.99 USD tier could discount up to 75% off [*]A product priced at $4.99 USD tier could discount up to 90% off [/list] [/olist] If you have one or more products with pricing or discounting below the new minimums, this could cause one of the following issues: [list] [*]If your product's base price is below Steam's lowest possible transaction price in a currency, it is no longer available to purchase in countries that use that currency. [*]If you have a scheduled discount that would result in your final price falling below Steam's lowest possible transaction price, that product will not be available to purchase by customers in countries where the end price is below the minimum allowed. [*]If your base price is below Steam's lowest possible transaction price in any currency, you will be unable to schedule new discounts. [*]If your base price is near to Steam's lowest possible transaction price in any currency, the discount you can enter may be limited to ensure the resulting price does not fall below the minimum allowed. …
If you're planning on raising your price at or around the time of releasing out of Early Access and want to run a discount to celebrate your V1.0 release, you may want to consider these scenarios: [list] [*]You could leave your price as is, run a launch discount as you release into V1.0 out of Early Access and then raise your price 30 days [i]after[/i] that. [*]You could raise your price as you transition out of Early Access and not run a discount. [*]You could raise your price more than 30 days before you release out of Early Access, and then run a launch discount to go with your V1.0 release. …
No configuration work is required for users to access all game functionality.[/td] [/tr] [tr] [td][docimg=playable_50_1.png]Playable badge[/docimg][/td] [td][b]Playable[/b][/td] [td]Your game functions on Deck/Machine, but may require manual work from the user. …
[/list] The Steam Hardware compatibility detail display for your game on Steam Deck/Machine and on Steam on Desktop will direct customers to view the post. [docimg=deck_compat_developer_post_desktop_1.png]deck_compat_developer_post_desktop_1.png[/docimg] [section]FAQ[/section] [b]What application types are eligible for compatibility review?…