@echo off rem BT411 -- STEAM play (EXPERIMENTAL, dev testers). Launches the glass rem front-end menu: HOST a Steam lobby or JOIN one from the menu -- there rem is no address to configure; sessions form through the Steam lobby. rem Requires: the Steam client RUNNING and logged in, and the steam build rem extracted next to content\. cd /d %~dp0 if not exist "build\Release\btl4.exe" goto badpath if not exist "content\BTL4.RES" goto badpath set BT_PLATFORM=glass set BT_STEAM_NET=1 if exist content\steam.log del content\steam.log set BT_LOG=steam.log set BT_LOG_APPEND=1 rem Cockpit view + MFD gauges -- the same client flags the join bats set rem (field report: players booted 3rd-person without them). Inherited by rem the menu's mission relaunch. set BT_START_INSIDE=1 set BT_DEV_GAUGES=1 rem full menu here (all modes + steam buttons); clear the solo trim in rem case this shell ran play_solo.bat first set BT_FE_SOLO= cd content ..\build\Release\btl4.exe rem ------------------------------------------------------------------ rem HANDOFF WAIT (2026-07-25). The front end does NOT stay resident: it rem CreateProcess()es the mission generation and ExitProcess(0)s itself rem (btl4console.cpp). So OUR child exiting means "the menu handed off", rem NOT "the game closed" -- without this wait the window announced "The rem game has exited" while the game was still loading, which reads as a rem crash to a playtester. Wait for the handed-off generation(s) to go. rem rem NO EXTERNAL TOOLS: `find`, `findstr` and `timeout` are all shadowed by rem Git-Bash / MSYS / GnuWin32 builds of the same names when those are on rem PATH (a dev box, or a player who installed git). The MSYS `find` is rem the Unix one and dies with "find: '/I': No such file or directory", rem and GNU `timeout` takes different arguments. So: parse tasklist with rem a pure-cmd for/f, and call both helpers by ABSOLUTE System32 path. rem A genuinely dead exe leaves no process and falls straight through, so rem the #41 launch forensics above still work. If tasklist is missing rem entirely the loop degrades to reporting immediately -- the old rem behaviour, never a hang. rem ------------------------------------------------------------------ :btwait set "BT_STILL_RUNNING=" for /f "tokens=1" %%P in ('%SystemRoot%\System32\tasklist.exe /FI "IMAGENAME eq btl4.exe" /NH 2^>nul') do ( if /I "%%P"=="btl4.exe" set "BT_STILL_RUNNING=1" ) if defined BT_STILL_RUNNING ( %SystemRoot%\System32\timeout.exe /t 2 /nobreak >nul 2>nul goto btwait ) echo. echo The game has exited. If it closed unexpectedly, send the operator echo content\steam.log. Steam not running = the menu still works but echo lobbies will not appear. pause exit /b :badpath echo. echo ================================================== echo ERROR: this file is not in the right place, or echo the zip was not fully extracted. echo. echo It must sit in the EXTRACTED game folder, next to echo the 'content' and 'build' folders. echo ================================================== echo. pause