While at its core, the Steam Deck is a PC, it comes in a new form factor, and with an additional set of customer hopes and expectations. In addition to the criteria used for Steam Deck compatibility review process
, we have some additional recommendations, presented here.
None of the recommendations on this page will affect the compatibility badge of your game. All recommendations here are targeted at meeting customer expectations around input and display, improving performance and battery life, and taking full advantage of the new opportunities provided by the Deck.
While the recommendations here are disproportionately valuable to Deck customers, they are also all valuable for PC gamers in general, many of whom only play with controllers, only play in their living room, etc.
Steamworks SDK: Many of the APIs recommended on this page were added in version 1.52 of the Steamworks SDK, released September 14, 2021.
- Default Controller Configuration: We strongly recommend (and require for Verified on Deck badging) that the default controller configuration for your game enables access to all in-game functionality. If your game doesn't natively support controllers, we recommend creating a controller configuration to map to the appropriate mouse and keyboard inputs. Better yet, implementing gamepad or native Steam Input support may open your game to a whole new set of customers.
- Text Input: We strongly recommend (and require for Verified on Deck badging) that games automatically display an on-screen keyboard when requiring the user to input text. We recommend using one of the two Steamworks SDK on-screen keyboard APIs, depending on your use case: ShowFloatingGamepadTextInput (sends direct key inputs) and ShowGamepadTextInput (callback-based).
- Gyro/Trackpad Friendliness: We recommend that games with support for both mouse-style (1:1 movement) and joystick-style camera movement cleanly support both at the same time. We recommend allowing mouse events to affect the camera as they normally would without perturbing simultaneous controller functionality, and only switching to mouse/keyboard mode if a mouse click event is received. Common problems include joystick input getting locked out when mouse camera is used and vice versa, controller buttons not working when mouse camera is being used, on-screen button prompts changing between controller and keyboard/mouse icons, all of which make it more difficult for customers to play with their preferred control scheme. (Note: this functionality is automatic when using the Steam Input API.)
- Vulkan API: We recommend targeting Vulkan as your primary graphics API for best performance and battery life. If you use an engine like Unity or Unreal, enabling Vulkan in your build for all users will result in the highest performance/longevity. (Note: Proton includes a DirectX-to-Vulkan translation layer. If your game or engine has high-quality DirectX support but no Vulkan support, it's likely that this automated translation layer will exceed the performance of doing a custom Vulkan implementation.)
- Video/Audio Codecs: We recommend using standalone codecs (eg., VP9 or AV1) rather than codecs that are tied to a specific vendor (eg., WMF).
- Clouded Saves: For games that allow saving, we recommend enabling automatic clouding of saved games: users should be able to save their game on a Deck and resume on a different PC, and vice versa, without manually transferring files. This means that games should provide a form of cloud save via either Steam Cloud or an automatic third-party service such as a game- or publisher-specific account with server-side save files. We highly recommend using Steam Cloud for automatic transfers. We recommend against syncing game configuration settings, ie., display resolution, between different devices.
- Offline Mode: We strongly recommend all singleplayer content is accessible without an Internet connection. You can test your game without any online connectivity, including the first run on a new Steam account. This feature is especially valuable for Deck customers, who may have more sporadic network access than a standard gaming PC.
- Launchers: We recommend putting all required functionality into your game client rather than requiring users to navigate a launcher before running your game. Launchers often rely on platform-specific frameworks (ie., .NET, WPF, etc.) that can turn into difficult experiences for customers on a small screen using a controller for navigation. When native UI launchers are required, you can use the SetGameLauncherMode API to automatically translate controller input to keyboard/mouse events to assist the user.