Net: NetTransport seam + Steam transport (Workstream C.1)
The wire moves behind NetTransport (L4NETTRANSPORT): L4NET.CPP taken from RP412 post-seam -- all ~24 Winsock call sites route through NetTransport_Get() -- with BT's 3 BT_NET_TRACE blocks re-sited onto their code anchors (they read message/packet metadata, not sockets, so no collision). Default WinsockNetTransport = the arcade/LAN TCP wire. SteamNetTransport (L4STEAMTRANSPORT, ISteamNetworkingSockets + FakeIP/ SDR) compiles under option(BT412_STEAM) (default OFF); Steamworks SDK 1.64 vendored at extern/steamworks_sdk_164. steam_appid.txt gitignored (Spacewar 480 by hand until a real AppID). Ported gConsoleLossEndsMission from RP412's APPMGR (default False = arcade re-listen). Verified: default TCP build passes full loopback MP through the seam (console -> egg msgID-3 chunks -> mesh complete -> both instances tick, net-tx/net-rx traces fire through NetTransport_Get()); BT412_STEAM=ON compiles + links against the SDK + boots solo. Live Steam session deferred to Phase 6. (Phase 4 of docs/BT412-ROADMAP.md) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -87,7 +87,26 @@ pattern). Forked at BT411 `4e72f0c` (2026-07-14).
|
||||
Prerequisite order when resumed: finish BT's MFD dev-composite (GAUGE_COMPOSITE.md Steps
|
||||
2–3) → obtain BT cockpit geometry → then hand-merge `MFDSplitView`. Until then the game
|
||||
ships single-window with the dev-gauge dock (`BT_DEV_GAUGES`) as its cockpit composite.
|
||||
- Phases 4–7: Phase 4 (NetTransport seam) next — unblocked and independent of 3b.
|
||||
- **Phase 4 (NetTransport seam + Steam transport) — DONE 2026-07-14.** `L4NET.CPP`
|
||||
taken from RP412 post-seam (all ~24 Winsock call sites now route through
|
||||
`NetTransport_Get()`); BT's 3 `BT_NET_TRACE` blocks re-sited onto their code anchors
|
||||
(the drop path, the point-to-point send before `NetTransport_Get()->Send`, the
|
||||
pad-buffer receive) — they read message/packet metadata, not sockets, so no
|
||||
collision. `L4NETTRANSPORT.*` (seam + `WinsockNetTransport` default) and
|
||||
`L4STEAMTRANSPORT.*` (gate renamed `BT412_STEAM`, self-test env `BT412STEAMSELFTEST`)
|
||||
copied. `extern/steamworks_sdk_164/` vendored (headers + win32 redistributable_bin).
|
||||
One engine global ported from RP412's APPMGR: `gConsoleLossEndsMission` (default
|
||||
False = arcade re-listen; the marshaled/lobby path sets it in Phase 5/6).
|
||||
CMake: seam always compiled; `option(BT412_STEAM)` (default OFF) gates the transport
|
||||
define + `sdk/public` include + `steam_api.lib` + post-build `steam_api.dll` copy.
|
||||
`steam_appid.txt` gitignored (Spacewar 480 by hand until a real AppID).
|
||||
Verified: (1) default TCP build — loopback MP through the seam is byte-for-byte the
|
||||
old behavior (console connects, egg msgID-3 chunks delivered, "All connections
|
||||
completed!", both instances tick, `net-tx`/`net-rx` traces fire through
|
||||
`NetTransport_Get()`); (2) `BT412_STEAM=ON` config + build (compile-check of the
|
||||
Steam transport TU against the vendored SDK; a live Steam session needs the Phase 6
|
||||
lobby + 3 machines).
|
||||
- Phases 5–7: Phase 5 (front end + LocalConsole marshal) next.
|
||||
|
||||
## The seams (what plugs in where) [T0 unless noted]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user