Skip to content

Add online play through a relay server (VNet) - #2777

Open
TiDeCircle wants to merge 1 commit into
melonDS-emu:masterfrom
TiDeCircle:relay
Open

TiDeCircle wants to merge 1 commit into
melonDS-emu:masterfrom
TiDeCircle:relay

Conversation

@TiDeCircle

Copy link
Copy Markdown

LAN multiplayer normally needs every player on the same network. VNet tunnels the LAN sockets through a UDP relay server: each player connects out to the relay, joins a room by name and gets a virtual IP, so the regular LAN code (including session discovery) works over the internet without port forwarding.

  • Bundle ENet and route its socket layer through VNet
  • Use the ENet socket API for LAN discovery so it goes through VNet too
  • Wait at least one round trip for MP replies when playing over the relay
  • Add relay settings (server, room) to the Host/Join LAN dialogs
  • Build the relay branch on Windows CI

LAN multiplayer normally needs every player on the same network. VNet
tunnels the LAN sockets through a UDP relay server: each player connects
out to the relay, joins a room by name and gets a virtual IP, so the
regular LAN code (including session discovery) works over the internet
without port forwarding.

- Bundle ENet and route its socket layer through VNet
- Use the ENet socket API for LAN discovery so it goes through VNet too
- Wait at least one round trip for MP replies when playing over the relay
- Add relay settings (server, room) to the Host/Join LAN dialogs
- Build the relay branch on Windows CI

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@JesseTG

JesseTG commented Oct 11, 2026

Copy link
Copy Markdown
Contributor

This is unlikely to work because local multiplayer games on the DS are written to expect very low ping, the kind that can't be achieved over the public Internet. A relay or VPN won't make packets go faster.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants