What is Rollback? – Super Smash Bros. Melee with Slippi Online

Slippi Online couldn’t have come at a better time for the Super Smash Bros. Melee (SSBM) community. Since the COVID-19 outbreak put a halt to all in-person Melee tournaments (and frustratingly, just as the Smash World Tour was announced), professional Melee players have been stuck at home, complaining about the game’s online lag.

Although Super Smash Bros. Melee for the Nintendo GameCube is a nearly 19-year old video game, it is possible to play with others online via the GameCube emulator Dolphin. Matchmaking chat websites like Anther’s Ladder allow players to find and connect to each other on the internet.

But like many other fighting games that feature network play (even on an official basis), Melee online must deal with a looming, oft-cursed dread familiar to all online gamers: lag. And, in a game like Melee, which at the professional level features fast-paced gameplay with high APM (actions per minute), lag can be especially frustrating, even making the game “unplayable.”

Every input is crucial in a competitive match and timing can be very precise, so lost inputs and delays will really mess up your movement and combo execution.

How Game Developers Handle the Problem of Lag

The most common approach to dealing with lag during online play is to use netcode that sets a consistent “delay.” (Netcode is a general term that refers to any of the technical tools and approaches used for the networking in an online game.) Slippi Online has an additional “rollback” feature that is less commonly implemented in online play, but which has a lot of benefits to a player’s experience.

Delay-based netcode is a nearly universal feature of fighting games’ networking approach. In delay-based netcode, a buffer (usually two to six frames, depending on the quality of connection between players) is set in place that helps keep the game running at a consistent rate. This buffer allows time for players’ machines to receive each other’s inputs.

In delay-based netcode, whenever there is a disconnection between players and inputs are not received within the buffer, the entire game will freeze and remain frozen until both players are reconnected and can continue to receive data from each other.

Explaining Rollback

Netcode that features “rollback” is also delay-based, but has the added feature that if a disconnection occurs, the game keeps running on each player’s end and tries to predict what the other player’s inputs would have been on the succeeding frames after the disconnection occurred.

Most of the time, these predictions are pretty accurate. For example, if you’re holding forward on the control stick, it’s likely that for the next few frames you’ll still be holding forward, so the game can make a safe assumption that your inputs will stay the same. As another example, when you choose to attack in a fighting game, you’ll generally be locked into an animation for a set amount of frames, reducing your control of the character, so in these cases, the game sometimes knows exactly what your opponent is doing even if they disconnect from you.

After players reconnect, if the predictions were incorrect, the game instantly re-simulates with the “real” inputs.

This is where the name “rollback” comes from; the game “rolls back” to the state just before the disconnection occurred and then corrects the inputs and game state as it returns to the present. These corrections are done without any graphical display, meaning that the players do not see the re-simulation. Instead, the game state will immediately change to reflect the corrected inputs.

In theory, this sounds jarring. However, it’s important to remember that as long as the connection is relatively stable, you’re only losing a few frames here and there, so that even if rollback’s predictions are wrong, the changes to the game state are generally not drastic.

Instead of lag, you might notice other issues, like visual or audio artifacting, or characters appearing to teleport slightly. Most see these trade-offs as preferable to lag.

Below is a video with a great explanation of input delay and rollback:

Slippi Online

With a decent connection, gameplay is smooth and the changes made by rollback are almost unnoticeable. Many players report that playing with a relatively stable connection feels almost as seamless as playing on the same console, and the entire community seems to agree that Melee with rollback is much better than the vanilla lag-based netplay that was available before.

Leffen, a top melee player, has said that the introduction of Slippi Online is revolutionary for the community, claiming that it’s as important a development as the introduction of network play for Melee in the first place.

Rollback netcode is seen as a more robust solution for the problem of lag, but it does require extra work from game developers. This is because the extra code that rollback demands only works if the game itself is built to support rollback. When developing rollback for a game, you need to keep the code of the game itself in mind to make sure that it is compatible with rollback features.

Because of the amount of work that it takes to re-code a game and implement rollback, nobody was expecting it for a game like Super Smash Bros. Melee. But impressively, Slippi Online was created by a single person, Fizzi, over a period of seven months. He’s the creator of Project Slippi, another Melee project that has been used to collect data and capture high-quality replays in competitive Melee games. Slippi Online is freely available for download here, though Fizzi accepts donations for the project and has a Patreon page.

If you’ve never played Melee, now is a good time to try it out. Slippi Online also features in-game matchmaking, so you won’t have to use a chat service just to find a game. Just remember that you’ll still need a stable internet connection to see the benefits of Slippi Online (playing over Wi-Fi is still pretty much a no-no).

Rieson is a game dev and writer. In his spare time, he's usually playing indie games. He lives in the Bay Area.