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>
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user