Steamworks Documentation
Steam Remote Play

Steam Remote Play Overview


Extend your Steam gaming experience to your phone, tablet or TV using the Steam Remote Play feature with the Steam Link app. Steam Remote Play is also used to play your game remotely when logged into Steam on another computer.

Each computer or device connected via Remote Play has it's own session. You can find out more about connected devices using the ISteamRemotePlay Interface

If you have optimized your game for remote play on various types of devices, you can check the appropriate feature checkboxes in the Basic Info section of the Store Page admin on the partner site, and your game will show up when customers search for games that are optimized for streaming to their devices.

RemotePlayFeatures.png

Remote Play on Phone


If you have checked this feature, it means you have created a recommended Steam Input touch controller config for your game, and have verified that the UI elements and font sizes work well for small handheld devices.

Remote Play on Tablet


If you have checked this feature, it means you have created a recommended Steam Input touch controller config for your game, and you adapt to the various 4x3 and 16x9 aspect ratios used by tablet devices.

You can use the ISteamRemotePlay::BGetSessionClientResolution() function to get information about the remote device aspect ratio and resolution.

Remote Play on TV


If you have checked this feature, that means you have full controller support for your game, and have verified that the UI elements and font sizes work well for viewing at a distance on a TV.

HOWTO: Add Touch Controller Config


Take a look at the Optimizing For Remote Play blog post for some examples and best practices.

  1. Begin streaming the game to your mobile device. On the desktop machine, go to Steam Big Picture Controller Configuration for your game. Remove any unnecessary bindings not used by your game, and add any custom bindings used by your game. For more information see: https://partner.steamgames.com/doc/features/steam_controller/getting_started_for_players

    TouchBindings.PNG

  2. On your mobile device, click the [...] button and drag any newly bound controls onto the screen. Adjust the layout and size of each button as desired. For more information see: https://support.steampowered.com/kb_article.php?ref=4022-PFJX-8276
  3. Once you are happy with your configuration and are ready to publish it, go to Big Picture Controller Configuration on the desktop (while streaming to your mobile device), and click Export Config. Save it as a new Personal binding and give it an appropriate name such as 'Official Touch Controller Configuration for GAME' and a useful description.
  4. Go to Browse Configs, select your new config, and click Share Configuration.
  5. Go to the partner site and edit Steamworks Settings → Application → Steam Input. Under Steam Input Default Touch Configuration select Custom Configuration. Click the "Add Custom Configuration" button and paste the URL for your new config. and click Save.

    TouchPartnerConfiguration.png

  6. Publish your updated Steamworks settings for your game, as you would normally.

If you want to change your official configuration, you have to publish a new config, as you would with the Steam Controller.

HOWTO: Advanced Touch Controller Config


If your game has multiple game modes, you can set up an actionset with unique layout for each game mode.

Simply add an actionset to the touch controller configuration for your game, cycle through the actionsets on your mobile device and setup the layout for them, and then call the SteamInput APIs to change to the appropriate actionset at runtime.

For example, if you wanted to add a menu actionset, you could do it like this:

TouchBindings_1.PNG

TouchLayoutMenu.png

#include "steam/isteaminput.h" void GameInit() { SteamInput()->Init(); } void GameQuit() { SteamInput()->Shutdown(); } void GameLoop() { GameInit(); while ( bRunning ) { const InputActionSetHandle_t k_ActionSetGame = 1; const InputActionSetHandle_t k_ActionSetMenu = 2; SteamInput()->ActivateActionSet( STEAM_INPUT_HANDLE_ALL_CONTROLLERS, BInMenu() ? k_ActionSetMenu : k_ActionSetGame ); ... } GameQuit(); }