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