Toggle search
Search
Toggle menu
notifications
Toggle personal menu
Editing
Known issues/Save Breaker Linux
From Turing Complete
Views
Read
Edit
Edit source
View history
associated-pages
Page
Discussion
More actions
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
On Linux when trying to launch the save_breaker alpha, the game might show just a gray screen. This is because the save_breaker version of the game runs two processes - the <code>Turing Complete.x86_64</code> main process and the <code>simulator</code> process that’s used to compile and execute circuits. These two processes communicate with each other over a localhost TCP socket. For the sake of debugging, the main process tries to spawn the simulator process in its own separate terminal window; on Linux it does this by executing <code>gnome-terminal -- bash -ic "./simulator 5002"</code>. After executing this command, regardless of whether it succeeds or fails, the game goes into a loop trying to connect to TCP 5002 socket, which is why it appears to be stuck at a gray screen. There are a few ways to resolve this, depending on whether you run Steam via Flatpak or not, and how far you’re willing to trade hackiness for convenience. <span id="steam-in-flatpak"></span> = Steam in Flatpak = If you’re using Steam via Flatpak, then this is the only known solution. # Start the game. # Run <code>flatpak ps</code> to find the game’s running process. # Run <code>sudo -E flatpak enter instance_id /bin/sh</code> to start a shell inside the process’s namespace. # In this shell, run <code>./simulator 5002</code>. <span id="give-the-game-access-to-the-hosts-gnome-terminal"></span> = Give the game access to the host’s gnome-terminal = If you do have gnome-terminal installed on your system, the game will nevertheless fail to find it. This is because Steam defaults to running Linux games in a sandbox, dictated by the game’s “Compatibility” setting. # Right-click on the game in Steam and open its Properties. # In the Compatibility tab, check “Force the use of a specific Steam Play compatibility tool”. # In the dropdown that appears, select “Legacy runtime 1.0”. This will disable the sandbox for the game, so the game will be able to access your host system’s gnome-terminal binary. Note that it is the “Legacy runtime 1.0” option, ''not'' the similarly named “Steam Linux Runtime 1.0 (scout)” option. # Start the game. It should now automatically spawn gnome-terminal. <span id="run-simulator-manually"></span> = Run simulator manually = This is similar to the two methods mentioned above but for non-Flatpak installs of Steam. # Right-click on the game in Steam and open its Properties. # In the Compatibility tab, check “Force the use of a specific Steam Play compatibility tool”. # In the dropdown that appears, select “Legacy runtime 1.0”. This will disable the sandbox for the game, so the game will be able to access your host system’s gnome-terminal binary. Note that it is the “Legacy runtime 1.0” option, ''not'' the similarly named “Steam Linux Runtime 1.0 (scout)” option. # Open a terminal of your choice and run the simulator binary. The binary is in the installation directory of the game. For example, run <code>~/.steam/steamapps/common/Turing\ Complete/simulator 5002</code> if your steamroot is <code>~/.steam</code>. <span id="shim-gnome-terminal-with-a-script-that-runs-the-terminal-of-your-choice"></span> = Shim gnome-terminal with a script that runs the terminal of your choice = # Disable the game’s sandbox using the “Legacy runtime 1.0” method above. # Create an executable script named <code>gnome-terminal</code> in the game’s installation directory (ie adjacent to the Turing Complete.x86_64 and simulator binaries) that forwards <code>$@</code> to a terminal of your choice. Depending on what that terminal is, you might have to munge the parameters like removing the leading <code>--</code>. Also note that the game expects the spawned <code>gnome-terminal</code> process to fork and exit; if it blocks on the <code>simulator</code> process then the game will remain hung. So you may need the script to background the spawned terminal process. # Start the game. It should now automatically spawn your gnome-terminal script. <span id="run-the-game-yourself-instead-of-via-steam"></span> = Run the game yourself instead of via Steam = The game does not have Steam DRM, so it is perfectly possible to run the <code>Turing Complete.x86_64</code> binary yourself and not worry about Steam sandboxes. In this case, if you have gnome-terminal installed then the game will automatically use it, and if you don’t then you have the ability to run <code>simulator 5002</code> manually. Of course you will lose out on Steam integration features like Cloud Saves this way. <span id="give-the-game-access-to-the-hosts-gnome-terminal-nuclear-option"></span> = Give the game access to the host’s gnome-terminal, nuclear option = This option is more intrusive than the “Give the game access to the host’s gnome-terminal” option above, in that it disables the Steam sandbox for all games, not just Turing Complete. There should be no reason to do this, but it is listed here for completeness. # Change the way you launch Steam to append <code>-compat-force-slr off</code>. Note that we are talking about a CLI parameter for Steam itself, ''not'' the “Launch Options” setting for individual games inside Steam. For example if you normally run <code>/usr/games/steam</code> you would now run <code>/usr/games/steam -compat-force-slr off</code> instead. This will disable the sandbox and allow the game to find your host system’s gnome-terminal binary. # Start the game. It should now automatically spawn gnome-terminal. <span id="hex-edit-the-game-to-run-a-terminal-of-your-choice"></span> = Hex-edit the game to run a terminal of your choice = The <code>libbackend.so</code> file in the game’s installation directory contains the string used to construct the gnome-terminal commandline. It is possible to edit this string to be the terminal of your choice. As mentioned in the previous point, make sure that the commandline you place here forks and exits instead of blocking. An example of such editing is in [https://discord.com/channels/828292123936948244/1308127840079843388/1308158381432901764 this post.] This method is the most “fire-and-forget” but will break any time the game updates and reverts your changes to its files. It is not recommended to do this method and it is only mentioned here for completeness.
Summary:
Please note that all contributions to Turing Complete are considered to be released under the Creative Commons Attribution-ShareAlike (see
TuringComplete:Copyrights
for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource.
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)