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 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
46ff8dd262
commit
bf04e1c079
@@ -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` |
|
||||
|
||||
@@ -1384,7 +1384,7 @@ cmHeat(K,ModeSecondaryHeat,58,heatpal.pcc,heatpal2.pcc,Myomers);
|
||||
}
|
||||
|
||||
#=======================================================================
|
||||
# Sunder V1
|
||||
# Denkou (was: Sunder V1)
|
||||
#=======================================================================
|
||||
Snd1Init
|
||||
{
|
||||
|
||||
@@ -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_<stem>.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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
=============================================================================
|
||||
@@ -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);
|
||||
|
||||
@@ -234,6 +234,36 @@ static LONG WINAPI
|
||||
return EXCEPTION_EXECUTE_HANDLER; // die (after the evidence is out)
|
||||
}
|
||||
|
||||
//
|
||||
// lastrun_<stem>.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];
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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" },
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user