[/td][/tr] [tr][td][b]appdata[/b][/td][td]uint64[/td][td][/td][td](Optional) App specific data about the type of cheating set by developer. (ex 1 = Aimbot, 2 = Wallhack, 3 = Griefing)[/td][/tr] [tr][td][b]heuristic[/b][/td][td]bool[/td][td][/td][td](Optional) Extra information about the source of the cheating - was it a heuristic.…
[/td][/tr] [tr][td][b]timeend[/b][/td][td]uint32[/td][td]✔[/td][td]The end of the time range. Formatted as Unix epoch time (time since Jan 1st, 1970).[/td][/tr] [tr][td][b]timebegin[/b][/td][td]uint32[/td][td]✔[/td][td]The beginning of the time range. Formatted as Unix epoch time (time since Jan 1st, 1970).…
[section=CreateSession]CreateSession[/section] [code=http]POST https://partner.steam-api.com/IGameNotificationsService/CreateSession/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 Response:[/b] [code=xml] { "response": { } } [/code] [b]Calling Example:[/b] [code] { "sessionid": "10" } [/code] [section=DeleteSessionBatch]DeleteSessionBatch[/section] [code=http]POST https://partner.steam-api.com/IGameNotificationsService/DeleteSessionBatch/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.…
[section=GetFriendList]GetFriendList[/section] [code=http]GET https://partner.steam-api.com/ISteamUser/GetFriendList/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.…
[/td][/tr] [tr][td][b]vanityurl[/b][/td][td]string[/td][td]✔[/td][td]The vanity URL to get a SteamID for[/td][/tr] [tr][td][b]url_type[/b][/td][td]int32[/td][td][/td][td]The type of vanity URL. 1 (default): Individual profile, 2: Group, 3: Official game group[/td][/tr] [/table] …
[section=GetTradeHistory]GetTradeHistory[/section] [code=http]GET https://api.steampowered.com/IEconService/GetTradeHistory/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.…
[section=GetTradeOffers]GetTradeOffers[/section] [code=http]GET https://api.steampowered.com/IEconService/GetTradeOffers/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.…
. [*][b]On its own dedicated calendar page[/b], where it shows [b]eight weeks[/b] of releases. [/list] [docimg=frontpagecalendar1.png]frontpagecalendar1.png[/docimg] [i]The Personal Calendar on the Steam Store front page.[/i] [docimg=standalonecalendar1.png]standalonecalendar1.png[/docimg] [i]The dedicated Personal Calendar page.…
[subsection]Changing Your Release Date[/subsection] You can still change your release date after your game has appeared on the calendar, whether it's a full release or an Early Access to 1.0 launch. [b]However, if you delay your release date by more than 24 hours once your game is within two weeks of launch your game will be removed from the calendar. …
Trailers are displayed at the top of your product's store page and are often one of the first things your potential customers will be seeing. [docimg=Portal2TrailerExample2_1.jpg]Portal2TrailerExample2_1.jpg[/docimg] [section]Best Practices[/section] Trailers are important in marketing your product on Steam. …
[subsection]More Details[/subsection] Check out this presentation from Steam Dev Days 2016 for general best practices for trailers: [url]https://www.youtube.com/watch?v=eok0W1nKjM0&t=14m41s[/url] [section]Uploading a Trailer[/section] To upload your trailers, go to the Store Page Admin > Trailers tab. …
The minimum active level, 0, represents the lowest overall image quality, but the maximum performance. -1 (default) disables foveation. [*][b]xr.VRS.SteamFrame.DynamicFoveation[/b] - When set to 1, the foveation amount will change based on current measured GPU load to try and maintain the target framerate. …
This is a pixel divisor, so sampling will occur at 1.0 / Density. Because of this, note that the lower the value of the density, the bigger the effect on quality! [*][b]xr.VRS.SteamFrame.TestFoveation.FovealWidth[/b] - The size, in float percentage of the screen diagonal (0.0, 1.0], for the foveal region of the screen where FovealDensity is applied. [*][b]xr.VRS.SteamFrame.TestFoveation.MidBandDensity[/b] - The same as FovealDensity, but for the mid-quality band immediately outside the foveal region. [*][b]xr.VRS.SteamFrame.TestFoveation.MidBandWidth[/b] - The size, in float percentage of the screen diagonal (0.0, 1.0], for the mid-quality band immediately outside of the foveal region. …
If so, you should also consider publishing a [doclink=/marketing/event_tools]News Event[/doclink] to share these details with your current players. [*][b][i]Set Your V1.0 Full Release Date[/i][/b] - On the Early Access tab of the Edit Store Page tools a date picker to select a planned 1.0 release date. …
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 discount as you release V1.0 out of Early Access and then raise your price after 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 discount to go with your V1.0 release.…
All demos that have opted in to be available for press preview will be included. [*][b]February 22[/b] -[b] Steam Next Fest: February 2027 begins at 10am PST[/b]; set your demo live (or opt out if your plans have changed) before 10am PST. [*][b]March 1[/b] - Steam Next Fest: February 2027 concludes. [*][b]March 1[/b] - Steam Next Fest: February 2027 Wrap-Up (featuring games with the most played demos of the Fest) launches. [/list] [section=eligibility]Eligibility[/section] Steam Next Fest: February 2027 is open to upcoming games that meet all of the following criteria: [list] [*]Associated with a Steamworks developer account in good standing [*]Store page must be published and public [*]Is not a prologue, chapter 1, or otherwise 'demo' version of existing content available to customers [*]Includes a publicly playable demo by the time the festival begins [*]Released any time after the conclusion of the fest on March 1, 2027 [/list] [b]Please Note:[/b] [list] [*]All upcoming games may participate with a playable demo in Steam Next Fest, regardless of release date. [*]A game may only appear once in Steam Next Fest. …
[/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.…
[/td][/tr] [tr=k_PFI_MatchingFileType_Collections][td][b]k_PFI_MatchingFileType_Collections[/b][/td][td]1[/td][td]A collection of Workshop items.[/td][/tr] [tr=k_PFI_MatchingFileType_Art][td][b]k_PFI_MatchingFileType_Art[/b][/td][td]2[/td][td]Artwork.…
Its v1.0 release date (aka Early Access Graduation) is approaching on October 15, but it also wants to run one last custom discount during the early access window, [i]and[/i] it also wants to run another launch discount for the v1.0 Release. How can it manage a price increase, a custom discount, a v1.0 release and a launch discount given the cooldown timers? One potential solution would be the following: [list] [*] On September 1st, Bass Ain't Bitin' 2 sets up a 14-day discount on its current Early Access prices. …
This will be posted within your publisher/developer homepage when you hit 'publish' [/list] [section]Required Artwork and Banners[/section] Download the full set of Photoshop templates here: [url=https://www.dropbox.com/scl/fo/mhf604o6bdbcfr1scq7bx/h?rlkey=9bk0ggiwuvs4o1jdnej4xsy0c&st=sb1voje6&dl=0] CURRENT TEMPLATES[/url] The minimum required banners and artwork are these two: [list] [*][b]Event Cover Image[/b] - This is the image that appears when your page is shared on social media and in lists on Steam [*][b]Store Sale Page Background[/b] - The image that appears at the top and background of your sale page. …
[section=GetAppBetas]GetAppBetas[/section] [code=http]GET https://partner.steam-api.com/ISteamApps/GetAppBetas/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.…
[section=GetAppBuilds]GetAppBuilds[/section] [code=http]GET https://partner.steam-api.com/ISteamApps/GetAppBuilds/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.…
[section=GetAssetID]GetAssetID[/section] [code=http]GET https://partner.steam-api.com/IEconMarketService/GetAssetID/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.…
[section=GetPopular]GetPopular[/section] [code=http]GET https://partner.steam-api.com/IEconMarketService/GetPopular/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.…
[code] "In Game Actions" { "actions" { "GameControls" { "title" "#Set_GameControls" "StickPadGyro" { "Move" { "title" "#Action_Move" "input_mode" "joystick_move" } "Look" { "title" "#Action_Look" "input_mode" "absolute_mouse" } } "Button" { "Attack" "#Action_Attack" "AltAttack" "#Action_AltAttack" "Jump" "#Action_Jump" "Crouch" "#Action_Crouch" "Sprint" "#Action_Sprint" "StrafeLeft" "#Action_StrafeLeft" "StrafeRight" "#Action_StrafeRight" "Interact" "#Action_Interact" "Menu" "#Action_Menu" "Item1" "#Action_Item1" "Item2" "#Action_Item2" "Item3" "#Action_Item3" "Item4" "#Action_Item4" "Item5" "#Action_Item5" "PrevItem" "#Action_PrevItem" "NextItem" "#Action_NextItem" } } "MenuControls" { "title" "#Set_MenuControls" "Button" { "MenuUp" "#Menu_Up" "MenuDown" "#Menu_Down" "MenuLeft" "#Menu_Left" "MenuRight" "#Menu_Right" "Affirm" "#Menu_Affirm" "Cancel" "#Menu_Cancel" "Other" "#Menu_Other" "ScrollUp" "#Menu_ScrollUp" "ScrollDown" "#Menu_ScrollDown" "DismissMenu" "#Menu_DismissMenu" } } } "localization" { "english" { "Set_GameControls" "Game Controls" "Set_MenuControls" "Menu Controls" "Action_Move" "Move" "Action_Look" "Look" "Action_Attack" "Attack" "Action_AltAttack" "Alternate Attack" "Action_Jump" "Jump" "Action_Crouch" "Crouch" "Action_Sprint" "Sprint" "Action_StrafeLeft" "Strafe Left" "Action_StrafeRight" "Strafe Right" "Action_Interact" "Interact" "Action_Menu" "Menu" "Action_Item1" "Item 1" "Action_Item2" "Item 2" "Action_Item3" "Item 3" "Action_Item4" "Item 4" "Action_Item5" "Item 5" "Action_PrevItem" "Previous Item" "Action_NextItem" "Next Item" "Menu_Up" "Up" "Menu_Down" "Down" "Menu_Left" "Left" "Menu_Right" "Right" "Menu_Affirm" "Affirm" "Menu_Cancel" "Cancel" "Menu_Other" "Other" "Menu_ScrollUp" "Scroll Up" "Menu_ScrollDown" "Scroll Down" "Menu_DismissMenu" "Dismiss Menu" } } } [/code] [section=action] Third Person Action / Adventure[/section] This is for a third-person action / adventure game where you move a character around an environment, and can do basic things like jump, sneak, interact with things/people, and engage in simple combat. …
[code] "In Game Actions" { "actions" { "GameControls" { "title" "#Set_GameControls" "StickPadGyro" { "MoveCursor" { "title" "#Action_MoveCursor" "input_mode" "absolute_mouse" } "CameraPan" { "title" "#Action_CameraPan" "input_mode" "absolute_mouse" } "CameraZoom" { "title" "#Action_CameraZoom" "input_mode" "absolute_mouse" } } "Button" { "click" "#Action_Click" "cancel" "#Action_Cancel" "select" "#Action_Select" "select_add_remove" "#Action_AddRemove" "select_type" "#Action_SelectType" "select_idle" "#Action_SelectIdle" "move_attack" "#Action_MoveAttack" "move_no_attack" "#Action_Move" "attack_target" "#Action_Attack" "assign_group" "#Action_AssignGroup" "add_remove_group" "#Action_AddRemoveGroup" "select_group" "#Action_SelectGroup" "group_0" "#Action_Group0" "group_1" "#Action_Group1" "group_2" "#Action_Group2" "group_3" "#Action_Group3" "group_4" "#Action_Group4" "group_5" "#Action_Group5" "group_6" "#Action_Group6" "group_7" "#Action_Group7" "group_8" "#Action_Group8" "group_9" "#Action_Group9" } } "MenuControls" { "title" "#Set_MenuControls" "Button" { "MenuUp" "#Menu_Up" "MenuDown" "#Menu_Down" "MenuLeft" "#Menu_Left" "MenuRight" "#Menu_Right" "Affirm" "#Menu_Affirm" "Cancel" "#Menu_Cancel" "Other" "#Menu_Other" "ScrollUp" "#Menu_ScrollUp" "ScrollDown" "#Menu_ScrollDown" "DismissMenu" "#Menu_DismissMenu" } } } "action_layers" { "title" "#Layer_UnitMenu" "Button" { "stop" "#Unit_Stop" "hold" "#Unit_Hold" "patrol" "#Unit_Patrol" "follow" "#Unit_Follow" "queue" "#Unit_Queue" "unit_ability_1" "#Unit_Ability1" "unit_ability_2" "#Unit_Ability2" } "title" "#Layer_BuildMenu" "Button" { "build_0" "#Build_0" "build_1" "#Build_1" "build_2" "#Build_2" "build_3" "#Build_3" "build_4" "#Build_4" "build_5" "#Build_5" "build_6" "#Build_6" "build_7" "#Build_7" "build_8" "#Build_8" "build_9" "#Build_9" } } "localization" { "english" { "Set_GameControls" "Game Controls" "Set_MenuControls" "Menu Controls" "Layer_UnitMenu" "Unit Menu" "Layer_BuildMenu" "Build Menu" "Action_MoveCursor" "Move Cursor" "Action_CameraPan" "Pan camera" "Action_CameraZoom" "Zoom camera" "Action_Click" "Click mouse" "Action_Cancel" "Cancel" "Action_Select" "Select" "Action_AddRemove" "Add/remove from selection" "Action_SelectType" "Select all units of type" "Action_SelectIdle" "Select idle worker" "Action_MoveAttack" "Attack-Move" "Action_Move" "Move (no attack)" "Action_Attack" "Attack target" "Action_AssignGroup" "Assign group" "Action_AddRemoveGroup" "Add/remove from group" "Action_SelectGroup" "Select group" "Action_Group0" "Group 0" "Action_Group1" "Group 1" "Action_Group2" "Group 2" "Action_Group3" "Group 3" "Action_Group4" "Group 4" "Action_Group5" "Group 5" "Action_Group6" "Group 6" "Action_Group7" "Group 7" "Action_Group8" "Group 8" "Action_Group9" "Group 9" "Menu_Up" "Up" "Menu_Down" "Down" "Menu_Left" "Left" "Menu_Right" "Right" "Menu_Affirm" "Affirm" "Menu_Cancel" "Cancel" "Menu_Other" "Other" "Menu_ScrollUp" "Scroll Up" "Menu_ScrollDown" "Scroll Down" "Menu_DismissMenu" "Dismiss Menu" "Unit_Stop" "Stop" "Unit_Hold" "Hold ground" "Unit_Patrol" "Patrol" "Unit_Follow" "Follow" "Unit_Queue" "Queue action/waypoint" "Unit_Ability1" "Ability 1" "Unit_Ability2" "Ability 2" "Build_0" "Build option 0" "Build_1" "Build option 1" "Build_2" "Build option 2" "Build_3" "Build option 3" "Build_4" "Build option 4" "Build_5" "Build option 5" "Build_6" "Build option 6" "Build_7" "Build option 7" "Build_8" "Build option 8" "Build_9" "Build option 9" } } } [/code] [section=4x] 4X Strategy[/section] This is a simple 4X strategy game, where you move units on a main map, colonize territory (whether that's planets or islands or cities), and engage in combat with other empires. …
[table] [tr] [td]OpenVR (Depth-assisted reprojection)[/td] [td][url=https://github.com/ValveSoftware/openvr/wiki/IVRCompositor::Submit]IVRCompositor::Submit[/url] with [url=https://github.com/ValveSoftware/openvr/blob/v2.15.6/headers/openvr.h#L191]VRTextureWithPoseAndDepth_t[/url][/td] [/tr] [tr] [td]OpenVR (Depth+Motion-assisted reprojection)[/td] [td][url=https://github.com/ValveSoftware/openvr/wiki/IVRCompositor::Submit]IVRCompositor::Submit[/url] with [url=https://github.com/ValveSoftware/openvr/blob/v2.15.6/headers/openvr.h#L202]VRTextureWithMotion_t[/url][/td] [/tr] [tr] [td]OpenXR (Depth-assisted reprojection)[/td] [td][url=https://registry.khronos.org/OpenXR/specs/1.0/man/html/XR_KHR_composition_layer_depth.html]XR_KHR_composition_layer_depth[/url][/td] [/tr] [tr] [td]OpenXR (Depth+Motion-assisted reprojection) Vendor-agnostic[/td] [td][url=https://registry.khronos.org/OpenXR/specs/1.1/man/html/XR_EXT_frame_synthesis.html]XR_EXT_frame_synthesis[/url][/td] [/tr] [tr] [td]OpenXR (Depth+Motion-assisted reprojection) Oculus[/td] [td][url=https://registry.khronos.org/OpenXR/specs/1.0/man/html/XR_FB_space_warp.html]XR_FB_space_warp[/url][/td] [/tr] [/table] You can visualize the depth or motion vectors submitted by using the [doclink=steamframe/debugging#GameTextures]Draw Performance Assessment Game Textures in Headset[/doclink] option. …
[table] [tr] [td]OpenVR[/td] [td][url=https://github.com/ValveSoftware/openvr/wiki/IVRSystem%3A%3AGetRecommendedRenderTargetSize]IVRSystem::GetRecommendedRenderTargetSize[/url][/td] [/tr] [tr] [td]OpenXR[/td] [td][url=https://registry.khronos.org/OpenXR/specs/1.0/man/html/xrEnumerateViewConfigurationViews.html]xrEnumerateViewConfigurationViews[/url][/td] [/tr] [/table] [section]Clearing transient conditions[/section] If a transient condition (eg: a loading screen that slows the rendering) or a well-understood issue is causing the overlay to mark the game as [b]UNSUPPORTED[/b], it is useful to clear this status on the overlay and resume evaluation. …
This page displays the first trailer available on the game's store page, based on any language or country restrictions set for the trailers. [docimg=Example_1.png]Example_1.png[/docimg] [subsection]See your game's page[/subsection] By adding the appID to the end of a URL, you can easily view and share this page for any of your games that are Steam Deck Verified. …
[/td][/tr] [tr][td][b]usDurationMicroSec[/b][/td][td]unsigned short[/td][td]Duration of the pulse, in microseconds (1/1,000,000th of a second)[/td][/tr] [/table] Triggers a (low-level) haptic pulse on supported controllers. Previously named TriggerHapticPulse. …
[/td][/tr] [tr][td][b]usDurationMicroSec[/b][/td][td]unsigned short[/td][td]Duration of the pulse, in microseconds (1/1,000,000th of a second).[/td][/tr] [tr][td][b]usOffMicroSec[/b][/td][td]unsigned short[/td][td]Duration of the pause between pulses, in microseconds.…
" option, so make sure you've plugged in your device: [docimg=desktop_game_select_context_1.png]desktop_game_select_context_1.png[/docimg] With your device plugged in and the correct menu showing, select "Edit Steam Controller Configuration...…
[docimg=config_csh.png]config_csh.png[/docimg] We're greeted by a default legacy configuration, selected from one of several templates: [docimg=gamepad_w_camera_1.png]gamepad_w_camera_1.png[/docimg] Here, instead of binding physical inputs to native in-game actions, physical inputs are simply bound to other physical inputs. …
[section=GetServerInfo]GetServerInfo[/section] [code=http]GET https://api.steampowered.com/ISteamWebAPIUtil/GetServerInfo/v1/[/code] This call has no additional parameters. [section=GetSupportedAPIList]GetSupportedAPIList[/section] [code=http]GET https://api.steampowered.com/ISteamWebAPIUtil/GetSupportedAPIList/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]The Steamworks Web API authentication key which is required to receive restricted methods.…