Estoy iniciando Factorio con éxito a través de Steam en Windows a través de
steam -applaunch 427520
pero desafortunadamente, necesito la salida estándar para el proyecto en el que estoy trabajando y el proceso de Steam que inicia este comando sale dejándome sin salida estándar. También inicié Factorio directamente, pero todo lo que obtengo en la salida estándar es:
0.000 Initializing Steam API.
0.000 Steam requires game restart, restarting...
Y luego nada...
Cuando ejecuto la versión que no es de Steam, puedo obtener con éxito todo tipo de resultados desde la salida estándar. ¿Steam está secuestrando la salida estándar y, de ser así, dónde puedo encontrarlo?
Las pruebas adicionales que he realizado incluyen el envío de parámetros adicionales a Factorio
steam -applaunch 427520 --version
Parece funcionar porque el juego no se inicia y no devuelve un error como lo hace con un parámetro desconocido, pero no sé a dónde se envía el resultado. Al iniciar el juego directamente con el parámetro de versión se devuelve:
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
Debería ser posible realizar pruebas similares con la demostración que tiene la aplicación 452280
Respuesta1
Apunta el lanzador de Steam para ejecutar tu programa en lugar del juego.
Para hacer esto, puede editar los parámetros de inicio para que sean algo como:
myLauncher %command%
Donde myLauncher es la ruta a su lanzador. Luego, cuando Steam inicia "el juego", en realidad ejecuta el iniciador y la ruta al ejecutable del juego se pasará como primer argumento.
Esto te permite iniciar el juego tú mismo para que puedas capturar la salida estándar y, críticamente, Steam espera que el juego se inicie, de modo que cuando el juego se registre con Steam sepa que se inició correctamente.
Si aún desea que el usuario inicie el inicio desde su aplicación, puede configurar su aplicación para que le indique a Steam que inicie el juego si no recibió un argumento y luego simplemente salir. Luego, Steam reiniciará su aplicación y esa segunda instancia funcionará como se esperaba.