Implementing fair rollback in fighting games: a possible solution for competitive play
Some months ago, I wrote an article here explaining that the adoption of rollback in fighting games is being overrated somewhat (due to issues of fairness). This remains true, but notably I didn’t have any solutions to offer.
There is a possible solution, which is more of a theoretical concept than a practical idea, but I am writing this article to explain it and go over why rollback is a potential problem in its current form.
Summary of the rollback problem
As a TL;DR for those who don’t want to read the previous article: rollback has something of a fairness problem in fighting games. This is because for networking reasons, in situations where one player is lagging, it is the player without the lagging connection who is punished with a problematic rollback on-screen.
This creates an incentive for abuse; for a player to deliberately make their connection unstable and laggy during a game in order to try and trigger disadvantageous rollbacks for their opponent. First of all, why is this?
Fighting games, for the most part, do not use a central server: player 1 is directly connected to player 2, with no third party inbetween. This means that no entity is recording the “true state” of the game, and as such, the game must ‘predict’ a player’s inputs if they are lagging — and then change the non-lagging player’s screen if the prediction is wrong.
Contrast this with a game like League of Legends, where each player is connected to a central server. If a player lags, the game only lags for them; other players are unaffected. There is therefore no incentive to deliberately lag in these games, as it will only cause problems for the player who is lagging.
A similar solution works for rollback in fighting games. If they adopt a central server system, whereby each player is connected to a central server, incentives for abusing rollback can be eliminated.
Using a central server: advantages
The first advantage is as explained above. Let us assume two players are in a fighting game, and player 1 lags. In a non-server (decentralised) system, player 2’s computer must predict player 1’s inputs to prevent the game from freezing; if the prediction is wrong, player 2’s game must immediately update itself to the correct state. This means player 2, whose connection is fine, suffers as a result of player 1’s bad connection.
However, if each player is connected to a central server, their inputs are only sent to the server and not to each other, and the server records the state of the game. In this scenario, if player 1 lags, two things will happen:
- Player 1’s screen may be updated, as when it receives the game state from the server, it may be different to what player 1’s computer thought the game state was.
- Player 1’s inputs may be partially or fully dropped for that point in time.
In other words, instead of the rollback affecting the player who is not lagging — it will punish the player who is lagging, removing any incentive for abuse.
As an example, suppose you are playing Ryu against an enemy Ken in Street Fighter 6, using a centralised server system. You command Ryu to throw a hadoken at Ken, who is crouching. If you lag, your hadoken may be undone, as your command might not go through. Ken may suddenly change position on the screen, as your lag caused the server’s update of the game state not to reach your machine in time. This is more or less the exact reverse of what happens in decentralised systems, where the other player will have the sudden change in game state.
The advantage, then, is that using a central server eliminates the incentive to abuse rollback, ensuring fairer gameplay. But at what cost?
Using a central server: disadvantages
There are three disadvantages to this system. I will go into each one separately.
Unequal latency between players (solvable)
When you are on a server system, each player has their own connection to the server. This means that, depending on your geographical distance to the server and your connection quality, you may be put at a slight disadvantage to another player, because you might have a larger input delay than your opponent does.
This is (mostly) solved by forcing players to only play against players who are connected to servers in the same region. This doesn’t stop e.g. US players playing vs European players, but it means that they would both need to connect to either a European server or a US server — but not different servers. One player would then suffer a disadvantage, as their connection to the server would be poorer.
In games like League of Legends and Overwatch, this is not generally regarded as a big problem for the most part. However, fighting games are unique in that they generally hinge on fast reaction times and actions which can take only a handful of frames to complete, making even slight discrepanies between players potentially problematic.
This is solvable by coding the server such that it artifically makes the player with the better connection to the server have a longer delay, to match the player with the lesser connection. This is what is required to happen in practice in non-centralised rollback anyway, so it would not actually cause a loss of connection quality to players versus not using a server — but there is a risk that players would misunderstand it.
Cost (solvable, but not favourable business-wise)
Imagine Capcom began using a centralised system for its fighting games. It would have to maintain servers all over the world to enable people to play, which would add a lot of extra, constant costs (as those servers will stay up for a very long time, long after people have bought the game).
For games like League of Legends and others where more than two players are present in a game, servers are effectively mandatory. For fighting games, however, having servers is more of an option due to their generally 2-player nature, and it seems unlikely that most companies developing them will be willing to implement such a system (or that players will be willing to pay for it).
Server downtime (to an extent unsolvable)
Of the three, this is the most unpredictable. It is inevitable, whenever a game has servers, that those servers might at any given time become overloaded or suffer connection issues.
While this is pretty rare in big server systems — companies like Riot and Blizzard will have extremely advanced setups to distribute load across servers and provide contingencies for events like this — it is never possible to 100% prevent these problems from happening.
In a sense, this isn’t really a downside. Players playing against each other, without a server, are much more likely to experience connection issues with their connections than a server is — and so in practice, using a server is actually going to be an advantage as it will result in less network disruption overall.
The reason I have listed this as a disadvantage is that players do not generally think like this (somewhat understandably). If you’re playing against your opponent, and one of your connections is dodgy, you can just blame them. If on the other hand, the game’s server is dodgy, both players will rage at the game for messing up their match. As a result, players don’t tend to love this even though it would be better, and companies — recognising this — probably aren’t keen to implement it unless they have to, as they will take the blame.
While using servers would be ideal, I think it’s unlikely to happen, mostly due to issues of cost and player misunderstandings.
One place where I do think they would be both beneficial and practical is in competitive games. For the most part, rollback unfairness is not a major issue in most matches — but for games where money is at stake, fairness is a very important thing to have.
For fighting games companies to maintain servers for competitive gaming would make a lot of sense; not only would it ensure a level of fairness, but it would also allow them to effectively control the platform on which competitive games are hosted. This would allow them to e.g. host tournaments with small entry fees and the like, allowing them to recoup the costs of hosting the servers. A win-win for everyone.