“Netcode” is a made-up term for >gamers, which does not refer to any existing technical aspect of networking. If you try to tell a network engineer about netcode, they will laugh at you and then tell you to shut up. And so will I. So it’s actually a very convenient term. Whenever someone mentions netcode unironically, they have told me that they have no idea what they’re talking about.
Another term that often gets bundled along with “netcode” is “rollback”, which funnily enough is a real thing. However, this doesn’t make the preachers any less insufferable, because it’s still the same group of people making demands about things they know nothing about.
Now before we continue, let me just set the scene. There is nothing wrong with rollback and I think the GGPO middleware is an excellent piece of engineering. I also love that it’s open source and I gladly hold the project in high esteem. I’d also agree that plenty of games would benefit from improved networking. So what do I have issue with?
As very blatantly alluded to earlier, the majority of rollback netcode apologists do not know the first thing about networking. They whine at developers to “just add rollback!” as if it’s as simple as adding pickles to your sandwich, yet they’re operating on so many flawed assumptions that it’s difficult to even start a rebuttal.
You can’t “just add rollback”
I appreciate that not everybody is an engineer, so this fact might not be so obvious. It may seem strange that a well-renowned rollback implementation already exists, and is used in a number of commercial games and even unofficial community projects, and yet large corporations just aren’t adopting it. Why is that?
To understand the issue here, we need to take a step back and have a think about how rollback actually works. With a rollback implementation, the game will guess what a player is about to do and display that action on screen. Then when the network packet arrives, it will check if the guess was correct. If it wasn’t, the game will roll back and snap to the correct state. However in order for a game to do this, it needs to remember previous states.
This is where smaller games and projects actually have an advantage. When you’re building your own game engine from scratch, it’s much easier to build in the functionality that you need in order to support middleware that you intend to use—such as GGPO rollback.
However large game developers don’t do this. They use existing engines, like Unreal and Havoc. A lot of these engines don’t support features such as rewinding state. The game developers will need to rewrite the engines to do this, which defeats the purpose of adopting the engines in the first place—cost.
Developers care about money, not players
Writing code is expensive. Just look at how much programmers make. If you want to make significant modifications to a game engine, it will cost you a significant amount of money. You also run the risk of introducing bugs to a stable platform, or hurting the performance of the game. You might be bound by contracts with the game engine provider that restrict what you can do with their engine, too. All this is to say that it will cost a lot of money to “add rollback”.
Now, I’m sure there are plenty of passionate developers out there who have players’ best interests at heart. However it is also true that game companies are businesses who have a bottom line to meet, and stakeholders and investors to please. If they want to incorporate GGPO into their game, it needs to make them money. It can’t just break even, either. If adding a Christmas costume DLC package will make more money than adding rollback, you can bet your ass that you’re going to be playing a laggy mess in a santa outfit.
As much as we might like to believe otherwise, the overwhelming majority of players are casuals. This is where the money is, and those players have never even heard of rollback. Most people buying these games just want to have a good time beating up CPUs in arcade mode, or they’re mothers looking for a birthday gift for their kids. Even if all of the competitive players in the world united and boycotted a given game until they change their networking implementation, they’re just a drop in the ocean.
But why do serious players want rollback so much anyway?
Rollback is not the be-all-end-all
The general sentiment seems to be that rollback outperforms delay-based networking in all aspects, but this is not necessarily the case. Just like with most questions in life, the answer is “it depends”. Remember how I talked about rollback implementations requiring the game to “guess” what the player is about to do? Keep that in mind as we continue.
Take a game like Super Turbo. At any given moment, you might be crouching, standing, walking, jumping, or attacking with one of a handful of moves. This is a very small number of options. In addition, if you’re crouching on frame 0, then there is a pretty good chance you’ll also be crouching on frame 1. This makes it quite easy to accurately guess what a player is about to do.
Now take a look at Tekken. You could be crouching, standing, walking, running, sidestepping, side walking, backdashing, back swaying, crouch dashing, or attacking with one of over a hundred moves, among myriad other options. These options are also very complex. Unlike someone who’s holding down-back in Super Turbo, someone Korean backdashing in Tekken makes half a dozen inputs very quickly, over and over again, with varying timing and precision, because they’re human. This is a nightmare to predict accurately.
What you end up with is a jittery clusterfuck with limbs teleporting everywhere and rubber-banding to no end. In a game like Tekken with slow moves and long input buffers (relatively speaking), a small amount of delay is much more likely to go unnoticed by players. If you’ve been playing Strive recently and have thought “damn this online is good, I wish Tekken was this good”; it would be nice, but unfortunately it’s not that simple.
So, to all of the people who have been saying “I don’t understand why devs don’t just add rollback”—that’s right, you don’t. Or at least, you didn’t. But hopefully you do now.
Networking protocols are not the main issue anyway
The reason players and developers care so much about networking implementations in the first place is because latency exists. Networking in video games is all just smoke and mirrors to mask this latency, but no amount of clever programming will entirely fix bad internet. The real problem is internet infrastructure.
It’s kind of like eating fries and complaining that they’re unhealthy because the chef seasoned them iodised salt instead of Himalayan pink rock salt. Like, dude, those fries were cooked in a vat of oil. Why are you spending your time evangelising Himalayan pink rock salt when you could be advocating for air fryers or something? Sure, the pink salt might be better for you, but you’re still glugging vegetable oil at the end of the day.
You know all of those copper cables running from the network node to your house? Imagine if they were all fiber optic cables. That’d be a real improvement to your online experience, much more so than any rollback. And this would be across the board as well, not just for one specific game.
There are a number of other factors that might contribute to a poor online gameplay experience too: physical distance, network congestion, hardware limimitations—just to name a few. People who act like rollback is the second coming are in for a rough wake-up
DP call when they find out that their connection still sucks.
Anyway, that was a lot of words to say:
- Please stop saying “netcode”
- Rollback is hard to do
- Devs probably don’t care that much
- Rollback won’t fix everything
- I need a new hobby
Hope you learned something.