Terminology: BattleTech missions, not races

"Race" is Red Planet's term (it's a racing game) and rode in with the
RPL4LOBBY port. In BattleTech the gameplay unit is a MISSION. Sweep it out
of the front-end / lobby / marshal code + the roadmap and steamification
digest: rename the public API BTLobby_Push/PullRaceResults ->
Push/PullMissionResults, the internal PrimeHostedRace -> PrimeHostedMission,
the deferred marshal InstallNetworkRace -> InstallNetworkMission, and the
user-facing strings ("STEAM MISSION LOBBY", "L A U N C H  M I S S I O N",
"HOST/JOIN STEAM MISSION"). Comments follow. No behavior change; both gates
(default + BT412_STEAM) still build + link clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-16 23:29:38 -05:00
co-authored by Claude Opus 4.8
parent a2949166ea
commit 101562978d
8 changed files with 49 additions and 49 deletions
+6 -6
View File
@@ -139,7 +139,7 @@ identical-to-baseline → take RP412's file verbatim, diverged → hand-apply th
console on its own thread over NetTransport — egg chunks + ACK, RunMission ×2
(mirror btconsole.py), stays connected (fixes the console-loss listener bug for
solo), owns the mission clock, StopMission at `length=` expiry, launcher-role loop,
`InstallNetworkRace` marshal for remote pods.
`InstallNetworkMission` marshal for remote pods.
- **5c Score intake — genuinely new for BT** (no mission-end flow exists): a
`gConsoleScoreSink` equivalent through `BTPlayer`; v1 results screen = kills/deaths
per pilot from the Comm-MFD `pilotList` tally at stop.
@@ -160,7 +160,7 @@ identical-to-baseline → take RP412's file verbatim, diverged → hand-apply th
> `Application::StopMissionMessage` at the chosen length; it snapshots per-pilot
> kills/deaths at the stop (BT's own score model — msgID 0x18 stays a stub). The
> single-binary loop is a RELAUNCH per mission (`CreateProcessW`; avoids the stale
> `gBT*`-global re-init crash), showing a GDI "MISSION COMPLETE" scoreboard between races.
> `gBT*`-global re-init crash), showing a GDI "MISSION COMPLETE" scoreboard between missions.
> WinMain (`game/btl4main.cpp`) wires front-end-mode detection, the marshal arm, the
> results screen + relaunch, and the launch-mode branch (solo/host/member). Details in
> `context/steamification.md`.
@@ -170,7 +170,7 @@ identical-to-baseline → take RP412's file verbatim, diverged → hand-apply th
- **`game/reconstructed/btl4lobby.cpp`** (skeleton: `RPL4LOBBY.cpp` — mechanics
generic): lobby owner = console; member data = FakeIP + fake console/game ports +
persona + loadout (**mech**/color/badge); nonced launch roster → `RegisterPeer` all →
owner hosts via egg+marshal, members join as network pods; Push/PullRaceResults
owner hosts via egg+marshal, members join as network pods; Push/PullMissionResults
distribute the score sheet. FE gains HOST/JOIN screens.
- Author `docs/STEAM-3-MACHINE-TEST.md` for BT (adapt RP412's; keep its gotchas:
disable Steam Input on 480, one Steam account per machine, abort key).
@@ -183,14 +183,14 @@ identical-to-baseline → take RP412's file verbatim, diverged → hand-apply th
> `BT412_STEAM`, full ISteamMatchmaking room under it). Built: the room screen (green-on-black,
> like the menu), member data exchange (FakeIP + fake console/game ports + persona +
> mech/color/badge), the nonced "go" launch roster → `SteamNetTransport_RegisterPeer` all peers,
> and Push/PullRaceResults over lobby data. The menu shows HOST/JOIN when `BTLobby_Available()`
> and Push/PullMissionResults over lobby data. The menu shows HOST/JOIN when `BTLobby_Available()`
> (Steam transport up); a launch routes through `BTFrontEnd_LastLaunchMode()`: **host** builds the
> egg with every member as a `[pilots]` entry + owns the marshal clock, **member** enters as a
> network pod on `:1501` (`SetNetworkCommonFlatAddress` + `gConsoleLossEndsMission`). WinMain
> installs the Steam transport on `BT412STEAM` env. **Remaining / deferred:** the host→member
> **wire egg-feed marshal** (`InstallNetworkRace` — the owner streaming eggs to remote pods) is
> **wire egg-feed marshal** (`InstallNetworkMission` — the owner streaming eggs to remote pods) is
> NOT built; a member currently waits for a console connection that only that marshal provides, so
> a live host+member race needs it. The lobby OBJECT does not survive the per-mission relaunch
> a live host+member mission needs it. The lobby OBJECT does not survive the per-mission relaunch
> (documented single-binary limitation — everyone lands on a fresh menu, not back in the room).
> `docs/STEAM-3-MACHINE-TEST.md` for BT is not yet authored. Details in `context/steamification.md`.