프로그래밍 방식으로 시작할 때 Steam 게임의 표준 출력을 얻는 방법

프로그래밍 방식으로 시작할 때 Steam 게임의 표준 출력을 얻는 방법

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

게임 대신 프로그램을 실행하려면 스팀 런처를 지정하세요.

이렇게 하려면 실행 매개변수를 다음과 같이 편집하면 됩니다.

myLauncher %command%

myLauncher는 실행 프로그램의 경로입니다. 그런 다음 Steam이 "게임"을 시작하면 실제로 런처가 실행되고 게임 실행 파일의 경로가 첫 번째 인수로 전달됩니다.

이를 통해 stdout을 캡처할 수 있도록 게임을 직접 시작할 수 있으며, 결정적으로 Steam은 게임이 시작될 것으로 예상하므로 게임이 Steam으로 체크인할 때 게임이 적절하게 시작되었음을 알 수 있습니다.

사용자가 앱에서 실행을 시작하도록 하려면 인수를 받지 못한 경우 Steam에 게임을 시작하도록 앱을 설정한 다음 종료하면 됩니다. 그러면 Steam이 앱을 다시 실행하고 두 번째 인스턴스가 예상대로 작동합니다.

관련 정보