Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rogue Heroes: Ruins of Tasos does not run #548

Open
junefish opened this issue Dec 5, 2022 · 7 comments
Open

Rogue Heroes: Ruins of Tasos does not run #548

junefish opened this issue Dec 5, 2022 · 7 comments

Comments

@junefish
Copy link

junefish commented Dec 5, 2022

Compatibility Report

  • Name of the game with compatibility issues: Rogue Heroes: Ruins of Tasos
  • Steam AppID of the game: 787810

System Information

I confirm:

  • [ X] that I haven't found an existing compatibility report for this game.
  • [ X] that I have checked whether there are updates for my system available.
Have added to the launch options but no log file is being generated

Screenshot

Symptoms

Game does not launch (button switches to "Stop" for about a second and then back to "Play" with no window opening)

Reproduction

  • open game properties
  • set Compatibility > Proton Version to [Experimental / 7.0-5 / 7.0-4 / 6.3-8)
  • close properties
  • click "play"
@kisak-valve
Copy link
Member

Hello @junefish, your issue is with the Steam Linux Runtime - Soldier container environment and Pressure Vessel which sets up that container. It comes down to your home folder being a subdirectory of /usr/local, and there's a note at https://github.com/ValveSoftware/steam-runtime/blob/60f438709eff5ccb7a6fc5c609ae832d58edbe42/doc/steamlinuxruntime-known-issues.md#usrlocal that this is a known incompatible folder location.

This is not a game-specific issue, or a Proton issue. It is not something that can be sanely solved besides relocating your home folder, but there is a workaround suggested in #288.

@junefish
Copy link
Author

junefish commented Dec 8, 2022

That's weird, because other games run fine with Proton (e.g. Among Us, Wingspan), but I will take your word for it!

Following this comment, I ran mount --bind /usr/local/home/junefish/.local/share/Steam /data/games. Now if I ls /data/games I see the contents of my steam folder.

I then tried running Rogue Heroes again and it downloaded some updates before once again not opening. Should I try fully relocating my Steam library? Or is it the Steam installation that's the problem?

Thanks!

@kisak-valve kisak-valve transferred this issue from ValveSoftware/Proton Dec 8, 2022
@kisak-valve kisak-valve reopened this Dec 8, 2022
@smcv
Copy link
Contributor

smcv commented Dec 8, 2022

Following #288 (comment)_, I ran mount --bind /usr/local/home/junefish/.local/share/Steam /data/games. Now if I ls /data/games I see the contents of my steam folder.

For this to work, all environment variables that refer to your home directory would have to be using paths outside /usr/local, and Steam would have to think it was run from a path outside /usr/local. Steam does not have any special way to know that the same file is available with more than one path.

This would be more likely to work if you followed the layout that essentially all Linux distributions use by default, with your home directory's realpath being /home/junefish or similar, and your "official" home directory in /etc/passwd also set to /home/junefish. You could use bind-mounts to arrange for /home and /usr/local to be on the same disk, if you want.

@smcv
Copy link
Contributor

smcv commented Dec 8, 2022

other games run fine with Proton

Old Proton versions (before 5.13) didn't use the container runtime. Are you perhaps using an old Proton version like 5.0 for those games?

@junefish
Copy link
Author

Old Proton versions (before 5.13) didn't use the container runtime. Are you perhaps using an old Proton version like 5.0 for those games?

I thought for sure I was using somewhere between 6.8 & 7.0 for Among Us, but now it's not launching with 7.0-5. Perhaps I was mistaken.

This would be more likely to work if you followed the layout that essentially all Linux distributions use by default, with your home directory's realpath being /home/junefish or similar, and your "official" home directory in /etc/passwd also set to /home/junefish. You could use bind-mounts to arrange for /home and /usr/local to be on the same disk, if you want.

Is there a way to use bind-mounts to let Steam think my home directory is /home/junefish, without actually relocating my home directory from /usr/local/home/junefish? I've read some tutorials and documentation about mount --bind but I'm still not well-versed enough to know how to fix this. Thanks for your patience!

@smcv
Copy link
Contributor

smcv commented Dec 14, 2022

Is there a way to use bind-mounts to let Steam think my home directory is /home/junefish, without actually relocating my home directory from /usr/local/home/junefish?

It's not straightforward, so please make sure you have backups first, and don't make any changes you are not comfortable with. I'm trying to be helpful, but this is at your own risk.

The easy part is to make your home directory show up in the filesystem hierarchy in both places, so that either of these paths works equally well for software that does not treat /usr as special. It's usually best to do this using an /etc/fstab entry so that it is set up during every boot, perhaps something like this:

/usr/local/home /home none bind 0 0

or

/usr/local/home/junefish /home/junefish none bind 0 0

depending on whether you want to do this for all users' home directories, or just yours. And then either mount /home (or mount /home/junefish, as appropriate), or reboot.

The harder part is to make Steam (and any other software that cares about this difference, like Flatpak) think that the version in /home is the canonical path, so that it will launch games using a path like /home/junefish/.local/share/Steam/steamapps/common/Some Game/game.exe in preference to /usr/local/home/junefish/.local/share/Steam/steamapps/common/Some Game/game.exe. I can't give you a full list of places to edit, because it depends on how you set up your system, and if you already figured out how to put your home directory below /usr/local/home instead of the usual /home then you are probably doing various other bits of unconventional setup.

This would likely be easier if you are willing to change your "official" home directory in /etc/passwd to be /home/junefish. A side bonus of that is that you'll see considerably shorter paths in user interfaces! If you don't want to do that for whatever reason, a less reliable way to achieve parts of the same result would be to make sure environment variable HOME=/home/junefish is set whenever Steam is launched.

After that, it will also be necessary to change other environment variables and filesystem paths that previously pointed to /usr/local/home/junefish/... so that instead, they say /home/junefish/.... For instance, if XDG_CONFIG_HOME is set to /usr/local/home/junefish/.config, you'll want to change that to /home/junefish/.config.

For Steam specifically, there are several symbolic links in /home/junefish/.steam ( which will point to paths like /usr/local/home/junefish/..., which you will need to re-create to point to the equivalent path /home/junefish/.... The most important are ~/.steam/steam and ~/.steam/root, which should both point to the "real" path of Steam's main installation directory, /home/junefish/.local/share/Steam in your case.

You'll probably also need to edit /home/junefish/.steam/root/config/libraryfolders.vdf to use the shorter paths.

@smcv
Copy link
Contributor

smcv commented Sep 29, 2023

See also ValveSoftware/steam-for-linux#10096

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants