Reversals and Wake-Ups

^^, no, he is saying that you didn’t do the cammy up kick, but rather the drill came out instead. thats why it got stuffed. if you did do the up kick, there is no way, even with lag, that you would have gotten stuffed.

Papercut is right, I’m saying you got a reversal cannon drill instead of a reversal thrust kick. Cannon drill has no invulnerability at the start, that’s why the reversal message came out but you got stuffed by the meaty anyway. It’s like accidentally doing a reversal fireball with Ken, instead of a reversal DP, it happens to everyone.

There is basically no way latency could make your reversal not come out. Even with like 1000 ms of lag, if you saw the reversal message on your end, that means you correctly inputted the reversal, and if that reversal should beat the opponent’s meaty, your opponent will be the one who gets the rollback effect of his meaty appearing to hit, then rolling back to getting DP’ed.

I guess one way that worked for me is put a new different kind of timing in your mind rather than practicing with the same mindset all the time. Like for me I was playing as Chun Li for a little bit and in one match I was trying to not reversal on wakeup and time the DP so it comes out a small bit after wakeup, I got the reversal messages instead.

So try practicing by adjusting your timing a bit if it really doesn’t come out consistently. After that just focus on doing it without needing to concentrate so much on executing so it comes second nature and you got it.

Well looking back on the video (at 60 fps), there is no way of telling whether I did input the DP or a fireball motion (even though I’m 99% sure I did a DP motion). I guess in this case that maybe I did mess up the execution, but I’m not convinced that lag doesn’t cause reversals to fail sometimes.

The thing I am trying to understand is how the game deals with lag. The confusing thing for me is the desync between two players. Let’s say there is 1000ms between two players, one does a reversal and gets the message, but it takes 1000ms for that reversal input to reach the other player, by which time his console basically credits you with doing the move 1000ms too late so it gets stuffed by the meaty. How does it work out who’s console is correct in each situation, and why does it appear so much harder to reversal in laggy games than non laggy?

How the netcode works in general is that every time it receives input from the other player, it rolls back in time, applies that input at the correct time, then resimulates the game in fast forward up to the current time to get to know what the real gamestate is. This means that latency will never actually change the rules of the game, it will only change what a player percieves happened in the last X frames, where X is the number of frames of lag.

Here’s an example. P1 knocks down P2, then meaties him, and P2 will reversal DP. Let’s say that P2’s reversal frame is frame number 100 in the timeline, and that there are 4 frames of lag. From P1’s perspective, he starts his meaty on frame number 95 (F95).

F95
P1 starts his meaty. P2 sees P1 just standing there (he hasn’t recieved P1’s input yet).

F96, F97, F98
P1 is meatying. P2 sees P1 just standing there.

F99
P1 is meatying. P2 receives P1’s input from F95. Internally, P2 rolls back to F95, applies the F95 meaty’s input, then fast-forwards back to F99 with that new information. P2 now correctly shows the gamestate, with P1 meatying. Note that P2 must reversal on F100 but only actually sees the meaty on F99!

F100 (reversal frame)
P2 correctly executes a reversal DP! On his screen, his DP cleanly beats the P1 meaty. However, P1 hasn’t received the DP input yet, so his screen shows that P1’s meaty did hit.

F101, F102, F103
On P1’s screen: meaty continues to hit. On P2’s screen: DP continues to hit.

F104
P1 finally recieves P2’s F100 DP input. P1 internally rolls back to F100, and applies the P2 DP input there. On that revised F100, DP beats meaty. P1 then internally fast-forwards back to F104 with the revised gamestate where P2’s DP beat P1’s meaty, then shows the P2 DP rising and P1 getting knocked down, same as on P2’s screen.

In other words, for four frames, P1 thought his meaty won, then he was rolled back to reality by recieving P2’s inputs.

F105 and onwards
P1 and P2 both correctly show P2’s DP rising and P1 getting knocked down.

This example shows that if you ever get the “Reversal” message on your screen, and you did execute a reversal move that should beat your opponent’s meaty, even with 100 frames of latency your reversal will win, it will just take 100 frames for your opponent to realize it and roll back to that correct result. On your own screen, it’ll look perfectly normal with your reversal winning from the very start.

What will be harder for you here is that you’ll realize you were knocked down in the first place 100 frames later than normal - you’ll get instantly snapped from a neutral pose to 100 frames into a knockdown animation, so you’ll have much less time to react. If a KD lasts for 300 frames, you’ll only see frames 100~300 of your KD animation, so obviously that will mess up your timing. You’ll also only see the tail end of your opponent’s meaty, or maybe you won’t even see it at all if it’s really laggy, so that can also screw up your intuitive timing.

Ah Thelo, always there with the divine understanding. That explanation actually clears up quite a bit for me. Thanks for the amazing effort as always!

I’m pretty sure this is why you should always set your network smoothing to “off.” Otherwise the game adds lag to all your inputs and your timings will be off. So, if you set it to add 4 frames of input lag to completely cover the internet latency in the above case, you would have had to do your reversal on frame 96. Most fighting games use the input lag netcode, which is honestly the main reason I play HDR. The other ones look smoother, but they’re really just unresponsive to the point I find them unplayable.

Just to confirm how input lag works, what it does is effectively make the graphics lag behind by X frames, to cover up the constant rollbacks. So with 4 frames of input delay, when you see F96 you’re really on F100. The higher the input delay, the less drastic rollbacks you’ll see, but the more delayed your inputs will be with respect to the real gamestate.

My intuition is that HD Remix’s network smoothing options of off, low, medium, high correspond to 0, 1, 2 and 3 frames of input delay. I personally leave my own to “low” for that 1F.

Why not just zero? You’d have the best chance of seeing the actual game state that way.

Does it really lag the graphics? I would think it would be a lot easier to just add the right number of frames to all the time stamps for your inputs and the game wouldn’t have to do as many rewinds. Also, has anyone done any tests to see what happens when two people play each other with different network smoothing settings? It seems like if your settings affected the other person then you could set yours above 0 to mess up people’s reversals, and if it didn’t then turning network smoothing on would only make it smoother for your opponent.

I like that one frame just to minimize the visually snapping rollbacks, since I consider that a snappy rollback jars me more overall than that 1F of delay, and messes with my reactions a bit more. For instance, in a constant 50ms ping match (3 frames ping), 0F delay means that 3F will be visually clipped from the startup of all moves (a standing jab would go straight from neutral pose to F4 of animation), while having that one frame of delay means that only 2F will be visually clipped from move startups. So dropping it from 1F delay to 0F delay would increase visual rollback length by 50% in a 50ms match. Meanwhile, that 1F really isn’t hurting me much on my reaction / execution, so I can take that tradeoff. I suspect Ponder basically had the same reasoning when he also made 1F input delay the default on GGPO.

It’s perfectly reasonable to still want to use 0 delay for that extra 1F, as long as you realize the tradeoff of increased rollback length. Also remember that the effect of rollback length is somewhat exponential - the longer the rollback, the higher the chances are that there will be a jarring snapback. There really aren’t many things that can visually happen within 1F or 2F, but there are many moves with 3F startup, for instance, and even more with 4F startup.

I thought zero frame input delay was best also until I saw a controlled test with two side by side machines simulating various kinds of latency and changing the input lag setting. It turns out that even one frame of delay often dramatically increases the smoothness (meaning reduced rollbacks). Also, part of it has to do with the specific values of frame stats in ST / HD Remix. It just so happens that a normal amount of lag is just enough to not even show you the hitting frames of fast moves like chun li’s jabs, but 1 frame of input delay saves you from that bad threshold.

Thanks for the awesome responses guys. I’ve heard about this timestamp method before, but for some reason I thought GGPO used it but HDR didn’t. Makes perfect sense with the visual rollback anyway.

I’ve always gone with no network smoothing on the basis that I want my timing to be the same online as offline, and not having 1 frame input lag difference between the two. Kind of tempted to try it now that Sirlin has given feedback from a proper testbed.

Thanks again guys, cool explanations.

This is great info, thanks Thelo and Sirlin!

I’m also now tempted to at least try “low” smoothing after hearing this. The most frustrating thing online is to be walking forward and get hit by a fireball you never even saw coming.

One other thing I completely forgot: doesn’t SF2 have 4 frames of input lag even in the arcade? Shouldn’t that be enough to cover up pings of 50 or less, subtracting the 1 frame of input lag inherent to a normal game loop?

While I can tell the difference between 3 and 4 frames of input lag, it’s not enough to bother me. Any more than that starts feeling sluggish, so every frame that I can shave off counts, even if I have to deal with rollbacks. I guess some people obsess over frame rate or resolution, but responsive inputs is my thing.

It also seems like it would be no better for responding to attacks if you both have the same delay. You’d see another start up frame of their move, but then your response would take an extra frame to come out, which cancels out the benefit. It would only help if your network smoothing was set lower than theirs.

This in-depth discussion on rollbacks and the netcode is really interesting.

I remember a while back in a thread about Jodim (aka “Haru Tejyo” on HDR), damdai was saying how we shouldn’t put too much emphasis on his domination online. Watching a lot of his matches, it seemed for some strange reason no-one could consistently reverse his SPD setups. Significantly, these were mostly matches where the latency was over 100ms. And yet I don’t recall him being reversed at all; perhaps once out of twenty SPD setups, and this was against a wide variety of players.

This lack of ability to reverse his SPD ticks was surprising, and further when I watch vids of offline matches, for example involving Pony, I see a lot of his SPD’s being stuffed by reversals. The salient point being that online, Jodim can use the same timing for his ticks that he uses offline – and yet his opponent has the disadvantage of a harder reversal timing thanks to the inherent delay. At least, this is the idea I got from reading that initial discussion. However, is this conclusion correct? Is it necessarily more difficult to reverse an SPD attempt online than offline?

At the very least, it’s more difficult because it’s more unpredictable, since lag never really stays constant, it rises and falls during a match. It’s also more difficult for the reason I said earlier, of having less time to react to the knockdown itself. A third reason it can be more difficult is the presence of input delay (network smoothing) when you’re used to 0 delay normally. However, all that said, you still always have precisely one frame to reversal, no more and no less.

While HDR and GGPO both mask the effect of lag as far as your inputs go, they do NOT mask the effect your ability to react to laggy moves. The is the primary reason that many Japanese players on GGPO chose speed 1. It’s a shame that HDR, which has worse long-distance net code IMO, players rarely seem to set up a room below speed 3.

No love for the yoga, that’s what it is. Mind you, playing on a lower speed to give yourself more time to react to things since the lag gives you less time is a pretty nice idea. I’ve always just stuck with T3, but I might give T2 a try. It will probably be closer to offline T3 too.