Normal people spend their Christmas with family, but we had a different idea.
This is a demonstration of an upcoming mod to New Super Mario Bros. Wii which enables online multiplayer in the game, codename NetSlug. Not to be confused with Dolphin Netplay, this uses real consoles to play the game's local multiplayer over the Internet! This is also not to be confused with the Nintendo WFC shutdown, that was already fixed a while ago :P This mod/hack was created by me (MrBean35000vr) and my brother, Chadderz!
Furthermore, this mod is not designed to be limited solely to New Super Mario Bros. Wii! It is designed to be a generic patching engine, which will hopefully work with multiple games that have local multiplayer available on them. The focus of this demo is NSMBW, though, just because the goal was originally to add it to this game; then we considered making it compatible with more!
It works by sending a long stream of inputs over the Internet; button presses on a controller. An assigned host dictates RNG (random number generator, random elements in games like which item you get from a box in MKW for instance), and synchronises level loads so that everyone plays the game at the same speed. It also has an adjustable lag threshold, to allow smoother gameplay with people far away with you, at the cost of slight input delay.
Many games will likely need specific patches in order to make them work properly (not much, usually RNG since all games do it differently), but this all definitely lays strong foundations and does most of the hard work for you.
There is no release as of quite yet; there are still multiple issues. To name a few, accelerometers are not transferred correctly, so things like shaking the Wiimote or tilting do not necessarily work correctly. (An example is 5:11 in, Chadderz brings down his controller quickly and on the Wii, Mario did a spin jump, and on the Wii U, he did not). Also, picking up a star powerup instantly causes the characters to desync, we assume due to more RNG that we're not handling correctly. Furthermore, at the moment, it only supports two consoles, and we'd ideally like to be able to support many more than that, for obvious reasons! There's also a few other things, like Mii transfer/blocking, save data sync, etc., that are not present, but ideally would be in the completed system. (For those who do not know what a "desync" is, it's where the two Wiis start to do different things, despite having the same inputs. When that happens, the game stops making sense as both players will not be seeing the same thing and the problem doesn't usually fix itself).
When more fixes are implemented (or even just completely stable on New Super Mario Bros. Wii), we plan to release the project so that others can play with or contribute to it. We're hoping everyone will enjoy themselves when the release is available! Running it will simply require a Wii or Wii U that is connected to the Internet (one per player), and a Homebrew Channel. Some basic knowledge of IP addresses and port forwarding may be handy if you intend to be a host. It's possible we may have some kind of matchup service down the line, but for the first release, it will certainly be limited to direct connections only. You will also not be able to play games with people who have a different region of game to you, or different version of game (in some cases. It may be possible to run some games region-free, and we will be investigating which ones will be compatible later!)
Early source code is available here for developers and testers. It's not pretty, but it's here if you know what you're doing: https://github.com/MrBean35000vr/netslug-wii
As for GCN, Wiiware and Virtual Console titles... maybe we can have those working too ;)
Finally, if you want to see this in action properly, over the Internet with someone not in the room, I have a YouTube video available here: https://www.youtube.com/watch?v=t6BjeBfUheQ
With that in mind, please enjoy the video, and I hope everyone has had a good Christmas. I know I sure did :P