WindowsのSteam経由でFactorioを正常に起動しています
steam -applaunch 427520
しかし残念なことに、私が取り組んでいるプロジェクトには stdout が必要なのですが、このコマンドが開始する steam プロセスは終了してしまい、stdout が残ってしまいます。Factorio を直接起動したこともありますが、その場合 stdout に表示されるのは次のものだけです:
0.000 Initializing Steam API.
0.000 Steam requires game restart, restarting...
そして何も起こらなかった...
非 Steam バージョンを起動すると、stdout からあらゆる種類の出力を正常に取得できます。Steam が stdout をハイジャックしているのでしょうか。もしそうなら、どこで見つけることができますか?
私が行った追加のテストには、Factorioに追加のパラメータを送信することが含まれています。
steam -applaunch 427520 --version
ゲームが起動せず、不明なパラメータの場合のようにエラーが返されないという点で動作しているようですが、出力がどこに送信されているのかわかりません。バージョン パラメータを使用してゲームを直接起動すると、次の結果が返されます。
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
appid 452280のデモでも同様のテストが可能であるはずです。
答え1
ゲームの代わりにプログラムを実行するように Steam ランチャーを指定します。
これを行うには、起動パラメータを次のように編集します。
myLauncher %command%
ここで、myLauncher はランチャーへのパスです。その後、Steam が「ゲーム」を起動すると、実際にランチャーが実行され、ゲーム実行可能ファイルへのパスが最初の引数として渡されます。
これにより、自分でゲームを起動して stdout をキャプチャできるようになります。また、重要なのは、Steam がゲームの起動を期待しているため、ゲームが Steam にチェックインすると、適切に起動されたことが認識されることです。
それでもユーザーにアプリから起動を開始させたい場合は、引数を受け取らなかった場合に Steam にゲームを起動するように指示し、終了するようにアプリを設定するだけです。その後、Steam はアプリを再起動し、2 番目のインスタンスは期待どおりに動作します。