Files
BT411/docs/STEAM_TEST.md
T
CydandClaude Fable 5 75f136e9ff KB: step-4 closeout -- Steam wire documented, live-test procedure, router
docs/GLASS_COCKPIT.md gains the step-4 ledger (seam/transport/lobby + THE
FAKEIP LESSON); NEW context/steam-networking.md topic (+ router row) and
docs/STEAM_TEST.md (the 2-machine live procedure = the step-4 exit criterion
on user hardware).  context/glass-cockpit.md: steps 3+4 status.  Final purity
re-check: pod build clean, forced-walk mission runs, ZERO glass/steam tags in
the pod log.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-18 00:05:51 -05:00

2.4 KiB

STEAM_TEST — the live 2-machine internet-MP procedure (step 4 exit criterion)

Everything below the wire is verified single-machine (see docs/GLASS_COCKPIT.md §4); the ONE untested leg is an actual cross-machine ConnectP2P session. Needs: two machines, each with its own logged-in Steam account, both accounts able to see each other's lobbies (same region or Steam friends; AppID 480 = Spacewar, no ownership needed).

Build + stage (each machine)

  1. cmake -S . -B build-steam -G "Visual Studio 16 2019" -A Win32 -DCMAKE_GENERATOR_INSTANCE=... -DBT_GLASS=ON -DBT_STEAM=ON
  2. cmake --build build-steam --config Debug
  3. Steam client running + logged in. content\steam_appid.txt (480) is auto-written on first run.

Procedure

  1. Machine A (host): run build-steam\Debug\btl4.exe zero-arg from content\ → the Mission Console menu. Set MAP/LENGTH (60 s recommended for the first attempt), MODE = HOST STEAM LOBBY, ENTER → the lobby room appears.
  2. Machine B (member): same exe zero-arg → MODE = JOIN STEAM LOBBY, ENTER → the room should list both pilots within ~10 s. (No lobby found → check both accounts' regions, marshal.log [lobby] lines both sides.)
  3. A presses ENTER (GO). Both machines relaunch into mission processes; A's marshal feeds itself over TCP loopback and B over the Steam wire.

What to check (in order, both machines' content\btl4.log + marshal.log)

  1. [steamnet] up -- identity <id64>, 2 roster token(s) incl. self — both sides.
  2. A marshal.log: egg -> 169.254.77.2:1501 (B's token) — the Steam-wire console feed.
  3. B btl4.log: [steamnet] incoming connection queued on channel 0 (the console feed arriving), then the egg ladder.
  4. Both: RunMission #1/#2, then [tick] lines reaching the full subsystem count — and [steamnet] connection N up on channel 1 (the game mesh crossing the internet).
  5. In-game: see the peer mech, drive, shoot it (cross-pod damage), mission stop at clock, host returns to the menu.

Known limitations / notes

  • The lobby does NOT survive the per-mission relaunch — re-host/re-join per mission.
  • The token map is minted at GO; a member joining after GO is not in the mission.
  • Firewall: no inbound rules needed (SDR relays); Steam client must be allowed out.
  • Fail cleanly = both sides stay on Winsock and log why (SteamAPI_Init failed / token misses); nothing in the pod path is touched either way.