diff --git a/site/content/entry/ldn-is-here/Diablo3_LDN_1.png b/site/content/entry/ldn-is-here/Diablo3_LDN_1.png new file mode 100644 index 00000000..90b5c325 Binary files /dev/null and b/site/content/entry/ldn-is-here/Diablo3_LDN_1.png differ diff --git a/site/content/entry/ldn-is-here/Diablo3_LDN_2.png b/site/content/entry/ldn-is-here/Diablo3_LDN_2.png new file mode 100644 index 00000000..21f049aa Binary files /dev/null and b/site/content/entry/ldn-is-here/Diablo3_LDN_2.png differ diff --git a/site/content/entry/ldn-is-here/PLG_1.png b/site/content/entry/ldn-is-here/PLG_1.png new file mode 100644 index 00000000..a0814d31 Binary files /dev/null and b/site/content/entry/ldn-is-here/PLG_1.png differ diff --git a/site/content/entry/ldn-is-here/PLG_2.png b/site/content/entry/ldn-is-here/PLG_2.png new file mode 100644 index 00000000..7c3dd3bc Binary files /dev/null and b/site/content/entry/ldn-is-here/PLG_2.png differ diff --git a/site/content/entry/ldn-is-here/PLG_3.png b/site/content/entry/ldn-is-here/PLG_3.png new file mode 100644 index 00000000..fa37ecd0 Binary files /dev/null and b/site/content/entry/ldn-is-here/PLG_3.png differ diff --git a/site/content/entry/ldn-is-here/PLG_4.png b/site/content/entry/ldn-is-here/PLG_4.png new file mode 100644 index 00000000..617c9119 Binary files /dev/null and b/site/content/entry/ldn-is-here/PLG_4.png differ diff --git a/site/content/entry/ldn-is-here/Switch_Conn.png b/site/content/entry/ldn-is-here/Switch_Conn.png new file mode 100644 index 00000000..eb6bf909 Binary files /dev/null and b/site/content/entry/ldn-is-here/Switch_Conn.png differ diff --git a/site/content/entry/ldn-is-here/acnh1.jpg b/site/content/entry/ldn-is-here/acnh1.jpg new file mode 100644 index 00000000..b78c3aab Binary files /dev/null and b/site/content/entry/ldn-is-here/acnh1.jpg differ diff --git a/site/content/entry/ldn-is-here/acnh2.png b/site/content/entry/ldn-is-here/acnh2.png new file mode 100644 index 00000000..d5bad46f Binary files /dev/null and b/site/content/entry/ldn-is-here/acnh2.png differ diff --git a/site/content/entry/ldn-is-here/arceustrade1.png b/site/content/entry/ldn-is-here/arceustrade1.png new file mode 100644 index 00000000..86fa15f7 Binary files /dev/null and b/site/content/entry/ldn-is-here/arceustrade1.png differ diff --git a/site/content/entry/ldn-is-here/arceustrade2.png b/site/content/entry/ldn-is-here/arceustrade2.png new file mode 100644 index 00000000..9ff99b35 Binary files /dev/null and b/site/content/entry/ldn-is-here/arceustrade2.png differ diff --git a/site/content/entry/ldn-is-here/arceustrade3.png b/site/content/entry/ldn-is-here/arceustrade3.png new file mode 100644 index 00000000..ef526e5a Binary files /dev/null and b/site/content/entry/ldn-is-here/arceustrade3.png differ diff --git a/site/content/entry/ldn-is-here/banner.png b/site/content/entry/ldn-is-here/banner.png new file mode 100644 index 00000000..86d3ab41 Binary files /dev/null and b/site/content/entry/ldn-is-here/banner.png differ diff --git a/site/content/entry/ldn-is-here/bdsp_1.png b/site/content/entry/ldn-is-here/bdsp_1.png new file mode 100644 index 00000000..fe33cb38 Binary files /dev/null and b/site/content/entry/ldn-is-here/bdsp_1.png differ diff --git a/site/content/entry/ldn-is-here/bdsp_2.png b/site/content/entry/ldn-is-here/bdsp_2.png new file mode 100644 index 00000000..f449d002 Binary files /dev/null and b/site/content/entry/ldn-is-here/bdsp_2.png differ diff --git a/site/content/entry/ldn-is-here/bdsp_3.png b/site/content/entry/ldn-is-here/bdsp_3.png new file mode 100644 index 00000000..8af8a16d Binary files /dev/null and b/site/content/entry/ldn-is-here/bdsp_3.png differ diff --git a/site/content/entry/ldn-is-here/bdsp_4.png b/site/content/entry/ldn-is-here/bdsp_4.png new file mode 100644 index 00000000..8e03e7e2 Binary files /dev/null and b/site/content/entry/ldn-is-here/bdsp_4.png differ diff --git a/site/content/entry/ldn-is-here/compat.png b/site/content/entry/ldn-is-here/compat.png new file mode 100644 index 00000000..37077b33 Binary files /dev/null and b/site/content/entry/ldn-is-here/compat.png differ diff --git a/site/content/entry/ldn-is-here/cowabunga.png b/site/content/entry/ldn-is-here/cowabunga.png new file mode 100644 index 00000000..9a4c4f68 Binary files /dev/null and b/site/content/entry/ldn-is-here/cowabunga.png differ diff --git a/site/content/entry/ldn-is-here/index.md b/site/content/entry/ldn-is-here/index.md new file mode 100644 index 00000000..cf86b837 --- /dev/null +++ b/site/content/entry/ldn-is-here/index.md @@ -0,0 +1,213 @@ ++++ +date = "2022-09-11T01:40:00+05:30" +title = "New Feature Release - Local Wireless Multiplayer" +author = "CaptV0rt3x" +forum = 622491 ++++ + +Hey there, yuz-ers! +The MOST awaited feature of yuzu, Local Wireless Multiplayer (LDN), is finally here! +So what are you waiting for? +Time to grab your friends and jump right in! + + + +## What is this? + +The Nintendo Switch console supports various multiplayer options. +Among these, the following options are useful when you want to play multiplayer with other Switch consoles. +{{< imgs "./multi.png| Table indicating yuzu's supported Switch multiplayer modes" >}} + +{{< imgs + "./Switch_Conn.png| Graphic demonstrating the key differences between the three wireless modes" +>}} + +

+The Switch's HorizonOS uses the LDN service for all Local Wireless communication.
+This is why Local Wireless Multiplayer can also be referred to as LDN Multiplayer. +

+ +Thanks to the incredible efforts of our developers [FearlessTobi](https://github.com/FearlessTobi) and [german77](https://github.com/german77), Local Wireless Multiplayer in yuzu is no longer a dream! +Special thanks to [spacemeowx2](https://github.com/spacemeowx2/) and [all the contributors](https://github.com/spacemeowx2/ldn_mitm/graphs/contributors) of the [ldn_mitm](https://github.com/spacemeowx2/ldn_mitm) project. +Without their extensive reverse-engineering of the `LDN` service, and the gracious [license exemption](https://github.com/spacemeowx2/ldn_mitm#licensing) for yuzu, this would not have been possible. + +
+
+

⚠️ Attention

+
+

+Currently, Local Wireless Multiplayer (LDN) is only supported between instances of yuzu.
+Multiplayer between yuzu and a real Switch or between yuzu and other emulators is not supported!
+

+ +## Where can you get it? + +The Local Wireless Multiplayer feature is now available in the latest version of the Early Access release. +We will be working to polish this feature and make this available to the Mainline builds soon. + +

+If you're using the yuzu installer, you'll automatically be updated to the latest build.
+If you're not using the yuzu installer, please download it from our Download page.
+
+We highly recommend using our installer to always stay up to date on both Mainline and Early Access builds. +

+ +## Local Wireless (LDN) Multiplayer + +yuzu's Local Wireless multiplayer (LDN) differs a little bit when compared to the Nintendo Switch. +The Switch console uses the `LDN` service to scan for other Switch consoles using Wi-Fi and connects all players. +Here, one player would act as the `host` and all others would connect to it. + +yuzu, on the other hand, employs virtual rooms to allow players to create and join game lobbies within said rooms. +Since this emulates the Switch's ability to do local wireless multiplayer, it does NOT rely on Nintendo’s servers and does NOT require a Nintendo Account. +While on a real Switch, you’d be limited to the people in your immediate vicinity, yuzu boasts a complex server/client infrastructure that forwards a game’s wireless communication across the internet. + +In order to connect with other players, players simply need to join the same room within yuzu’s Public Room Browser. +But, before opening the Public Room Browser, you will have to first configure your network interface in yuzu. + +You can find this setting under `System -> Network` and you need to select your internet connection from the drop-down as shown below. + +{{< imgs "./network_interface.png| yuzu's Network Interface configuration" >}} + +Out of the box, we provide you with an assortment of public rooms hosted across the world by yuzu. +Creating and joining rooms is extremely easy in yuzu and can be done in just a few clicks. + +{{< imgs "./room_browser.png| yuzu's Public Room Browser" >}} + +If you’re a [Verified User](https://community.citra-emu.org/signup), you can create your very own public room for people to join. +These public rooms can be seen by anyone using the Public Room Browser, but you can also password protect them to restrict users' access. +Verified Users will have their forum nickname and profile picture populated in the chatroom. +
+ +
+

⚠️ Reminder

+

+When hosting a room, remember to port forward or your friends won’t be able to connect! +

+ +If you prefer not to sign up for our platform, you aren’t out of luck! +Unverified Users still have the ability to create unlisted rooms, directly connect to unlisted rooms, and can join any yuzu hosted room. + +Do note that Verified Users will have their privileges revoked for violating any yuzu policies while in the room chatroom. +Please respect the `Preferred Game` listed in publicly hosted rooms, as even unrelated games will add to the bandwidth load. + +{{< imgs "./room_chat.png| Public Room chat and moderation features" >}} + +

+You can use these rooms for LAN mode games as well — instead of ZeroTier or Hamachi. +

+ +Please visit [our multiplayer guide](https://yuzu-emu.org/help/feature/multiplayer/) for further help with Hosting, Port Forwarding, Authentication, and Moderation of your publicly hosted rooms. + +## Development + +FearlessTobi began development by leveraging the existing virtual rooms infrastructure from [Citra](https://citra-emu.org). +Due to code similarities between yuzu and Citra, this tried-and-tested infrastructure easily became the foundation of this feature. + +Now that the virtual rooms were taken care of, Tobi moved onto the `LDN` service and its protocols. +Using the research and code from the [ldn_mitm](https://github.com/spacemeowx2/ldn_mitm) project, he implemented the necessary changes for yuzu instances to communicate with each other over these virtual rooms. +During this process, Tobi put an extra emphasis on ensuring no personal data, such as IP addresses, was leaked to the other room members. + +As the feature slowly matured, Tobi began utilizing yuzu's internal team of testers to verify the feature across several titles for compatibility and performance validation. + +With the multiple testing iterations, various bugs and glitches were found. +german77 relied on his own reverse-engineering and hardware tests to debug these issues, which then made it easy for the team to fix these various problems. +He also made several UI fixes to improve its usability and brought the codebase up to yuzu standards. + +## Compatibility + +Please note that as this is the initial release of the feature, some games may have some limitations. +We hope to slowly fix these over the course of the next few months. + +yuzu's Local Wireless Multiplayer was tested by our team of Testers and Support staff across a small set of popular titles. Their compatibility findings are as follows: + +{{< imgs "./compat.png| List of yuzu-tested multiplayer titles" >}} + + +## Screenshots + +{{< single-title-imgs + "Animal Crossing: New Horizons" + "./acnh1.jpg" + "./acnh2.png" +>}} + +{{< single-title-imgs + "Splatoon 2" + "./splatoon2_1.png" + "./splatoon2_3.png" + "./splatoon2_2.png" +>}} + +{{< single-title-imgs + "Mario Kart 8 Deluxe" + "./mk8d_1.png" + "./mk8d_2.png" +>}} + +{{< single-title-imgs + "Pokémon Legends: Arceus" + "./arceustrade1.png" + "./arceustrade2.png" + "./arceustrade3.png" +>}} + +{{< single-title-imgs + "Luigi's Mansion 3" + "./lm3_1.png" + "./lm3_2.png" +>}} + +{{< single-title-imgs + "Super Mario Smash Bros. Ultimate" + "./ssbu_ldn_2.png" + "./ssbu_ldn_3.png" + "./ssbu_ldn_1.png" +>}} + +{{< imgs + "./PLG_1.png|" + "./PLG_2.png|" +>}} + +{{< single-title-imgs + "Pokémon Let's Go: Pikachu/Eevee" + "./PLG_3.png" + "./PLG_4.png" +>}} + +{{< imgs + "./bdsp_1.png|" + "./bdsp_2.png|" +>}} + +{{< single-title-imgs + "Pokémon Brilliant Diamond/Shining Pearl" + "./bdsp_3.png" + "./bdsp_4.png" +>}} + +{{< single-title-imgs + "Diablo III : Eternal Collection" + "./Diablo3_LDN_1.png" + "./Diablo3_LDN_2.png" +>}} + +{{< imgs + "./cowabunga.png| Teenage Mutant Ninja Turtles: The Cowabunga Collection" + "./monster_hunter_ultimate.png| Monster Hunter Generations Ultimate" + "./kirby_dream_buffet.png| Kirby's Dream Buffet" +>}} + + +## Fin + +As with any new update, we've tested the feature internally, but our efforts can't compare to the community as a whole. +We could have easily missed an edge case or some weird bug or issue among the vast collection of games with Local Wireless. + +Test any and all games! Poke, prod, and play! Please break this release if you can! With your help, we can make yuzu the best it can be. +Please reach out to us on our [Discord](https://discord.gg/u77vRWY) and report any bugs you find, so that we can quickly address them. + +That's all we have for now, until next time! Happy emulating!

+ +{{< article-end >}} diff --git a/site/content/entry/ldn-is-here/kirby_dream_buffet.png b/site/content/entry/ldn-is-here/kirby_dream_buffet.png new file mode 100644 index 00000000..82c61be4 Binary files /dev/null and b/site/content/entry/ldn-is-here/kirby_dream_buffet.png differ diff --git a/site/content/entry/ldn-is-here/lm3_1.png b/site/content/entry/ldn-is-here/lm3_1.png new file mode 100644 index 00000000..359a08bb Binary files /dev/null and b/site/content/entry/ldn-is-here/lm3_1.png differ diff --git a/site/content/entry/ldn-is-here/lm3_2.png b/site/content/entry/ldn-is-here/lm3_2.png new file mode 100644 index 00000000..26071b95 Binary files /dev/null and b/site/content/entry/ldn-is-here/lm3_2.png differ diff --git a/site/content/entry/ldn-is-here/mk8d_1.png b/site/content/entry/ldn-is-here/mk8d_1.png new file mode 100644 index 00000000..0ea1b910 Binary files /dev/null and b/site/content/entry/ldn-is-here/mk8d_1.png differ diff --git a/site/content/entry/ldn-is-here/mk8d_2.png b/site/content/entry/ldn-is-here/mk8d_2.png new file mode 100644 index 00000000..8cf5189e Binary files /dev/null and b/site/content/entry/ldn-is-here/mk8d_2.png differ diff --git a/site/content/entry/ldn-is-here/monster_hunter_ultimate.png b/site/content/entry/ldn-is-here/monster_hunter_ultimate.png new file mode 100644 index 00000000..53b85b05 Binary files /dev/null and b/site/content/entry/ldn-is-here/monster_hunter_ultimate.png differ diff --git a/site/content/entry/ldn-is-here/multi.png b/site/content/entry/ldn-is-here/multi.png new file mode 100644 index 00000000..fd37470c Binary files /dev/null and b/site/content/entry/ldn-is-here/multi.png differ diff --git a/site/content/entry/ldn-is-here/network_interface.png b/site/content/entry/ldn-is-here/network_interface.png new file mode 100644 index 00000000..c0d890db Binary files /dev/null and b/site/content/entry/ldn-is-here/network_interface.png differ diff --git a/site/content/entry/ldn-is-here/room_browser.png b/site/content/entry/ldn-is-here/room_browser.png new file mode 100644 index 00000000..4d3de991 Binary files /dev/null and b/site/content/entry/ldn-is-here/room_browser.png differ diff --git a/site/content/entry/ldn-is-here/room_chat.png b/site/content/entry/ldn-is-here/room_chat.png new file mode 100644 index 00000000..381f9588 Binary files /dev/null and b/site/content/entry/ldn-is-here/room_chat.png differ diff --git a/site/content/entry/ldn-is-here/splatoon2_1.png b/site/content/entry/ldn-is-here/splatoon2_1.png new file mode 100644 index 00000000..da7975f0 Binary files /dev/null and b/site/content/entry/ldn-is-here/splatoon2_1.png differ diff --git a/site/content/entry/ldn-is-here/splatoon2_2.png b/site/content/entry/ldn-is-here/splatoon2_2.png new file mode 100644 index 00000000..6ae6f5ef Binary files /dev/null and b/site/content/entry/ldn-is-here/splatoon2_2.png differ diff --git a/site/content/entry/ldn-is-here/splatoon2_3.png b/site/content/entry/ldn-is-here/splatoon2_3.png new file mode 100644 index 00000000..26f3c815 Binary files /dev/null and b/site/content/entry/ldn-is-here/splatoon2_3.png differ diff --git a/site/content/entry/ldn-is-here/ssbu_ldn_1.png b/site/content/entry/ldn-is-here/ssbu_ldn_1.png new file mode 100644 index 00000000..4025a446 Binary files /dev/null and b/site/content/entry/ldn-is-here/ssbu_ldn_1.png differ diff --git a/site/content/entry/ldn-is-here/ssbu_ldn_2.png b/site/content/entry/ldn-is-here/ssbu_ldn_2.png new file mode 100644 index 00000000..f9f1adaf Binary files /dev/null and b/site/content/entry/ldn-is-here/ssbu_ldn_2.png differ diff --git a/site/content/entry/ldn-is-here/ssbu_ldn_3.png b/site/content/entry/ldn-is-here/ssbu_ldn_3.png new file mode 100644 index 00000000..81828b7e Binary files /dev/null and b/site/content/entry/ldn-is-here/ssbu_ldn_3.png differ diff --git a/site/content/entry/ldn-is-here/summary.png b/site/content/entry/ldn-is-here/summary.png new file mode 100644 index 00000000..0e015a64 Binary files /dev/null and b/site/content/entry/ldn-is-here/summary.png differ