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. …
[/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.…
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. …
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. …
[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.…
[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.…
[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. …
[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. …
How these dates appear can be customized within a set of options built into Steam. [docimg=release_dates_example1]release_dates_example1[/docimg] [section]Setting Your Game's Release Date[/section] The release date can be set from your game's landing page in Steamworks. …
[/b] A: The full documentation can be found here. https://partner.steamgames.com/doc/store/coming_soon [b]Q: Can I set a release date for when my Early Access Game will transition to V1.0 Full Release?[/b] A: Yes, for Early Access games there is now a a date picker to select a planned 1.0 release date on the Early Access tab of the Edit Store Page tools. …
[section=SetItemPaymentRules]SetItemPaymentRules[/section] [code=http]POST https://partner.steam-api.com/IWorkshopService/SetItemPaymentRules/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=GetItemDailyRevenue]GetItemDailyRevenue[/section] [code=http]GET https://partner.steam-api.com/IWorkshopService/GetItemDailyRevenue/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.…
You will find this at [b]Steam Settings > System > Enable Developer Mode[/b]. [docimg=steamframe-devmode_1.png]steamframe-devmode_1.png[/docimg] Then on the left, scroll down to the [b]Developer[/b] section, scroll toward the bottom of that page and click [b]Set User Password[/b]. …
Then anywhere in these documents you see [b]frame[/b] as a hostname, just know to change it to whatever you have set here. [docimg=steamframe-hostname_1.png]steamframe-hostname_1.png[/docimg] …
" 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. …
Here's an example: [code] "localization" { "english" { "Title_Config1" "Official Configuration" "Description_Config1" "This config was created by the developers of Game X.…
- "joystick_move": x & y will be values ranging between -1 & 1, representing the current position of the joystick. [/code] While you're in your code, make sure you're not preventing the user from combining different kinds of input simultaneously. …
[/callout] [callout]Please use the current Photoshop [url=https://www.dropbox.com/scl/fo/mhf604o6bdbcfr1scq7bx/h?rlkey=9bk0ggiwuvs4o1jdnej4xsy0c&st=9iurtcwm&dl=0] TEMPLATES[/url][/callout] Once enabled, the Sale Tab will let you create and customize your landing page. …
[b]Please use the current Photoshop [url=https://www.dropbox.com/scl/fo/mhf604o6bdbcfr1scq7bx/h?rlkey=9bk0ggiwuvs4o1jdnej4xsy0c&st=9iurtcwm&dl=0] TEMPLATES[/url].[/b] Critical content should be placed within the template safe area indicated by the 940-pixel-wide lime green box. …
int nXinputSlot = 0; // Replace with the button you are querying for EXboxOrigin eXboxButtonToGetGlyphFor = k_EXboxOrigin_A; EInputActionOrigin buttonOrigin = k_EInputActionOrigin_XBoxOne_A; // If the controller is configured through Steam Input - translate the button InputHandle_t controller1Handle = SteamInput()->GetControllerForGamepadIndex( nXinputSlot ); if ( controller1Handle > 0 ) { // Valid handles are non-zero, this is a controller configured through Steam Input // Note: controllers that are using Steam Input API will not return a handle through GetControllerForGamepadIndex() buttonOrigin = SteamInput()->GetActionOriginFromXboxOrigin( controller1Handle, k_EXboxOrigin_A ); //i.e, k_EInputActionOrigin_PS4_X } else { // Valid handles are non-zero, this is a normal Xbox controller // Continue using the original button } // Steam will continue to add action origins and future controllers will exceed the current range // If you want to test you could fake that Switch/PS5 controllers don't exist and change this to: // if ( buttonOrigin >= k_EInputActionOrigin_XBox360_Reserved10 ) if ( buttonOrigin >= k_EInputActionOrigin_Count ) { // We didn't ship any art in our game for this origin! …
The button diamond binding also have localized names." "abutton" "Your name here 1" "bbutton" "Your name here 2" "xbutton" "Your name here 3" "ybutton" "Your name here 4" } ... …
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. …
[section=RankedByTrend]RankedByTrend[/section] [code=http]POST https://partner.steam-api.com/ISteamPublishedItemSearch/RankedByTrend/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=RankedByVote]RankedByVote[/section] [code=http]POST https://partner.steam-api.com/ISteamPublishedItemSearch/RankedByVote/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.…
[/td][/tr] [tr=k_EChatInstanceFlagClan][td][b]k_EChatInstanceFlagClan[/b][/td][td]( k_unSteamAccountInstanceMask + 1 ) >> 1[/td][td]The Steam ID is for a Steam group.[/td][/tr] [tr=k_EChatInstanceFlagLobby][td][b]k_EChatInstanceFlagLobby[/b][/td][td]( k_unSteamAccountInstanceMask + 1 ) >> 2[/td][td]The Steam ID is for a Lobby.…
[table] [tr][th]Name[/th][th]Value[/th][th]Description[/th][/tr] [tr=k_EMarketingMessageFlagsNone][td][b]k_EMarketingMessageFlagsNone[/b][/td][td]0[/td][td][/td][/tr] [tr=k_EMarketingMessageFlagsHighPriority][td][b]k_EMarketingMessageFlagsHighPriority[/b][/td][td]1 << 0[/td][td][/td][/tr] [tr=k_EMarketingMessageFlagsPlatformWindows][td][b]k_EMarketingMessageFlagsPlatformWindows[/b][/td][td]1 << 1[/td][td][/td][/tr] [tr=k_EMarketingMessageFlagsPlatformMac][td][b]k_EMarketingMessageFlagsPlatformMac[/b][/td][td]1 << 2[/td][td][/td][/tr] [tr=k_EMarketingMessageFlagsPlatformLinux][td][b]k_EMarketingMessageFlagsPlatformLinux[/b][/td][td]1 << 3[/td][td][/td][/tr] [tr=k_EMarketingMessageFlagsPlatformRestrictions][td][b]k_EMarketingMessageFlagsPlatformRestrictions[/b][/td][td]=[/td][td]aggregate flags[/td][/tr] [/table] [subsection=ENotificationPosition]ENotificationPosition[/subsection] Possible positions to have the overlay show notifications in. …
[b]Returns:[/b] float The volume is returned as a percentage between [b]0.0[/b] and [b]1.0[/b]. [subsection=Pause]Pause[/subsection] [code=cpp]void Pause();[/code] Pause the Steam Music player. [subsection=Play]Play[/subsection] [code=cpp]void Play();[/code] Have the Steam Music player resume playing. …
[/td][/tr] [tr=AudioPlayback_Playing][td][b]AudioPlayback_Playing[/b][/td][td]1[/td][td]Steam Music is currently playing.[/td][/tr] [tr=AudioPlayback_Paused][td][b]AudioPlayback_Paused[/b][/td][td]2[/td][td]Steam Music is currently paused.…
Currently can only be 1 item and it must be set to [b]1[/b]![/td][/tr] [tr][td][b]unArrayGenerateLength[/b][/td][td][apitype]steam_api::uint32[/apitype][/td][td]The number of items in [code-inline]pArrayGenerate[/code-inline] and [code-inline]punArrayGenerateQuantity[/code-inline]. …
The API currently takes an array of items to generate but at this time the size of that array must be 1 and the quantity of the new item must be 1. Any items that can be granted MUST have an exchange attribute in their itemdef. The exchange attribute specifies a set of recipes that are valid exchanges for this item. …