我已成功通过 Windows 上的 Steam 启动 Factorio
steam -applaunch 427520
但不幸的是,我需要我正在开展的项目的标准输出,而此命令启动的 steam 进程退出,导致我没有标准输出。我也直接启动了 Factorio,但我在标准输出上得到的只有:
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 启动“游戏”时,它实际上会执行启动器,并且游戏可执行文件的路径将作为第一个参数传递。
这使您可以自己启动游戏,以便您可以捕获标准输出,并且关键的是,steam 正在等待游戏启动,因此当游戏通过 steam 检查时,它知道游戏已正确启动。
如果您仍希望用户从您的应用发起启动,您可以设置您的应用,让 Steam 在未收到参数时启动游戏,然后退出。然后 Steam 将重新启动您的应用,第二个实例将按预期工作。