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.


 * 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 get 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. If your host is using the Traversal Server, simply enter the code. If using direct connection, you'll need to connect via the host's IP Address. Once you've joined the netplay session, you simply need to wait until the host starts the game.

=== Recommended Netplay Settings

When playing on Netplay, in order to establish a lockstep netplay session, Dolphin will synchronize a ton of different settings in order make sure the netplay session works. However, there are certain settings that can be problematic in games and should be adjusted manually as needed. Note that most of the host's settings will be synchronized to all connecting players. This is temporary and only for the started netplay session and will not permanently change any of the connecting players' settings. There are a few settings to keep an eye on.


 * Dual Core: This setting can cause many issues across hundreds of games. Most commonly, if a game is incompatible with Deterministic Dualcore, it will simply hang on boot.  There is also an issue where Deterministic Dual Core will drop to incredibly low framerates during EFB Access effects.  Use Single Core when possible on netplay to avoid these issues.
 * Graphics Backend: When playing games that use EFB Copies, differences in how the Graphics Backends work may matter for synchronization. This is very rare, usually users can use whichever Graphics Backend they want.  There are rare cases where NVIDIA, AMD, Intel and Apple based graphics cards may result in very slightly different EFB values.  Usually this will result in an erroneous 'Player has desynced' messaged with no further issues.  If the game relies on these value for game logic, then the netplay session may desync.
 * SD Card: We recommend that, unless you've specifically prepared the SD card for netplay, that you disable the Wii SD card before playing Wii games on netplay. Any difference in the SD Card will cause the game to desync.

While Dolphin does try to automatically configure and sync settings to be correct, it is important to be familiar with settings that can affect Netplay.

Settings Synced
As of, most settings that affect determinism will be synced to other clients, so only the host needs to ensure correct settings. Games which use EFB reads or EFB to RAM are likely to desync with mismatched graphics settings, therefore Strict Settings Sync should be used, which will additionally sync most graphics settings except for backend.

On older revisions, only these settings will be synced over:
 * Advanced Settings from General menu
 * Misc Settings from Wii menu
 * CPU Options from Advanced menu

Note that over long periods of time, using different video backends may eventually cause a detected desync. However, because not all target operating systems support all backends, Dolphin will never attempt to synchronize graphics backends. If you do see a seemingly random detected desync during very long play sessions and you are using different graphics backends, this is usually the cause. These desyncs usually do not manifest in anything immediately broken, but it is still recommended you save and restart to prevent issues.

Graphics Configuration
{|
 * -style="vertical-align: text-top;"



Hacks

 * }


 * Most settings under Enhancements menu can mostly be turned on or off without incident on higher end processors. The only exception to this is when an enhancement breaks a game, such EFB Copy readback. If a game requires EFB Access from CPU or EFB Copies Stored to RAM for game mechanics, the game may freeze or run slowly unless you use Single Core. It is highly recommended you do not change these settings while Netplay is actually in session, however.

Controller Settings

 * Enable and configure GameCube controller port 1 for your controller (this applies to both host and joiners). If you're attempting to use a Native GameCube Adapter for Wii U on netplay, make sure the controller port is set to that in the controller configuration.


 * If you're attempting to GBA <-> GCN netplay, the same rules apply as GameCube Controllers with some key differences. Much like GameCube controllers, it will pull the controller configuration from the first available controller port's settings, but you also have to enable the GBA controller in the netplay settings window.  For setting features like a "default ROM" on netplay, this actually is configured *per port* and will not grab information from the first port.  As a note, all GBA saves are synchronized from the host, even for GBAs that they're not controlling.  GBA <-> GCN netplay requires  or newer.


 * Wii Remotes are far more particular about how they are setup in Netplay. Unlike GameCube Controllers, you must configure the Wii Remote you are assigned to in the Netplay lobby. As such, Player 2 will use their Wii Remote 2's configuration. Once Wii Remotes are configured correctly, they usually work fine for the remainder of the session  If you notice any desync while playing with emulated Wii Remotes, it is highly recommended you save immediately, as a desync in Wii Remote reporting modes will crash the emulator.

How to set the Pad buffer
Because input on the GameCube and Wii are polled by non-frame intervals, buffer does not directly relate to frames and can even vary per game. Lower the buffer as much as possible without causing slowdown for an optimal experience, ideally in areas that insure there isn't computer related slowdown such as a menu. In most games, add roughly 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.

Assigning Controller Ports
By default, only players of the first port on each computers will be used. The host will be player one, and the first joiner will be player two, and so on. But the host can change the port order and invite the secondary players of the same computer. To do so, simply hit the "Assign Controller Ports" button, then add and/or order their names to the port number respectively.

Setting a Spectator
A Spectator is a connected computer that has no controllers assigned to them. Any player can be turned into a spectator by going to the "Configure Pads" window (only host has access to it) and remove the their name from the controller ports. The spectator will not cause lag or latency but can still watch the Netplay session.

Host Input Authority
This gives the host control over when inputs are sent to the game, effectively decoupling players from each other in terms of buffering. This allows players to have latency based solely on their connection to the host, rather than everyone's connection. Buffer works differently in this mode. The host always has no latency, and the buffer setting serves to prevent stutter, speeding up when the amount of buffered inputs exceeds the set limit. Input delay is instead based on ping to the host.

This can result in smoother gameplay on unstable connections, as well as allowing players with much higher latency than others to play without increasing everyone's latency. However, this comes at the expense of latency fairness, which may make it not suitable for competitive play.

Golf Mode
This addition to Host Input Authority allows the player with no input latency to change mid-game. This is incredibly useful for games where only one player is playing at a time, like a golf game. Do note that all other players experience a latency penalty in this mode, so it should only be used for games where only one player is playing at a time.

Reduce Polling Rate
This option used to significantly reduce the polling rate in order to lower network usage. However, it is no longer necessary in the latest development versions due to a bug fixed in how much controller data was being sent.

Desync Troubleshooting
Double check your settings and confirm if you and other players have good ISO dump. Dolphin added the ability to detect desyncs. Watch the textbox for desync notifications, as very often it will be able to tell the game has desynced before the players and may help them pinpoint the problem.

Netplay has matured considerably in recent time, but still requires user competency and problem solving to get over some of the hurdles. Never ignore obvious problems such as Game ISO differences or SD card differences, as those are not synchronized by Netplay for obvious reasons.

Netplay Between Different Recompilers
Dolphin can run on both AArch64 and x86-64 devices, but because of the sensitivity of how the JITs work, we cannot guarantee that netplay sessions between different architectures will work. In initial testing, games do sync, but a desync message due to some timing differences will be displayed rather early on regardless. It can work, but is not supported.