This week, version 1.2 (opens in new tab) of The Outer Worlds, Obsidian's enjoyable (opens in new tab) spacefaring RPG, was released. It featured a bunch of fixes, big and small, including one that QA lead Taylor Swope described as "the dreaded 'the game thinks my companions are dead' bug", which is pretty much exactly what it sounds like.
Swope believes he spent more time investigating this than any other single bug in his career, and outlined the process of identifying and squashing it on his Twitter feed (opens in new tab). "The gist of the bug was that, for some players, a companion quest would be marked as failed in the quest log," he says. "With the reasoning that the companion was dead, despite the fact they were very much alive."(opens in new tab)
This was particularly confusing because, outside of the game's extra tough SuperNova mode, companions can't actually die. Apparently this enigmatic bug happened a couple of times before launch, but the QA team was unable to recreate it, or even learn anything concrete about it.
When the bug started showing up after launch, the team tried to isolate everything that could cause a companion to die. "Investigating it involved figuring out the location of every script and line of code that could possibly make the game think that a companion was dead," says Swope.
The devs came up with a number of theories, and worked out that the bug was likely related to companions taking fall damage while on the player's ship. "The problem with that is that there are no spots in the player's ship that are high enough to result in a lethal fall," Swope notes. It wasn't until he spotted an off-hand comment from a player, who "mentioned seeing a weird bug where a companion was climbing nothing", that he eventually figured it out.
"On the dev side of things, the system for NPCs interacting with the environment is called furniture," Swope says. "Sometimes this is literal furniture, like sitting in a chair. But it covers everything from using a terminal to leaning on a wall."
Somewhere "deep in the complex beast that is the furniture system", Swope explains, there's a piece of code that disables all NPCs, including companions, from starting new furniture interactions if the player is in a conversation.
"The problem was that using a ladder is considered two different furniture interactions," he says. "One for getting on the ladder and starting to climb, and one to stop climbing and get off. So if someone started climbing a ladder and the player entered a conversation before they stopped, they wouldn't be able to exit the ladder, and, well…" Then he tweeted a video clip.
So, if someone started climbing a ladder and the player entered a conversation before they stopped, they wouldn't be able to exit the ladder, and, well…. (18/18) pic.twitter.com/xcduTy4d12December 12, 2019
What you're seeing there is an NPC trapped on a ladder in a void outside the player's ship, cursed to climb it until the player has finished their dialogue interaction, at which point they fall to their 'death'—which is what was causing their associated companion quest to fail. And the fix? "We just re-enabled furniture interactions during dialogue."
Stuff like this makes me glad I'm not a game developer. I can only imagine the trauma of shipping a game, only for a bizarre bug like this to emerge. But at least Swope and his team managed to squash it in the end.
You can read Swope's full Twitter thread here (opens in new tab).