Sign in to follow this  
chaos

HOW TO: Netplay over RetroArch

Recommended Posts

Netplay via RetroArch

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.

For SNES, we are using the Snes9x core for netplay.

For installing RetroArch , please check out this page on nhl94online.com - Getting Started

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 have 3 options, listed here with their pros and cons:

1. Direct Connect - With this type of connection, the 2 players connect directly to each other. Port forwarding is required in most cases, though if uPNP is enabled on your router, this may not be needed. Port that needs to be forwarded on your router is TCP 55435.

Pros - Best possible connection. With direct connect, you don't have to worry about any "middle-man" causing issues with the connection. 

Cons - Hard to setup. Some cases, setting a Static IP for your PC and port forwarding on your router is required. Might not be possible for some setups (university, work, apartment, hotel, etc). You can look up how to port forward and set up Static IP for your router model online.  

2. Direct Connect w/ Hamachi - With this type of connection, Hamachi VPN is used as the "middle-man". This removes the need to port forward (in most cases). You need to install Hamachi and have it running before starting RetroArch. You also need to make sure you and your opponent are in the same "virtual network". 

Pros - Good connection in most cases.  

Cons - Extra software needed. Using a "middle-man", you are at the mercy of the connection quality. There are times in the past where Hamachi caused problems for some, and direct connect was found to be the better solution. Since the signal is routed to a Hamachi VPN server before going to each player, there may be more latency in the connection (higher ping) than direct connect.

3. Relay Server - With this type of connection, both players connect to a "middle-man" relay server, hosted by RetroArch. No extra software needed, all you need to do is turn on the relay server option in Settings->Network.

Pros - Good connection. Easy to setup. No port forwarding or Static IPs needed. Just connect and play.

Cons - Since there is a "middle-man" server, all connections are routed through there. There are 2 server locations currently, one in NY, one in Spain (the NY one is the default). Connection is a little tricky, since the person connecting to the host (the client), has to wait until the host connects to the server (connected to "NICK" message). Sometimes, it is a little finicky and I've noticed I needed to close RetroArch and restart it to get the message. Most of the time it works though. Also, if there is a disconnection, the host has to wait until their name disappears from the Netplay List (~45 sec.) before trying to host again.

 

So, I suggest using the Relay Server option, since it is the easiest and most compatible option. If you are having issues with your connection, I would suggest going to Settings->Network and adjusting the "Input Latency Frames Range" to a value like 3. RetroArch will adjust the the frames from 0 to 3. Default setting is 0.  

Note, Gens Kaillera usually uses 2 frames of delay for even the best connection.

 

If that doesn't help, then I would suggest you try out one of the direct connect options. In a perfect world, everyone would use direct connect, but there are some cases where it's not feasible.

 

Netplay - How it Works

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, 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 and the overall smoother play should make everyone happy.

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. If you downloaded the package from nhl94online.com, the relay server option is already enabled. Relay server can be set to off in Settings->Network

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, either team on SNES) starts the game - Go to Netplay in the Main Menu, and click "Start netplay host".

Netplay Window.png

 

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).

When the game starts up, you should see a few messages on the bottom of the screen. Look for one that says "Connected to NICK". NICK is name of the relay server (if you are using direct connect, you will not see this message). Almost immediately after, you should see "Joined as Player 1". This is a good sign. You can now notify your opponent that they are able to connect to you.

Nick.PNG

If they try to connect before you see these messages, 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.

 

2. The player acting as the client (away team on Genesis, the person not hosting on SNES) connects to the host - The player who will be connecting to the host will now go to Netplay in the Main Menu and select "Refresh Room List". You will see a list populate like below. Look for the name of the person you are playing, and select them. You do not need to have the ROM already open (it's optional). When you select their name, the game (as long as it is on your "Load Recent" list, i.e. you've loaded it once before) will automatically start up. When you connect, you should see a message like above, "Connected to NICK", and it will say "You have joined as player 2".

netplay list.PNG 

 

3. Save the state at the end of the game - Play the game, at the end of the game, either on the 3-stars screen, or the game end menu, make a save state (press F5). This will be used to upload to the nhl94online.com site. 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.

 

Troubleshooting

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, the host has to wait about 45 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 goes away once you start actually playing.

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, pull up the Quick Menu (F1 button), 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, like above). After this, you can select "Start netplay host", wait till you see the "Connected to NICK", "Joined as Player 1" messages, 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!!

 

Please let me know if there are any issues!

 

 

No Name.png

  • 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

Bump, I added other Netplay options.

Share this post


Link to post
Share on other sites

Netplay Jitters

If you are experiencing some netplay jitters, please adjust your input latency frames delay value from 0 to 3 under Settings->Network.

Latency Frames.png

 

This should help compensate for network connection problems (ping, distance, jitter, etc). Make sure that both players have this value set to the same amount (Discuss it on Discord first). 0 is optimal, but setting a range will allow RetroArch to adjust it dynamically depending on the network.

  • Like 1
  • Thanks 1

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  

  • Who's Online   0 Members, 0 Anonymous, 60 Guests (See full list)

    There are no registered users currently online