Why does code get left behind?
Every other day, it seems that some band of intrepid dataminers finds hidden, outdated, or mysterious content buried in the code of our favourite games. This isn’t negligence. Instead, it’s a peek into a little known reality of game development: that unused code is left in databases because it’s too risky to remove.
Defender’s Quest DX dev Lars Doucet compares disabled (rather than removed) code to a nest of cords. “You can’t say for certain what is plugged in to what without taking a lot of time to figure it out.” This is especially true if you didn’t write the code, for instance if you’re working on a large team. Deleting old, seemingly obsolete code can risk breaking something important.
Industry veteran Tom Forsyth explains how keeping disabled code around allowed Oculus to release Positional Time Warp (tech that smooths perceived motion by tracking depth information and movement) in 2018. “For various non-technical reasons, the feature was removed,” Forsyth says. “[Fast] forward to more than THREE YEARS later, and in 2018 Oculus announce this new feature called… Positional Time Warp! And it’s exactly the same as the thing it was before. … If it hadn’t stayed alive in the (very fluid) codebase all those years, it would have been a huge pain in the arse to reinstate, and probably wouldn’t have got the go-ahead.”
Keeping code also lets developers reuse it in formulaic series, such as Traveller’s Tales’ Lego games. According to former Traveller’s Tales senior game mechanics programmer Chris Payne, the same code was used to recreate Harry Potter’s Aguamenti spell, the Clone Wars hover tanks, and Iron Man’s iconic chest laser. “All used the same beam code with different visual treatments and gameplay effects – but they shared the same cursor aiming, so the mechanic felt intuitive, worked reliably, and was implemented quickly,” Payne says. “And the beam code itself reused the bolt code – firing an invisible bolt at infinite speed every frame to simulate a continuous laser.”
War for the Overworld programmer Scott Richmond details the process that followed the decision to disable (and then re-enable) health bars in their isometric god game. “The design required that each enemy would have a health bar above its head. However we flipped that decision as it looked bad, but we didn’t remove all the code – we just disabled it. Pretty quickly thereafter a bug was reported to us that creatures were doubling in size every time a player cast the possession spell! Turns out some code that handled scaling the health bar was not disabled and started scaling the creature instead!” The bug was fixed, but the designers eventually reversed their decision on health bars – something they were easily able to do because the code was still all there.
“a dedicated enough community (Hi, Discord) is going to find it”
Unused code preserved in multiplayer titles introduces another set of considerations. I ask Jordan Thomas of multiplayer teen sleuth immersive sim The Blackout Club how to hide emerging features in an available executable. His simple answer is: you can’t. “You can encrypt, and obscure, and deeply obfuscate that content, but a dedicated enough community (hi, Discord) is going to find it. We tend to focus our efforts on trying to stave off the worst of the cheating rather than hiding areas that are under construction,” Thomas concludes. The developers of Club Penguin used this to their advantage, as related by former Disney narrative designer Alexander Newcombe, burying backstory and clues to future updates in the client for hardcore fans to ‘discover’. “There were several asset names that hinted at the secret Penglantian (that’s penguin Atlantis, obvs) backstory of the island. Players who knew were SO excited to share their theories online and it was great to see (even when they were regarded as wacky conspiracy theorists),” says Newcombe. However, this did have drawbacks when plans would inevitably change. “We once embedded a codename in binary in an image. Players thought for sure it was going to lead to something juicy since it was unusually secretive and intentional. Sadly, the planned follow-up never got made, so it became a loose end. Even when we denied future plans, some players thought we were just being coy still.”
Instead of seeing unused content (such as Skyrim’s civil war plotline) as a missed opportunity, a source of disappointment, or potential danger, these developer comments point towards a different conclusion. In these littered code segments are visions of game versions that we will never play, as well as the potential seeds that could grow into future brilliance.