Netplay Guide

Netplay is a defining feature of Dolphin: it allows you to set up online sessions for any GameCube or Wii title with a local multiplayer mode, without the problems or limitations of the Nintendo Wi-Fi Connection or hassle of the BBA. It is improving regularly, and GameCube Netplay should be painless. Wii Netplay is much more temperamental and should be treated as an experimental feature for advanced users.

Requirements

 * The game you want to play MUST be in all player's gamelist.
 * Bandwidth requirements are very light: any DSL or Cable internet connection should do. However, the internet demands rapidly increase as more players are added. Because the latency (ping) of the internet connection determines how low input latency can get, using Ethernet instead of Wi-Fi usually improves the gameplay experience.
 * Each player must have their own copy of the game, and the region and game revision of all copies must match. While most compressed game formats are compatible with standard ISOs (with NKit being a notable exception), it is heavily recommended that all players use identical dumps.
 * All players must use the same Dolphin version. Newer Dolphin versions are more likely to have fixes for Netplay. Many users opt to use the latest beta versions from the official website. It can be isolated from your main Dolphin profile by using "portable.txt" or creating a special shortcut. Dolphin will not allow users to use mismatched versions for Netplay, to prevent desyncs.

Setting Up Dolphin
Your Netplay Experience will greatly vary depending on what version you tend to use. Because Dolphin 5.0 is lacking so many Netplay features at this point, it cannot be recommended for use. It is missing important features like Wii Save Synchronization, Automated Settings Synchronization , Cheat Code Synchronization , Synchronize All Wii Saves as well as protections for recovering saves if Netplay is to crash. The newest builds can even synchronize cheat codes, assuming the cheats are in all players INIs.

Rule of thumb is that most settings should be set to default and you are expected to follow specific settings where the instruction (made by host or matchmaking websites) has told you to set before playing online. The guide will focus on the newest available builds at the time of this writing.

Starting a Netplay Session
A Netplay Session in Dolphin is started without before you run the game. You can setup a netplay session from the Tools Menu -> Start Netplay Session for options for joining or hosting a netplay session. If you wish to join a public netplay session, you can use the "Netplay Server Browser" available in or newer.

Hosting a Netplay Session
If you wish to host netplay session, there are a few things to keep in mind. You'll have the option to select a specific port, along with host via direct connection or the traversal server. You can also set a name for yourself so that you can be identified in the player list.


 * The player with the best internet, and in the geographic center when playing with 3 or more players, makes for the best host for slowest input latency.
 * The host player should not be on a network with a Strict NAT. Any player on a Strict NAT, even joining, may need to manually port forward.  On more permissive NATs, the traversal server option will allow you to host without port forwarding.
 * Port Forwarding is different for every router/modem, so we cannot give exact instructions or how to do it. If you do not have admin access to your router, you may not have the option of Port Forwarding.

Once you've selected a game and are finished, you'll enter the host netplay menu. If you've hosted via the traversal server, then you'll have a code to distribute to the players. Otherwise, you'll need to distribute your IP and port. Note that if you're behind multiple routers, there may be additional complications. You may need to manually obtain your IP Address if Dolphin displays a local one when using Direct Connect.

Do note that you can host on the traversal server, but still allow certain users to direct connect if you trust them with your IP. This is particularly useful for LAN games, where the traversal server connection method will not work. You can allow outside players to connect over the traversal server while you can have local players connect directly with your IP and port. Note that using the Traversal Server does not add any latency - it is only used for connectivity.

The host of the netplay session has additional responsibilities, such as configuring the input buffer, enabling/disabling various netplay features, and assigning netplay controllers for all of the players.

Joining a Netplay Session
Joining a netplay session is simple. Simply set your name to whatever you want it to be, and enter the host's traversal code or IP address depending on how they've hosted. If using direct connection, you'll need to connect via the host's IP Address and the port they are hosting on. Once you've joined the netplay session, you simply need to wait until the host starts the game.

Configuring Netplay Buffer and How to use the Data Tab
Once a session is hosted, the host has the opportunity to adjust netplay settings before actually starting the game. These settings may be crucial to the enjoyment of your netplay session, so please review them carefully.


 * Buffer: At the bottom of the screen is the buffer option.  Buffer is the amount of latency added to inputs.  If you're noticing slowdown and stuttering even on very low impact scenes like a game's splash screens, odds are the buffer is too low and you might need to increase it.  A simple formula that is accurate for most titles is 1 pad buffer per 15 ms of latency per client. Two players at 50 ms latency would be roughly 3 - 4 buffer, where as three players at 50 and 65 ms would be roughly 7 buffer.  Depending on your computer's performance (higher performance computers finish frames sooner, meaning slightly less buffer may be needed) and the quality of your internet, you may need to adjust this.  Sometimes poll more/less than others, which may result in the formula not working at all.
 * Write Save Data: If Write Save Data is enabled, this means that progress made on netplay will be saved to the host's Memory Card and will be kept even after the netplay session is over.  This is good for longer games that will take many sessions, like playing through Tales of Symphonia with multiple players.
 * Load Wii Save: This settings determines whether a Wii Save file is loaded for the initial title selected.  It only loads a single Wii Save if the hosted netplay game is a Wii game.
 * Sync Saves: This synchronizes savedata for the netplay session. It will only sync whatever saves are loaded, and these saves are only synchronized temporarily for the current netplay session.  Your original saves will not be overwritten.
 * Sync AR/Gecko Codes: This option synchronizes which Action Replay and Gecko Codes are enabled between players. The codes enabled on the host's computer will automatically be enabled on clients when the netplay game starts.  Note that it only synchronizes which codes are enabled, it will not transfer new codes between players.  If this feature causes problems, it may be because the codes differ in each player's GameINI.
 * Sync All Wii Saves: This synchronizes all Wii Save Data for a netplay session. Useful if you're booting a romhack that uses different savedata than the actual file you're loading.  Example: Project M uses a .elf, but loads savedata from the NAND under a different title name.
 * Strict Settings Sync: This setting more aggressively synchronizes various volatile settings in Dolphin, such as minor Graphics Settings such as Internal Resolution. This can be used if you have a desync caused by a setting that you cannot identify.

Network Tab

 * Fair Input Delay: Dolphin's default netplay setting. This splits buffer between all players, resulting in all players having the same input delay.  Best for games in which all players need to act at once.
 * Host Input Authority: Host Input Authority mode gives the host zero latency, but makes each player only responsible for their own buffer to the host. The base latency for clients is doubled, but this can result in a lower overall latency when playing with 4 players over great distances.
 * Golf Mode: Golf Mode is Host Input Authority mode except you now have the power to swap which player has zero latency. This is perfect for multiplayer games that only have one player acting at a time.  This mode is incompatible with Wii Remote netplay.

Checksum
The Checksum tab is a very powerful tool for verifying files that Dolphin cannot synchronize between players. It can be used to check and see if every player has a proper, matching dump of the game attempting to be loaded. If you're having desyncs that you cannot solve through other methods, be sure to use the checksum tab to verify that everyone's game (and SD card, if applicable for the game you're playing) matches.

Other
The other tab has a few extra settings that are applicable in rare situations. These are extra settings you may or may not want to have on, and some of these settings can be accessed by the client.


 * Record Inputs: Records inputs for the current netplay session. Will not work if you change the netplay buffer while the netplay session is running.
 * Show Golf Mode Overlay: Provides a small window in the actual Dolphin render window that allows you to swap who is the current player that has no latency.
 * Hide Remote GBAs: This setting is specifically for GBA <-> GCN Netplay titles. When this setting is enabled, each player will only be able to see/hear the main Dolphin render window, and the GBA assigned to them.  This is perfect for games like Four Swords Adventures and Final Fantasy: Crystal Chronicles where the game only gives certain information to certain players.

Setting Up Netplay Controllers
Setting up netplay controllers is a very simple system that is confusing because Wii Remotes have to be configured a bit differently. We'll first go through how to setup every other controller, and then talk about the differences for Emulated Wii Remotes at the end.

Setting Up Standard Controllers for Netplay
When using a Standard Controller for netplay, it's very simple to configure things. If there is one player on each computer, then Dolphin will automatically map things correctly on its own.

In this setting, Dolphin takes whatever configuration is in Controller Port 1 of User and maps it to port 1 of the netplay session. For User 2, it takes whatever controller is mapped to Controller Port 1 and maps it to port 2 of the netplay session. This means whatever configuration is in controller port 1 for each player is used for their netplay controller. This keeps things simple, so that a player doesn't have to map port 4 just to play on netplay - Dolphin will grab from the first available port! This applies for up to 4 separate players. This is specifically for when one player is on each computer.

Remember, each player does not need to configure the controller for the port they are in with this situation. Dolphin will grab whatever controller profile is configured to the first GameCube Controller Port in Options -> Controller Settings.

As a note, the Native GameCube Adapter for Wii U is also supported, and just needs to be assigned to the first controller port in this example.

Setting up Standard Controllers When More Than One Player is on a single PC
If you have two friends connecting from the same computer, you can give them both their own controller. In this example, the user labeled "friends" has two players wanting to play from the same computer. In this case, the host goes to "Assign Controller Ports" and simply gives that player's computer two controller ports.

Now "friends"'s computer will have control of controller ports 2 and 3 during the game. However, much like before, they only need to configure the first two ports of the Controller Configuration page. Dolphin will give the first controller's profile to the first assigned instance of their PC, and the second controller's profile to the second assigned friend. This can be done with the host as well, by simply assigning the host's computer to multiple controller slots.

Setting up a Spectator
If you want someone to be able to watch without impacting latency, you can do that simply by removing them from any of the controller slots. If a spectator's computer lags, the actual netplay match won't be disrupted and the spectator will simply fall behind.

Controlling GBAs on Netplay
Since, Dolphin can use GBA Controllers on netplay via the Integrated GBA powered by mGBA. This can be used to play GBA <-> GCN games on netplay. For games like the The Legend of Zelda: The Wind Waker, you can assign one player to play the main game and another to play the Tingle Tuner. On Four Swords Adventures, you can assign each player a GBA for multiplayer mayhem. The list goes on, and even Pokemon Colosseum and Pokemon XD battles can be played on netplay... with some extra setup. Please refer to the the Integrated GBA guide to make sure your Integrated GBA is functioning correctly before attempting to use netplay. Each player must have a GBA BIOS configured that the Integrated GBA can automatically load.

The same rules apply for GBA controllers - Dolphin will pull from the first controller profile possible from each computer when assigning controls. If a computer is given multiple controllers, it'll assign the first port, then the second, etc. This means each player will need to at least configure the Integrated GBA in port 1 in order for their controls to work. If you have not configured it yet, it will use the default controls which may not be suitable for normal gameplay.

You do not need Integrated GBA currently set as the type of controller. You just need to make sure the controls are set so Dolphin has a profile to pull from. Instead, you enable the GBA controller in the "Assign Controller Ports" tab. Let's say that Player 1 is controlling Link in Wind Waker and Player 2 is controlling the Tingle Tuner.

Assigning multiple players to GBAs is just as simple as checking more of the boxes.

Pokemon Colosseum and Pokemon XD Netplay
The two Pokemon titles are among the most complicated to play on netplay simply because they require GBA ROMs of the GBA games, and they require savefiles. All of the same rules apply that apply for normal netplay, with a few more limitations


 * Host and Clients must configure the default GBA ROM to the game they want to go in that GBA for each GBA that is playing.
 * All players must send their GBA saves to the host
 * Host must make sure to assign the correct port to each savefile to ensure it is loaded for netplay.

If everything is done correctly, each player can reset their personal GBA (by right clicking on it and hitting reset) in order to reload the BIOS and trigger connectivity when the GameCube game is ready.

Netplay with Wii Remotes
Everything we've discussed in terms of how ports, profiles, and configurations are loaded need to be thrown out the window for Wii Remote netplay. Emulated Wii Remotes and their extensions can be used on netplay. If you would prefer to use Real Wii Remotes on netplay, you must do that through Emulated Wii Remotes via the Connect Wii Remotes for Emulated Controllers. Your Wii Remote will now show up as an emulated controller that can be assigned buttons, and with Dolphin's stock profile, you can automatically assign everything exactly how it would be if you were using it directly as a real Wii Remote. The "Real Wii Remote" controller option itself is not supported.

Unlike when using GameCube Controllers and GBAs, each player must set a configuration profile to the Wii Remote Slot they will be using on netplay. That means if you are the host and using Wii Remote 1, you must have the first Emulated Wii Remote configured to your controller on your computer. If you are a client joining and you are assigned to Wii Remote 2, you must have Emulated Wii Remote 2 configured with your controls. In order to prevent desyncs, all players should configure the correct attachments to all controllers. Though Dolphin should attempt to synchronize attachments, it has been known to have issues. If you are using a physical Wii Remote connected as an emulated controller you do not have to set the attachment ahead of time as the stock profile automatically configures it.

Wii Remotes in general are very sensitive to desyncs, and there is a chance that any kind of desync will cause netplay to entirely crash. We recommend Wii Remote netplay is only attempted by advanced Dolphin users. If a Wii game supports GameCube controllers, we highly recommend using them when possible. Wii Remote Netplay should be considered an experimental feature.

Desync Trouble Shooting
There are many reasons as to why a desync could happen. These are the most common reasons we've seen for a potential desync.

Mismatched ISOs
For lockstep netplay to work, all players must create an identical emulated environment on all PCs. If one player has an ISO with a defect, then they may not sync with other players. Please refer to the Checksum options explained above for more on how to detect these issues.

Mismatched SD Card
If you have the SD Card enabled in the Options -> Configuration -> Wii tab, then it may be the cause of your desyncs. We recommend unchecking it whenever possible for Wii Netplay. If you must use the SD Card as part of your netplay session, please ensure that the SD Card is identical before starting with the SD Card option in the Checksum tab in the netplay Window.

Netplay Between Different Recompilers
The AArch64 JIT and the x86-64 JIT can produce very slightly different code which is enough to trip Dolphin's desync detection. Usually these desyncs do not actually affect the game, but it also means that desync checker won't be able to detect more serious desyncs. We do not recommend netplay between different CPU architectures unless all players involved are advanced users.

Memory Card Desyncs
If you do not enable save syncing but have memory cards enabled, you may cause a desync. We recommend enabling save syncing to bypass this.

Wii Remote Desyncs
Wii Remotes are extremely touchy with how they're configured and if they're configured improperly, they may cause desyncs on their own. In order to test if the Wii Remotes are the cause of the desync, you can simply assign GC controllers instead of Wii Remotes for the game. Even if you can't control the game, if you see that the game runs without desyncs without Wii Remotes configured, then you know the problem is with the Wii Remote. Reconfiguring the Wii Remotes and their attachments may solve this issue.