Difference between revisions of "Netplay Guide"

From Dolphin Emulator Wiki
Jump to: navigation, search
(Update with information on new settings and features)
(This was very outdated and someone asked me for a netplay guide, so I fixed it. Like large chunks of information were missing. There was no information about hosting games or joining them at all. WTF. My edits are by no means but now its functional.)
Line 1: Line 1:
Netplay is a defining feature of Dolphin: it allows you to connect any GameCube or Wii game for online play, without the problems or limitations of the [[Wii Network Guide|Nintendo WiFi Connection]] or hassle of [[Broadband Adapter|BBA]]. It is improving regularly, and while it is a bit finicky at the moment it is very playable and reliable with the right settings. This guide outlines what you need for reliable online play with Dolphin.
+
Netplay is a defining feature of Dolphin: it allows you to connect any GameCube or Wii game for online play, without the problems or limitations of the [[Wii Network Guide|Nintendo WiFi Connection]] or hassle of [[Broadband Adapter|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.
  
 
{| class=wikitable style="width:300px; float:right;"
 
{| class=wikitable style="width:300px; float:right;"
Line 10: Line 10:
 
== Requirements ==
 
== Requirements ==
 
*Internet requirements are very light: any DSL or Cable internet connection should do. However, the internet demands rapidly increase as more players are added.
 
*Internet requirements are very light: any DSL or Cable internet connection should do. However, the internet demands rapidly increase as more players are added.
*Game disc images between players must have matching region and game revision. ISO, WBFS and other compression formats are OK. The player who do not have a game on one's end will face the "Game not found" error message. The game must be added to Dolphin game list if hasn't already.
+
*Game disc images between players must have matching region and game revision. While some compressed game formats are compatible with standard ISOs, it is heavily recommended that all players use identical dumps.
*All players should use the same Dolphin build, preferably the latest development build from [http://dolphin-emu.org http://dolphin-emu.org]. It is favorable to have a dedicated Dolphin profile for Netplay for the special settings and save files. It can be isolated from your main Dolphin profile by using [[Help:Contents#Portable.txt|"portable.txt"]] or create a [[Help:Contents#Command Line Options|special shortcut]]. In the latest development builds, Dolphin will not allow users to use different revisions of Dolphin for netplay.
+
*All players are highly recommended to use the same Dolphin build.  Newer Dolphin builds are more likely to have fixes for netplay.  Many users opt to use the latest beta builds from [http://dolphin-emu.org http://dolphin-emu.org]. It can be isolated from your main Dolphin profile by using [[Help:Contents#Portable.txt|"portable.txt"]] or create a [[Help:Contents#Command Line Options|special shortcut]]. In the latest development builds, Dolphin will not allow users to use different revisions of Dolphin for netplay.  This is to prevent desyncs.
  
 
== Setting Up Dolphin ==
 
== Setting Up Dolphin ==
Memory card of any kinds must be copied across every computers that players intended to use for netplay. Memory Cards for GameCube can be synchronized or disabled, meanwhile players may have to copy SD card to other computers themselves. NAND, which is also home of Wii save files, are disabled as of {{revision|4.0-6512}}. This means users do not need to play online with different Wii NANDs any longer. Dolphin build {{revision|5.0-8478}} introduced synchronization of Wii saves. It is currently not possible to synchronize the whole NAND yet.
+
 
 +
Your Netplay Experience will greatly vary depending on what build 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 {{revision|5.0-8478}}, Automated Settings Synchronization {{revision|5.0-8502}}, Cheat Code Synchronization {{revision|5.0-9032}}, Synchronize All Wii Saves {{revision|5.0-9037}} as well as protections for recovering saves if netplay is to crash.
  
 
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.
 
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.
 +
 +
== Hosting or Joining A Session ==
 +
 +
Under the tools menu, you can find the option to "Start Netplay Session."  From there you have several options.
 +
 +
*Hosting a session allows you to pick a game and host it for others to join.  If you use build {{revision|5.0-8478}} or newer, you can also host these games publicly with the [https://dolphin-emu.org/blog/2019/04/06/netplay-server-browser/ "Netplay Server Browser"].
 +
*When hosting a session, you can choose whether to Direct Connect or use a Traversal Server.  Both will have the same latency, however using the traversal server allows you to use a host code instead of your IP Address.  Depending on your router, you may not even need to port forward when using the traversal server.
 +
*You can join a session by browsing public netplay sessions or going to "Start Netplay Session" to get to the page where you can join sessions.  You can enter a host code or IP Address as needed in the "Connect" tab.
 +
 +
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.
  
 
=== General Configuration ===
 
=== General Configuration ===
Line 69: Line 80:
 
|}
 
|}
  
*Deterministic Dualcore Netplay is now merged into master. While compatibility is not perfect, it should allow more games to synchronize on dualcore with three exceptions. Games that require '''Skip EFB Access to CPU''', '''Store EFB Copies to Texture Only''' and/or '''Disable XFB''' unchecked in the Graphics > Hacks settings are not guaranteed to sync up. There are exceptions to this, but single core is recommended in games that require those settings. As well, some games are not compatible with deterministic dualcore netplay and will hangDisabling Dualcore will provide better compatibility but lower performance.
+
*Deterministic Dualcore Netplay is now merged into master. While compatibility is not perfect, it should allow more games to synchronize on dualcore with three exceptions. Games that require '''Skip EFB Access to CPU''', '''Store EFB Copies to Texture Only''' and/or '''Disable XFB''' unchecked in the Graphics > Hacks settings are not guaranteed to sync up. Deterministic Dualcore can be faster in some games, but may also be much slower if a game relies on certain visual effects.  Single Core mode in netplay is the same single core mode used outside of netplay and has no compatibility penalty.
 +
*SD cards do work on netplay but must be manually synchronizedAny difference at all in the SD card, no matter how minor, will cause desyncs in games that access the SD card.
  
 
==== Settings Synced ====
 
==== Settings Synced ====
As of {{revision|5.0-8502}} 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.
+
As of {{revision|5.0-8502}} 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:
 
On older revisions, only these settings will be synced over:
Line 78: Line 90:
 
* Misc Settings from Wii menu
 
* Misc Settings from Wii menu
 
* CPU Options from Advanced 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 ===
 
=== Graphics Configuration ===
Line 103: Line 117:
 
|}
 
|}
  
*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 will need Single Core to sync.
+
*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 will need Single Core to sync.  It is highly recommended you do not change these settings while netplay is actually in session, however.
  
 
=== Controller Settings ===
 
=== Controller Settings ===
 
*Enable and configure GameCube controller port 1 for your controller (this applies to both host and joiners) then enable other ports corresponding number of players willing to join and leave them dummy "plugged in". Any additional local players should use second or third ports.
 
*Enable and configure GameCube controller port 1 for your controller (this applies to both host and joiners) then enable other ports corresponding number of players willing to join and leave them dummy "plugged in". Any additional local players should use second or third ports.
  
*Wiimotes bindings work more or less the same way as GameCube Controller settings, but are much less consistentReal Wiimotes are not supported at all and will not give inputEmulated Wiimotes can work, but attachments are more or less unsupported.  Even when everything is configured perfectly, there is still a chance of desync. If a game using emulated Wiimotes starts up and does not freeze, it will usually play fine for the remainder of session but is not guaranteed to work after that.
+
*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 lobbyAs such, Player 2 will use their Wii Remote 2's configurationOnce 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.
  
 
== Netplay Settings ==
 
== Netplay Settings ==
Line 120: Line 134:
 
=== Setting a Spectator ===
 
=== Setting a Spectator ===
 
A Spectator is a connected computer that has no controllers assigned to them. This can be done by going to the "Configure Pads" window (only host has access to it) and remove the spectator's name from any of the controller ports. The spectator will not cause lag or latency but can still watch the netplay session.
 
A Spectator is a connected computer that has no controllers assigned to them. This can be done by going to the "Configure Pads" window (only host has access to it) and remove the spectator's name from any of the controller ports. The spectator will not cause lag or latency but can still watch the netplay session.
 
=== Reduce Polling Rate ===
 
This option can significantly reduce network usage in some cases by polling the controllers only twice per frame instead of at the game's configured interval. This does not cause any issues in tested games, however testing was not comprehensive so edge cases may exist.
 
  
 
=== Host Input Authority ===
 
=== Host Input Authority ===
Line 128: Line 139:
  
 
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.
 
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 subset of 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 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 builds due to a bug fixed in how much controller data was being sent.
  
 
== Desync Troubleshooting ==
 
== Desync Troubleshooting ==
 
Double check your settings and confirm if you and other players have good ISO dump. {{revision|4.0-6638}} 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.
 
Double check your settings and confirm if you and other players have good ISO dump. {{revision|4.0-6638}} 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.
+
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.
  
 
[[Category:Tutorials]]
 
[[Category:Tutorials]]

Revision as of 19:04, 31 May 2020

Netplay is a defining feature of Dolphin: it allows you to connect any GameCube or Wii game for online play, without the problems or limitations of the Nintendo WiFi Connection or hassle of 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.

"The person I'm playing with seems to be moving around strangely but he says that I'm the one moving weirdly. What happened?"

This is a desync. Basically what both of you are seeing are two different games. See #Desync Troubleshooting

Requirements

  • Internet requirements are very light: any DSL or Cable internet connection should do. However, the internet demands rapidly increase as more players are added.
  • Game disc images between players must have matching region and game revision. While some compressed game formats are compatible with standard ISOs, it is heavily recommended that all players use identical dumps.
  • All players are highly recommended to use the same Dolphin build. Newer Dolphin builds are more likely to have fixes for netplay. Many users opt to use the latest beta builds from http://dolphin-emu.org. It can be isolated from your main Dolphin profile by using "portable.txt" or create a special shortcut. In the latest development builds, Dolphin will not allow users to use different revisions of Dolphin for netplay. This is to prevent desyncs.

Setting Up Dolphin

Your Netplay Experience will greatly vary depending on what build 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 5.0-8478, Automated Settings Synchronization 5.0-8502, Cheat Code Synchronization 5.0-9032, Synchronize All Wii Saves 5.0-9037 as well as protections for recovering saves if netplay is to crash.

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.

Hosting or Joining A Session

Under the tools menu, you can find the option to "Start Netplay Session." From there you have several options.

  • Hosting a session allows you to pick a game and host it for others to join. If you use build 5.0-8478 or newer, you can also host these games publicly with the "Netplay Server Browser".
  • When hosting a session, you can choose whether to Direct Connect or use a Traversal Server. Both will have the same latency, however using the traversal server allows you to use a host code instead of your IP Address. Depending on your router, you may not even need to port forward when using the traversal server.
  • You can join a session by browsing public netplay sessions or going to "Start Netplay Session" to get to the page where you can join sessions. You can enter a host code or IP Address as needed in the "Connect" tab.

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.

General Configuration

General

Basic Settings
  • Enable Dual Core: ON
  • Enable Cheats: OFF
  • Speed Limit: 100%

Audio

DSP Emulator Engine
  • DSP HLE emulation

GameCube

Device Settings
  • Slot A: Memory Card
  • Slot B: <Nothing>
  • SP1: <Nothing>

Wii

Device Settings
  • Insert SD Card: OFF
  • Deterministic Dualcore Netplay is now merged into master. While compatibility is not perfect, it should allow more games to synchronize on dualcore with three exceptions. Games that require Skip EFB Access to CPU, Store EFB Copies to Texture Only and/or Disable XFB unchecked in the Graphics > Hacks settings are not guaranteed to sync up. Deterministic Dualcore can be faster in some games, but may also be much slower if a game relies on certain visual effects. Single Core mode in netplay is the same single core mode used outside of netplay and has no compatibility penalty.
  • SD cards do work on netplay but must be manually synchronized. Any difference at all in the SD card, no matter how minor, will cause desyncs in games that access the SD card.

Settings Synced

As of 5.0-8502 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

Enhancements

(No desync in most games)

Hacks

Embedded Frame Buffer
  • Skip EFB Access from CPU: ON
  • Store EFB Copies to Texture Only: ON
  • 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 will need Single Core to sync. 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) then enable other ports corresponding number of players willing to join and leave them dummy "plugged in". Any additional local players should use second or third ports.
  • 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.

Netplay Settings

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 1 roughly pad buffer per 15ms of latency per client. Two players at 50ms 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. This can be done by going to the "Configure Pads" window (only host has access to it) and remove the spectator's name from any of 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 subset of 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 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 builds 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. 4.0-6638 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.