Ahhh, Steam Play, the thing that gives us Steam Deck gamers access to all the Windows titles we've bought over the years.
While some of us have been playing games on Linux longer than others, that only makes us more appreciative of the work Valve has done to make those Windows-only games playable.
But Valve's Proton isn't the only compatibility tool in town. Indeed, there are community spins of Proton from the likes of Glorious Eggroll and ProtonTKG, plus, there's BoxTron which makes running your classic DOS games on Steam a more pleasing experience, and Roberta for classic LucasArts adventure games....
However, there's one highly specialized compatibility tool that I want to talk about today. It's called Luxtorpeda and it's wonderful.
So first up... what the heck is that name? Luxtorpeda. It sounds... unsettling. It's one of those words with so many consonants that, instinctually, it should feature EVERY SINGLE vowel. But it's missing one.
So what does Luxtorpeda mean? Where does it come from? Well, that's a great question.
A cursory google search yields an answer: Luxtorpeda was a popular name of a Polish railcar from the 1930s.
And here I was I was thinking it was some kind weird version of that Zuma spinoff Luxor... with feet. Luxorpeda.
So anyway... what even is Luxtorpeda?
Luxtorpeda is a Steam Play compatibility tool which automates the tedium of running native Linux games that aren't available on Steam. And you might be thinking, "wait, that's a thing?" Yep. It certainly is.
For example, if you have Duke Nukem 3D: Megaton Edition (or Duke Nukem 3D: 20th Anneversary World Tour) in your Steam Library you may be well aware that it's not exactly compatible with Linux or Proton. Keyboard and mouse support is... spotty. And you can't play the game with the Steam Deck because it doesn't recognize Steam Input. Plus, neither version ships with a Linux-native binary.
However, Duke Nukem's been around for a very long time on Linux with the
eduke32 source port. It's a terrific homebrew engine with tons of optimizations for modern Linux distros!
So if you wanted to play the
eduke32 version on the Deck, you'd have to download the files, copy them into the correct directory, update the game's launch parameters in Steam and... it's just a hassle.
This is where Luxtorpeda comes in. Open the game's compatibility tool settings and choose Luxtorpeda, then launch the game. Luxtorpeda will launch its UI and you'll be able to pick any of the available alternate engines. It downloads and configures everything you need from there and puts you right into the game.
All of this is done natively. You run the game using native binaries rather than having to use Proton for a Windows client of the game.
Another instance, Star Wars: Jedi Knight II: Jedi Academy (link below) has a Windows-only icon on the Steam store page. But with Luxtorpeda, we can force the game to use a free, open source, and Linux-native game client called OpenJK.
So, in case it's not clear why you would we use something like Luxtorpeda: it makes official or community made engines available right through the Steam client. And these engines are often more up-to-date and can dramatically improve the overall quality of the game. Especially the older games which are able capitalize on the features of modern platforms, such as the Steam Deck.
Now, it might go without saying, but Luxtorpeda does not work for every game. In fact, it categorically will not work for most games. And it's not trying to. But there is a list of compatible titles at the link in the description.
Currently there are over 140 titles that work with Luxtorpeda. Titles like Aliens versus Predator Classic, some of the older Elder Scrolls games, Beneath a Steel Sky, Cave Story+, DOOM 3, the aforementioned Duke Nukem 3D, Ion Fury, Quake, Star Wars: KOTOR, Thimbleweed Park, the classic Tomb Raider series, Unreal Tournament 1999, Wolfenstein 3D, and plenty of others. More will get added over time. Plus, since Luxtorpeda is open source, if you want to help add support for another game you can either create an issue on the project's GitHub page, or try making a package yourself. Links below.
Now... wait a gosh darn minute. Are you enjoying this video? Do you like this kind of informative stuff? Make sure you like that smash button and tease that subscribe button so you stay up to date with all the cool stuff we're doing here on the channel. We're trying to hit 100k subscribers by the end of the summer and I think, with your help, we can do it. And thanks!
How to Install and Use Luxtorpeda on Deck
Now, the easiest way we can make use of Luxtorpeda on Deck is by using a tool called ProtonUp-Qt. ProtonUp-Qt not only includes the easy installation of Luxtorpeda; it can also download and install other Steam Play compatibility tools, such as GE-Proton, Boxtron, and Proton Tkg. And even better is the fact that the application is available on Flathub, making installation on Deck fairly trivial. Simply head over to the Discover app while in Desktop Mode, search for ProtonUp-Qt, and install it. Alternatively you can install the app via the command line with this:
flatpak install flathub net.davidotek.pupgui2
After the app has been installed, look for it in the panel on the lower-left of the desktop. The installation directory should already be set in the window that opens; if it's not set, click the three-dotted button and set the path from there. By default it would be
/home/deck/.local/share/Steam/compatibilitytools.d/. Click "Add version" in the main window, and in the new window that opens, select "Luxtorpeda" from the dropdown menu for Compatibility tool. Leave "Version" set at it's default choice (at the time of writing this Luxtorpeda is version 55). Simply click "Install," let the compatibility tool download, and it will be extracted into the
compatibilitytools.d/ directory. Now go back to Gaming Mode, and Luxtorpeda should now be available as an option when forcing a game to use a specific Steam Play tool.
So, in the case with Ocean's Heart, I would go to my Steam library, look for the game, press Start, then go to Properties. Under the Compatibility tab on the left, check the box for "Force the use of a specific Steam Play compatibility tool." In the dropdown menu that now appears below it, select "Luxtorpeda" from the list. The game may take a few seconds to update, as it needs to download the appropriate engine for the game. You should now be able to play the game with a native Linux engine! It's as easy as that. Gamepad buttons should work out-of-the-box with Steam Input.
Note that some games may prompt you for what engine you want to use, as they are compatible with multiple engines. In the case with Sega Genesis Classics, if you try to run the game with Luxtorpeda, you will be prompted for what game you want to run. You can navigate across the options with the D-pad, then press A to run the game/engine. You can also press Y to set that engine as the default, thus eliminating the prompt every time you run the game. If you want the prompt again, you can simply delete the
default_engine_choice.txt file found in
~/.config/luxtorpeda/<app id>/ while in Desktop Mode.
If you'd like to learn more about the project, you can view the README file on the project's GitHub, or you can read the article by Liam over on GamingOnLinux. Or you can watch my video on this topic!