Files
RP412/docs/STEAM-3-MACHINE-TEST.md
T
2026-07-12 21:27:12 -05:00

2.6 KiB

Steam multiplayer — three-machine test procedure

The full end-to-end: three machines, three Steam accounts, one lobby, one marshaled race over Steam Datagram Relay. Written 2026-07-12 for the first live test.

Per machine (all three)

  1. Steam client installed, logged in (different account per machine), and RUNNING.
  2. Copy the dist\ folder onto the machine.
  3. In the dist folder, create steam_appid.txt containing exactly: 480 (Spacewar, Valve's public dev AppID — replaced by the real AppID once the store page exists.)
  4. Add to environ.ini: RP412STEAM=1
  5. Start with start-windowed.bat as usual.

Sanity check per machine: rpl4.log should show SteamNetTransport: up as 169.254.x.y (fake ports N console, M game). If it says "staying on TCP", Steam isn't running / not logged in / the appid file is missing.

The test

  1. Machine A (host): pick a track, vehicle, color, pilot name on the setup menu, then click HOST STEAM RACE. The lobby room appears with A listed as [HOST].
  2. Machines B and C: click JOIN STEAM RACE on the setup menu. (It joins the first open RP412 lobby it finds — pick loadouts on the menu BEFORE joining; the lobby publishes them.)
  3. When all three names show bright in A's room (bright = FakeIP published), A clicks L A U N C H R A C E.
  4. All three pods leave the room and boot the mission. Expect in logs:
    • every pod: SteamNetTransport: peer registered x3
    • members: SteamNetTransport: listening on engine port 1501/1502
    • A: LocalConsole: connecting to pod 169.254... then egg sent, EGG ACK (mesh complete) per member
    • everyone: All connections completed! then the race
  5. The race runs for the length A picked; A's console stops everyone; A gets the results screen with all three personas and scores.
  6. Everyone lands back in the lobby room. A can launch again — different track, same lobby, no restarts.

Notes and knowns

  • All pods use engine ports 1501/1502 by convention under Steam; the transport maps them to the Steam-assigned fake ports per peer.
  • FakeIPs are allocated per session — they are exchanged live through lobby member data, never configured by hand.
  • Same-LAN machines may get a direct route from SDR; different networks relay. Both are fine.
  • Two instances under ONE Steam account cannot mesh (one identity per account) — hence three machines.
  • If a member joins after A already launched once, it will answer the NEXT launch only (launch signals are nonced).

What to collect if something breaks

rpl4.log from each machine (each dist folder), plus which step of the sequence above diverged.