3 min read

Emulating old games on Steam Deck

This posts look at how to get older games to run on the Steam Deck using Lutris.
Emulating old games on Steam Deck
Lego Racers - Yes please!

Having tinkered with my new Steam Deck for a month now, I wanted to do a post on a topic that I think interests most people who buy this console - the best way to get older games from our childhood to run on the deck. For me personally, that would be Lego Racers (1999), Lego Racers 2 (2001), Lego Island (1997), Lego Rock Raiders (1999), Anno 1602 (1998), Dethkarz (1998) and The Settlers 3 (1998).

In other words, I was a Lego-aholic, embarking now on a quest for more Legohol!

Over the last month I tried three Wine-based emulation approaches for these older titles, starting with Proton. Proton is a tool for use with the Steam client which allows games which are exclusive to Windows to run on the Linux operating system. However, getting very old games to run using Proton will yield mixed results, with only Lego Racers working in my case. My experience was that Proton struggles with both emulating very old DirectX calls, as well as various proprietary video libraries that the games shipped with.

Next I tried Bottles. Bottles creates sandboxed containers in which your applications or games will run, which will be executed by a runner of your choice, whether that's classic Wine, Proton, Caffee, Lutris and others. I liked that Bottles also included some automatic installers for popular game launchers such as Origin, GOG and others. On the downside however games which were installed this way have to be added manually to Steam and I still had the same compatability problems as I had with Proton.

The third solution I tried was Lutris. Lutris acts effectively as a game manager, allowing you to connect your Origin, GOG, Steam etc. accounts and be able to directly install games from these platforms without having to mess with copying installers around. That's a plus for me, since I own a few modernised versions of my childhood classics that are sold via GOG, such as Anno 1602 and the Settlers 3.

Another thing that I found quite impressive was the amount of customization that Lutris offered, including native support for things like libstrangle (used for limiting FPS rate) and dgvoodoo2 (used for translating old DirectX calls into DirectX 11/12 equivalents).

The installation process for all my vintage games ran smoothly, even offering me an option to automatically add the game to Steam. However, starting the first game on my list, Anno 1602, failed with a message similar to the one below.

This will happen when the "Windowed (Virtual Desktop)" option is off, as these games expect a Desktop. None of my vintage games ran without this option being enabled.

With Virtual Desktop enabled, the game ran, albeit with a small identity crisis when it came to graphics:

Here's where dgvoodoo2 comes in - enable the option in the Lutris settings and the game will run as expected:

💡
Don't forget! You must add the game to Steam if you want to take advantage of the Deck's controls and controller mapping features.

One thing worth mentioning - in the case of Anno 1602, the game ran at an unhinged framerate - 900 fps+. This will drain your Deck's battery really fast (1hr max). To solve this issue, either install libstrangle and enter the desired framerate into Lutris, or, if you prefer to stick to the Discovery Store, download mangohud and limit the FPS there. Lutris does in fact support both.

Limiting Framerates using mangohud

To limit the framerate using mangohud, head into the configuration screen of the game you want to limit and head to the "System Options" screen. Next, set the environment variable MANGOHUD_CONFIG and fps_limit=30,no_display as the value. Feel free to adjust as needed, of course. Next, enter mangohud under "Command prefix" in order to pass the game's graphic output to mangohud. Hit "Save" and you are ready to go!