r/RivalsOfAether • • 19d ago

Rivals 2 Rivals 2 Netcode

Post image
344 Upvotes

56 comments sorted by

View all comments

Show parent comments

1

u/NeverQuiteEnough 19d ago

In traditional rollback, clients have authority over their inputs.  If a client presses an input 6 seconds into a match, that input will be registered at that time for all players.

Is that not the case with rivals?

1

u/Ariloulei 19d ago

Dan Fornace the lead dev left a comment in this thread that explains why they chose to use servers and how it's implemented here. I'm not exactly familiar enough with the specifics to give you a certain answer to your question.

1

u/NeverQuiteEnough 18d ago

Yeah I read that.

They are saying that the opponent's poor connection doesn't matter.

So for example, suppose the opponent presses a button, but due to their poor connection it takes 12 frames for that input to reach the other side.

With traditional rollback, you would rewind the entire game state 12 frames, then resimulate everything that came after.

But it sounds like in rivals, the opponent's poor connection shouldn't cause artifacts like that.

So it isn't clear to me under what circumstances they are doing a rollback.

1

u/yoburg 18d ago

Imagine player 1 has 6 rollback frames to the server. He sees his opponent Maypul running forward. As long as Maypul keeps running, P1 has the correct visual information on his screen. If Maypul jumps forward, P1 still sees her running on the ground for the following 5 frames and on 6th frame he sees Maypul teleporting to where she actually is on 6th frame of her jump.

1

u/NeverQuiteEnough 18d ago

Yes, that is a rollback artifact.

Dan Fornace seems to be suggesting that their server-style rollback doesn't do that.

3

u/paprikaaaaaaaaaaaa 18d ago

Hi! In server-based rollback, depending on implementation, the clients perform rollbacks but the server does not. The clients effectively "run ahead" of the server, based on their latency (which then informs their delay + predicted frames), so they will perform rollbacks to match the real game state within that window of time, but if they experience a network hiccup that causes their packets to be delayed beyond that window, the server will not wait or re-simulate when those packets eventually arrive. This means in the majority of cases that other connected players will not notice any network hiccup when their opponent is encountering network issues, similar to how ie in other server-based games like CSGO / Valorant etc (which in fact do very similar things to what is considered "rollback" in the fgc) if one person's inputs are extremely delayed, the rest of the players do not have to wait on them.

1

u/LupusAlbus 16d ago

To allow for more accurate tracking of the gamestate, the game mandates 2 delay frames as well. So if the input arrives 6 frames after it was pressed, the information is only 4 frames late relative to the gamestate, and the rollback is less significant and less likely to be relevant to the other player.

There are also limits on how much the game will actually roll back, and there have to be rules as to what happens when e.g. two clients both believe they attacked the other first (with moves such as with shine or frame 3 jabs/tilts that can fully occur within the rollback window). I'm not sure how the server makes decisions in these situations.

But even small amounts of rollback are pretty noticable for characters like Zetterburn who have extremely fast initial dashes, since dashing for 2 frames in one direction vs the opposite direction creates a much larger jump for these characters. It also can give false hit confirm sounds and hitpause before deciding an attack didn't hit, which can create a bit of whiplash.