RetroArch Netplay: How to Play Retro Games Online with Friends
You want to play classic SNES, NES, GBA, Genesis, or PS1 games online with a friend using RetroArch, but Netplay is not obvious to set up. RetroArch includes a built-in Netplay system that uses a relay server — no port forwarding required in most cases — so both players can host and join sessions with minimal setup.
This guide covers the complete Netplay flow: choosing the right core, hosting or joining a session, fixing desync, and managing lag. Work through the steps in order.
Solutions
Solution 1
The fastest way to start: one player hosts, the other joins using RetroArch's relay infrastructure. No port forwarding is needed if you use the built-in relay.
Prerequisites (both players must do this):
- Both players must use the same version of RetroArch (download from retroarch.com).
- Both must use the same core (e.g., Snes9x, Mesen, Genesis Plus GX). The core version must also match — update cores together via Main Menu → Online Updater → Update Installed Cores.
- Both must have the same ROM file — exact byte-for-byte match (same dump, same region). This is the single most common cause of Netplay desync. Use a No-Intro or Redump verified dump.
Hosting a session:
- Load your game in RetroArch (the ROM you want to play).
- Open Main Menu → Netplay → Start Netplay Host.
- RetroArch will display your Netplay room — it appears in the public room list at
lobby.libretro.comby default. You can set a room name and a password in Settings → Netplay. - Tell your friend your RetroArch username or room name so they can find you in the lobby.
- In Settings → Netplay → Mitigation Method choose PreEmptive Frames for local-area play, or Deterministic for internet play (deterministic is more accurate but adds 1-2 frames of latency).
Joining a session:
- Have the same ROM loaded (or close RetroArch and let the host send the ROM if the host has Share ROMs enabled).
- Go to Main Menu → Netplay → Refresh Netplay Room List and find the host's room.
- Select the room and choose Connect. RetroArch connects via the relay server — both players will see the session sync up.
- If the room is not showing in the public list: the host can go to Settings → Netplay → Use Relay Server ON, then in Netplay Host Settings copy the Direct IP shown and send it to the joining player, who uses Main Menu → Netplay → Connect to Netplay Host and enters the IP.
Note on player roles: in RetroArch Netplay, only Player 1 controls are synchronized for input by default. Player 2 (the joining player) can be set up as the second controller if the game has local co-op (e.g., SNES games). Go to Settings → Netplay → Player on the joining player's client and set it to Player 2.
Solution 2
Not all RetroArch cores support Netplay well. Some cores have non-deterministic timing or per-frame randomness that causes desync. Here are the best-tested core choices by system.
| System | Best Netplay Core | Notes |
|---|---|---|
| SNES | Snes9x (Latest) | Most consistent Netplay; avoid bsnes-hd for Netplay (higher CPU, sometimes non-deterministic) |
| NES | Mesen | High accuracy, good Netplay; FCEUmm also works |
| GBA | mGBA | Good but GBA Netplay is mainly single-player sync; multiplayer games = link cable (use mGBA standalone for that) |
| Genesis / Mega Drive | Genesis Plus GX | Excellent Netplay support; avoid PicoDrive for Netplay |
| PS1 | Beetle PSX HW | Works but PS1 Netplay is CPU-heavy; Mednafen/Beetle is the most accurate. Avoid SwanStation for Netplay. |
| Game Boy / GBC | Gambatte | Solid Netplay; mGBA also supported |
| NeoGeo | FinalBurn Neo | MAME is not Netplay-compatible; FBNeo is the recommended arcade core |
Cores to avoid for Netplay:
- MAME (any version) — does not support RetroArch Netplay
- Dolphin (libretro) — too CPU-heavy and non-deterministic for Netplay; use Dolphin standalone Netplay instead
- RPCS3 / Cemu / Eden cores — modern console emulation cores are not designed for Netplay
Solution 3
Desync (one player's game diverges from the other's) and input lag are the two most common Netplay problems. Both have specific causes and fixes.
Fixing desync:
- Verify ROM match: the most common desync cause is different ROM files. Both players should check the file size and ideally the MD5/SHA1 hash of their ROM. On Windows: right-click → Properties → Detail tab (or use 7-Zip → Info to see CRC). Hashes must be identical. Re-download from a verified No-Intro source if unsure.
- Match core versions: go to Main Menu → Online Updater → Update Installed Cores on both sides. Then close and relaunch the game and reconnect.
- Disable cheats and patches: any Game Genie / Action Replay cheat or IPS patch applied only on one side will immediately desync. Both sides must have the exact same patches active (or no patches).
- Deterministic vs PreEmptive mode: in Settings → Netplay → Mitigation Method switch to Deterministic. This mode sacrifices a few frames of latency for byte-level sync between players and is more reliable for distant connections.
Fixing lag:
- Lower Settings → Netplay → Input Latency Frames (default is often 0–2). Going too low on a high-latency connection causes stuttering; going too high makes controls feel sluggish. For connections 50–150ms apart, try 3–5 frames as a starting point.
- Enable Frame Delay under Settings → Latency → Frame Time Smoothing to reduce frame-time variance.
- Use the relay server if direct connection is unreliable. Go to Settings → Netplay → Use Relay Server. The relay adds a small overhead but stabilizes the connection across most home networks (NAT, double-NAT, etc.).
- If both players are on the same LAN (local network), turn off the relay server and use direct IP for the lowest possible latency.
Solution 4
RetroArch Netplay supports spectators (viewers who watch but don't control) and a basic built-in chat. Here is how to use both.
Spectating a session:
- The host must enable spectator slots in Settings → Netplay → Spectator Mode → set Allow Spectating to ON.
- A spectator joins the same way as a player (Netplay Room List → Connect), but in their own Settings → Netplay → Player they select Spectator before connecting.
- Spectators see the game in real time and cannot provide controller input. They can still use the chat.
In-session chat:
- During a Netplay session, open Main Menu → Netplay → Show/Hide Chat (or press the RetroArch quick menu shortcut and navigate there).
- Type your message and press Enter. All connected players (and spectators) see the message overlaid on the game screen.
- Chat is best for quick coordination ("ready?", "pause?") — for full voice chat, use Discord or any external voice app alongside RetroArch.
Tip — public room etiquette: If you want a private session, always set a password in Settings → Netplay → Host Room Password before starting. Unpassworded rooms appear in the public lobby and anyone can join.
Comments (0)
Sign in to_leave_comment