yuzu
yuzu copied to clipboard
ldn: Implement "local wireless" networked multiplayer
This is the last and final part of a series of PRs aiming to bring multiplayer functionality to yuzu.
It fully implements the LDN service, making it possible to use games local wireless features in order to play online with other yuzu users. For more information on how to use it, please take a look at our blog post.
First, a big thanks to the ldn_mitm project and all of its contributors. Without it, and the gracious license exemption, all of this wouldn’t have been possible. And of course, thanks to everyone who helped with this, especially @german77 and all of our testers.
As for the functionality of this feature, the code in lan_discovery is used to find and connect to other players in the yuzu room. Afterwards data is transferred via the BSD service and our socket proxy (already implemented in part 2). For all of this data transfer, the Enet library is used.
This feature has been tested and confirmed to be working fine in a big number of commercial games. The only games where major issues were found are:
- Super Mario Maker 2
- Mario Golf Super Rush
- Dragon Ball Fighterz
Please be aware, that right now only yuzu <-> yuzu configurations are supported and that there might be some issues remaining with the feature. Also please ensure you have a stable internet connection because some games are very sensitive to high latencies.
Closes #4079 Closes #7962
I apologize in advance if this is the wrong place to provide feedback on the LDN feature.
After playing around with the new LDN feature, there are some thoughts I want to provide about the LDN experience.
- There are instances people would stay in the public group, even though they are not playing anything/different game. This becomes a big issue when a room is pretty much filled. I believe there should be a auto-kick feature when the room has 14 out of 16 people or more.
- 30 seconds if the person is playing a different game
- 2 minutes if the person is not playing anything.
- If possible, it would be nice to be able to access the last 30 minutes of a conversation when someone joins. It's kind of annoying that you have to repeat what you said to someone who just (re)joined.
- This might be asking too much, but it would be really nice if the chat was implemented as a overlay instead of a window (when full screen). It's very jarring to have to move a window around when full screen.
Just did an hour testing myself on MK8D, and I'm impressed. Wireless Mode was a bit unstable, we found LAN mode to be the better experience overall as it was more stable and supported 12 people (wireless is only 8). The only downside is that LAN mode is hidden, you have to press L+R+Left Stick on the main menu to access it and lots of people don't know about it. What would be great as an automatic message in chat every 1 minute or so for games like MK8D that reminds users how to use LAN mode and why they should use it.
Another feature that would go a long way for some users is to enable the optional usage of a translator (either DeepL or Google, they both have APIs available) so that they can both send and recieve messages in their own language. In my testing, a French person joined, and no one speak very good French so they had a difficult experience connecting to us, again due to the hidden nature of LAN mode. This might be a big ask and I don't expect it to come anytime soon but I think it will make the service a lot more accesible to the many non-English speakers.
Finally, piggybacking on what @CuriousTommy said before me, a chat overlay would be really, really nice. Having a small window open in a corner can really obscure your vision, especially in menus when an option would be hidden underneath.
Overall however, this is really good. I'm definitely going to be spending a lot of time on this, especially as my Switch is banned :(
found another not functioning game. game name: GROOVE COASTER WAI WAI PARTY!!!!
game crashes socket error when i start match.
log: