A ten year-old Team Fortress 2 bug has been found and fixed

Somehow it had gone unnoticed for a decade.

Videogames have bugs. This is a fact of life. Some are obvious and easy to squash, and others are a little trickier to nail down. And then there are bugs like the one Valve fixed yesterday in Team Fortress 2. According to this Engadget report, it was around for a full decade—since TF2 was released in 2007—before it was noticed last month by TF2 Classic developer Nicknine, and reported by Redditor sigsegv_.

The bug occurred when a player selected the Scout, Heavy, or Sniper as their first class upon joining a server. After that, switching to Soldier, Pyro, Demo, Engineer, Medic, or Spy on the same server would leave their local and server-side animations slightly out of sync. It worked the other way as well: Beginning as Soldier, Pyro, Demo, Engineer, Medic, or Spy, and then switching to Scout, Heavy, or Sniper would have the same effect.

It sounds harmless enough, but the practical impact was most definitely not. As you can see in the video, the mismatch between local and server-side hitboxes meant that shots that should have hit sometimes would not. And once it happened, players were stuck: Switching back and forth wouldn't clear the error, nor would dying or going to spectator mode.

"It's because the player models for scout/heavy/sniper have their pose parameters listed in one order, while the player models for soldier/pyro/demo/engie/medic/spy have their pose parameters listed in a slightly different order (move_x and move_y swapped)," sigsegv_ explained. "And it's also worth pointing out that in MvM [Mann vs Machine], the bots re-use the same 22 player slots over and over: when a robot dies, that player is switched to spectator, and then when it's time for another robot to spawn, the player is switched back onto blue team and changed to the class that the new robot should be. So, in effect, different MvM robots are somewhat equivalent to a group of human players who die, change class, and then respawn; which means that they were also susceptible to the bug."

It's not a huge bug, as evidenced by the fact that it went unnoticed for ten years, but that's also what makes it so notable now. TF2 is not your average ten-year-old game: It's still one of the top five games on Steam, with tens of thousands of people blasting away at each other 24 hours a day, and is supported by a very active modding community. Yet somehow, this bug, which impacts the game at its most fundamental level—did you shoot the guy or not?—has slipped through the cracks until now. In a way, it's almost a shame that Valve fixed it.