| Decision | Choice |
|---|---|
| Online transport | Lobby UDP SFU star (recomp-net-server input relay) |
| Mesh | No — peers never dial each other online |
| Sim authority | Pad slot 0 = session host (START, state xfer) |
| Seat moves | Guests rearrange among seats 1..N−1; host stays at 0 |
| Seat ceiling | 8 (RNET_MAX_SLOTS, lobby MAX_SLOTS, PSX dual multitap) |
Online (WebSocket lobby)
every peer ──UDP──► lobby SFU ──fan-out──► other seats
WS still carries lobby JSON + ICE signaling (ICE unused for match data)
LAN / Direct IP (no WS start)
2P: P2P UDP
3+: host-as-relay LAN hub (local star; game host fans out)
- Framework / UI / net library ceiling: 8
game.tomlplayers/MAX_PLAYERSmay be lower (MotK=2, Bomberman=5)PSX_MAX_PLAYERS == 8enables dual SCPH-1070 (ports 1+2 → pads 0–7)- Single multitap (5–7) keeps
multitap_port(Bomberman Port 2)
- N-way
hash_confirm/ FRAME_COMMIT agreement for rollback at N>2 - Validate 5P Bomberman over SFU + rollback host facade parity with MotK