Netplay Guide: Difference between revisions

From Dolphin Emulator Wiki
Jump to navigation Jump to search
No edit summary
m (please upload new revisions to the same filename)
(23 intermediate revisions by 3 users not shown)
Line 1: Line 1:
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 [[Wii Network Guide|Nintendo WiFi Connection]] or hassle of the [[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.
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 [[Wii Network Guide|Nintendo Wi-Fi Connection]] or hassle of the [[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.  Netplay is only for the Desktop version of Dolphin.  Dolphin on Android does not currently support Netplay.


{| class=wikitable style="width:300px; float:right;"
{| class=wikitable style="width:300px; float:right;"
Line 9: Line 9:


== Requirements ==
== Requirements ==
*The game you want to play <b>MUST</b> be in every player and/or spectator'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.
*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.
*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.
Line 15: Line 16:
== Setting Up Dolphin ==
== 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 ({{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.
Your Netplay Experience will greatly vary depending on what version of Dolphin that you are using. Because Dolphin 5.0 is lacking so many netplay features, we highly recommend to use either the latest available beta or dev build. Dolphin 5.0 won't have have 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 crashes.  If you're looking to play a Wii title that requires using Wii Remotes and/or their attachments, it is highly recommended to use {{revision|5.0-17527}} or newer as Wii Remote Netplay has been rewritten and standardized to netplay conventions.


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.
If you're inexperienced with netplay, then the biggest rule of thumb is not to change too much and try to follow this guide, as it will go through most of the important things to know.  The following information reflects the latest available development build as of its writing.


== Hosting or Joining a Session ==
== Starting a Netplay Session ==


Under the tools menu, you can find the option to "Start Netplay Session". From there you have several options.
A Netplay Session in Dolphin is started <i>before</i> actually running a 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 [https://dolphin-emu.org/blog/2019/04/06/netplay-server-browser/ "Netplay Server Browser"] available in {{revision|5.0-8478}} or newer.


*Hosting a session allows you to pick a game and host it for others to join. If you use version {{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"].
=== Hosting a Netplay Session ===
*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.
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.


=== General Configuration ===
*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 <i>without port forwarding.</i>
|-style="vertical-align: text-top;"
*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.


|
{{Image|TraversalDirect.png|You can swap behind direct connect and traversal server in the host netplay session tab.|br}}
==== General ====
 
{| class="wikitable"
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.
|-
 
! Basic Settings
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.
* Enable Dual Core: <b>ON</b><br />
 
* Enable Cheats: <b>OFF</b><br />
=== Joining a Netplay Session ===
* Speed Limit: <b>100%</b>
 
|}
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.
 
{{Image|NetplayClient.png|You can join a session from this screen.|br}}
 
=== Unable to Connect ===
 
If you're unable to connect, there are a multitude of common reasons.
 
*<b>Strict NAT</b>: If the host or clients have a Strict NAT, the traversal server may not work for connection.  The host must manually port forward in this case and all clients will have to use direct connect with the IP address and port forwarded.
*<b>Firewall issues</b>: If the users firewall blocks Dolphin and it cannot communicate with the internet, then netplay will not work.  If you run an aggresive firewall, be sure to make an exception for Dolphin so it can communicate over the internet.
*<b>Version Incompatibilities</b>: Older builds of Dolphin did not warn users if their Dolphin builds were incompatible.  This means that sometimes netplay may fail to join without any notification.  Newer builds have an error message specifically for this.
 
Because every router is different, you may need to consult a guide specific to your router in order to port forward.
 
== Configuring a Netplay Session ==
 
=== 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.
 
{{Image|NetplayDataTab.png|The host will have access to more options than clients|br}}
 
*<b>Buffer</b>:  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 <i>even</i> 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 <b>1 pad buffer per 15 ms</b> 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.
*<b>No Save Data</b>: This setting is when you're playing a game that does not need save data and you do not need to record your progress.  The netplay session will be entirely contained inside of itself, and will not permanently save any data.
*<b>Load Host's Save Data Only</b>:  This setting loads the host's save for the netplay title, but will not save any progress.  Can be useful when using stock saves on games like Super Smash Bros. Melee and Brawl.
*<b>Load and Write Host's Save Data</b>:  This setting loads the host's save for the game, and will update the host's save as you progress.  This setting is particularly useful for long-form game sessions.  **Note**: Clients do not get their saves overwritten by this setting.  Their local saves will be unaffected.
*<b>Sync All Wii Saves</b>: This synchronizes all Wii Save Data instead of just the active title's save data for the 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.
*<b>Sync AR/Gecko Codes</b>: 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 install of Dolphin.
*<b>Strict Settings Sync</b>: 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 ===
 
{{Image|NetplayNetworkTab.png|Network Tab lets you change how inputs are synchronized.|br}}
 
*<b>Fair Input Delay</b>: 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.
*<b>Host Input Authority</b>: 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.
*<b>Golf Mode</b>: Golf Mode is Host Input Authority mode <i>except</i> 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.
 
{{Image|NetplayChecksumTab.png|This tab lets you verify the current game, other games, and the SD Card.|br}}
 
=== 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.
 
{{Image|NetplayOtherTab.png|The other settings are for very specific situations.|br}}
 
*<b>Record Inputs</b>: Records inputs for the current netplay session.  Will not work if you change the netplay buffer while the netplay session is running.
*<b>Show Golf Mode Overlay</b>: Provides a small window in the actual Dolphin render window that allows you to swap who is the current player that has no latency.
*<b>Hide Remote GBAs</b>: 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.  Note that as of ({{revision|5.0-9037}}), Wii Remotes now follow the standard configuration procedure.  If you need to use Wii Remote netplay on an older build, please skip to the later part of the guide.
 
=== 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.
 
{{Image|NetplayControllerTypicalConfiguration.png|Dolphin automatically assigns one GC controller to each player that joins.|br}}
 
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.
 
{{Image|NetplayControllerTypicalConfiguration4player.png|Dolphin automatically assigns one GC controller to each player that joins.|br}}
 
Remember, each player <b>does not</b> 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.
 
{{Image|ControllerConfiguration.png|Dolphin pulls input configurations from the first controller on each computer.|br}}
 
As a note, the <i>Native GameCube Adapter for Wii U</i> 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 or more friends connecting from the same computer, you can give a single computer multiple controllers.  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.
 
{{Image|NetplayMultiplePlayerson1PC.png|It's simple to play with two or more players on one computer!|br}}
 
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 {{Revision|5.0-14690}}, 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 [https://wiki.dolphin-emu.org/index.php?title=Integrated_GBA 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.
 
{{Image|NetplayPreppingIntegratedGBA.png|Example of a configured Integrated GBA.}}
{{Image|GBASaveSettings.png|GBA BIOS can be configured in Configuration -> GameCube Tab.|br}}


|
You <b>do not</b> need Integrated GBA currently set as the controller in the port.  The important thing is to just make sure that the controls are set so that Dolphin has an input profile to pull from.  For netplay, the GBA itself is actually enabled in the Netplay Window under Assign Controller Ports.  Let's say that Player 1 is controlling Link in Wind Waker and Player 2 is controlling the Tingle Tuner.


==== Audio ====
{{Image|NetplayPlayer2GBA.png|Player 1 is a GameCube Controller, while Player 2 is a GBA.|br}}
{| class="wikitable"
{{Image|WindWakerGBANetplay.png|With "Hide Remote GBAs" only player 2 can see the GBA screen!|br}}
|-
! DSP Emulator Engine
|-
|
* <b>DSP HLE emulation</b>
|}


|
Assigning multiple players to GBAs is just as simple as checking more of the boxes.
==== GameCube ====
{| class="wikitable"
|-
! Device Settings
|-
|
* Slot A: <b>Memory Card</b><br />
* Slot B: <b><nowiki><</nowiki>Nothing<nowiki>></nowiki></b><br />
* SP1: <b><nowiki><</nowiki>Nothing<nowiki>></nowiki></b>
|}


|
{{Image|FourSwordsNetplay.png|Without Hide Remote GBAs enabled, the other players can see exactly where you're hiding!|br}}
==== Wii ====
{| class="wikitable"
|-
! Device Settings
|-
|
* Insert SD Card: <b>OFF</b>
|}


|}
=== Pokemon Colosseum and Pokemon XD Netplay ===


*Deterministic Dual Core Netplay is now merged into master. While compatibility is not perfect, it should allow more games to work on dual core with three exceptions. Games that require '''Skip EFB Access to CPU''', '''Store EFB Copies to Texture Only''' and/or '''Store XFB Copies to Texture Only''' unchecked in the Graphics > Hacks settings are not guaranteed to run correctly. Deterministic Dual Core can be faster than Single Core 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.
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
*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 ====
*<b>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.</b>
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.
*<b>All players must send their GBA saves to the host</b>
*<b>Host must make sure to assign the correct port to each savefile to ensure it is loaded for netplay.</b>


On older revisions, only these settings will be synced over:
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.
* 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.
{{Image|PokemonColosseumGBANetplay.png|With a lot of setup, you can do online pokemon battles!|br}}


=== Graphics Configuration ===
=== Netplay with Wii Remotes ===
{|
|-style="vertical-align: text-top;"


|
As of {{revision|5.0-17527}}, Wii Remotes mostly work the same as other controllers.  You have to use Emulated Wii Remotes on netplay.  If you would prefer to use Real Wii Remotes on netplay, you must do that through Emulated Wii Remotes via the <i>Connect Wii Remotes for Emulated Controllers</i>.  Your Wii Remote will now show up as an emulated controller that can be assigned buttons, and with Dolphin's <i>Wii Remote with MotionPlus Pointing (Stock)</i> 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 on netplay.
==== Enhancements ====
{| class="wikitable"
|-
| (No desync in most games)
|}


|
==== Using Wii Remote Netplay prior to {{revision|5.0-17527}} ===
==== Hacks ====
{| class="wikitable"
|-
! Embedded Frame Buffer
|-
|
* Skip EFB Access from CPU: <b>ON</b><br />
* Store EFB Copies to Texture Only: <b>ON</b>
|}


|}
On older builds, Wii Remote Netplay was a lot more confusing to setup due to the fact that controllers were not automatically reordered like with standard controllers. Each player must set a configuration profile to the <b>Wii Remote Slot they will be using on netplay.</b>  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 <i>should</i> 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.


*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.
{{Image|NetplayPlayer2WiiRemote2.png|Player 2 on Netplay must have their controls setup for Wii Remote 2|br}}


=== Controller Settings ===
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.
*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.
== Desync Trouble Shooting ==


== Netplay Settings ==
There are many reasons as to why a desync could happen.  These are the most common reasons we've seen for a potential desync.


=== How to set the Pad buffer ===
=== Mismatched ISOs ===
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 ===
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.
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 ===
=== Mismatched SD Card ===
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 ===
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.
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.
=== Netplay Between Different Recompilers ===


=== Golf Mode ===
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.


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.
=== Memory Card Desyncs ===


=== Reduce Polling Rate ===
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.
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 ==
=== Wii Remote Desyncs ===
Double check your settings and confirm if you and other players have good ISO dump. Dolphin {{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. Never ignore obvious problems such as Game ISO differences or SD card differences, as those are not synchronized by Netplay for obvious reasons.
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.


[[Category:Tutorials]]
[[Category:Tutorials]]

Revision as of 17:13, 4 October 2022

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. Netplay is only for the Desktop version of Dolphin. Dolphin on Android does not currently support Netplay.

"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

  • The game you want to play MUST be in every player and/or spectator'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 of Dolphin that you are using. Because Dolphin 5.0 is lacking so many netplay features, we highly recommend to use either the latest available beta or dev build. Dolphin 5.0 won't have have 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 crashes. If you're looking to play a Wii title that requires using Wii Remotes and/or their attachments, it is highly recommended to use 5.0-17527 or newer as Wii Remote Netplay has been rewritten and standardized to netplay conventions.

If you're inexperienced with netplay, then the biggest rule of thumb is not to change too much and try to follow this guide, as it will go through most of the important things to know. The following information reflects the latest available development build as of its writing.

Starting a Netplay Session

A Netplay Session in Dolphin is started before actually running a 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 5.0-8478 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.

Unable to Connect

If you're unable to connect, there are a multitude of common reasons.

  • Strict NAT: If the host or clients have a Strict NAT, the traversal server may not work for connection. The host must manually port forward in this case and all clients will have to use direct connect with the IP address and port forwarded.
  • Firewall issues: If the users firewall blocks Dolphin and it cannot communicate with the internet, then netplay will not work. If you run an aggresive firewall, be sure to make an exception for Dolphin so it can communicate over the internet.
  • Version Incompatibilities: Older builds of Dolphin did not warn users if their Dolphin builds were incompatible. This means that sometimes netplay may fail to join without any notification. Newer builds have an error message specifically for this.

Because every router is different, you may need to consult a guide specific to your router in order to port forward.

Configuring a Netplay Session

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.
  • No Save Data: This setting is when you're playing a game that does not need save data and you do not need to record your progress. The netplay session will be entirely contained inside of itself, and will not permanently save any data.
  • Load Host's Save Data Only: This setting loads the host's save for the netplay title, but will not save any progress. Can be useful when using stock saves on games like Super Smash Bros. Melee and Brawl.
  • Load and Write Host's Save Data: This setting loads the host's save for the game, and will update the host's save as you progress. This setting is particularly useful for long-form game sessions. **Note**: Clients do not get their saves overwritten by this setting. Their local saves will be unaffected.
  • Sync All Wii Saves: This synchronizes all Wii Save Data instead of just the active title's save data for the 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.
  • 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 install of Dolphin.
  • 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. Note that as of (5.0-9037), Wii Remotes now follow the standard configuration procedure. If you need to use Wii Remote netplay on an older build, please skip to the later part of the guide.

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 or more friends connecting from the same computer, you can give a single computer multiple controllers. 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 5.0-14690, 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 controller in the port. The important thing is to just make sure that the controls are set so that Dolphin has an input profile to pull from. For netplay, the GBA itself is actually enabled in the Netplay Window under Assign Controller Ports. 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

As of 5.0-17527, Wii Remotes mostly work the same as other controllers. You have to use Emulated Wii Remotes 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 Wii Remote with MotionPlus Pointing (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 on netplay.

= Using Wii Remote Netplay prior to 5.0-17527

On older builds, Wii Remote Netplay was a lot more confusing to setup due to the fact that controllers were not automatically reordered like with standard controllers. 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.