A Witcher dev accidentally "killed" an important character, and a tester had to replay the game to save him
Development of the original The Witcher hit a major testing roadblock after one of its designers accidentally consigned a key NPC to the void for good, breaking the game's epilogue and triggering hours of debugging.
Artur Ganyzyniec, lead story designer on The Witcher 1, has recently been replaying the first game in the series with his own commentary. In the final episode of the series, he recounted one of the most memorable bugs from the game's development.
While checking over the epilogue, the team reached a point that should have triggered a cutscene with Yaevinn – a leader among the Scoia'tael, the rebellious elven faction who plays a major role in both the first and second entries in the series. Instead, the screen went black and simply stayed that way.
According to Ganyzyniec, the black screen at the start of every cutscene is a standard technical trick – characters are teleported into position during that moment, after which the scene begins. This time it never did, because Yaevinn simply wasn't there. The game thought he was dead.
"We were stuck for a moment," Ganyzyniec says, "and I started thinking 'when was the last time we saw Yaevinn?'"
It turned out the character's last appearance had been in a cutscene at the end of the third chapter – hours before the epilogue. After extensive debugging, the team found the cause: instead of receiving a standard despawn command, Yaevinn had been given an entirely different instruction.
"It was a deprecated comment that shouldn't be used anymore," Ganyzyniec explains.
The scripter – whether by mistake, curiosity, or simple boredom – had attached a command to Yaevinn that said something like "despawn the character, mark the character as dead, and make sure that the character never spawns again." What made the bug so insidious was that the difference between this and the standard command wasn't reflected in the function's name, but was buried "somewhere deep in the documentation for the scripting language."
To fix the error, a tester had to load a save from before the third chapter cutscene and play through the rest of the game again – just to confirm that Yaevinn would finally appear where he was supposed to.