Как получить stdout игры Steam при программном запуске

Как получить stdout игры Steam при программном запуске

Я успешно запускаю Factorio через Steam на Windows через

steam -applaunch 427520

но к сожалению, мне нужен stdout для проекта, над которым я работаю, а процесс steam, который запускает эта команда, завершается, оставляя меня без stdout. Я также запускал Factorio напрямую, но тогда все, что я получаю на stdout, это:

0.000 Initializing Steam API.
0.000 Steam requires game restart, restarting...

И ничего...

Когда я запускаю версию non-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 перезапустит ваше приложение, и этот второй экземпляр будет работать так, как и ожидалось.

Связанный контент