How to Transfer Game Builds to a Steam Deck
The Steam Deck is a handheld gaming computer developed by Valve that runs SteamOS, a special flavor of Arch Linux. The open nature of the Steam Deck makes it easy to target for when creating games and applications, much more so than any console out there. Of course, you can’t hook up a USB cable like you would with an Android or iOS device and expect to transfer files that way.
My aim with this tutorial is to show you how you can push your game builds to your Steam Deck fast and automatically. In this tutorial, you’ll discover:
- The different options for transferring files to a Steam Deck.
- How to start and set up Desktop Mode.
- The steps required to install and set up Syncthing
- A workflow to copy files over your local network.
- How to run Linux and Windows game builds on the Steam Deck.
The materials for this tutorial are optional. You can download them at the top or bottom of this page. They contain two project builds to test gamepad input I created with Godot. One of the builds is for Linux, while the other is for Windows. You can use these to test out how to run your own Linux and Windows executables on the Steam Deck if you don’t have any of your own yet.
As a game developer you want to iterate fast, so you’ll probably run the game on your desktop PC or laptop while developing. When targeting a device like the Steam Deck, or any device with lower specifications for that matter, it’s crucial to test your game builds on the device itself. Doing so helps you identify specific issues and optimize the game for the hardware it’s going to run on.
Of course, you’re going to need some way of transferring the game files to the Steam Deck. I’ve tried a lot of options out there and I’ll briefly share my thoughts on each of these before giving my recommendation:
- USB Drive: I’m sure most of us have a USB flash drive or an external HDD/SSD laying around. This one of slowest options by far as it involves plugging it into your development PC, transferring the files, plugging it into your Steam Deck, switching to desktop mode and finally copying the files over to the right place. What a slog!
- Developing on the Steam Deck itself: By cutting out the “middle man”, you can develop your games on the Steam Deck itself, brilliant! In reality, for this option to be viable you need to attach a keyboard, a mouse and preferably an external display. Even then, most game engines require a lot of CPU and GPU power, even more so if you want 3D graphics. It might work, but a decent desktop PC will handle the development much better. However, if you want to develop on the go, this might be the option for you.
- SCP/SFTP: Both SCP (Secure Copy Protocol) and SFTP (SSH File Transfer Protocol) are network protocols that use SSH (Secure Shell). These can copy files over a network, either via command line or via an application like WinSCP. This is a great option if you know what you’re doing, as you can remotely push files to the Steam Deck via SSH from your development machine, even via scripting. The downside is that you need to enable SSHD and secure it using a key, or remember to only start the service when you need to push files as the default settings are unsecure, leaving your Steam Deck open to potential attacks. If you want to go this route, I highly recommend reading through this guide.
- Warpinator: Warpinator is a popular option for copying files over a local network to the Steam Deck as you can install it via the Discover Store. You can copy files from a Windows or Linux machine to the Steam Deck and vice-versa. I found this works fine most of the time, but if you’re a macOS user, you’re out of luck. Each transfer has to be manually started and confirmed on the other device, making it a bit tedious.
- Syncthing: Its developers describe Syncthing as a continuous file synchronization program that synchronizes files between two or more computers in real time. For game development, this is the best option by far as it allows you to push new builds to a local folder and the application will take care of the rest. Once set up, you just have to make sure Syncthing is running and your Steam Deck is connected to the internet.
For most regular file transfers I recommend SFTP or Warpinator, while continuously changing data like game builds or save files benefit greatly from a synchronization application like Syncthing. The latter is powerful and versatile, as you can use it to make your own local cloud storage, sync saved games across devices and make backups in realtime.
In the next section I’ll explain how to switch to Desktop Mode on the Steam Deck and make it easier to work with before moving on to setting up Syncthing.
Under the hood, the Steam Deck is a fully-featured PC running SteamOS, Valve’s custom Linux distribution based on Arch Linux. The default interface where you select your games and change settings is called Gaming mode, and it’s optimized to focus all its horsepower towards efficiently running games. By switching to Desktop Mode, you can use your Steam Deck as a traditional PC with a KDE-based desktop.
On your Steam Deck, press the STEAM button at the lower left to open the menu screen. Next, select the Power option to open the Power menu. You can also hold down the Power button at the top of the Steam Deck to open the Power menu straight away.
Now select Switch to Desktop. This will close Gaming mode and load the desktop after a short while.
You’ll now be greeted by a Linux desktop that looks similar to mine.