[section]Steam Deck™ Brand Guidelines and Logos[/section] Last Updated: May 2,2022 To ensure that Steam Deck™ branding and trademarks are used consistently across all marketing and communication materials, we have some guidelines that should be followed by all partners when using Steam Deck branding. …
[section]Overview[/section] On Steam, you have the option to ship your game as Free to Play (otherwise known as F2P). Free to Play games are free for customers to download. Sometimes they also contain in-game purchases to monetize content. Free to Play games don’t require you to enter pricing because the game is a free license. …
Note that this package will never become visible, but is important for our system to recognize the game as free. [docimg=Setup2.png]Setup2.png[/docimg] You can also change a game from paid to free. For more details, please see [doclink=#switching]Switching from paid to free[/doclink] [section]Selling Content for your Game[/section] Whether your game is Free to Play or paid, you have two ways to sell content for your game: DLC or in-game purchases (microtransactions). …
To enable the interaction profile you must request to use the extension: [code]XR_VALVE_frame_controller_interaction[/code] Then you can suggest bindings for the interaction profile path: [code]/interaction_profiles/valve/frame_controller_valve[/code] You can use the following paths: [code] "/user/hand/right/input/a/touch", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/right/input/a/click", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/right/input/b/touch", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/right/input/b/click", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/right/input/x/touch", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/right/input/x/click", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/right/input/y/touch", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/right/input/y/click", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/right/input/menu/touch", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/right/input/menu/click", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/right/input/system/touch", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/right/input/system/click", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/right/input/bumper/touch", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/right/input/bumper/click", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/right/input/squeeze/touch", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/right/input/squeeze/click", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/right/input/squeeze/value", XR_ACTION_TYPE_FLOAT_INPUT "/user/hand/right/input/trigger/touch", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/right/input/trigger/click", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/right/input/trigger/value", XR_ACTION_TYPE_FLOAT_INPUT "/user/hand/right/input/thumbstick/touch", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/right/input/thumbstick/click", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/right/input/thumbstick/x", XR_ACTION_TYPE_FLOAT_INPUT "/user/hand/right/input/thumbstick/y", XR_ACTION_TYPE_FLOAT_INPUT "/user/hand/right/input/thumbstick", XR_ACTION_TYPE_VECTOR2F_INPUT "/user/hand/right/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT "/user/hand/right/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT "/user/hand/right/output/haptic", XR_ACTION_TYPE_VIBRATION_OUTPUT "/user/hand/left/input/dpad_up/touch", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/left/input/dpad_up/click", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/left/input/dpad_left/touch", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/left/input/dpad_left/click", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/left/input/dpad_down/touch", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/left/input/dpad_down/click", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/left/input/dpad_right/touch", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/left/input/dpad_right/click", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/left/input/view/touch", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/left/input/view/click", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/left/input/system/touch", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/left/input/system/click", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/left/input/bumper/touch", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/left/input/bumper/click", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/left/input/squeeze/touch", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/left/input/squeeze/click", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/left/input/squeeze/value", XR_ACTION_TYPE_FLOAT_INPUT "/user/hand/left/input/trigger/touch", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/left/input/trigger/click", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/left/input/trigger/value", XR_ACTION_TYPE_FLOAT_INPUT "/user/hand/left/input/thumbstick/touch", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/left/input/thumbstick/click", XR_ACTION_TYPE_BOOLEAN_INPUT "/user/hand/left/input/thumbstick/x", XR_ACTION_TYPE_FLOAT_INPUT "/user/hand/left/input/thumbstick/y", XR_ACTION_TYPE_FLOAT_INPUT "/user/hand/left/input/thumbstick", XR_ACTION_TYPE_VECTOR2F_INPUT "/user/hand/left/input/grip/pose", XR_ACTION_TYPE_POSE_INPUT "/user/hand/left/input/aim/pose", XR_ACTION_TYPE_POSE_INPUT "/user/hand/left/output/haptic", XR_ACTION_TYPE_VIBRATION_OUTPUT [/code] [subsection=openvr]OpenVR Bindings[/subsection] You can bind to the Steam Frame Controllers like you would any other OpenVR controller type. …
[code] Left Controller "/user/hand/left/input/dpad_up": click, touch "/user/hand/left/input/dpad_down": click, touch "/user/hand/left/input/dpad_left": click, touch "/user/hand/left/input/dpad_right": click, touch "/user/hand/left/input/view": click, touch "/user/hand/left/input/bumper": click, touch "/user/hand/left/input/trigger": click, touch, value 1d "/user/hand/left/input/grip": click, touch, value 1d "/user/hand/left/input/thumbstick": click, touch, value 2d "/user/hand/left/input/system": click, touch Right Controller "/user/hand/right/input/a": click, touch "/user/hand/right/input/b": click, touch "/user/hand/right/input/x": click, touch "/user/hand/right/input/y": click, touch "/user/hand/right/input/menu": click, touch "/user/hand/right/input/bumper": click, touch "/user/hand/right/input/trigger": click, touch, value 1d "/user/hand/right/input/grip": click, touch, value 1d "/user/hand/right/input/thumbstick": click, touch, value 2d "/user/hand/right/input/system": click, touch [/code] [section]HMD[/section] It is unlikely that you will have a reason to need the hmd name, but if you do, its [b]controller_type[/b] is [code-inline]"frame_hmd"[/code-inline]. …
[/list] The results of a compatibility review will not affect whether your game is available to customers on Frame, but will affect how it is presented. [callout]Note: This review process only applies for games (both 2D and VR) running locally on Steam Frame, not games running on a PC streamed to Frame.[/callout] This process is a direct extension of the existing Steam Deck Compatibility Review process. …
We trust you'll target what makes most sense for your game and customers. [b]Performance[/b] [list] [*][b]2D titles[/b]: your game must run at a minimum 30 fps at 1280x720 during normal play. [*][b]VR titles[/b]: your game must run at a minimum of 72 fps at 1728x1728 during normal play. …
[Section=Getting Started]Getting Started[/Section] Steam's implementation is based upon [url=http://oauth.net/2/]OAuth 2.0[/url]. During your initial setup you will need to contact Valve with the following information: [list] [*]What permissions you need the user to obtain. …
[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. …
[docimg=steam_controller_triggers.png]steam_controller_triggers.png[/docimg] [subsection=HapticTrackpads]Haptic Trackpads[/subsection] [b]Analog, 2 axes[/b] (+ digital "click") The haptic trackpads are perhaps the defining feature of the Steam Controller, as well as the most versatile physical inputs on the device. …
Once an application has been shared, the invite will be active for the next 2 weeks or until the share is completed if less than 2 weeks. An invite can be canceled at anytime by the sender through the App Share Tool or a Valve employee if requested by [url=https://help.steampowered.com/en/wizard/HelpWithPublishing?…
[table] [tr] [td][docimg=override_example_1.jpg]override_example_1.jpg[/docimg][/td] [td][docimg=override_example_2.jpg]override_example_2.jpg[/docimg][/td] [td][docimg=override_example_3.jpg]override_example_3.jpg[/docimg][/td] [/tr] [tr] [td][docimg=override_example_4.jpg]override_example_4.jpg[/docimg][/td] [td][docimg=override_example_5.jpg]override_example_5.jpg[/docimg][/td] [td][docimg=override_example_6.jpg]override_example_6.jpg[/docimg][/td] [/tr] [tr] [td][docimg=override_example_7.jpg]override_example_7.jpg[/docimg][/td] [td][docimg=override_example_8.jpg]override_example_8.jpg[/docimg][/td] [td][docimg=override_example_9.jpg]override_example_9.jpg[/docimg][/td] [/tr] [/table] …
Submit Your Sale Page for Review[/subsection] When your Sale Page is complete, click 'Request Review' in the ‘Sale’ tab of the Sale Event Editor. Reviews typically take 2–3 business days, during which the team will ensure your event complies with the [doclink=/store/promo/organizers#10]Event Hosting Rules[/doclink]. …
[/td][/tr] [tr][td]2 Weeks Out[/td][td][b]Submit Sale Page & Assets[/b][/td][td]Finalize your sale page and submit it for review. If your event has been chosen for curated featuring, submit your layered PSD files to the Steam Events Team via the asset portal link shared in your ticket.…
However, the maximum number of Release State Override (beta) keys you can request for this purpose is generally 2,500 total. [u]You should not promise more than 2,500 [b]Release State Override (beta) keys[/b] for your game during your crowdfunding campaign[/u]. …
After that, all Steam Key requests are reviewed on a case-by-case basis. Release State Override (beta) keys are generally limited to 2,500 total. [list][*]If you’d like to run a larger-scale beta test ahead of your game’s launch, please use the Steam Playtest feature. …
The next time we open the radial menu, we will see this instead: [docimg=slime_rancher_2.png]slime_rancher_2.png[/docimg] Now we have options such as "Take screenshot", "Show keyboard", and volume controls. …
" [docimg=slime_rancher_add_layer_1.png]slime_rancher_add_layer_1.png[/docimg] We'll call it "System Options." [docimg=slime_rancher_add_layer_2_1.png]slime_rancher_add_layer_2_1.png[/docimg] Now that that's done, we return to our base configuration and "game controls" action set, then select the left trackpad and configure our basic radial menu: [docimg=slime_rancher_radial_menu_config_1.png]slime_rancher_radial_menu_config_1.png[/docimg] Everything is pretty normal except for Menu Button 5, which activates the action set layer. …
[section=PerformanceGraph]Performance Graph[/section] You can turn on the in-headset performance graph from the Quick Access Menu: click the Clock button in the lower right hand corner of the Dashboard, then the Performance button, scroll down to VR Settings and toggle [b]Show Perf Overlay In VR[/b]. [docimg=steamframe-perfgraph2.png]steamframe-perfgraph2.png[/docimg] The overlay is made of 2 parts: a colored history graph representing game frame times and some raw numbers. …
In other words, they mean that your game is making framerate. [*][b]Yellow[/b] means your game is running at half rate (each submitted frame is taking between 1 and 2 vsync intervals to finish). [*][b]Red[/b] means your game is taking more than 2 vsync intervals to finish each frame. [*][b]Pink[/b] means SteamVR's compositor GPU preemption failed for some reason. …
Of course, you'll need to update the name later before your game is announced and releases its Coming Soon store page. [*]Release State Override keys are limited to 2,500 per app. If you need more than 2,500 keys for a confidential playtest, then the probability of a leak is increasing to the point where you're likely "announcing" your product anyway. …
[docimg=friendinvite3.png]friendinvite3.png[/docimg] [docimg=friendinvite2.JPG]friendinvite2.JPG[/docimg] Like other Steam playtest options, everything can be configured in the dashboard. [docimg=invitefriends1.png]invitefriends1.png[/docimg] Using the dashboard, you can specify the number of invites each player gets: 1, 2, or 3 You can also enable friend invites or pause new friend invites anytime with a few clicks. …
[/td][/tr] [tr=k_ERemotePlayInputMouseButtonDown][td][b]k_ERemotePlayInputMouseButtonDown[/b][/td][td]2[/td][td]Mouse button down event.[/td][/tr] [tr=k_ERemotePlayInputMouseButtonUp][td][b]k_ERemotePlayInputMouseButtonUp[/b][/td][td]3[/td][td]Mouse button up event.…
[/td][/tr] [tr=k_ERemotePlayMouseWheelDown][td][b]k_ERemotePlayMouseWheelDown[/b][/td][td]2[/td][td]Mouse wheel scrolled towards the user.[/td][/tr] [tr=k_ERemotePlayMouseWheelLeft][td][b]k_ERemotePlayMouseWheelLeft[/b][/td][td]3[/td][td]Mouse wheel scrolled to the left.…
. [*]Once a game is registered, you can then enter discounts on the Sale Approvals page: https://partner.steamgames.com/promotion/discounts/dashboard/ [/olist] [b]Q. Can I participate with my free to play (F2P) game?[/b] A. While discounted released games will be featured most prominently—and unless otherwise noted in the event-specific documentation—F2P games are welcome to participate and will be included in a section for F2P games. F2P games are generally not eligible to appear in the official event trailer for Steam themed sale events. [b]Q. Can I participate with my unreleased game?…
This is the approach used by older Valve Source games such as Team Fortress 2 and Counter-Strike: Source. If you choose OpenGL then we recommend using the core functionality in OpenGL 3.0 for your game. Simple DirectMedia Layer (SDL) version 2.0 provides low-level access to audio and windowing, amongst many other things. …
The following libraries provide support for other aspects of game development: [list] [*] [url=http://www.freetype.org/index.html]FreeType[/url] - font rendering (both vector-based and bitmap fonts) on Linux [*] [url=http://www.freedesktop.org/wiki/Software/fontconfig]Fontconfig[/url] - configuring and customizing font access [*] [url=http://www.radgametools.com/miles.htm]Miles Sound System[/url] - a middleware sound engine for Linux development [*] [url=http://www.radgametools.com/bnkmain.htm]Bink Video[/url] - a video codec designed for game developers [*] [url=http://www.webmproject.org/]WebM[/url] - an open media file format; used for recording Team Fortress 2 video instead of QuickTime. [/list] [section]Linux Runtime[/section] Titles with native Linux support may select a specific version of the Steam for Linux runtime to execute under. …
[section]Special inputs[/section] In addition to emulating mouse, keyboard, and gamepad input, there are also a row of special bindings at the top: [docimg=legacy_mode_2.png]legacy_mode_2.png[/docimg] [subsection]Change Action Set/Layer[/subsection] [docimg=legacy_action_set.png]legacy_action_set.png[/docimg] This lets you activate Action Sets or [doclink=features/steam_controller/action_set_layers][/doclink] that you have defined yourself. …
[section]Foveated Rendering[/section] Steam Frame supports the Foveated Rendering functionality in Godot via the [url=https://godotvr.github.io/godot_openxr_vendors/]OpenXR Vendors Plugin[/url] (or releases [url=https://github.com/GodotVR/godot_openxr_vendors/releases]here[/url]). [callout]Version 4.2.x is needed for vendor extension support including foveated rendering. 4.2.3 is the minimum version with Linux Arm64 support. 5.x or newer recommended.…
. [*] [b]Check your tags/categories[/b] - Steam Next Fest is organized based on the categories you selected when you registered (up to 2 categories per game) and then based on the store tags applied to your game. If you don't select any categories, your game cannot appear in the 'By Genre' or 'By Feature' sections. …
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?…
[section=website]Web Browser based authentication with OpenID[/section] Steam is an [url=http://openid.net/]OpenID[/url] Provider, as described in the OpenID 2.0 specification. Inside a web browser, a third-party website can use OpenID to obtain a user's SteamID which can be used as the login credentials for the 3rd party website, or linked to an existing account on that website. …
Steam provides the following images which may be used by 3rd party sites when linking to the Steam sign in page: [docimg=sits_large_border.png]sits_large_border.png[/docimg] [docimg=sits_large_noborder.png]sits_large_noborder.png[/docimg] [docimg=sits_small.png]sits_small.png[/docimg] [h4]User Authentication[/h4] Steam's OpenID 2.0 implementation can be used to link a users Steam account to their account on the third-party website. A list of open source OpenID libraries can be found at the [url=http://openid.net/developers/libraries/]OpenID website[/url]. …