Guilty Gear Strive

Guilty Gear -Strive- has been out for about a month now, and its new rollback netcode has many calling it the new gold standard for fighting games.

Many, but not everyone. Daisuke Ishiwatari’s post-apocalyptic, political-intrigue, heavy-metal fanfiction story might not be easy to follow, but the game’s netcode is similarly baffling. I think it’s safe to say that a lot of people don’t quite get what’s going on here. Let me do my best to explain.

There are understandable worries when you first jump into an online match. Here you are, ready punch someone to the sound of some sick guitar riffs and then, GASP, numbers! You have rollback frames in the upper right and milliseconds of delay in the upper left. Even on the best of connections, these numbers go up and down over the course of a fight.

“How can this be stable?” the internet reactionary cries in entirely predictable anger. “You said Dragon Ball FighterZ was unplayable at four frames of delay, and now I’m wobbling back and forth between much higher numbers! This scares and angers me! Who invited math to a fist fight?”

Well, I’m here to tell you to calm down. Rock out to “Smell of the Game” for a bit while I tell you what these numbers actually represent.

Guilty Gear Strive

If you play a lot of fighting games online, you’ve undoubtedly encountered delay-based netcode. Every fighting game has to somehow keep in synch when players are connected over the internet; both players have to see the same thing or else the game doesn’t work. Delay-based netcode handles this by introducing delay between the point at which you press a button and the point at which your character does something. You press a button, the game waits until that button press is received by the other player, then it communicates back to you that the message has been sent loud and clear. Finally, your character does something. This is a vast oversimplification, but bear with me.

When a game says there are four frames of delay during an online match, that means that when you press a button, you can expect the game to wait four frames before something happens. One frame in a 60FPS game is 16.6666666… (you get the idea) milliseconds, so a four-frame delay means there are about 67 milliseconds between the button press and the corresponding action.

Guilty Gear Strive

And if these numbers don’t already make it clear, let me just simplify it by saying that four frames of delay sucks. Some moves in fighting games come out faster than that. In Guilty Gear -Strive-, Sol’s 5K (that’s standing kick, if you don’t know numpad notation) comes out in three frames, while all throws come out in two. There’s quite literally no way you can react to something like this with four frames of delay (of course, these moves are purposefully hard to react to, but delays can complicate that).

On average, it takes the human brain approximately 250 milliseconds to react to visual stimulus when untrained (and that can be reduced to about 80 milliseconds when trained). So human error can account for anywhere from 2-15 frames of delay.

On top of that, some consoles have baked-in controller input delay as well. The PS4 and PS5 versions of Strive have an estimated 4-6 frames of natural controller-based input delay, according to tests by input-lag tester Nigel ‘Noodalls’ Woodall.

Now you can see how bad connections can make even notoriously slow moves like Potemkin’s 5H “Slap Chop” can’t be reacted to in an online environment.

Guilty Gear Strive

Even worse, the amount of delay you experience fluctuates up and down based on how stable your internet connection is — meaning some moves can be reacted to at one point and not reacted to at others. If your delay spikes up to eight frames right before an attack hits… well, it might be the only legitimate time you can claim, “I was blocking that!” and technically be right!

So now that we got a lesson on why delay-based netcode sucks, let’s talk about rollback netcode, the technology that Strive actually uses (which has been used before in games such as Skullgirls and Killer Instinct).

Delay-based netcode synchs games up by waiting. Rollback netcode doesn’t wait. Everything on screen happens instantaneously. How?

It does this by letting both games run locally and comparing them frame by frame. So you press a button, your character immediately attacks, the data gets sent through the internet, and then on the other side the opponent’s game is synched up and shows you attacking.

This can cause minor desynchs though. Say you attack and your opponent blocks you, but your attack hits before the “blocking” information gets to your computer. What happens?

This is where the term “rollback” comes from. For a split second, the game shows that you hit your opponent. However, the next frame is “rolled back” to the correct state and you are shown blocking as normal. Since this happens so quickly, most people never notice it. Button presses seem to happen instantaneously, and you never have to worry about all the clunky corrections that are happening in the background.

Once again, this is a vast oversimplification, but continue to bear with me.

Guilty Gear Strive

And now we get to the point of this article: rollback frames. On the top of each online match in Guilty Gear -Strive-, it tells you how many rollback frames you are encountering. Arc System Works didn’t do a fantastic job explaining what these are, since they used terminology that hasn’t been commonly used before. People are understandably confused; they see that number fluctuating up and down and say, “This is just as bad as any other online game!”

No. No, it’s not.

Usually that little number at the top of the screen is telling you how many frames of delay you are experiencing, so if it fluctuates up and down, so will the responsiveness of the game. In this case, however, it’s actually telling you the average amount of frames the game has to look back in time, if (and the if is important here) it has to correct things. Low is still good, but high isn’t nearly as terrible as it might appear to be.

Let’s take the example of Sol’s absolutely broken 5K (I have thoughts about this game’s balance, but this isn’t the place to air those grievances). It starts up in three frames, so, for the most part, you can’t react to it anyway. But that’s okay, because skilled players usually react to their opponent’s behavior, not just character animations. If your opponent starts running toward you after you get knocked down, the fighting-game part of your brain might go, “Crap, they’re going to attack me as soon as they can. I should block.”

With delay set to four frames in delay-based netcode, you press back on your stick, Sol starts up his three frame kick, and you get kneed in the face. Sorry, your blocking input didn’t get to the opponent in time. Sucks to be you.

With Strive’s rollback frames set to four, you press back on your stick and for three frames nothing quite happens, and then at the fourth frame Sol is shown kneeing you… and you are blocking it!

THIS is the most important distinction between the two netcodes. If you make the right decision with the right timing in delay-based netcode, you might still lose. If you make the right decision with the right timing in rollback netcode, you still win.

This is why it’s not such a big deal when that number fluctuates. Yes, it’s better if it doesn’t. Yes, it’s better if it stays low. And yes, you should probably use a wired internet connection instead of your janky ISP-provided Wi-Fi router, Carl!

Ahem…

Guilty Gear Strive

But if it does fluctuate, the player probably won’t notice much. Characters will still act the way you’d expect them to in an offline match.

And this brings us to number on the left, a plain-old ping to your opponent, displayed in plain-old milliseconds. These can also get intimidating because they could grow pretty high, and high numbers tempt you to rage post in Steam reviews. But once again, there’s more going on behind the scene than you might think.

Here’s a match between two of the best Sol players in Guilty Gear -Strive- right now, Punk and Deb:

You might notice that their rollback frames fluctuate between two and three, but they are showing 80-90 MS of latency in communicating with each other. How does this work? A frame is 16-ish milliseconds long. That’s five-ish frames of delay in communication. What dark, heavy-metal sorcery is this?

So, remember when I said that human reaction time is flawed? At peak, trained performance, we can react in approximately 80 milliseconds. Fighting game developers take advantage of that. They actually purposefully put a few frames of delay into the offline mode. I’m talking something barely noticeable — one or two frames at best. Arc System Works has not come out and openly said how many, but testing in the beta versions prior to the game’s official release had reports of 1-3 frames of delay.

Why is this important? Well the human brain is very good at adapting. So when you play offline, if there is a very slight delay, it will still feel “instant” because that’s just the speed of the game’s controls. Go back to some older fighting games on the SNES, like the original Street Fighter II and you’ll find much higher delay times as a result of the technology of the time. Even so, we all played it like this was no big deal.

So even when playing offline, there’s a very slight delay in your actions. When playing online, that delay is removed and replaced with the natural delay of online communication. So even though there is a small bit of latency between players, it still feels like offline play. It’s a trick, and a very slick trick at that.

That’s how the math adds up. In the Punk/Deb match shown above, they have rollback frames of 2-3, and standard delay frames of 1-3 (assuming the numbers are the same as they were in beta). Add that together and you are looking at an average of 5-ish frames, exactly what should make sense for their 80-90MS connection speed.

Phew! That was a lot of math.

Guilty Gear Strive

I’m sure at this point your eyes have gone cross-eyed, and I don’t blame you. So here’s the TL;DR:

Rollback frames are not the same as delay frames, and having high rollback frames will not render the game unplayable. Guilty Gear -Strive-‘s netcode does a lot to make matches playable at long distances, even at high delays. Quite frankly, it’s going to be hard to justify online fighting game netcode without rollback in the future, especially after we were all forced to play remotely during the pandemic.

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x