Right after I got my Steam Deck, I wanted to know how hard it is to get a Godot game running on it. What’s the developer experience for someone who’s stepping through this for the first time? It was really easy to do, so I’m sharing this here, whether you’re following along or like to live vicariously.
Developing vs Publishing
It’s worth noting that this is not the same as getting the game published on Steam. I’m just using a Godot 4 tilemap proof-of-concept code doodle with some purchased assets. Nothing to write home about. I’m only taking a quick peek at this from a development feedback perspective:
I have a Steam Deck
I have Godot and made something.
I’d like to see my Godot thing running on the actual Steam Deck hardware.
If you’re developing a game, it’s incredibly helpful to get feedback for the gaming experience from the actual, physical device. At a high level, a Steam Deck roughly “works the same as a controller.” But it’s important to get a feel for the minutiae. Are the controls mapped to the right buttons? Is the text too small? Is the camera shake effect too much? Things hit differently when you’re looking at a 7″ screen, not a 35″ monitor, a large TV, or something even bigger. Getting feedback early and often is valuable during development.
What’s the process
In a nutshell, your game should be compiled/exported for Linux (the native Steam Deck OS), and then, per the official Steamworks instructions, use the SteamOS Devkit Client to “package it up” and install it to your Steam Deck as a playable title.
It’s easy and doesn’t take long, depending on your Internet speed.
You’ll need:
The Godot Engine along with the Godot Export templates, if you don’t have them already. They’re 500MB+ and may take some time depending on your connection. So if you’re planning on trying this out, kick off the download for the export templates first. I’ve tested both Godot 3.5-rc7 and Godot 4-alpha12/13.
Set your game to run in full-screen at a resolution of 1280×800 (WXGA, an aspect ratio of
16:10
).
Export your Godot Game for Linux (
Linux/X11
in the UI)
Switch the Steam Deck into Developer / Devkit mode
The Steam Deck settings experience feels almost Android-like. Go to Settings and enable Developer mode, then scroll down to the Development Kit section, and click Pair new host
SteamOS Devkit Client
Run the SteamOS Devkit Client, which can be done either directly in Steam or from the command line.
I’m running it from the command line because I’m gonna leave it open for days, so I can quickly reopen it, and so it doesn’t tie up my Steam client.
Enter the Steam Deck’s IP. Once confirmed, your computer is connected / the devkit is registered:
Head over to the Title Upload tab, you can configure your game.
You create a configuration, specify the source directory on your computer, and the command to start the game.
Once you click Upload the tool will bundle up your files (usually that’s just the
game.x86_64
and the
game.pck
), uploads the package to the Steam Deck, and create a non-steam game called “devkit: your game name“
My two test installations. The cleverly named
arpg
is a Godot 4 project, and the even more descriptive
arpg_game
one is Godot 3.5 project:
launch them like any other title and load right up.
Seeing your game in action
It’s quite thrilling to see your game in action on a real device. Probably even more so if it were not just a thrown together barely there proof of concept.
All in all, this is quite exciting. This stuff used to be reserved for console developers that had to sign Non-disclosure agreements (NDAs) with game console companies.
Yep, that’s a portion of a Godot 4 TileMap.
I didn’t add any UI, or handling for Godot to exit the game. During development on PC, I just press F8, but that doesn’t help with an exported game on the Steam Deck. The Steam button (to the left of the screen) has a menu that will let you end the game, even if the game doesn’t provide a way to exit.
Ever had the problem where you’re firing a bullet or some kind of projectile at high speeds, and it just goes right through the collision object, instead of hitting it? Here’s a weapon that fires a bullet at random velocities, to demonstrate the issue: The bullets impact the character in various places, rather than at …
It’s been about a year since Valve announced the Steam Deck. Back then, I pre-ordered it as soon as I could, then things were quiet for a year. A few days ago I received the availability notice: I completed the purchase, and it arrived a few days later. Steam Deck Arrival I unpacked it, plugged …
Here’s a collection of tutorials that are helpful if you’re new to using Control and Container nodes to create UIs in Godot 4. The Game Dev Artisan video covers creating a simple UI with a reload indicator for a simple 2D tank game: Clear Code’s 11+ hour Ultimate Introduction to Godot 4 has a chapter …
For some reason, my Godot game would no longer launch on the Steam Deck. I could hear it running as if it were running in the background, but the screen kept showing the Steam Deck’s UI. Since it’s all Linux I figured it should be possible to just drop to the command line and launch …
Running Godot Games on Steam Deck
Right after I got my Steam Deck, I wanted to know how hard it is to get a Godot game running on it. What’s the developer experience for someone who’s stepping through this for the first time? It was really easy to do, so I’m sharing this here, whether you’re following along or like to live vicariously.
Developing vs Publishing
It’s worth noting that this is not the same as getting the game published on Steam. I’m just using a Godot 4 tilemap proof-of-concept code doodle with some purchased assets. Nothing to write home about. I’m only taking a quick peek at this from a development feedback perspective:
If you’re developing a game, it’s incredibly helpful to get feedback for the gaming experience from the actual, physical device. At a high level, a Steam Deck roughly “works the same as a controller.” But it’s important to get a feel for the minutiae. Are the controls mapped to the right buttons? Is the text too small? Is the camera shake effect too much? Things hit differently when you’re looking at a 7″ screen, not a 35″ monitor, a large TV, or something even bigger. Getting feedback early and often is valuable during development.
What’s the process
In a nutshell, your game should be compiled/exported for Linux (the native Steam Deck OS), and then, per the official Steamworks instructions, use the SteamOS Devkit Client to “package it up” and install it to your Steam Deck as a playable title.
It’s easy and doesn’t take long, depending on your Internet speed.
You’ll need:
16:10
).Linux/X11
in the UI)Switch the Steam Deck into Developer / Devkit mode
The Steam Deck settings experience feels almost Android-like. Go to Settings and enable Developer mode, then scroll down to the Development Kit section, and click Pair new host
SteamOS Devkit Client
Run the SteamOS Devkit Client, which can be done either directly in Steam or from the command line.
I’m running it from the command line because I’m gonna leave it open for days, so I can quickly reopen it, and so it doesn’t tie up my Steam client.
This is what the thing looks like:
Enter the Steam Deck’s IP. Once confirmed, your computer is connected / the devkit is registered:
Head over to the Title Upload tab, you can configure your game.
You create a configuration, specify the source directory on your computer, and the command to start the game.
Once you click Upload the tool will bundle up your files (usually that’s just the
game.x86_64
and thegame.pck
), uploads the package to the Steam Deck, and create a non-steam game called “devkit: your game name“My two test installations. The cleverly named
arpg
is a Godot 4 project, and the even more descriptivearpg_game
one is Godot 3.5 project:launch them like any other title and load right up.
Seeing your game in action
It’s quite thrilling to see your game in action on a real device. Probably even more so if it were not just a thrown together barely there proof of concept.
All in all, this is quite exciting. This stuff used to be reserved for console developers that had to sign Non-disclosure agreements (NDAs) with game console companies.
Yep, that’s a portion of a Godot 4 TileMap.
I didn’t add any UI, or handling for Godot to exit the game. During development on PC, I just press F8, but that doesn’t help with an exported game on the Steam Deck. The Steam button (to the left of the screen) has a menu that will let you end the game, even if the game doesn’t provide a way to exit.
Related Posts
Projectiles going through collision objects
Ever had the problem where you’re firing a bullet or some kind of projectile at high speeds, and it just goes right through the collision object, instead of hitting it? Here’s a weapon that fires a bullet at random velocities, to demonstrate the issue: The bullets impact the character in various places, rather than at …
My Steam Deck has arrived!
It’s been about a year since Valve announced the Steam Deck. Back then, I pre-ordered it as soon as I could, then things were quiet for a year. A few days ago I received the availability notice: I completed the purchase, and it arrived a few days later. Steam Deck Arrival I unpacked it, plugged …
Building UIs in Godot 4
Here’s a collection of tutorials that are helpful if you’re new to using Control and Container nodes to create UIs in Godot 4. The Game Dev Artisan video covers creating a simple UI with a reload indicator for a simple 2D tank game: Clear Code’s 11+ hour Ultimate Introduction to Godot 4 has a chapter …
Launching Godot Games on Steam Deck from the command line via Remote Shell
For some reason, my Godot game would no longer launch on the Steam Deck. I could hear it running as if it were running in the background, but the screen kept showing the Steam Deck’s UI. Since it’s all Linux I figured it should be possible to just drop to the command line and launch …