mirror of
https://github.com/RetroPortingToolKit/psxrecomp
synced 2026-10-26 02:11:36 -04:00
34 lines
1.2 KiB
Markdown
34 lines
1.2 KiB
Markdown
# Netplay topology (locked decisions)
|
||
|
||
| 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) |
|
||
|
||
## Paths
|
||
|
||
```text
|
||
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)
|
||
```
|
||
|
||
## Per-title players
|
||
|
||
- Framework / UI / net library ceiling: **8**
|
||
- `game.toml` `players` / `MAX_PLAYERS` may be lower (MotK=2, Bomberman=5)
|
||
- `PSX_MAX_PLAYERS == 8` enables dual SCPH-1070 (ports 1+2 → pads 0–7)
|
||
- Single multitap (5–7) keeps `multitap_port` (Bomberman Port 2)
|
||
|
||
## Follow-ups (not in this pass)
|
||
|
||
- N-way `hash_confirm` / FRAME_COMMIT agreement for rollback at N>2
|
||
- Validate 5P Bomberman over SFU + rollback host facade parity with MotK
|