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:
Cyd
2026-07-18 00:03:17 -05:00
co-authored by Claude Fable 5
parent 48ede2f7d7
commit f703bb1d56
11 changed files with 875 additions and 124 deletions
+34 -34
View File
@@ -5,7 +5,7 @@ scenario=freeforall
time=day
weather=clear
temperature=27
length=600
length=60
[ordinals]
bitmap=Ordinal::BitMap::1
bitmap=Ordinal::BitMap::2
@@ -156,12 +156,12 @@ x=128
y=32
width=8
[pilots]
pilot=200.0.0.96
[200.0.0.96]
pilot=169.254.77.1:1502
[169.254.77.1:1502]
hostType=0
advancedDamage=1
loadzones=1
name=Aeolus
name=Dev
bitmapindex=1
experience=expert
badge=VGL
@@ -172,34 +172,34 @@ vehicle=bhk1
vehicleValue=1000
color=White
[largebitmap]
bitmap=BitMap::Large::Aeolus
[BitMap::Large::Aeolus]
bitmap=BitMap::Large::Dev
[BitMap::Large::Dev]
bitmap=00000000000000000000000000000000
bitmap=00000000000000000000000000000000
bitmap=00000000000000000000000000000000
bitmap=00000000000000000000000000000000
bitmap=00000000000000000000000000000000
bitmap=00000000000000000000000000000000
bitmap=000003FE0000000001E0000000000000
bitmap=000007FF0000000001E0000000000000
bitmap=00000F8F8000000001E0000000000000
bitmap=00000F078000000001E0000000000000
bitmap=00000F0781FF00FF81E0F0781FC00000
bitmap=00000F0783FF81FFC1E0F0783FE00000
bitmap=00000F0787C7C3E3E1E0F0783C700000
bitmap=00000F078783C3C1E1E0F07878300000
bitmap=00000F078783C3C1E1E0F07878000000
bitmap=00000FFF8783C3C1E1E0F0787C000000
bitmap=00000FFF8783C3C1E1E0F0787F000000
bitmap=00000F0787FFC3C1E1E0F0783FC00000
bitmap=00000F0787FFC3C1E1E0F0781FE00000
bitmap=00000F07878003C1E1E0F07807F00000
bitmap=00000F07878003C1E1E0F07801F00000
bitmap=00000F07878003C1E1E0F07800F00000
bitmap=00000F078780C3C1E1E0F07860F00000
bitmap=00000F0787C1C3E3E1E078F871E00000
bitmap=00000F0783FF81FFC1E07FF83FE00000
bitmap=00000F0781FF00FF81E03F781FC00000
bitmap=00000000000000000000000000000000
bitmap=00000000000FFC000000000000000000
bitmap=00000000000FFE000000000000000000
bitmap=00000000000FFF000000000000000000
bitmap=00000000000E07800000000000000000
bitmap=00000000000E0381F070700000000000
bitmap=00000000000E01C3F870700000000000
bitmap=00000000000E01C7FC70700000000000
bitmap=00000000000E01CF1C38E00000000000
bitmap=00000000000E01CE0E38E00000000000
bitmap=00000000000E01CFFE38E00000000000
bitmap=00000000000E01CFFE1DC00000000000
bitmap=00000000000E01CE001DC00000000000
bitmap=00000000000E038E000D800000000000
bitmap=00000000000E07870E0F800000000000
bitmap=00000000000FFF07FC0F800000000000
bitmap=00000000000FFE03FC07000000000000
bitmap=00000000000FFC01F007000000000000
bitmap=00000000000000000000000000000000
bitmap=00000000000000000000000000000000
bitmap=00000000000000000000000000000000
bitmap=00000000000000000000000000000000
bitmap=00000000000000000000000000000000
@@ -210,15 +210,15 @@ x=128
y=32
width=8
[smallbitmap]
bitmap=BitMap::Small::Aeolus
[BitMap::Small::Aeolus]
bitmap=BitMap::Small::Dev
[BitMap::Small::Dev]
bitmap=00000000000000000000000000000000
bitmap=0000000000000000000007C000000000
bitmap=000006600000000000000633D8C00000
bitmap=0000063678C00000000006366D800000
bitmap=00000637ED800000000006360D800000
bitmap=0000066667000000000007C3C7000000
bitmap=00000000000000000000000000000000
bitmap=0000000000000000003E00000C000000
bitmap=006300000C00000000631F0F8CC63C00
bitmap=00633198CCC66200007F3198CCC66000
bitmap=00633F98CCC6780000633018CCC61E00
bitmap=00633018CCC6060000633098CCC64600
bitmap=00631F0F8C7E3C000000000000000000
bitmap=00000000000000000000000000000000
x=64
y=16