Sign in to follow this  

HOW TO: Netplay over RetroArch

Recommended Posts

Netplay via RetroArch

This is a work in progress!!!

Netplay with RetroArch is very simple. Since RetroArch is a frontend for multiple emulator cores, setting up netplay for any core is very simple (as long as it supports it!), and is the same procedure.

For Genesis, we are using the Genesis Plus GX core for netplay. (This may change)

For SNES, we are using the Snes9x core for netplay. (This may change)

For installing RetroArch and its configuration, cores, and for netplay setup, please check out this post - RetroArch Setup Guide

The advantages to using RetroArch for netplay over Gens or ZSNES are numerous. Though ZSNES 1.42 has great netplay, we still require Hamachi for connections, since ZBattle does not exist anymore. Gens uses Kaillera for netplay, we still need Hamachi, and suffers from numerous lag, stutter, and desyncs, depending on the connection.

With RetroArch, we can use what they call a relay server, similar to the server option in Kaillera. This could possibly eliminate the need to use Hamachi, or the need to forward ports on your router, which would make netplay incredibly simple to set up and play.

Not only that, but RetroArch uses rollback netplay (some of you might not like this). This is very big in the fighting game community. The goal of rollback netplay is too keep the experience "lag-free" as possible. This makes the game play very smooth. If there is a lag spike, the game will actually "rewind", to the point where if someone scored during a MAJOR lag spike, it erases the goal (hehe). It's less noticable than you would think, except in major cases. But, it's very hard to desync (I haven't seen it happen yet), and if you do desync, you can reconnect, and continue play where you left off, or the host can even load a save state while you are connected (ZSNES did this as well). Thus, the advantage of recovering from a desync (if it occurs, haven't seen one yet) and the overall smoother play should make everyone happy.


Before continuing, please make sure Netplay options are set up, following the instructions in the following post - 



If your netplay options don't match, you will not be able to connect (especially the "Input Latency Frames" and "Input Latency Frame Range"). Beforehand, you should ask your opponent if you would like to use the relay server or direct connect. Direct connect may work without Hamachi/port forwarding, but it is not guaranteed. Currently, I recommend using the relay server.

Make sure you also have the SAME EXACT ROM!!! If not, there will be a disconnect and an error along the lines of "Cannot retrieve header".


1. The player acting as the host (Home Team on Genesis) starts the game - Go to Netplay in the Main Menu, and click "Start netplay host". Netplay will not actually start until you load the ROM. Load the ROM, either using the "Load Core...", then "Load Content..." window or the "Load Recent" menu (if you've played the game before).

If using the relay server, it will also say "Connected to NICK" and "Joined as Player 1". "NICK" is the name of the relay server. Once this is seen, notify your opponent that they can connect. If they try to connect before you see this message, it's very possible it will not connect.

At this point, just let the game sit there until your opponent connects. I usually wait at the in-game main menu.

Netplay Window.png

2. The player acting as the client (Away Team on Genesis) connects to the host - At this point, the client will load the ROM, access the Quick Menu, back out to the Main Menu, go to Netplay, and select "Refresh Room List". Even better, if you have the game in your "Load Recent..." list, you don't even have to load it, just go straight to Netplay, and select "Refresh Room List". You should see the host's Username in the list, select it, and it should go back (or load) to the game, and say "Connected as Player 2". The host should see "Connected to 'Username' " (Note, they might not always see your Username). At this point you should both be connected and see the same screen. Then you can start playing.

3. Save State in the same spot like you normally would in Gens or ZSNES - Play the game, at the end of the game, either on the 3-stars screen, or the game end menu, make a save state. This will be used to upload to the site (eventually, once we officially start using this for league games). Check this post for more information - 

The "Connect to netplay host" option in the Netplay menu is not used. This asks you to put an IP address in. You do not need it, as you can use the Room List instead.



Cannot connect, keeps saying "Connected as Player 1" for the client - If there is an issue and you did not connect, it will either give you an error, or it will just say " Connected as Player 1", and start loading the beginning of the game, which means you did not connect to the host. At this point, both players will need to go back into the Netplay menu, the host will "Stop netplay host", and the client will "Disconnect from netplay host". If using the relay server, you might have to wait 40 sec or so before trying again (so the game is removed from the netplay host list). You can check by selecting "Refresh Room List" and checking until the host's name disappears (both can see this). (See "Game Desync") I suggest the host waiting to tell the opponent to connect once he reaches the Setup Game Screen.

Game Stutters -  I noticed this occurs right when first connecting. It takes a few frames for the 2 games to sync up, so you may see some graphic glitches and menu stuttering. It tends to go away after a few seconds.

Game Desync -  If you desync, you will see a message "Netplay Disconnected". This happens mostly when one of the players have the emulator paused for a long period of time (I'd say 10 sec or so), or if the internet drops out. If you disconnect, the host should keep the game running, pause (hit Start to go to the in-game menu), make a save state just in case, back out to the Main Menu, and select Netplay. Then, select "Stop netplay host". Then select "Refresh room list", every few seconds or so, until you see your name disappears from the list (the netplay server dumps the game from the server). After this, you can select "Start netplay host", wait about 10 seconds, and notify your opponent that they can reconnect now. 

The client, in the meantime, should back out to the Main Menu, go to Netplay, and select "Disconnect from netplay host", wait for their opponent to notify them, and then reconnect to the host. Once connected, you will both be at the point where the host paused the game, and can continue.

If there is an issue, and the client cannot reconnect to the live game, or if the host closes the game at some point, reconnect as stated above, and once connected, the host can load the save state. Once the save state is loaded, you can continue play. No more need to game stitch or restart if there is a desync!!

No Name.png



Please let me know if there are any issues, so that I can make a troubleshooting post to help others out. We need as many guys testing this as we can. Please dont use it for league games yet, just for exis.




  • Thanks 1

Share this post

Link to post
Share on other sites

Bumping this, had a few desyncs today due to disconnects from Hotel wifi. Please see above for the update. It's important that the host "Stop netplay host", then wait until their name disappears from the "Refresh room list" before trying to host again. Once the client reconnects after hosting again, the game will continue where the host left it (please pause the game before doing these steps!).

  • Thanks 1

Share this post

Link to post
Share on other sites

Bump, updated a few items in this.

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this