1
\$\begingroup\$

I'm trying to understand the distinction between server reconciliation and rollback networking in games. From what I understand, both involve receiving snapshots from the server and replaying player inputs on top of the snapshot. Am I getting anything wrong?

New contributor
vicg is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.
\$\endgroup\$
1
  • \$\begingroup\$ It might be helpful if you could sight the articles you are reading I think what you are referring to are what Riot calls "Resolving" and "Rewinding" (respectively) in this article: technology.riotgames.com/news/peeking-valorants-netcode however I may have misunderstood how your terms are being used. \$\endgroup\$
    – DavidT
    Commented Jul 9 at 10:12

1 Answer 1

1
\$\begingroup\$

I'm not a game networking expert myself, so take this with a grain of salt. The way I've heard the terms used, "reconciliation" refers to the task, and "rollback" is one particular algorithm for performing that task.

The root problem is that player A and player B can have different views of the current/recent game state, leading to "divergence". So we want to "reconcile" these diverging views into one consensus, where all players (and server) agree on the game state, or at least the important parts.

"Rollback" is one strategy to reconcile these diverging timelines, by rewinding to a previous game state, applying new information, then simulating the rest of the history forward again to arrive at a modified present. This strategy is popular in fighting games or first person shooters, where the exact sequencing of inputs (e.g. "who shot first?") is critical for fairness. But it can lead to weird discontinuities, like getting a headshot, seeing the blood splat, then rollback deciding the target had actually moved out of the way just before your shot, so the opponent is still up and moving at full health despite their blood decals on the wall behind them.

There are other scenarios where we might use a different strategy to reconcile divergence. Say in a racing game, we don't need to replicate the exact degree angle of steering at every frame - but we do care very much about continuity and physical plausibility. We don't want to see cars teleporting or moving in ways that make them look like paper shells. So instead of rolling back to a previous snapshot and re-simulating input from there - potentially leading to a large jump - the server just sends us a current authoritative snapshot. Then we adjust the velocities of our diverged vehicle states so that they'll intercept and merge with the authoritative path within a short window. The exact path the car takes on my screen and yours may differ slightly, but they end up in the same place, while behaving in a roughly-physical way in between.

This shows another way to eventually reconcile two players' diverging game states, but without necessarily using rollback. There are more strategies we can use, and hybrids (for instance, the server could use rollback under the hood in determining the next authoritative snapshot to send).

\$\endgroup\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .