Steamworks документация
Steam Remote Play


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 own game remotely when logged into Steam on another computer, and when inviting friends to play using Remote Play Together.

Each computer or device connected via Remote Play has its own session. You can find out more about connected devices using the ISteamRemotePlay интерфейс

If you have optimized your game for remote play on various types of devices, or your game works well with Remote Play Together, 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 work well for those use cases.


Фестивал на Steam Remote Play Together

Checking this feature allows users to invite their Steam Friends to join the game as though they were sitting at the same computer playing together. Only the host needs to own and install the game, while additional players connect through Steam Remote Play streaming technology.

This feature is enabled automatically for games that are listed with Local Multiplayer, Local Co-op, or Shared/Split Screen capability, but you can enable or disable it yourself to match whether this feature is appropriate for your game.

Users can invite friends from their friends list in the Steam overlay, and if you want, you can create UI to invite friends directly from your game using the ISteamRemotePlay::BSendRemotePlayTogetherInvite() function.

Steam Remote Play изпитания

It's possible to use Remote Play Together and set up your game to allow the public to test it with developers without ever getting the files downloaded to their computers. This could be used for focus testing of new content, press walkthroughs, virtual trade shows, etc.

  1. Make sure the default branch has content that you're comfortable with the public downloading and seeing. For an unreleased game, this should probably be an empty depot.
  2. Create or set a password protected branch with content that you'd like to invite people to test remotely.
  3. Go to the partner site, edit your game's Steamworks settings, select the Application tab, and choose Steam Remote Play. Select the branch that you want to use for testing, then save and publish your changes.


  4. If your game is unreleased, send a CD-key to the users you would like to invite for testing. This grants them access to the default depot, so you may want to create special purpose accounts for this.
  5. Set up your test system to use the password protected branch. Launch the game on the test system and right click people in your friends list to invite them to join the session and play! Each session requires a fresh invitation from the developer.

This walkthrough assumes that you are showcasing content, but you can also use this to enable Remote Play Together on a branch and try it out privately before enabling it on your game in the Store Page settings.

(NOTE: this feature requires that the test system be running a Steam client dated May 23, 2020 or newer)

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


  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 the introduction support article and the more detailed visual guide.
  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.


  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:



#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(); }