SFV Netcode Decoded

SFV Netcode Decoded

If you are confused on what is happening or what this actually means read below: With all of the Street Fighter V netcode talk recently I finally decided to do some testing to actually find out what is going on with one sided rollback, desyncs and frame drops. I setup a PS4 and PC and used some software to test frame drops and network latency between the two. The video shows what I found. Hopefully shining some light on this may help in getting the netcode adjusted or at least some more options added so we can better control our matchmaking to avoid laggy matches. This is video is not showing that PS4 is worse or better than PC or that cross play matters. It's showing that frame drops on one side do not effect the others game at all. Only the latency does. In the remaining part of the video I applied 150ms of lag to the PC from the PS4 and the result was the game artificially delayed the PC game by 7 frames at the start of the next round. This artificial delay is applied by the netcode itself and is determined by your connection to your opponent ONLY at the start of the round. I'll use an example to explain further what this actually means. For example at the start of Round 1 you might have pinged your opponent at 40ms so your game wasn't too laggy, then round 2 you got 30ms so it got a little better, but then at the start of round 3 you got a ping spike at 100ms and now your opponents game is slowed down significantly compared to yours. The result is you are now seeing fast forwarded animations (teleports) from your opponent that aren't caused by the lag itself but are actually caused by your opponents game being delayed do to the netcode trying to compensate for one sided rollback. The biggest issue I'm seeing from this netcode isn't that it's rollback based vs input delay based (that's working as intended), it's that they tried to compensate for it by slowing down someone else's game but only at the start of the round. This means as your connection fluctuates it gets even more unstable if delay was applied. This was done to help compensate for one sided rollback, but it can only go so far. The issue I'm seeing is that if you are lagging to your opponent like in the example above (be it your fault or theirs i.e. wifi, ping spike, network congestion) then their game will be delayed to yours by a few frames to give it more time to receive your lagging data. However if the latency becomes more stable or clears up then your game becomes more clear to them while theirs still reminds choppy on your side because your receiving their data a few frames late due to the artificial delay. This is causing additional tele-porting on your side to compensate for one sided rollback on their side because the netcode is assuming the 100ms ping spike is your stable connection. This type of netcode works great in theory if connections are 100% stable, but as we all know they are not. I understand now what the netcoder was trying to do here and it works for keeping your inputs synced across games without increasing input delay, but as a community we have to decide whether we went accurate input times or a mix of delay based and rollback. There is no perfect solution when it comes to lag. Each has their advantage and disadvantage. So far I like roll back over input delay based, but I feel like a mix (like GGPO uses) allows you to play people a little bit farther away. Whereas SFV netcode only allows you to play someone about 50ms or 750-1000 miles away at most before it just gets too teleporty looking to play accurately. The threshold seems to be 3 frames and that's about 50 ms, so we should try to only play people within that range. The problem I'm finding is SFV servers are constantly pinging people way outside this range because 5 bars extends to 100ms. It may be as simple as Capcom just adjusting the matchmaking filters to dramatically help reduce rollback issues, but it will not get rid of them entirely. If people still have bad line quality, congestion or use wifi there will be ping spikes and your game will skip. For those still convinced cross play is broken. When I was on PC I swore it was worse playing against PS4 players. I even did a 20 match test on each and found PC to be far worse to play against PS4 players so I was certain some cross play issues were to blame, but then I made this video and ran more tests and found it didn't matter which console you were on. (I put hours into trying to find some sort of desync running from PS4 to PC and got nothing although it is still possible there is something there I can't replicate without real world conditions). What I found is the underlying issue affecting our games is always the lag itself. NOTE: To better view what is happening between the two games you can watch it frame by frame by pressing pause and then using "," to move back one frame and "." to move forward one frame.