Kürzlich veröffentlichte Steam Steam Play, das die von Steam gehostete Weingabel Proton ( GitHub ) verwendet, um unsere komplette Spielebibliothek unter Linux spielen zu können. Es erstellt Wineprefixes für alle Ihre Spiele, die noch keinen Linux-Port haben, und funktioniert weitaus besser als Wine.
Ich versuche, Supreme Commander - Forged Alliance (Steam App ID: 9420) auszuführen und auf seinem inoffiziellen Multiplayer-Client FAF zu spielen. Das Spiel funktionierte früher mit Wine, hat aber jetzt eine Reihe von Problemen (z. B. funktioniert der Vollbildmodus nicht und es besteht eine hohe Tendenz zum Schwarzbildschirm in Fenstern). Aber es funktioniert mit Proton.
Ich versuche hier, dieses spezielle Steam-Spiel über das Terminal und nicht über die Steam-GUI auszuführen.
Meine Absicht ist es nicht, Steam DRM zu umgehen, was das Ausführen der Spiele über das Terminal wahrscheinlich sowieso nicht erreichen würde, sondern es mit dynamischen Argumenten auszuführen. Dies ermöglicht das Einrichten von Multiplayer-Matches. Dies wird in Zukunft auf andere Spiele angewendet.
Aber ich habe Probleme beim Laufen im Terminal:
cd ~/.local/share/Steam/steamapps/common/Proton*
STEAM_COMPAT_DATA_PATH=/home/t/.local/share/Steam/steamapps/compatdata/9420 ./proton run /home/t/.local/share/Steam/steamapps/common/Supreme\ Commander\ Forged\ Alliance/bin/SupremeCommander.exe
Ich erhalte ein Fehlerfenster: "Anwendungsladefehler P: 0000065615". Wenn ich dieses Fenster schließe, komme ich einfach ohne zusätzliche Ausgabe zum Terminal zurück. Ich habe mit anderen Spielen experimentiert:
Age of Empires 2 HD schlägt fehl, aber mit einem viel ausführlicheren Fehlermeldungsfenster, das angibt, dass Steam ausgeführt werden muss, wurde Steam zu diesem Zeitpunkt ausgeführt (und es würde ausgeführt, wenn ich in Steam auf die Wiedergabetaste geklickt hätte).
Bannerman : Es gibt überhaupt keine Nachricht und noch weniger ausführlich.
Shadow Complex Remastered erhält einen aktuellen Ladebildschirm des Spiels , läuft etwa zwei Sekunden lang und stürzt dann mit einem Fehler ab:
CAppInfoCacheReadFromDiskThread took 3 milliseconds to initialize CApplicationManagerPopulateThread took 7 milliseconds to initialize (will have waited on CAppInfoCacheReadFromDiskThread)
Daher scheint kein Spiel mit dieser Methode erfolgreich zu laufen.
Vielleicht etwas Potenzial hier UPDATE 3/10/2018 :
WINEPREFIX="/home/t/fa-wineprefix/":"/home/t/.local/share/Steam/steamapps/common/Proton 3.7/dist/lib/wine winecfg"
PATH="/home/t/.local/share/Steam/steamapps/common/Proton 3.7/dist/bin/:$PATH"
export WINEDLLPATH="/home/t/.local/share/Steam/steamapps/common/Proton 3.7/dist/lib64/wine:/home/t/.local/share/Steam/steamapps/common/Proton 3.7/dist/lib/wine"
export LD_LIBRARY_PATH="/home/t/.local/share/Steam/steamapps/common/Proton 3.7/dist/lib64:/path/to/steam/steamapps/common/Proton 3.7/dist/lib:/usr/lib/steam:/usr/lib32/steam"
WINEPREFIX="/home/t/fa-wineprefix/" "/home/t/.local/share/Steam/steamapps/common/Proton 3.7/dist/bin/./wine" "/home/t/.local/share/Steam/steamapps/common/Supreme Commander Forged Alliance/bin/SupremeCommander.exe"
Diese Methode schlägt jedoch beim letzten Befehl mit diesem Fehlerfenster fehl:
Anwendungsladefehler P: 0000065434
sowie einige Terminalausgänge:
001f:err:module:load_builtin_dll failed to load .so lib for builtin L"winebus.sys": libudev.so.0: cannot open shared object file: No such file or directory
001f:err:ntoskrnl:ZwLoadDriver failed to create driver L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\WineBus": c0000142
001f:err:winedevice:create_driver failed to create driver L"WineBus": c0000142
0013:err:service:process_send_command service protocol error - failed to write pipe!
000d:fixme:service:scmdatabase_autostart_services Auto-start service L"WineBus" failed to start: 1114
0009:err:module:load_library somehow failed to load steamclient
Jetzt wissen wir mehr über das Problem. es scheint, obwohl Dampf läuft und jede Maßnahme, um ihn wissen zu lassen, wo Dampf ist, findet er keinen Dampf.
Ich habe das gleiche auch aus dem Protonenordner mit dem gleichen Ergebnis versucht.
Einige neue Potenziale hier UPDATE 3/10/2018 :
Der Trick, den er erwähnt, ist das Erstellen eines kleinen Python-Skripts protonRunner.py
:
#!/usr/bin/env python
import os
import sys
home = os.environ["HOME"]
os.environ["STEAM_COMPAT_DATA_PATH"] = home + "/.local/share/Steam/steamapps/compatdata/9420"
run = "run"
exe = "\"" + home + "/.local/share/Steam/steamapps/common/Supreme Commander Forged Alliance/bin/SupremeCommander.exe\""
cmd = "\"" + home + "/.local/share/Steam/steamapps/common/Proton 3.7/proton\" " + run + " " + exe
for arg in sys.argv[1:]:
cmd += " " + arg
os.system(cmd)
supcomFA.desktop
::
[Desktop Entry]
Name=SupremeCommander
Exec=python $HOME/.local/share/Steam/steamapps/common/Proton\ 3.7/protonRunner.py
Icon=/home/t/.local/share/icons/supcom.png
Type=Application
Encoding=UTF-8
Version=1.0
Terminal=true
Dadurch wird die gleiche Fehlermeldung angezeigt:
Anwendungsladefehler P: 0000065434
TL; DR: So führen Sie ein Windows Steam-Spiel (das unter Linux über Proton ausgeführt werden kann) vom Terminal aus aus.
quelle
ps faux
. UntersuchenProton
Sie sorgfältig die Prozesse, die Sie sehen, wie die Dinge beginnen, vielleicht gibt es dort einige nützliche Parameter. Notieren Sie dann die PIDs aller Prozesse. Zum/proc/$PID
und haben einen Blick um die Sachen gibt, vor allemcwd
,environment
usw. Sie wollen versuchen , die Umgebung genau einzurichten als Ventil der Fall ist.WINEDLLPATH
und nicht exportierenLD_LIBRARY_PATH
würden, hätten sie keine Auswirkungen auf den später ausgeführten Befehl wine. Außerdem sollten Sie im Dateipfad nicht sowohl Anführungszeichen als auch Backslashes verwenden. Bevorzugen Sie nur Anführungszeichen:WINEPREFIX="/home/t/fa-wineprefix/" "/home/t/.local/share/Steam/steamapps/common/Proton 3.7/dist/bin/./wine" "/home/t/.local/share/Steam/steamapps/common/Supreme Commander Forged Alliance/bin/SupremeCommander.exe"
Außerdem scheint die Zeile "Vielleicht ein gewisses Potenzial hier" mit einem Screenshot des Fehlers zu verknüpfen, den Sie zuvor erhalten haben. Haben Sie einen Fehler mit dem Link gemacht?export
heute Abend experimentieren, wenn ich nach Hause komme.Antworten:
Hier ist ein Experiment, das Ihnen helfen kann, die Antwort zu erhalten. Der Einfachheit halber bezeichne ich Ihren Standardspeicherort für die Steam-Bibliothek als
$STEAM
(der Standard ist~/.local/share/Steam/
). Proton ist standardmäßig installiert$STEAM/steamapps/common/Proton 3.7
, ich nenne das$PROTON
.Als ich versuchte, The Witcher auszuführen , führte Steam diesen Befehl aus:
Wo
$STEAM
hat Backslashes anstelle von Schrägstrichen, da es sich um einen Windows-Pfad handelt. Darüber hinaus wurden etwa 70 Umgebungsvariablen festgelegt (in Bezug auf Wine, Steam, verschiedene Hardware / Treiber, Bibliotheken usw.). Eine einzelne Variable, dieWINESERVERSOCKET
sich auf den Weinserver bezieht, wurde für diese Instanz gestartet. Wenn ich diese Variable weglasse und den Rest verwende, kann ich das Spiel über die Befehlszeile starten.Schritte:
Ersetzen Sie
$PROTON/dist/bin/wine-preloader
durch ein Wrapper-Skript, das die Umgebung irgendwo speichert:Das Skript ist im Wesentlichen das Folgende:
Es schont die Umwelt, mit Ausnahme
WINESERVERSOCKET
, in~/env
, den Befehl auszuführen und Argumente~/cmd
und führt die eigentliche Datei mit den Argumenten zur Verfügung gestellt. Es werden ASCII-Nullzeichen verwendet, um alles zu trennen, da die tatsächlichen Umgebungsvariablen möglicherweise Zeilenumbrüche enthalten.Beachten Sie, dass ich den Befehl der Einfachheit halber mit
-orig
hinzugefügt speichere .Führen Sie das Spiel über die Steam-Benutzeroberfläche aus. Das Wrapper-Skript erstellt diese Dateien.
Sie können die Umgebung laden und den Befehl aus diesen Dateien ausführen. In Bash
-d ''
Hier wird Bash mitgeteilt, dass die Dateien das ASCII-Nullzeichen als Trennzeichen verwenden.Das war genug für The Witcher , um für mich zu rennen. Alle diese Umgebungsvariablen werden wahrscheinlich nicht benötigt. Ich überlasse es Ihnen zu testen, welche nicht.
All dies könnte natürlich völlig unnötig sein. Wenn wir uns die Befehlszeilenoptionen von Steam ansehen , haben wir:
Und als ich rannte:
Der Weinbefehl lautete:
Also gab Steam weiter
foo
undbar
als Argumente für das Spiel. Dies könnte alles sein, was Sie brauchen.quelle
"%s"
durchsteam -applaunch 9420
in den Startoptionen fast , aber nicht: FAF legt das Arbeitsverzeichnis fest und versucht, Dateien mit lokalen Pfaden zu laden, aber Steam ändert das Verzeichnis.Ich habe die Lösung dank der Hilfe von aeikum auf dem Dampfprotonen-Github gefunden:
https://www.youtube.com/watch?v=zQkiy8lK20o (aktualisiert am 12.03.2019) https://github.com/tatsujb/installFAFscript
quelle