Steam: the lobby + IDENTITY-TOKEN roster -- internet MP code-complete (step 4c)
NEW gated (BT_STEAM) game/glass/btl4lobby: an ISteamMatchmaking room replacing the arcade Site-Management screen -- host creates (lobby data btl4=1), members join by filter, pilots publish name/mech/color, the host ENTER mints the roster and signals GO. THE FAKEIP LESSON (live-verified, prior-art assumption DISPROVEN): a fresh process gets a DIFFERENT FakeIP, so menu-time fake addresses go stale by mission time -- the first cycle timed out connecting to its own stale address. Redesign: roster addresses are opaque ipv4-shaped TOKENS (169.254.77.N with ports 1501/1502) minted by the host at GO, mapped to Steam IDENTITIES; connections ride ConnectP2P(identity, channel) with console=0/game=1 virtual ports; the map reaches mission processes via env (BT_FE_MYFAKE + BT_FE_STEAMMAP); the GetMyAddress seam feeds the pod its own token for roster self-match; CheckSocket reports peers by token. L4STEAMNET reworked (no FakeIP allocation at all); the marshal gained the Steam-wire branch. Verified single-machine (ON/ON, live Steam): menu -> HOST STEAM LOBBY -> room -> GO -> token map minted -> egg roster carries the token -> mission process up with 1 roster token incl. self -> pod self-matches -> stock console ladder -> mission RUNS (46 ticks). Remaining: the live 2-account cross-machine session (docs/STEAM_TEST.md). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -59,8 +59,12 @@ SOCKET
|
||||
BTSteamNet_Connect(unsigned long internet_address_be, int remote_port);
|
||||
|
||||
//
|
||||
// The lobby surface: our own fake address, dotted, plus its two ports.
|
||||
// The lobby surface: my identity; my roster token (raw, for the
|
||||
// GetMyAddress self-match seam). Roster tokens + the token->identity map
|
||||
// arrive in the MISSION process via env (BT_FE_MYFAKE / BT_FE_STEAMMAP --
|
||||
// see the token-table note in the .cpp).
|
||||
//
|
||||
unsigned long long
|
||||
BTSteamNet_MySteamID();
|
||||
int
|
||||
BTSteamNet_GetFakeAddress(char *dotted_out, int capacity,
|
||||
int *console_port, int *game_port);
|
||||
BTSteamNet_GetFakeAddressRaw(unsigned long *internet_address_be);
|
||||
|
||||
Reference in New Issue
Block a user