Ich starte Factorio erfolgreich über Steam unter Windows über
steam -applaunch 427520
aber leider brauche ich die Standardausgabe für das Projekt, an dem ich arbeite, und der Steam-Prozess, den dieser Befehl startet, wird beendet, sodass ich keine Standardausgabe mehr habe. Ich habe Factorio auch direkt gestartet, aber dann bekomme ich auf der Standardausgabe nur:
0.000 Initializing Steam API.
0.000 Steam requires game restart, restarting...
Und dann nichts ...
Wenn ich die Nicht-Steam-Version starte, kann ich erfolgreich alle möglichen Ausgaben von stdout erhalten. Hijackt Steam stdout und wenn ja, wo finde ich es?
Weitere Tests, die ich durchgeführt habe, umfassen das Senden zusätzlicher Parameter an Factorio
steam -applaunch 427520 --version
Scheint zu funktionieren, da das Spiel nicht startet und es keinen Fehler zurückgibt, wie es bei einem unbekannten Parameter der Fall ist, aber ich weiß nicht, wohin die Ausgabe gesendet wird. Wenn ich das Spiel direkt mit dem Versionsparameter starte, wird Folgendes zurückgegeben:
Version: 1.1.59 (build 59719, win64, steam)
Binary version: 64
Map input version: 0.18.0-0
Map output version: 1.1.59-0
Ähnliche Tests sollten mit der Demo möglich sein, die die App-ID 452280 hat
Antwort1
Weisen Sie den Steam Launcher an, Ihr Programm statt des Spiels auszuführen.
dazu können Sie die Startparameter etwa so bearbeiten:
myLauncher %command%
Dabei ist myLauncher der Pfad zu Ihrem Launcher. Wenn Steam dann „das Spiel“ startet, führt es tatsächlich Ihren Launcher aus und der Pfad zur ausführbaren Datei des Spiels wird als erstes Argument übergeben.
Auf diese Weise können Sie das Spiel selbst starten, um die Standardausgabe zu erfassen. Steam erwartet außerdem, dass das Spiel gestartet wird, sodass Steam beim Anmelden bei Steam weiß, dass es ordnungsgemäß gestartet wurde.
Wenn Sie dennoch möchten, dass der Benutzer den Start von Ihrer App aus initiiert, können Sie Ihre App so einrichten, dass Steam das Spiel starten soll, wenn kein Argument empfangen wurde, und dann einfach beendet wird. Steam startet Ihre App dann neu und diese zweite Instanz funktioniert wie erwartet.