From bf04e1c07939c317a842e99222cf0a39f57bb98a Mon Sep 17 00:00:00 2001 From: Joe DiPrima Date: Mon, 10 Aug 2026 11:29:01 -0500 Subject: [PATCH] port-layer papercuts for the playtest: #69 Denkou rename, #71 plasma X=minimize, #157 round-end UX (foreground handoff + lastrun clean-exit markers + bat sign-off rewording); tester-facing open-issues handout (docs/) + field-log anatomy notes Co-Authored-By: Claude Fable 5 --- CLAUDE.md | 1 + content/GAUGE/L4GAUGE.CFG | 2 +- context/build-and-run.md | 17 +++ docs/GLASS_COCKPIT.md | 2 +- docs/OPEN_ISSUES_FOR_TESTERS.txt | 230 +++++++++++++++++++++++++++++++ engine/MUNGA_L4/L4PLASMAWIN.cpp | 6 +- game/btl4main.cpp | 32 +++++ game/glass/btl4console.cpp | 12 ++ game/glass/btl4fe.cpp | 2 +- players/play_solo.bat | 5 +- players/play_steam.bat | 5 +- 11 files changed, 307 insertions(+), 7 deletions(-) create mode 100644 docs/OPEN_ISSUES_FOR_TESTERS.txt diff --git a/CLAUDE.md b/CLAUDE.md index 5c7ff25..1bde76d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -82,6 +82,7 @@ precise than anything you can infer. | Multiplayer, replication, netcode | `context/multiplayer.md` | | **The OPERATOR CONSOLE + RELAY** — how to launch it, ports, seats, the round/launch lifecycle, re-arm | `context/operator-console.md` | | Running a session as sysop (operator-facing how-to) | `docs/OPERATOR_GUIDE.md` | +| The tester-facing OPEN-ISSUES handout (for Discord) | `docs/OPEN_ISSUES_FOR_TESTERS.txt` — regenerate from the tracker + update the header date before each playtest | | Pod hardware, monitors, RIO, MFD surfaces, input remap (CONTROLS.MAP/XInput) | `context/pod-hardware.md` | | Glass cockpit desktop dev layer (BT_GLASS/BT_STEAM gates, PadRIO, miniconsole, Steam) | `context/glass-cockpit.md` | | Steam internet MP (the wire seam, identity tokens, lobby) | `context/steam-networking.md` | diff --git a/content/GAUGE/L4GAUGE.CFG b/content/GAUGE/L4GAUGE.CFG index 85cd7ac..417e9a8 100644 --- a/content/GAUGE/L4GAUGE.CFG +++ b/content/GAUGE/L4GAUGE.CFG @@ -1384,7 +1384,7 @@ cmHeat(K,ModeSecondaryHeat,58,heatpal.pcc,heatpal2.pcc,Myomers); } #======================================================================= -# Sunder V1 +# Denkou (was: Sunder V1) #======================================================================= Snd1Init { diff --git a/context/build-and-run.md b/context/build-and-run.md index 91a1fe7..cb27d75 100644 --- a/context/build-and-run.md +++ b/context/build-and-run.md @@ -69,6 +69,23 @@ run\run.cmd [EGG] # default DEV.EGG; cd's to content\ and runs btl4.exe -eg ⚠ **Keep the `if /I "%%P"=="btl4.exe"` guard** — parsing tasklist with `tokens=2` alone reads its *"INFO: No tasks are running"* line as a PID and spins forever with nothing running. Full investigation, including which windows exit vs merely hide: `phases/phase-12-orphan-processes.md`. +- **Field-log anatomy — reading a steam night (#157 forensics, 2026-08-10) [T2].** A night's log is + a CHAIN of `===== BT411 SESSION` blocks: menu stubs (`args=''`, "first process") alternating with + glass generations (`-net 1501 -platform glass`, "relaunched generation"); one glass block = one + drop, and boundaries are synchronized across every machine to ±2 s (mission-clock expiry relaunches + all peers' menus in the same second). **Stub anatomy:** the steam lobby is CLICK-driven + (`steamAction`, btl4fe.cpp), so a menu closed without a click logs exactly **4 boot lines** and + exits 0 — a 4-line stub at end-of-night is a player going to bed, NOT a crash (all four machines + ended night-14 with identical 4-line stubs at 00:31:2x). 7–8-line stubs = a lobby cycle + (`[steamnet] up` + `[lobby] join` + map). `BTCrashFilter` is armed before the first log line and + writes a `[crash]` block + module-relative stack on ANY unhandled exception — a silent log end + means quit/kill/hang, never an unlogged AV. **`lastrun_.txt` caveats:** appends stop silently + if the file gets locked (the `is_open` guard skips) — a lastrun ending mid-night while the log + continues means the file was captured/locked during live troubleshooting, not that the chain died. + And the bat sign-off ("The game has exited. If it closed unexpectedly, send…") prints after ANY + chain end including a normal quit — it primes players to report quits as crashes; #157 ("did not + exit cleanly") was exactly this echo. The arcade-authentic round-end (mission process exits → + menu relaunch) itself reads as a crash to first-night players. - **Why this is a BT411-only hazard [T1].** The 1995 pod shipped ONE folder — `BTL4OPT.EXE` sits next to `BTL4.RES`/`VIDEO\`/`GAUGE\`/`AUDIO\` (it is still there in `content\`) — and RP411/RP412 keep that shape (`pack-dist.ps1` copies the exe and every asset dir into one dist root). BT411's diff --git a/docs/GLASS_COCKPIT.md b/docs/GLASS_COCKPIT.md index d39ed72..fd80c86 100644 --- a/docs/GLASS_COCKPIT.md +++ b/docs/GLASS_COCKPIT.md @@ -339,7 +339,7 @@ cavern.egg`. This is every option the original console exposed for a BattleTech - experience (4 [T1 game decode]): novice, standard, veteran, expert ← was hardcoded `expert` - vehicle (18, friendly→tag): Black Hawk=blkhawk, Loki=loki, Nova=bhk1, Mad Cat=madcat, Thor=thor, Owens=owens, Kotori=own1, Summoner=thr1, Hellbringer=lok1, Timber Wolf=mad1, Avatar=avatar, - Satyr=ava1, Sunder=sunder, Sunder V1=snd1, Vulture=vulture, Mad Dog=vul1, Mischief=lok2, + Satyr=ava1, Sunder=sunder, Denkou=snd1 (#69), Vulture=vulture, Mad Dog=vul1, Mischief=lok2, Zanin Neko=mad2 (the 18 ModelList names; matches the 2026-07-18 vehicle sweep) - color/camo (7, display→tag): White=White, Black=Black, Brown=Brown, Red=**Crimson**, Green=Green, Gray=**Grey**, Tan=Tan ← was White/Black/Crimson only diff --git a/docs/OPEN_ISSUES_FOR_TESTERS.txt b/docs/OPEN_ISSUES_FOR_TESTERS.txt new file mode 100644 index 0000000..03f5a25 --- /dev/null +++ b/docs/OPEN_ISSUES_FOR_TESTERS.txt @@ -0,0 +1,230 @@ +============================================================================= + BT411 -- ALL OPEN TRACKER ISSUES (93), SORTED FOR PLAYTESTERS + Updated 2026-08-10 -- regenerated from the tracker before each playtest; + grab the newest copy from Discord (or docs/ in the repo) +============================================================================= + HOW TO REPORT: drop a line in Discord with the issue number and PASS / + FAIL / what you saw. Screenshots and rough times help; logs get collected + as usual. +============================================================================= + +----------------------------------------------------------------------------- +A. FIXED -- PLEASE VERIFY +----------------------------------------------------------------------------- +#18 Engineering aux buttons crashed the game (glass windows) + TEST: click every Engineering panel button, incl. the aux row. No crash. +#20 Auto cooling BALANCE did nothing + TEST: ADV control mode, press BALANCE -- coolant redistributes. +#22 Ammo + destroyed weapons did not reset on respawn + TEST: die with empty bins / dead weapons -> respawn full and repaired. +#25 Gamepad turn profile (stick X could not turn the mech) + TEST: bind an axis to "Turn" in content\bindings.txt -- mech turns. +#27 Autocannon/Gauss dealt the wrong damage type + TEST: ballistics should feel/score like solid shot now (no blast splash). +#32 Audio cutting in/out late in the match + TEST: long drop -- audio should stay clean to the end. +#35 Owens crashed when firing lasers (Conn Man x2, long ago) + TEST: Conn Man -- Owens, spam lasers. Believed fixed for a while. +#36 Turning continued after releasing the pad/rudder axis + TEST: RajelAran -- release/center the turn axis, turning stops. +#38 Mech colors reverted on respawn + TEST: custom paint, die, respawn -- colors stay. +#39 Controls were live before the game screen appeared + TEST: mash fire during load -- nothing happens until the scene shows. +#40 Waiting/join screen burned 45-50% GPU + TEST: GPU near idle while waiting in the join screen. +#41 (David/Auric) launcher killed before it could run -- forensics armed + TEST: if join.bat ever fails again, send content\lastrun_join.txt -- + it now records the exit code that names the killer. +#43 Comm display: pilot list with KILLS/DEATHS + TEST: all pilots listed, kills/deaths update through the round. +#47 Jam / ammo-bay-fire annunciation + TEST: bay fire alarm looks OK now. Still watching: does the ENG page + button FLASH on a weapon JAM? (run ballistics hot to force jams) +#48 Secondary/Comm MFD artifacting (stray blocks) + TEST: if you see artifacts, say so -- the log now self-reports the + culprit automatically. +#50 All MFDs unclickable for a round (SAURON) } same fix -- +#56 MFD buttons drift away from where they are drawn } verify together + TEST: alt-tab / focus changes mid-round, then click MFD buttons -- + they must stay aligned with the graphics. +#51 Coolant flush sound looped forever + TEST: flush coolant -- the sound ends when the flush ends. +#53 Generators could not be switched OFF + TEST: ENG page -- toggle each generator off and back on. +#54 (David) all three energy weapons died for a whole round + TEST: after your first death, weapons must still recharge normally + for the rest of the round. +#58 Reticle callsign plate drew as a solid rectangle + TEST: target names under the reticle render as text on every map. +#59 First death permanently froze parts of that player's simulation + TEST: nothing specific -- covered by normal play after dying. +#61 Searchlight toggle was dead + TEST: searchlight button toggles + lamp tracks. (The visible beam and + night-fog change are separate, still to come -- #123.) +#62 Weapon knocked off the power bus stayed dark forever + TEST: fiddle bus/generator selection on the ENG page -- weapons + reconnect on their own (AUTO) instead of staying dead. +#69 "Sunder V1" renamed to DENKOU + TEST: vehicle picker shows Denkou -- era witnesses, confirm the spelling. +#70 (Draco) torso twist lost after a death/respawn + TEST: die, respawn, twist. Fixed a while ago but never field-confirmed. +#71 Closing the Plasma window lost it until restart + TEST: X the plasma window -- it minimizes to the taskbar; click restores. +#93 Crash at end of round + TEST: play rounds to their natural end -- report ANY teardown crash. +#114 Missile impact smoke was a wall + TEST: LRM exchanges -- smoke is present but no longer a smoke screen. +#131 Reticle showed LOCK off-target / no-reg on target + TEST: stationary targets -- lock ring matches where the reticle is. +#137 Respawned with myomers heat MAXED (mech frozen at spawn) + TEST: respawn repeatedly -- heat always starts normal. Oracle already + confirmed one clean session; more eyes welcome, this one eluded us. +#138 Glass buttons flashed at the wrong rate unless a window was dragged + TEST: leave the MFD windows unfocused -- lamps flash at the real rate. +#149 Glass cockpit stutter / hitching + TEST: glass mode -- mission load and play feel smooth again. + (Repaints now skip windows whose gauges did not change.) +#150 Double kill credit (one kill counted twice) + TEST: kill someone with a missile volley -- scoreboard +1, not +2. +#146 Respawned already running (virtual throttle survived death) + TEST: respawn -- throttle idle until YOU move it; a physical throttle + re-syncs on first movement. Oracle confirmed the mechanic; keep watching. +#147 Range caret vanished for the session (ticks stayed) + TEST: nobody has re-created it. If it happens the log now catches the + culprit red-handed ("NaN TRAPPED") -- just report that you saw it. +#152 Torso auto-recentre / CENTER button + TEST: CENTER (pod button / F7) recentres the torso in every control + mode, on glass and RIO rigs too. (Era question below still open.) +#158 (Sauron) could not move after respawn until throttle cycled + TEST when it happens: does cycling the throttle free you? + YES -> it is the #146 throttle-release mechanic (expected). + NO -> report map + where you spawned (suspect: spawn-in geometry). + +----------------------------------------------------------------------------- +B. OPEN -- HELP US REPRODUCE / NARROW (what to note when it happens) +----------------------------------------------------------------------------- +#24 Controller hat/look view sticks (recovers after wiggling now) + NOTE: which controller, which direction, does wiggling clear it. +#37 Mech torso appears BACKWARDS to other players (transient) + NOTE: whose mech, and does it snap back -- watch peers, any chassis. +#74 8BitDo gamepad works solo, dead in Steam MP + NOTE: VexUbiquity -- does it still happen, and in LAN vs Steam? +#100 Main coolant reservoir drains with NO leak shown anywhere + NOTE: what you were doing; screenshot the ENG page when you catch it. +#101 Round ended with 18 s still on the clock + NOTE: exact clock value + which drop; has not repeated since. +#102 Owens: full-throttle run -> hold reverse = animation/audio hang + REPRO known (exterior cam, savannah). Does it still happen? It + self-clears on a torso twist. +#122 Throttle: normal-vs-seek-4 speeds crammed into last sliver of travel + NOTE: which mech; era witnesses -- how did the pod lever feel? +#125 Peers do not see the FIRST destroyed-zone graphic (2nd hit shows it) + NOTE: victim + observer both report; paper doll vs external view. +#126 Peer weapon fire invisible AND silent from some positions + NOTE: positions of shooter/observer; moving fixes it. +#128 Ramming terrain = INSTANT coolant leak (4 for 4 that night) + NOTE: still 100%? speed at impact; which terrain. +#130 Vulture "skating" (gliding without walk animation) in a 6-player session + NOTE: a gait-replication fix landed since -- watch for any recurrence. +#132 (Conn Man) persistent yellow line on the HUD in every mech + NOTE: still there? screenshot + monitor resolution/aspect. +#135 Coolant leak with NO flashing annunciators (+ gen buttons not + flashing on leak, seen in glass too) + NOTE: glass or normal mode, which annunciators stayed dark. +#136 A SHUT leaking loop starts/stops leaking with COMPONENT toggles + NOTE: exact toggle order if you can reproduce. +#139 (Oracle, once) silent exit between "lobby up" and the room screen + NOTE: if hosting dies silently again, say so and we pull the log. +#143 One panel hit -> smoke erupts from MULTIPLE places at once + NOTE: which panel was hit (sensor special seen); screenshot. +#153 Basic-mode elevation limit only applies after cycling modes + Confirmed from the report; fix pending. No action needed. +#154 Overheated generator never came back online + no gen-out alarm on + thermal trip + NOTE: Oracle saw one stuck-forever gen, later trips recovered -- + anyone else? How long did you wait? +#155 PANIC lamp lit: ENG + WEAPON MFD buttons stop responding + (The rapid flicker itself is AUTHENTIC -- see section D.) + NOTE: while panic is lit, which MFDs answer clicks and which do not. +#159 (Conn Man) lag during drops -- missiles / fire exploding in empty space + NOTE: shooter + target + rough time; the match receipts on both + machines can then measure the divergence directly. + +----------------------------------------------------------------------------- +C. QUESTIONS FOR THE ERA WITNESSES (Oracle / VGL Lynx / Ronin / Draco) +----------------------------------------------------------------------------- +#103 Should a mech-to-mech RAM damage ARMOR, or internals only? + (Binary does internals-only rattle -- want a player ruling.) +#104 Mad Dog showing NARC 15 where an LRM is expected -- Ronin suspects + NARC was never implemented in 1995. Anyone remember it firing? +#105 Sensor DAMAGE effects: what exactly happened on-screen? (HUD flicker, + radar degradation, searchlight?) Video/timestamps welcome. +#120 Coolant FLUSH: to the line, or all the way to EMPTY? (Two era + witnesses say empty; our port stops at the line.) +#127 Weapon MFD EJECT graphic -- need a reference image/description. +#133 Did generators X-out on the MFD when SHUT DOWN / OVERHEATED, or + only when DESTROYED? +ALSO (#152 rider): in the pod, did the torso auto-recentre in Mid/Adv + modes, or only Basic? Sauron's "fought my control" suggests only Basic. + +----------------------------------------------------------------------------- +D. SETTLED AS AUTHENTIC / DESIGN CALLS -- group opinions wanted +----------------------------------------------------------------------------- +#151 Panic eject costs -499 (not 0). This is the REAL 1995 scoring, verified + to the exact point value: ejecting scores your own death as a suicide + (you lose your kill-value) PLUS the death penalty. DESIGN CALL: + keep authentic, or house-rule a flat eject cost? +#119 Coolant-warning voice "clipping" at empty reservoir = authentic + (every leak-status edge restarts the phrase; the pod did this too). +#155 (flicker half) PANIC lamp rapid flicker at the failure edge = + authentic; the pod's incandescent bulbs visually smoothed it. +#23 MFDs overlapping the world view = pod-faithful design (real monitors + clipped the eyeport). Revisit sizing/tunability? +#77 Make the Secondary/Radar window resizable (SAURON's iPad-as-4th- + monitor experiment). Enhancement -- want it? +#157 "Crash at drop end" (Conn Man) = NOT a crash. Full forensics on the + ticket: every machine that night shows clean drops, and the round-end + exit-to-menu is the arcade's normal between-rounds flow. The separate + lag / "missiles hit empty space" report is now #159. + IMPROVED: the between-rounds menu should now land IN FRONT at round + end (say so if it still hides), and the console sign-off no longer + cries wolf on normal exits. + +----------------------------------------------------------------------------- +E. KNOWN GAPS -- confirmed and on the list, no need to re-report +----------------------------------------------------------------------------- +#49 Radar/map does not draw the arena WALL geometry +#76 Glass layout save/restore being reworked (some windows not saved) +#83 INCOMING MISSILE alarm not implemented yet +#90 Flames/smoke from serious damage: less than the original (tuning) +#111 Peers see a dying mech's blue warp bubble (should see explosion only) +#112 AFC rounds shotgun across zones (should land as one projectile) +#113 LRM burn/hit state lasts too long +#115 Hot box / target select not connected +#121 Sensor HEAT has no consequences yet +#123 Searchlight: the visible LIGHT + night-fog swap still to come +#145 IR "predator vision": decode done, display not implemented +#156 Fade-to-black at mission end not happening + +----------------------------------------------------------------------------- +F. INTERNAL ENGINEERING BACKLOG (listed for completeness -- nothing to test) +----------------------------------------------------------------------------- +#14 Glass panel unreconstructed button handler backlog (census) +#17 Cavern upper-butte halves lack a collision stream (authenticity TBD) +#21 Weapon recharge arc dark after eng-page use (symptom trail -> #62) +#28 Confirm the vital-subsystem-crit death path can fire (machinery in) +#30 Weapon "unavailable" (level-7) display verification + accessor cleanup +#63 PlayerStatus reads raw 1995 offsets (databinding trap, dormant) +#64 damageZone shadow field (half-fixed; consequences disarmed) +#65 HandleMessage non-virtual across 10 classes (latent dispatch trap) +#66 joyconfig.bat wizard re-run claim -- people use it fine; likely closing +#72 BTLoadPump swallows WM_QUIT during load (latent) +#107 Destroyed HeatSink annunciates nothing (no lamp for condition 0) +#117 KB note: per-chassis cockpit bounce was deliberate (Ronin) -- FYI + +============================================================================= + End of list. 93 open issues total: + 38 verify, 20 reproduce, 6 era questions, 6 settled/design (one is #155's + other half), 12 known gaps, 12 internal. +============================================================================= diff --git a/engine/MUNGA_L4/L4PLASMAWIN.cpp b/engine/MUNGA_L4/L4PLASMAWIN.cpp index 9bb699f..454019b 100644 --- a/engine/MUNGA_L4/L4PLASMAWIN.cpp +++ b/engine/MUNGA_L4/L4PLASMAWIN.cpp @@ -25,7 +25,11 @@ static LRESULT CALLBACK return 0; case WM_CLOSE: - ShowWindow(window, SW_HIDE); // hide only; the renderer owns it + // Minimize, never hide (#71): SW_HIDE left no way back short of a + // restart. A minimized window keeps its taskbar button (both framed + // and ,noframe styles), so the player can recover the display. The + // renderer still owns the window either way. + ShowWindow(window, SW_MINIMIZE); return 0; } return DefWindowProcW(window, message, wparam, lparam); diff --git a/game/btl4main.cpp b/game/btl4main.cpp index 96c89f6..90f1f4c 100644 --- a/game/btl4main.cpp +++ b/game/btl4main.cpp @@ -234,6 +234,36 @@ static LONG WINAPI return EXCEPTION_EXECUTE_HANDLER; // die (after the evidence is out) } +// +// lastrun_.txt clean-exit markers (#157, 2026-08-10): the launch record +// only ever said "exe reached WinMain", so a night that ended with the player +// closing the menu was indistinguishable from a silent death -- and the bat's +// sign-off taught players to report normal quits as crashes. The deliberate +// exit paths stamp the record themselves now, so the file answers "crash or +// quit?" on its own. Name captured at breadcrumb time (cwd is content\ by +// then -- the same file the bats bracket). +// +static char gBTLastrunName[MAX_PATH] = ""; + +void + BTLastrunNote(const char *note) +{ + if (gBTLastrunName[0] == 0) + { + return; + } + SYSTEMTIME lt; + GetLocalTime(<); + std::ofstream f(gBTLastrunName, std::ios::out | std::ios::app); + if (f.is_open()) + { + char stamp[64]; + wsprintfA(stamp, "[%04d-%02d-%02d %02d:%02d:%02d] ", + lt.wYear, lt.wMonth, lt.wDay, lt.wHour, lt.wMinute, lt.wSecond); + f << stamp << note << "\n"; + } +} + //===========================================================================// // environ.ini -- the player's settings file (cwd = content\). One KEY=VALUE // per line; the real environment always WINS, so a launcher .bat or a shell @@ -833,6 +863,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine GetComputerNameA(machine, &machine_len); char lastrun_name[MAX_PATH]; wsprintfA(lastrun_name, "lastrun_%s.txt", logStem); + lstrcpynA(gBTLastrunName, lastrun_name, MAX_PATH); std::ofstream breadcrumb(lastrun_name, std::ios::out | std::ios::app); if (breadcrumb.is_open()) { @@ -1209,6 +1240,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine BTFeLaunchSpec fe_spec; if (BTFrontEnd_Run(&fe_spec) != 0 || fe_spec.mode == BTFeLaunchNone) { + BTLastrunNote("clean exit: player quit from the menu"); return 0; // quit from the menu } char fe_arguments[192]; diff --git a/game/glass/btl4console.cpp b/game/glass/btl4console.cpp index d01d634..0047cc0 100644 --- a/game/glass/btl4console.cpp +++ b/game/glass/btl4console.cpp @@ -174,6 +174,8 @@ void { MarshalLog("window closed by the user -- exiting for real " "(no relaunch)"); + extern void BTLastrunNote(const char *); + BTLastrunNote("clean exit: player closed the game window"); ExitProcess(0); } } @@ -257,6 +259,16 @@ void if (CreateProcessW(exe_path, command_line, NULL, NULL, FALSE, 0, NULL, NULL, &startup, &process)) { + // Hand the child our foreground right BEFORE we die (#157): Windows + // refuses SetForegroundWindow to a process spawned by an exiting + // background parent, so the round-end menu could open BEHIND the + // desktop clutter -- which is how a normal between-rounds relaunch + // read as "the game crashed" from the cockpit seat. + if (!AllowSetForegroundWindow(process.dwProcessId)) + { + MarshalLog("foreground handoff denied -- the next window may " + "open behind"); + } CloseHandle(process.hThread); CloseHandle(process.hProcess); } diff --git a/game/glass/btl4fe.cpp b/game/glass/btl4fe.cpp index 74cc862..2075fb5 100644 --- a/game/glass/btl4fe.cpp +++ b/game/glass/btl4fe.cpp @@ -412,7 +412,7 @@ static const CatalogEntry kVehicles[] = { "avatar", "Avatar" }, { "ava1", "Satyr" }, { "sunder", "Sunder" }, - { "snd1", "Sunder V1" }, + { "snd1", "Denkou" }, // #69: the 4.x-era name (two era witnesses) { "vulture", "Vulture" }, { "vul1", "Mad Dog" }, { "lok2", "Mischief" }, diff --git a/players/play_solo.bat b/players/play_solo.bat index 6e2eda9..d581ade 100644 --- a/players/play_solo.bat +++ b/players/play_solo.bat @@ -93,8 +93,9 @@ if defined BT_STILL_RUNNING ( goto btwait ) echo. -echo The game has exited. If it closed unexpectedly, send the operator -echo BOTH of these from the content folder: +echo The game has exited. (Quitting from the menu lands here -- normal.) +echo If it CRASHED or would not start, send the operator BOTH of these +echo from the content folder: echo content\lastrun_solo.txt (tiny -- send it EVEN IF there is echo no solo_*.log at all: that combination echo is how we spot a blocked launch) diff --git a/players/play_steam.bat b/players/play_steam.bat index 6dc2f65..4c7989a 100644 --- a/players/play_steam.bat +++ b/players/play_steam.bat @@ -97,7 +97,10 @@ if defined BT_STILL_RUNNING ( goto btwait ) echo. -echo The game has exited. If it closed unexpectedly, send the operator BOTH +echo The game has exited. +echo (Normal exits land here too: round ends return everyone to the menu, +echo and closing the menu window quits -- neither is a crash.) +echo If it CRASHED or would not start, send the operator BOTH: echo content\lastrun_steam.txt (tiny -- send it EVEN IF there is no echo steam_*.log at all: that is how we spot echo a launch blocked before it ran)