Hi everyone.
I've been using Dolphin with a friend for quite some time now with Netplay, and it works like a charm. However, when 3 Players gets involved i's another story. We Are using GIT600 and also tested everything with GIT619.
I've created this topic not only to report the performance, but to see if somethings can be done or not in future development. I will try to be as much explicit and precise as i can with what i would like to know if such improvement can be or not be done, putting on BOLD the questions i would like to get answered if you don't mind.
# Compressing Data in order to allow more players with less bandwith
Let me start with a 2 Players game, Sonic Adventure 2 Battle. It works like a charm in dual core mode, but ONLY in racing stages. Hunting emerald stages requires to use Single Core in order to get synced. We can play perfectly fine with a PAD BUFFER of 3 for hours BTW. We can run it @ Full speed without an itch, even on Single Core.
Now, things get ugly when we add more players, specially on slower internets.
We decided to dust out or Game Cube copies of Sonic Riders, but to prevent possible errors, i grabbed mine and passed to my other friends (we DO have the original game, im not lying seriously!) in order to prevent desyncs and somethings. We did all according to book, save games and all.
Dolphin pinged us and said a minimum of 0.95 ~ 1.1 PAD for 60 FPS was required, so i inserted 3 (like always). The problem starts now.
Here are our internet connections Speeds and pings with each other (we are from Portugal, and unfortunately we don't live very close so online gaming is our best option):
Me:
Download: 2 Mbps
Upload: 864 Kbps
Ping to them: 24 ms
Friend 1:
Download: 10 Mbps
Upload: 1024 Kbps
Ping to me: 24 ms
Friend 2:
Download: 2 Mbps
Upload: 512 Kbps
Ping to me: 24 ms
When we tried to play the game, we noticed that the game simply would not stop "hanging", not "fatal hang" hang, but it stooped like it's waiting for the data bytes to arrive and then proceed. I changed the pad buffer to 20, 100 and 200 no help. My friend with the faster upload upload did the server this time, and still no Go. After closer looking, i found that dolphin needs +/- 20 KBps per controller.
Question 1: Now, there is one thing i can't understand on dolphin: While playing with 3 or 4 Players, how is the connection done?
Player 2 and 3 send the Data to me (server), and I send to them? Meaning, 60 KBps to them and 40 KBps income (20 from wach of them)? Or do Player 2 and 3 send their data to each other, and i send mine to them and receive theirs too? Meaning, 40 KBps upload and Download? in short, how does Dolphin really sync all 3 / 4 Players?
Question 2: Now, where i'm trying to get is: I think the data connection files are "too big" for the "nowadays" Internet Speed Connections. Is it possible to make them smaller using on the fly compression and decompression? Like, in order to archive, for example, per player upload 10 or less KBps?
This way it would be possible to play without crazy lag due to bandwidth problem, which if i'm not mistaken was being caused by the lower upload of my #2 Friend.
# Problems with Syncing COM Players In Game (possible Random Clock / RAM sync issue?).
Now, in Sonic Riders, while playing with 2 or 3 Players, for those who played the game know there are some COM Players in the game. I tested Playing Two Players with my Friend #1, using single core, Disabling Idle Skipping, and all the remaining settings the same, and we got a problem with Desynced COM Players. We have the same exact memory card btw.
Question 3: The problem is, when we get in game, the Com Players get desyned. Meaning, in my game they are for example, Shadow, Sonic, Rouge, and in His game they are Eggman, Jet and Sorm for example, this using Idle Skipping ON and / or Dual Core ON. If we use Single Core without Idle Skipping, we get the same characters In Game, but they behave differently. For example, during the start count down, my Jet goes forward but on his computer he stays on his place or does something differently. What could be causing this? Probably a random "key" in the game that is not being correctly synced?
We Also tried with Single Core - Idle Skipping Disabled, and activated the Per Game options "Enable MMU", "Enable BAT" and "Accurate VBeam Emulation", but the Com players would still react differently in each others computer.
What could be happening in Dolphins cycles in order for this to happen?
-----
Thank you very much for the time taken to read this post. Any answerers will be appreciated, and i hope my testing was usefull.
If you need any more data, just ask.
I've been using Dolphin with a friend for quite some time now with Netplay, and it works like a charm. However, when 3 Players gets involved i's another story. We Are using GIT600 and also tested everything with GIT619.
I've created this topic not only to report the performance, but to see if somethings can be done or not in future development. I will try to be as much explicit and precise as i can with what i would like to know if such improvement can be or not be done, putting on BOLD the questions i would like to get answered if you don't mind.
# Compressing Data in order to allow more players with less bandwith
Let me start with a 2 Players game, Sonic Adventure 2 Battle. It works like a charm in dual core mode, but ONLY in racing stages. Hunting emerald stages requires to use Single Core in order to get synced. We can play perfectly fine with a PAD BUFFER of 3 for hours BTW. We can run it @ Full speed without an itch, even on Single Core.
Now, things get ugly when we add more players, specially on slower internets.
We decided to dust out or Game Cube copies of Sonic Riders, but to prevent possible errors, i grabbed mine and passed to my other friends (we DO have the original game, im not lying seriously!) in order to prevent desyncs and somethings. We did all according to book, save games and all.
Dolphin pinged us and said a minimum of 0.95 ~ 1.1 PAD for 60 FPS was required, so i inserted 3 (like always). The problem starts now.
Here are our internet connections Speeds and pings with each other (we are from Portugal, and unfortunately we don't live very close so online gaming is our best option):
Me:
Download: 2 Mbps
Upload: 864 Kbps
Ping to them: 24 ms
Friend 1:
Download: 10 Mbps
Upload: 1024 Kbps
Ping to me: 24 ms
Friend 2:
Download: 2 Mbps
Upload: 512 Kbps
Ping to me: 24 ms
When we tried to play the game, we noticed that the game simply would not stop "hanging", not "fatal hang" hang, but it stooped like it's waiting for the data bytes to arrive and then proceed. I changed the pad buffer to 20, 100 and 200 no help. My friend with the faster upload upload did the server this time, and still no Go. After closer looking, i found that dolphin needs +/- 20 KBps per controller.
Question 1: Now, there is one thing i can't understand on dolphin: While playing with 3 or 4 Players, how is the connection done?
Player 2 and 3 send the Data to me (server), and I send to them? Meaning, 60 KBps to them and 40 KBps income (20 from wach of them)? Or do Player 2 and 3 send their data to each other, and i send mine to them and receive theirs too? Meaning, 40 KBps upload and Download? in short, how does Dolphin really sync all 3 / 4 Players?
Question 2: Now, where i'm trying to get is: I think the data connection files are "too big" for the "nowadays" Internet Speed Connections. Is it possible to make them smaller using on the fly compression and decompression? Like, in order to archive, for example, per player upload 10 or less KBps?
This way it would be possible to play without crazy lag due to bandwidth problem, which if i'm not mistaken was being caused by the lower upload of my #2 Friend.
# Problems with Syncing COM Players In Game (possible Random Clock / RAM sync issue?).
Now, in Sonic Riders, while playing with 2 or 3 Players, for those who played the game know there are some COM Players in the game. I tested Playing Two Players with my Friend #1, using single core, Disabling Idle Skipping, and all the remaining settings the same, and we got a problem with Desynced COM Players. We have the same exact memory card btw.
Question 3: The problem is, when we get in game, the Com Players get desyned. Meaning, in my game they are for example, Shadow, Sonic, Rouge, and in His game they are Eggman, Jet and Sorm for example, this using Idle Skipping ON and / or Dual Core ON. If we use Single Core without Idle Skipping, we get the same characters In Game, but they behave differently. For example, during the start count down, my Jet goes forward but on his computer he stays on his place or does something differently. What could be causing this? Probably a random "key" in the game that is not being correctly synced?
We Also tried with Single Core - Idle Skipping Disabled, and activated the Per Game options "Enable MMU", "Enable BAT" and "Accurate VBeam Emulation", but the Com players would still react differently in each others computer.
What could be happening in Dolphins cycles in order for this to happen?
-----
Thank you very much for the time taken to read this post. Any answerers will be appreciated, and i hope my testing was usefull.
If you need any more data, just ask.
CPU: Intel i7 2600 @ 4.6Ghz 1.295V | Motherboard: ASRock Z77 Extreme6 | RAM: 8 GB DDR3 1600Mhz CL7 | GPU: Ati 5870 1 GB + Artic Cooling Xtreme III | HD: 5TB (500GB x2 Raid0 + 2x2TB)