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.

Leave a rating/review
Download materials
Save for later
Share
You are currently viewing page 4 of 4 of this article. Click here to view the first page.

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.

Game

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.

Gameplay

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.

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.

Return to Gaming Mode icon

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.

Steam Deck 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.

Gamepadtester x86_64

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.

GamepadTesterWindows

In there, right-click the GamepadTester.exe file and select Add to Steam.

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.

Return to Gaming Mode icon

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.

Settings button cogwheel

Next, select Properties… in the menu that pops up to open the Properties screen.

Properties

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.

Compatibility checkbox

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.

Proton versions

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.

Note: If you briefly see a gray screen before it crashes to the game screen, try launching the game a few more times in a row. I’m unsure why this can happen, but once it fully launches once, it will keep working.

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.