Lost Twins 2 · published
Hey guys! We have been working on Steam Remote Play Together which is a really useful feature that many developers and players aren't fully aware of.
If your game is already available on Steam and is designed around local co-op, We would strongly recommend looking into Steam Remote Play Together before building a complete online multiplayer system.
It can allow players to experience local co-op remotely, while Steam handles much of the connection and streaming infrastructure. Depending on your game's design, this can significantly reduce the amount of networking infrastructure you need to build yourself.
Of course, it doesn't replace full online multiplayer for every game. But for games that are primarily designed around local co-op, it's definitely worth evaluating first. You may be able to give players an online co-op experience without having to build an entire multiplayer networking stack from scratch.
We integrated Steam Remote Play Together into Lost Twins 2 to allow players to invite friends remotely and play together without requiring every player to own or install the game.
Integrated Steam Remote Play Together into the existing game.
To improve the user experience and make Steam Remote Play easily accessible, we added a dedicated button to the game mode UI that opens the Steam Remote Play interface.
Added support for detecting Remote Play sessions and handling players joining the game.
Connected Steam Remote Play input with the game's existing local co-op input system.
Used Dependency Injection to keep Steam-specific functionality separate from the core gameplay systems.
Designed the integration so Steam services can be injected into the systems that need them rather than having gameplay code directly depend on Steam APIs.
Added analytics tracking for Remote Play interactions, including invite events and session duration when a player exits the session.
Tested the implementation across different host and guest configurations, including macOS and Windows.
One of the main challenges was handling the difference between the host and Remote Play guests. Steam manages the remote connection, but the game still needs to correctly process and assign the guest's input.
We used Dependency Injection to avoid tightly coupling the gameplay systems with Steam's APIs. This made the implementation more modular and allowed the core systems to work independently of the Steam-specific implementation.
The biggest amount of time went into cross-machine testing and debugging remote input.
The feature worked correctly during Windows-to-Windows testing. However, when a Mac joined as the Remote Play guest, the connection was established successfully, but the game did not receive the guest's controller input correctly due to platform-specific issues on macOS.
Keyboard input works correctly when Mac is used as the guest.
On macOS, Steam Remote Play currently works only when the game is running in windowed mode.
We also spent significant time investigating what information Steam exposes about Remote Play guests. One requirement was to track the guest's platform, such as macOS or Windows, for analytics without unnecessarily retrieving the guest's Steam ID but unfortunately, steam does not provide any information related to the guest’s machine.
The final implementation allowed players to start a Steam Remote Play Together session and invite friends directly through our game while keeping the integration modular and separated from the core gameplay code.