Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Valve provides a common runtime/build environment for Linux devs in the form of the Steam Linux Runtime. There is version 1 (Scout), which uses an LD_PRELOAD system. There is version 2 (Soldier), which uses cgroups (podman) and is deprecated. Then, there is version 3 (Sniper), which is the current target.

As of right now, proton and proton-ge both build in and require Steam Runtime Version 3 to run in. The steam client itself is running in a runtime, and I think it is the scout runtime, so LD_PRELOAD based. This means that steam has its own common platform to "deploy" against, and all Linux native games have a common platform to deploy against.

It used to be that games had to be compiled in a chroot for Steam runtime 1.0, but now with Steam runtime 3.0, developers are heavily recommended to build their game in a "OCI-based container framework"—so podman basically—and enable the Steam Runtime 3.0 on steam. I know that TF2 and Dota 2 use steam runtime 3.0, and apparently so does Retroarch. Of course, since there is a podman/docker image, you can also test existing games to see if they run in the runtime too.

You can find a lot of more information about the steam runtime 3.0 here: https://gitlab.steamos.cloud/steamrt/sniper/sdk

Valve has a gitlab with lots of great docs for developers who want to publish a linux native game.

I think all native linux games will run in the Scout 1.0 runtime by default

Edit: I will say that as an end-user, running an up-to-date Linux kernel and Mesa stack is important for gaming. I know some people who run Mint and are surprised that their Radeon RX 9060 runs like ass. As long as you aren't using a Debian based LTS distro, like mint or ubuntu lts, or you are running those distro but get a newer kernel, you should be fine. This matters less for older hardware, but having a newer kernel and especially a newer mesa version is important.



The fact we need containers to ship games is still a complete joke. Windows has been shipping binary games for decades but to do a best-effort portable Linux build you've got to spin up containers with bespoke build environments and tie the build to one specific platform's container image.

The alternative is using (what is effectively) a cross compiling toolchain to target Linux from itself! Or spin up an ancient Debian image (including ancient compiler) to build against ancient glibc.

It's hard to blame anyone for just using Proton, with the perma-stable Win32 API. No build containers, no chroot, no locking the build to Steam. Just the same build infra you already have.


Windows might not have build containers, but it has an enormous compatibility layer. API calls may work differently based on the executable running. Windows goes as far as changing the freaking memory allocator to not deallocate pages for buggy games. Raymond Chen's blog is a good source for some of these compat workarounds.

One could argue that Proton is a kind of a container. It has a runtime system, filesystem, wine itself has several executables and interprocess communication, etc.


Until mesa fixes its dependance on libc, we will continue to need games to be dynamically linked and nothing will change.

(Not saying mesa should be statically linked, but that we should be able to load and use it without libc)


I think valve uses user namespaces if available nowadays. This also checks that devs arent accidentally relying on libs outside of the runtime. (Aside from mesa and libc of course)


use CachyOS if you are gaming.


I use Arch since I enjoy having control over what packages I have and how I configure some stuff.


use cachyos repos, they are doing some good work if you are on one of the new amd cpus, it turned my TOASTER into a RACECAR.


I'm not going to use cachyOS repos. I am an AUR developer and my target is the Arch repos.


Would they work fine though? Is there any reason other than preference?


The AUR targets Arch Linux only and I don't wanna run into the chance of there being a mismatch of packages I'm using and what other people r using. It makes it easier for me to ensure that, for example, the versions of the libraries I'm compiling against actually work. Like, if there is a library update in the arch repos that doesn't hit the cachyos repos by the time I do a build, it could have issues.

There is an arch x86-64-v3 repo, but I found it to be very far behind in terms of the most current packages, and I've experienced bugs with it.




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: