Dolphin, the GameCube and Wii emulator - Forums

Full Version: Nintendo WFC will shut down in May 2014
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3 4 5 6 7 8
Nope. Mario Party works just fine. Melee and Brawl both have random elements and they are synced.
tueidj: Netplay supports every game that has local multiplayer now. Random Elements do not desync it, and there are branches that even support dualcore in many (if not most?) games. It's a very robust feature now, and thanks to New-AX-HLE, a lot of games can be played on netplay with zero difficulties. Even though New Super Mario Bros. Wii has tons of random elements, Me and one of my friends were able to test it no problem when work was done on Wiimote Netplay.

Also, Super Smash Bros. Melee/Brawl with items and AI works fine. I don't understand where you got the idea that netplay could desync. I used to have a video of a full Mario Party 7 game with 4 players until Youtube decided I should only have one video channel.

Netplay != Wifi, sure, but at times it's better and more robust. If possible, finding a way to make our own wifi servers would be heavily preferrable in the long run, but I don't know how feasible that would be. Here's to hoping that someone can do it.
It works fine as long as both machines can run at full speed and/or the game in question uses a basic PRNG (which permutates a seed each time a random number is generated). For games that use the PPC's timebase for entropy (or as soon as a machine experiences a framerate dip), it's extremely fragile and will actually become worse if/when hardware emulation improves (i.e. asynchronous processing).
No. You do not need to be running it full speed, it doesn't matter about the PRNG or anything. Every Single Game I tested works over netplay. I've had 30 second freezes (due to network) and the game will still be synced, as well as 500 ms ping using a python script to purposefully drop packets. As well, my laptop can't play some games full speed, but they still sync. It's stable enough that I can play a long winded RPG with friends like Tales of Symphonia without issues.
As far as i know, with the proper settings, dolphin is 100% deterministic. It doesn't matter if it runs at 60 fps, 5000 fps, or 1 frame per year, nor does any rng matter. I also know for a fact that when playing back movies, the ppc cycle count will always be exactly the same for each frame.

There are of course times still where playing over wifi would be preferred though, such as, as tueidj mentioned, where split screen would be undesired, or in case where you can have more than 4 players that way.
Yeah, i wasn't arguing that. Wifi has definite advantages in some games, like Mario Kart, and many other games that don't have as good local multiplayer. Brawl is way better on netplay though, because it's lockstep anyway on wifi and the lag is way higher.

I should mention that I forgot about Wii Motion Plus and special input (GBA, Bongos, etc.) GameCube games, so, not all games work. Apologies.
I can make a sample program to prove that it's definitely not deterministic, if you like. But applying simple common sense really should make it obvious; if you've got 2 copies of the same program being fed the same inputs but running at different speeds, they are in no way guaranteed to act the same. Otherwise go read the comments at the beginning of SystemTimers.cpp that explicitly states, "These update frequencies are determined by the passage of frames. So if a game runs slow, on a slow computer for example, these updates will occur less frequently." Hence a slow computer will have a coarser granularity timebase than a fast computer, even though the actual values may appear to stay in sync.
I'm not sure, but if you're using Dolphin netplay with a slow machine and a fast machine, the fast machine will run slower to (try to) keep in sync with the slow one, doesn't it?
It's not about them staying in sync with each other, but how often they are individually updating their timers. Anyway this conversation got boring a long time ago. Let's pretend we're the NSA and take a peek inside some SSL traffic.

The first part of going online for most games involves logging into WFC. A new SSL connection is made to "naswii.nintendowifi.net", using the default root certificate authority (Nintendo, of course) to verify the remote certificate and using the wii's default client certificate to identify itself to the remote. After the handshake, the wii sends a request that looks something like this:

Quote:POST /ac HTTP/1.1
Host: naswii.nintendowifi.net
User-Agent: RVL SDK/1.0
Host: naswii.nintendowifi.net
HTTP_X_GAMECD: SZAP
Content-Type: application/x-www-form-urlencoded
Content-Length: 283

action=bG9naW4%2A&gsbrcd=&userid=MjkzMDE4MTg4Mzc3MQ%2A%2A&ingamesn=&sdkver=MDAxMDAw&gamecd=U1pBUA%2A%2A&makercd=Njk&2A&unitcd=MQ&2A&2A&macadr=MDAxZGJjNzRhMjFl&lang=MDE%2A&devtim=MTQwMzAxMDEwNjUw&confmethod=MDA%2A&csnum=TEFIMTAzNzM4NDM1&cfc=Mjk4MTkwOTEwMjUxODIwNA%2A%2A&region=MDI%2A
So there's a lot of crap in there... some of it related to the console, some related to the game (SZAP = Rock Band 2, makercd=69=Electronic Arts) but the important thing is the "action"; decode it from base64 and it's "login". Here's what naswii responds with:
Quote:HTTP/1.1 200 OK
NODE: wifiappw3
Content-Type: text/plain
Content-Length: 235
Date: Fri, 28 Feb 2014 14:05:12 GMT
Server: Nintendo Wii (http)

challenge=RVhQSzBXU0c*&locator=Z2FtZXNweS5jb20*&retry=MA**&returncd=MDAx&token=TkRTTDVtdnhCMDVpSHVVaVFEaVNEU1ZJa3ZLRlZMVlVNZU5RUOdoQjIxQWJGamdrM2tzajVPREJLckFMQUNIeXZnbkh2QjZrMXhUZmFZZGd3c1pYcnhkaGc9PQ**&datetime=MjAxNDAyMjgxNDA1MTI*
So we got a challenge ("EXPK0WSG"), a locator URL? ("gamespy.com"), a returncd/return code (001) and a token (big long string that looks like encoded binary data). Fun. So that SSL session gets closed, then the game creates a new one using the same parameters and sends this:
Quote:POST /ac HTTP/1.1
Host: naswii.nintendowifi.net
User-Agent: RVL SDK/1.0
Host: naswii.nintendowifi.net
HTTP_X_GAMECD: SZAP
Content-Type: application/x-www-form-urlencoded
Content-Length: 268

action=c3ZjbG9j&svc=&userid=MjkzMDE4MTg4MzcMQ%2A%2A&sdkver=MDAxMDAw&gamecd=U1pBUA%2A%2A&makercd=Njk%2A&unitcd=MQ%2A%2A&macadr=MDAxZGJjNzRhMjFl&lang=MDE%2A&devtime=MTQwMzAxMDEwNzAx&confmethod=MDA%2A&csnum=TEFIMTAzNzM4NDM1&cfc=Mjk4MTkwOTEwMjUxODIwNA%2A%2A&region=MDI%2A
Pretty much the same as before, except this time the action is "svcloc". Which gets this reply:
Quote:HTTP/1.1 200 OK
NODE: wifiappw2
Content-Type: text/plain
Content-Length: 219
Date: Fri, 28 Feb 2014 14:05:22 GMT
Server: Nintendo Wii (http)

retry=MA**&returncd=MDA3&servicetoken=TXJ1bkRsVWQ4czJZT2RVaEJjNy84dGdnK1BUbWhteEdjSGZpQ2lScWpCL3hwSnNENlZXd0VndGdOam9LZW1ad2ZCd21nckoxUlR4YlI2M0UzR3VubGc9PQ**&statusdata=WQ**&svchost=bi9h&datetime=MjAxNDAyMjgxNDA1MMjI*
So this time there's a return code of 007, a service token, statusdata="Y" and svchost="n/a". Nothing real intuitive.
After that the game goes off and talks to its own servers, no other WFC activity seems to occur.
So, in 3rd party games Nintendo WFC is needed only to authenticate? This means that 3rd party games may stop working just because they can't login with Nintendo WFC?
Pages: 1 2 3 4 5 6 7 8