Steam Deck: Getting Started

So, now you've got your own Steam Deck. What is there to know before diving in?

The Steam Deck is ultimately a tinkerer's paradise, so I don't want to pretend like there are some definitive steps or applications to utilize. Explore at your own pace, and mess with stuff as you see fit. I've collected a few thoughts below that might be helpful as you go about toying with your new toy. I can't wait to see how quickly this becomes outdated!

Contents:

What is Desktop Mode vs. Gaming Mode?

By default, your Steam Deck boots into Gaming Mode. This is where the Steam Deck's UI resides, and it uses a stripped-down window compositor called Gamescope when running applications. You can exit Gaming Mode by pressing the Steam button > Power > Switch to Desktop. The Desktop Mode uses KDE Plasma and operates exactly how you'd expect.

Games might function a little differently in Gaming Mode thanks to the stripped-down compositor. If you're having trouble getting a game to work properly (whether the window won't show up or your inputs aren't recognized), try running it in Desktop Mode and see if you encounter anything different.

How does Proton work?

The backbone of the Steam Deck is a set of open-source translation layers managed by Valve, named Proton. If you want to play a Windows game on your Linux device, Proton will translate all the Windows-specific calls to Linux-specific calls- but unlike an emulator, this software still allows your Windows applications to run their x86 instructions directly off of your CPU, so games are both compatible and performant. Inside Proton, DXVK translates DirectX 9, 10, and 11 calls to Vulkan, VKD3D-Proton translates DirectX 12 to Vulkan, and Wine handles all the other Windows-specific calls. Valve pays its employees and other companies to work on each of these open-source layers, constantly improving compatibility and ensuring that cutting-edge titles are playable on day-one.

There are a few flavors of Proton that you should be aware of. By default, games use the latest available release of Proton (currently 7.0-4), but you can modify this on a per-game basis under Properties > Compatibility. Newer games might necessitate the use of the Proton Experimental branch, which is frequently updated while Valve tests unstable changes. Some specific games might also require the use of older Proton versions; All of these Proton variants are made available by default in the Steam client.

Since Proton is open source, anyone can make their own version with their own changes, and users can easily load these into Steam for use with other games. The most prominent fork of Proton is Proton-GE-Custom, named after its maintainer GloriousEggroll. This fork includes extra tools, hotfixes, and selective inclusions from bleeding-edge branches of the above mentioned translation layers. In particular, many games use the Windows Media Foundation framework for video playback, which Valve can't include compatibility fixes for due to licensing restrictions- but they are included in this guy's legally dubious Proton incarnation. I would recommend downloading and installing the ProtonUp-QT flatpak via Discover, which will help you download and manage your Proton-GE instances. You can then select downloaded Proton-GE versions in the Compatibility tab of the Steam client for games you'd like to use it with.

Lastly, some games do have native Linux builds, which might be more performant or compatible depending on the title. You can force Steam to download/install the native Linux version of a game by selecting the "Steam Linux Runtime" in the Compatibility tab. Also known as "Pressure Vessel," there's a few versions of this, named after Team Fortress 2 characters: Scout, Soldier, and Sniper (in order of release).

Frankly, you shouldn't find yourself tinkering with all these settings very often- most of the above links are just for additional reading, not anything to download or configure. A majority of games should work just fine on first-boot, but if you run into trouble, I'd suggest browsing ProtonDB, where users share their Proton experiences with their own setups. I would also go here to check on the status of any "Incompatible" or "Unknown" titles. A lot of these folks use Linux on their desktop PCs, but there's plenty of Steam-Deck-specific entries as well, and they might all help paint a picture of what you should expect when running a game, or how to tweak it to work correctly.

When using Proton with a game, Steam creates a series of folders to mimic a Windows environment, which is where you'll likely find game saves and other configuration files. You'll find these files here: /Home/.steam/steam/steamapps/compatdata/. Each game has its own set of folders, identified by their app ID. I suggest using the PCGamingWiki to find out whether or not your game has a native Linux version, where the config files and save games are stored, and what your game's app ID is (hover over the SteamDB or ProtonDB links at the bottom of the infobox to find the ID). All helpful info for modding or troubleshooting games!

What is shader pre-caching?

When rendering a 3D game, shaders are used to color pixels differently- for example, shadows cast on a 3D object. These shaders are written as scripts that need to be compiled for your specific hardware. When it comes to console games, these compiled shaders are included with the game installation since there aren't different hardware configurations to consider, but this obviously isn't the case when it comes to PC games. You'll find that many modern PC games compile shaders at runtime- when you install a graphics driver update or latest game patch, you'll have to wait a few minutes to finish loading into the game as it re-compiles all the shaders for your system (e.g. Forza Horizon 5, Horizon: Zero Dawn); However, other games will only compile the individual shaders as they're called for the first time, resulting in small hitches throughout gameplay (e.g. Elden Ring). In any case, these compiled shaders are stored in a cache that gets wiped when your game/driver/hardware is updated.

Steam has a shader pre-caching feature which automatically shares the contents of your cache with other users that have identical hardware configurations, but this usually only works with games that use Vulkan. However, the Steam Deck is a perfect use case for this- Everyone has identical hardware, and they all tend to use Vulkan through Proton. As a result, you might see a lot of small downloads for games in Steam that are marked as "shader pre-cache" updates. These ultimately speed up loading and prevent hitching in games, but they can grow to surprisingly large sizes if you have a lot of games installed. You can find them here: /home/deck/.steam/steam/steamapps/shadercache 

Even with all this magic, you might still encounter shader compilation stuttering in games- quick hitches when generating new visual effects for the first time. To help resolve this, try using a compatibility layer that supports DXVK Async, like Proton-GE. This hack compiles shaders on CPU threads other than the main one, which can alleviate hitching for games waiting for the main thread to be available. Some anti-cheat systems don't like this out-of-order compilation method, which is why it's not included in the main Proton iteration, but you can enable it in Proton-GE by setting the following environment variable as a launch option for your game: DXVK_ASYNC=1 %command%

What is Flatpak?

Many Linux distributions have an issue with dependencies. Applications lean on other smaller software libraries to function, but users might not have those dependencies installed, or they might be incompatible newer/older versions. Flatpak is a type of application package that allows software to run in a sandboxed environment; It includes all of the necessary dependencies, and it can't break anything else in your operating system.

On SteamOS, Valve locks down the filesystem by default- you can only install Flatpaks and modify files within your home directory. You can run a command to disable this, but any changes you make will be overridden by future software updates. By and large, it's best to stick with Flatpaks unless you know what you're doing. However, because of the extra hassle required to maintain a Flatpak version of an application, not every Linux app offers one. This might change as more folks start using Steam Decks.

Flatpaks are provided by the "Discover" application. Any apps available on Flathub.org should be visible in Discover. You can use it to manage applications and relevant updates. These applications should be visible when selecting "Add a non-Steam Game" in the Steam desktop client, so you can easily launch these apps in Gaming Mode.

Because Flatpaks are sandboxed, they automatically enforce certain permissions, like only letting applications access specific files and folders. I recommend downloading Flatseal to help manage app permissions if you run into any trouble like this.

Can I use Windows on my Steam Deck?

Yes, you can access the Steam Deck's boot menu by holding down the Volume Down button when pressing the power button. Select your Windows installation media and get to installing. Be sure to download the various drivers provided by Valve on their support page.

There isn't currently an easy way to dual-boot SteamOS and Windows from the same drive, and running Windows from an SD card isn't exactly recommended. You can either wipe SteamOS and install Windows on top of it (don't worry, you can always re-image your Deck when necessary!) or install Windows to a USB drive or SD card and select it from the boot menu each time you want to use it.

Using Windows is the only way to install and play Xbox Game Pass titles natively- but you can download Microsoft Edge and use it to play with xCloud in SteamOS if you'd rather!

Can I really play games off of the SD card?

Yes, your typical SD card isn't much slower than a hard disk drive, so most games will run just fine off of an SD card. Tomorrow's "next-gen" titles might require the ultra-fast read/write speeds of an NVMe, but we have yet to see any games that do so. You can also hot-swap microSD cards while in Gaming Mode, so it's a pretty convenient way of storing games.

If you plan on purchasing a microSD card, some are faster than others- and it's pretty easy to accidentally purchase a counterfeit card instead. This article is a good place to start for more information.

How can I play non-Steam games on my Steam Deck?

You can add non-Steam games to Steam via the desktop client, just like you would on a Windows PC, and enforce Proton compatibility just like any other game in your library. The trick, of course, is getting these games downloaded and installed. I would recommend using the Heoric Games Launcher or Lutris to make this as easy as possible. I haven't tried this out myself, so hopefully it's as simple as it looks!

How can I emulate games on my Steam Deck?

Personally, I like downloading and configuring individual emulators on my own; You can find stuff like mGBA, Dolphin, and PCSX2 via Discover/Flathub. This way, the emulators are all kept up-to-date- but it does require a lot of manual work to set up control schemes, launch individual games via Steam, and so on. EmuDeck does a lot of this for you by leveraging RetroArch, Steam ROM Manager and SteamGridDB. RetroDeck is another all-in-one solution that's easier to maintain, but does require a tad more configuration from the user. I'd suggest starting there and see if either one tickles your fancy.

Can I play online multiplayer games on the Steam Deck?

This depends on the game, largely due to the various anti-cheat methods available. Many anti-cheat providers support Windows and Linux platforms, but playing a Windows game on Linux requires support for both, which developers typically need to opt-in to. EasyAntiCheat and BattleEye now support this, but it might require the developer to update to the latest anti-cheat version, which some developers are reluctant to do for older games. Still, there are plenty of other anti-cheat methods that work out-of-the-box on any operating system, including Linux. Check out Are We Anti-Cheat Yet? to see if the game you want to play is supported, or if support should be incoming.

Can I mod games on my Steam Deck?

For the most part, yes- but keep in mind that most modding tools are built for Windows. If you're used to using Mod Organizer 2, for example, you'll need to jump through some hoops to get it operational on your Steam Deck. Rather than attempting to run the GTA IV Downgrader on SteamOS, I just opted to copy my entire Windows installation  of the game onto my Steam Deck instead. Your average drag-and-drop file replacement mod will work just fine out-of-the-box, just like on Windows.

Many mods have you drop Windows DLLs in your game directory for the application to load when it runs. Proton (or, more specifically, Wine) will intercept calls to these libraries, unless you say otherwise via the launch options. For example, to use the V-Patch for L.A. Noire, I need to copy a dinput8.dll file to the game directory, then I enter the following command under Properties > General > Launch Options: WINEDLLOVERRIDES="dinput8=n,b" %command%. This asks Wine to use the "native" DLL included in the game directory before defaulting on the "built-in" DLL support within Wine if it can't be found. (Side note: These aren't really "launch options," but rather an environment variable setup before the game runs. Entering %command% fires off the previous command as if you were typing it into a terminal. Neat!)

Can I dock my Steam Deck, like a Nintendo Switch?

Sort of. The Steam Deck has a USB-C port that supports HDMI and DisaplayPort alt modes, so docks and adapters will work just fine here- but the experience isn't nearly as seamless as docking a Switch. Currently, the Steam Deck will always output at the highest resolution supported by your display in Gaming Mode; You can modify the internal rendering resolution of an individual game by changing the "Game Resolution" set under Properties > General in order to adjust performance, but you'll always be forced to upscale that image to an output resolution that matches your TV. There also aren't different performance profiles for docked play, so your Steam Deck won't adjust framerate caps or TDP wattage or GPU clock speeds on the fly when docked, unlike a Nintendo Switch.

You'll likely be fine, by and large, when using a 1080p display. The above issues are of particular concern for those with 4K displays- if your TV or dock/adapter only supports 30fps output at 4K, then you'll be stuck with a pretty hitchy experience, as you can't currently force Gamescope to output at a lower resolution that might favor framerate. Even if you have a 4K60 dock/adapter, you'll still need to manually adjust games that might otherwise struggle at such high resolutions. Since Valve's own dock was delayed, there's an expectation that we'll be seeing lots of changes to this experience over the coming months- but only time will tell.

If you're thinking about buying a USB-C hub/dock/adapter, be sure to purchase one that supports outputting at 4K60 (2160p at 60hz). Many "4K" docks only output at 30hz, even if they specify "HDMI 2.0" support or something similar. If your hub/dock/adapter supports 18gbps throughput (or more) via HDMI, you're good to go. Something else to keep in mind is that all USB-C hubs and docks siphon a few watts away from the power supply to power the hub/dock itself. When I plug my 45w Steam Deck charger into my Anker A83830A1 hub, it sucks away 15w for itself and charges my Steam Deck at 30w. Make sure you have a charger and a hub/dock that will adequately power your Steam Deck; While it can charge at up to 45w, it will only ever draw up to 25w during gameplay. Check out Dan S. Charlton's blog for more nitty gritty details about USB-C hubs and docks.

Comments

Popular posts from this blog

96th Academy Awards

Off-the-Cuff Thoughts on Overwatch 2

Steam Deck: The Hardware