← Back to context

Comment by gpm

5 years ago

There is for all practical purposes a singluar linux.

Why? Because you can bundle your own "userspace" to support your game, and that's what steam does for you with it's runtime: https://github.com/ValveSoftware/steam-runtime

It has to pick up a few things from the surrounding environment, but steam entirely standardizes the vast majority of it, and the rest of it is really really similar between every linux-running OS.

TBH this runtime can be replaced, and Arch ships a package which makes it very easy to do

https://wiki.archlinux.org/title/Steam/Troubleshooting#Steam...

Sometimes it works better than what Valve ships. It saved me a couple of times.

  • The value of the steam runtime is not in how well it runs for users, but that it provides a singular target for game developers. I'm not sure if you witnessed any discussions around why most game developers are not willing to port their games to linux. From what I've seen the main complaint is that linux is too fragmented and nobody wants to package a binary for X versions of glibc, Y versions of sound libraries, and Z versions of graphic APIs. Having the steam runtime to target solves all of these issues, even if it doesn't represent the best that a user can run on their individual configuration.

    • > nobody wants to package a binary for X versions of glibc

      You only need to build against the oldest glibc version you want to support - and the runtime does nothing to change that since you can't bunle your own libc (if you want any dynamic linking at all, which you need fro e.g. OpenGL/Vulkan).

      > Y versions of sound libraries

      The steam runtime makes sure that there is a libasount/libpulse* present so that your program can start if it links against those, but it does not provide anything for compatibility between them - that can be achieved by e.g. SDL or OpenAL Soft (which load them dynamically which means there is no problem if the libraries are missing and you won't even need the runtime). It's also ok to only support one audio system then then have users figure out the compatibility on their system (e.g. PipeWire supports the ALSA and Pulse ABIs).

      > Z versions of graphic APIs

      Same, the runtime ensures that a vulkan loader is present but does not actually do anything for compatibility. Both OpenGL and Vulkan also provide backwards compatiblity so you again just need to decide on a minimum version.

      What the steam runtime mainly does is provide a bunch of libraries that are present on Ubuntu that games might link against so that everyone has them. Nothing stopping the games from shipping those libraries themselves though.

      2 replies →

Does whatever work on Android too? Because that's technically Linux, that's what I believe GP was referring to. I believe Android actually has a totally different graphics stack.