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.
A new version of the Inventory System is available. This version requires Godot Engine 4.3 and includes many refinements. New Drag and Drop system The Drag-and-Drop component has received a major overhaul. The previous system was quite complex and the separation of the classes that implemented the click-and-drag and click-and-release approaches had so much overlap …
Godot-matcha is an addon that lets you use WebRTC for multiplayer games by handling matchmaking using WebTorrent trackers. Conceptually it’s quite an interesting, novel approach. WebTorrent uses a modified BitTorrent protocol that allows it to work with WebSockets. A WebTorrent tracker is essentially a directory service that keeps track of torrents offered by users. A …
Normally I use OBS for screen recording, but there are cases where it makes sense to use Godot’s built-in movie writer that was recently announced. For example, if you have a slow PC or really demanding game, OBS will skip frames. It makes sense since OBS is just recording what’s on the screen in real …
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
Inventory System v1.16 available
A new version of the Inventory System is available. This version requires Godot Engine 4.3 and includes many refinements. New Drag and Drop system The Drag-and-Drop component has received a major overhaul. The previous system was quite complex and the separation of the classes that implemented the click-and-drag and click-and-release approaches had so much overlap …
godot-matcha: Free multiplayer without a server
Godot-matcha is an addon that lets you use WebRTC for multiplayer games by handling matchmaking using WebTorrent trackers. Conceptually it’s quite an interesting, novel approach. WebTorrent uses a modified BitTorrent protocol that allows it to work with WebSockets. A WebTorrent tracker is essentially a directory service that keeps track of torrents offered by users. A …
Inventory System v1.8.1 available
A quick update to yesterday’s release with a few fixes:
Making videos for the web with Godot 4’s Movie Writer
Normally I use OBS for screen recording, but there are cases where it makes sense to use Godot’s built-in movie writer that was recently announced. For example, if you have a slow PC or really demanding game, OBS will skip frames. It makes sense since OBS is just recording what’s on the screen in real …