How to Transfer Game Builds to a Steam Deck
This tutorial will teach you how you can push your game builds to your Steam Deck fast and automatically using Syncthing, a multiplatform file synchronization program. By Eric Van de Kerckhove.
Sign up/Sign in
With a free Kodeco account you can download source code, track your progress, bookmark, personalise your learner profile and more!
Create accountAlready a member of Kodeco? Sign in
Sign up/Sign in
With a free Kodeco account you can download source code, track your progress, bookmark, personalise your learner profile and more!
Create accountAlready a member of Kodeco? Sign in
Sign up/Sign in
With a free Kodeco account you can download source code, track your progress, bookmark, personalise your learner profile and more!
Create accountAlready a member of Kodeco? Sign in
Contents
How to Transfer Game Builds to a Steam Deck
35 mins
Playing the Build
You can use the example builds I included in the materials zip to follow along as I’ll explain how to run both native Linux and Windows executables. If you haven’t done so already, extract the two GamepadTester folders from the materials zip and copy them to the synced folder on your development machine, making them accessible on the Steam Deck.
Native Linux Build
The most straightforward option is to run a native Linux build on the Steam Deck. While in Desktop mode, open the synced folder and from there open the GamepadTesterLinux folder. There are two files in there: GamepadTester.pck and GamepadTester.x86_64. The pck file is a resource pack holding the game’s data, while the x86_64 file is the executable. Double-click the executable to start the game.
If this is the first time you run the game, SteamOS will ask you if you’re sure you want to run the executable. Confirm this and the game should load. You’ll be greeted by some information on the top left, a wireframe cube at the top and a bunch of buttons at the bottom.
Clicking any of the buttons should light up the matching icon. However, you might notice it’s not doing anything yet. That’s because the default input configuration for the built-in gamepad is sending virtual keystrokes and mouse input. To switch to gamepad mode, hold the Menu (≡) button until a small popup appears informing you that you’ve entered Gamepad mode.
Now try pushing buttons and moving the joysticks around. If everything is working as it should, you’ll see the cube moving and button icons lighting up.
After you’re done testing the game, switch back to the desktop controller input by holding the Menu (≡) button again and close the game by clicking the little x icon at the top right.
The next step is adding the game to Steam, so you can play it in Gaming mode. You can do this by right-clicking the executable and selecting Add To Steam in the context menu.
This will add the executable as a non-steam game to your library. Next, switch back to Gaming mode by double-clicking the Return to Gaming Mode shortcut on the desktop.
After a short while, Gaming mode loads and you’ll see your recently played games. Next, open your game library by pressing the STEAM button and selecting Library.
From the library, press R1 until you’re in the NON-STEAM category. This is where all games and applications you’ve added via the desktop mode end up.
Now find GamepadTester.x64_64 in the list and play it. For me it was at the bottom, below NEVER.
You can now play the “game” from Gaming mode. To quit the game, press the STEAM button and select Exit game. You can keep iterating your builds, as the reference to the x86_64 file will be preserved. This means you can test the game, exit, update the build and test the new version in minutes.
Next up is getting the Windows version to work.
Windows Build
The Steam Deck runs SteamOS, which comes with built-in Proton support. Proton is a compatibility layer that allows Windows games to run on Linux-based operating systems. This means the Steam Deck can run both Linux and Windows (game) executables. While Proton isn’t perfect, you’ll find that most Windows games will work out of the box. Some even perform better than their native counterpart.
To get started, switch to Desktop mode again. Getting Windows executables to work in Desktop mode is non-trivial, so I’ll skip ahead to adding and configuring it in Gaming mode.
Navigate to the GamepadTesterWindows folder in your synced folder and open it.
In there, right-click the GamepadTester.exe file and select Add to Steam.
This will add the executable as a non-steam game to your library. Next, switch back to Gaming mode by double-clicking the Return to Gaming Mode shortcut on the desktop.
Now find GamepadTest.exe in your library like you did with the native build. Go ahead and try to play it. The game will almost instantly stop and return you to the screen with the big Play button. What gives?
Your Steam Deck will try to run any executable added to Steam as a native Linux executable by default, which in this case is incorrect. To fix this, you’ll have to force Steam to use Proton instead. Tap or select the cogwheel at the right side of the game menu to open the its settings.
Next, select Properties… in the menu that pops up to open the Properties screen.
Switch to the Compatibility tab on the left and check “Force the use of a specific Steam Play compatibility tool”. If this checkbox is grayed out and you’re unable to check it, restart your Steam Deck and try again. That’s a bug that creeps up from time to time.
A dropdown should now appear below the checkbox. Select it to get a list of all installed Proton versions. The size of your list will probably differ, as it depends on what games you have installed. Select Proton Experimental from the list.
As a final step, return to the game menu and try running the game again. This time, Steam will download a Proton compatibility tool first, after which the game should launch.
That concludes this tutorial! Syncthing truly makes transferring files easy as can be once it’s set up and I’m sure you’ll find a myriad of ways to use it now you’re familiar with it. I know I did. :]
Where to Go From Here?
Thanks for reading! You can find the link to the materials for this tutorial at the top or bottom of this page.
If you have any questions or comments, feel free to join the discussion below.