This is just a vent post / unpopular opinion (? unsure if unpopular). Specifically on Steam. Linux native builds are so buggy and glitchy and never work right. Always some combination of:

  • No sound
  • Old outdated version missing content and incompatible online
  • Controllers don’t work
  • Crashes, doesn’t launch at all
  • Horrific FPS
  • Cutscenes don’t play
  • Weird game breaking softlocks and logic errors, like critical items not spawning and dialogue not triggering
  • Zero support and low priority from the developer

I have none of these issues with Proton. Proton works perfectly fine, I love it. This only happens when a game doesn’t use Proton. As soon as I change to Proton all issues are resolved. This problem has followed me across distros with fresh installs, so it’s not a config issue. Yes I have the correct drivers and such, NVIDIA proprietary unfortunately. It’s so strange, you’d imagine the native build would run better not worse.

The worst part is, it’s not easy to tell when a game will launch using Linux native as it’s the default priority. Games can even silently update and stop working when they gain Linux native “support”. You have to manually go in to properties and override compatibility to proton. Normally I do this when I notice a suspiciously large amount of bugs and I’m like hmm… oh look it’s Steam Linux Runtime 1.0 again.

I wish there was a way to just force Proton globally. Either that or people actually test and maintain their Linux builds. I’d rather there be no Linux build at all if they’re going to be so terrible.

Edit to add commented example list of games:

I couldn’t get a full list because I was relying on having set a flag forcing a specific version of Proton to identify which games were problematic to jog my memory… Unfortunately this data is local only and was not synced between computers, so it was lost when I changed distro. Just from my limited memory though, I can list some that I distinctly remembered when writing up my post, though it’s many more in reality. It’s also surprisingly hard to see whether a game even has a Linux native version, you usually have to wait for the store page to load and scroll down to compatibility, which is just annoying.

Games that worked well:

  • Factorio
  • Stardew Valley
  • Baba Is You
  • All Valve games (TF2, DotA2, etc)

Games that had issues:

  • 1001 Spikes
  • The Case of the Golden Idol
  • Broforce
  • Spiritfarer: Farewell Edition
  • The Stanley Parable: Ultra Deluxe
  • Cook, Serve, Delicious
  • Valheim
  • A Game About Feeding A Black Hole
  • Audiosurf 2
  • Keep Talking and Nobody Explodes
  • Slay the Princess
  • TIS-100
  • Cassette Beasts
  • Brotato
  • Bit.Trip runner
  • Don’t starve together
  • Unpacking
  • While True: Learn
  • Fez
  • Magicka 2 (controllers not working)
  • One Shot (critical gameplay bug right at the end. Had to watch a let’s play to finish it. I messaged the dev who left me on Read)
  • Just Shapes & Beats (no sound)
  • Tiny Bookshop (no sound)
  • HiveSwap (critical gameplay bug right at the end, and savefile bricked, had to watch a let’s play and the dev ignored me) (I’m not a “fan” I swear, please don’t lynch me)

I’m getting tired and I’m sure you get the point. Almost every game in my experience has been unplayable on Linux runtime. I’m glad it’s working well for you though.

  • marxismtomorrow@lemmy.today
    link
    fedilink
    English
    arrow-up
    9
    arrow-down
    1
    ·
    4 hours ago

    So anyone having these issues:

    It’s libraries and steam (and GOG, jesus christ GOG is the worst at this) being lazy at actually implementing permanent fixes.

    For example, BG II Enhanced edition works wonderfully under linux. Every game with Beamdogs improved infinity engine does. Except for the fact it was built against specific library versions which are a decade behind what is shipped in 90% of distros today. Except most versions of the game you download have the libraries you need so no problem right?

    Except the launcher script included is rarely if ever set up to actually use them. So it fails to launch, and the error message you get sends you on a wild goose chase and since its an old game you just skip the work and instead use the windows version and take the 10-20% FPS hit and weird graphical issues that happen with proton.

    The actual solution? Take those specific library versions, putting them in a folder, and then symlinking said libraries into the game’s folder and setting up a venv so that it only uses those libraries and doesn’t try to use system libraries.

    And unfortunately you have to do this for every game with developers too stupid or too lazy to actually do any amount of work on their linux builds.

    Between Steam’s linux runtime (1 2 and 3) and gog linux native games you can build up a decent “library” of libraries and easy symlinks to copy, which will make all native linux clients behave. This solves 99% of the things wrong.

    The other 1% is genuinely the developer doing something fucky with the windows version of your display driver that the manufacturer of your video card didn’t parity with their linux drivers and is too obscure for the open source community to know about.

    • Zarobi@aussie.zoneOP
      link
      fedilink
      English
      arrow-up
      1
      arrow-down
      1
      ·
      4 hours ago

      I don’t get noticeable FPS hits or graphical issues with Proton. In fact, in many cases Proton actually outperforms Windows in FPS.

      I don’t think many people are willing to mess with that symlink stuff to be honest, I know I’d only do it if I had a really good reason to. But I’m not a Linux expert, I don’t really understand that kind of stuff and would probably fuck up my game or system if I tried. I know enough to read and mostly comprehend commands that I’m copy pasting into terminal

      • marxismtomorrow@lemmy.today
        link
        fedilink
        English
        arrow-up
        5
        ·
        3 hours ago

        I don’t get noticeable FPS hits or graphical issues with Proton. In fact, in many cases Proton actually outperforms Windows in FPS.

        This will depend entirely on your hardware and drivers, but I was referring to Proton v native. Properly set up and ‘supported’ native should generally always end up faster, but Nvidia’s stupidity and developer’s stupidity tend to mess that up.

        I don’t think many people are willing to mess with that symlink stuff to be honest, I know I’d only do it if I had a really good reason to. But I’m not a Linux expert, I don’t really understand that kind of stuff and would probably fuck up my game or system if I tried. I know enough to read and mostly comprehend commands that I’m copy pasting into terminal

        That’s understandable and why I direct my complaints very precisely at the problem so that more people can yell at developers and stores to actually do this work themselves. Steam tries, but their solution only works on the flatpak version, which makes modding said games outside of the workshop difficult (and introduces all sorts of other problems for power users that do not keep their games in their home folder) and GOG tried for a while but whoever is overseeing the gog linux distributions seems to not understand anything about linux at a fundamental level. Hell even the independent GOG installer is broken on on some systems without GTK2 installed because the underlying application was built 15 years ago and essentially never updated.

        • ampersandrew@lemmy.world
          link
          fedilink
          English
          arrow-up
          4
          ·
          3 hours ago

          I’ve been daily driving Linux for 9 years, and I didn’t know any of this either. I wouldn’t recommend yelling at developers to update old games, because basically none of them ever have it in their development budget to go back and do so, if the studio even survived to this day. If this is something that routinely happens with old Linux native games, then we need a better solution. I’ve run into misbehaving old Linux native games and also just defaulted to using Proton instead. That’s way easier than diagnosing which libraries I need, which I never thought to do and still don’t know how.

          • marxismtomorrow@lemmy.today
            link
            fedilink
            English
            arrow-up
            3
            ·
            edit-2
            3 hours ago

            So, short tutorial:

            • Install steam. (seriously it just has the most libraries)
            • Install any steam native linux game (if you have any valve product, install that.)
            • Navigate to ~/.steam/steam/steamapps/common
            • Navigate into each of the SteamLinuxRuntime* folders
            • Find every ‘lib’ folder within i386 and x86_64 (or amd64) for each steam library folder
            • Open a new tab/window and pick a path somewhere that you can remember and create two folders there, something like ~/Games/LinuxFix/i386 and ~/Games/LinuxFix/x86_64
            • Copy every single library you find in every single linux runtime into these folders, respecting the i386 and x86_64.
            • Create a new file (I normally name it run.sh) in the game folder of the game you want to play with the following (at minimum, if you need/want any other ‘command line’ arguments, this would be the script to dump them in:
            #!/bin/bash
            export LD_LIBRARY_PATH=/<Path you picked>/i386:/<Path you picked>/x86_64
            ./<game_executable>
            
            • And run it.

            Congrats, you now solved nearly every launch problem with native linux games better than a multi-billion dollar company. The most you will have to do if you’re still having problems is run that ‘run.sh’ in a terminal, see what exact name for a library the game is expecting, find a library in one of those folders that is close to that name (usually this is something like “libkeyutils.so.1.4”) and symlink (in dolphin this is ctrl click and drag to an empty space) it with the name requested (which is usually just something like “libkeyutils.so.1”)

            Congrats, you now troubleshot more than the entirety of GOG’s forum staff and successfully did something that multi billion dollar company couldn’t do.

            • ampersandrew@lemmy.world
              link
              fedilink
              English
              arrow-up
              2
              ·
              2 hours ago

              We can actually put a number on the value of GOG since its recent acquisition, and it’s about $25 million, not billion, which is a pretty stark difference. I get where you’re coming from, but this is something I would have had no idea how to do, and how frequently should those libraries be checked? They probably don’t become outdated all at once. Even with you spelling it out for me, I’m still more likely to just use Proton.

              • marxismtomorrow@lemmy.today
                link
                fedilink
                English
                arrow-up
                2
                ·
                2 hours ago

                Generally once you set it up once per game you should be good to go. But every update to your distro may invalidate games you haven’t done this to. To explain why:

                On linux your system maintains your packages, including all linked libraries, not individual programs. On windows it’s mostly down to the program (though for things like direct x that’s now handled by windows update… for the most part).

                Now when compiling a game, you can only compile for version numbers you know, since newer versions of a library might make drastic changes that break things, so you can’t future proof your application on linux. This is also why packages on linux have ‘maintainers’ even when they don’t add new features or make any real improvements for years at a time, you have to compile to whatever’s current.

                So as linux keeps updating, the system version of the library keeps increasing, but for video games especially the original developers don’t, won’t, or simply can’t recompile each time their dependencies update because their entire profit model around software release was designed for windows, where each application is shipped with the exact library version it needs and never has to change anything.

                So. What’s the real solution? Each game should just ship with the library version it needs. The reason game devs are hesitant is because it’s not best practice on linux, as it theoretically introduces a security risk and they don’t want to be held liable. (Say there’s a Privilege Escalation exploit found in libssh 0.2.1 and your game shipped with that version, you can’t update the version your game uses without updating the game, and if you’re several years out you’re not spending money updating the game.) But honestly the risk of that is so low it’s practically pointless to worry about, but still that has meant that the distributor defaults to being the one responsible… the problem with that is the distributors rarely have Subject Matter Experts in high enough numbers to decipher what every single game needs.

                So what’s this solution? So what this does is piggy back off of Steam’s implementation. Steam installs several “run time environments” for linux to handle this problem… but that doesn’t always mean steam includes everything you need in any single one, and valve probably has like, one guy doing it. So by combining all of steam’s work into a single source folder and then linking setting up that venv to point to it, you shotgun blast library versions at a program until it accepts one, solving the problem for that game forever. Much like any problem solved by a shotgun.

                Sidenote

                The app image distribution format completely and totally solves this problem, but kills mods without explicit handling by the developer. Flatpak also completely and totally solves this problem but introduces permission problems and kills modding in a new exciting way thanks to the sanboxing feature of Flatpak. Snap also completely solves this problem, but like flatpak kills modification and non-standard installs thanks to its sandboxing feature.

                Because of linux’s architecture itself it is harder to distribute static non-changing applications, because realistically those are a security risk.

                • ampersandrew@lemmy.world
                  link
                  fedilink
                  English
                  arrow-up
                  1
                  ·
                  2 hours ago

                  You outlined a lot of very good reasons as to why this hasn’t happened already. Is this something you could build as an automated tool to pay it forward, particularly for outside of Steam?

                  Also, your posts seemed to point mostly to games that won’t launch. I haven’t had that problem. What I have had are issues where the game window behaves in strange ways such that it breaks Alt+Tab; or that it reads my mouse coordinates in incorrect locations in a multi-monitor setup; things like that. Do you expect the updated libraries to solve issues like those as well? Or, in your personal experience, have they?

                  • marxismtomorrow@lemmy.today
                    link
                    fedilink
                    English
                    arrow-up
                    1
                    ·
                    edit-2
                    2 hours ago

                    You outlined a lot of very good reasons as to why this hasn’t happened already. Is this something you could build as an automated tool to pay it forward, particularly for outside of Steam?

                    Sure, technically you could just bundle all the common libraries with a tool to generate a runtime script… and that’s a good idea for someone that wants to have a FOSS project that needs to be updated and checked for every new game that comes out. It’s not something I’m going to do, but I do encourage any reader that wants a pretty easy but very labor intensive (essentially getting new libraries for any game reported that this tool doesn’t cover, which would require “obtaining” the game or walking someone through how to find what library is needed) thing for their portfolio

                    What I have had are issues where the game window behaves in strange ways such that it breaks Alt+Tab;

                    This is most commonly a Wayland(KDE et al) issue that is on several issue trackers and mailing lists. This needs to be solved upstream by the Wayland team, which it will be some day; but for now the best advice is run games via “borderless fullscreen” or “windowed fullscreen” options since Wayland treats that more like how windows and x11 handles full screen. Libraries won’t help this. Alternatively install an x11 based DE/WM and you won’t have this issue (but then you’ll have to deal with x11, which feels slow and clunky after being on wayland-based DEs for a while.

                    or that it reads my mouse coordinates in incorrect locations in a multi-monitor setup;

                    This can be down to the DE or might be a Wayland bug, libraries won’t help this. I haven’t experienced this on KDE for CachyOS, except when running games at significantly lower resolution than the monitor is normally set to (i.e. 1920x1080 in-game fullscreen resolution on a 4k monitor). Again best advice is wait for a Wayland fix or run at “borderless fullscreen”.

        • Zarobi@aussie.zoneOP
          link
          fedilink
          English
          arrow-up
          1
          ·
          3 hours ago

          Oh yes that’s right, you awakened a traumatic repressed memory where I keep all my games on a secondary SSD and because I installed either snap or flatpak (can’t remember), it just shit itself and failed to work properly. Took me ages to figure that out.

          It would be nice if there was actually good native Linux games. Imagine how buttery smooth they would run. Valve games one of the reasons they’re so enjoyable is they run perfectly on Linux, chef’s kiss. But they made the steam deck so it would be silly if they didn’t