Skip to content
daniel@cosenza:~/blog
RetrogamingHow-To July 9, 2026 3 min read

How to Set Up Netplay for Online Retro Multiplayer

A complete walkthrough hosting and joining a RetroArch netplay session, including the core-matching requirement that causes most first-time connection failures.

RetroArch’s netplay is built on the same rollback mechanism covered in rollback netcode, letting two (or more, for supported cores) players connect over the internet or a local network and play a session together. This walks through hosting a session and connecting to one.

Step 1: confirm both players are using matching cores and content

This is the single most common reason netplay connections fail before ever reaching an actual network problem: netplay requires both sides to run the same core (ideally the same version) and, in most cases, the same game file. Confirm this explicitly before troubleshooting anything else:

Information → Core Information → [note the exact core name/version]
Information → Database → [or check file properties for the exact
                            ROM/ISO being loaded]

A mismatched core version can connect and then desync partway through a session — annoying enough that it’s worth confirming both sides matches upfront rather than discovering it mid-game.

Step 2: host a session

Load your content first, then:
Main Menu → Netplay → Host → Start Hosting

Hosting after content is already loaded (rather than before) ensures the exact game state at session start matches what netplay expects to synchronize from.

Step 3: configure port forwarding if hosting over the internet (not a local network)

Settings → Network → check "Netplay TCP Port" (default 55435)
Router configuration: forward that TCP port to the hosting machine's
                       local IP address

This step is unnecessary for players on the same local network, but required for internet play unless using a relay/matchmaking option that avoids direct connections (see Step 5).

Step 4: connect as the joining player

Main Menu → Netplay → Connect to Netplay Host → [enter the host's
             IP address and port]

The joining player also needs the exact same content file and core loaded, matching what the host confirmed in Step 1.

Step 5: use a relay server if port forwarding isn’t practical

Settings → Network → Use Relay Server: ON

A relay server routes traffic between both players without either side needing to open an inbound port — trading a small amount of added latency (traffic now takes an extra hop through the relay) for avoiding router configuration entirely. This is a reasonable default for players not comfortable configuring port forwarding.

Step 6: adjust input delay if the connection is inconsistent

Settings → Network → Netplay Input Latency Frames

RetroArch’s netplay uses the same rollback approach described in rollback netcode to hide latency automatically, but on a poor connection with frequent large corrections, adding a small amount of fixed input delay here can trade a bit of the rollback effect for a steadier, more predictable feel.

Step 7: verify synchronization before playing seriously

Watch the netplay status indicator for a few seconds after connecting, confirming both sides show as synchronized rather than stalled — a session that fails to fully synchronize will show clear, immediate signs (frozen input, a persistent “connecting” state) rather than working normally and failing later.

Why the core/content match matters more than the network setup

Port forwarding and relay servers get most of the troubleshooting attention because they’re the unfamiliar part, but a mismatched core version or a different ROM revision between host and joiner causes far more real-world netplay failures — and produces confusing symptoms (a connection that succeeds but immediately desyncs) that look like a network problem even though the network itself is working exactly as configured.