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.
Creating network connections with Godot is simple — as long as you have the other party’s IP address, and there’s no NAT gateway involved. Unfortunately, that’s exactly the problem in most cases. You don’t know the other party’s IP, and these days, just about everyone is behind a combination wifi router/gateway/firewall with NAT. Conceptually, NAT …
Version 1.0 of the Inventory System is now available. It includes a few new additions since the closed beta: Lots of fixes found their way into this release as well:
Godot Engine 4.0 has been released per official announcement. With version 4.0, Godot has gone through “3+ years of breaking and rebuilding from the ground up, a complete core overhaul and a full engine rewrite, through 17 alphas, 17 betas and 6 release candidates“. The announcement post is credited to “2000+ Godot contributors.” It’s a …
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
Creating a UDP peer-to-peer connection
Creating network connections with Godot is simple — as long as you have the other party’s IP address, and there’s no NAT gateway involved. Unfortunately, that’s exactly the problem in most cases. You don’t know the other party’s IP, and these days, just about everyone is behind a combination wifi router/gateway/firewall with NAT. Conceptually, NAT …
Inventory System v1.0 available
Version 1.0 of the Inventory System is now available. It includes a few new additions since the closed beta: Lots of fixes found their way into this release as well:
Godot Engine 4.0 released!
Godot Engine 4.0 has been released per official announcement. With version 4.0, Godot has gone through “3+ years of breaking and rebuilding from the ground up, a complete core overhaul and a full engine rewrite, through 17 alphas, 17 betas and 6 release candidates“. The announcement post is credited to “2000+ Godot contributors.” It’s a …
Inventory System v1.2 available
A few new features: Bug fixes: