Getting The Witcher 3: Wild Hunt to work on Nintendo Switch was a major undertaking. But it’s a challenge that Saber Interactive chief executive officer Matthew Karch was confident his team could overcome. After all, this is the same team that upgraded The Wither 3 into 4K for PlayStation 4 Pro and Xbox One X. And Saber had also released a number of games on Switch. Using its familiarity with the hardware and Witcher developer CD Projekt Red’s game engine, Saber took on the job of putting Witcher 3 on the Switch.
And it worked. The Witcher 3 is available now on Switch, and it captures the full experience you get on other platforms. But how did this happen? And what limitations did Saber face in getting Witcher 3 to run on Nintendo’s limited home/handheld hybrid?
Some of the issues were the kinds that all games face, like fitting the software within the available console memory. But cramming the game onto a 32GB game card is an obstacle unique to Nintendo.
“When the initial port was done, the game was running at 10 frames per second, was taking 50% more memory than the Switch has, and the build size was 20GB larger than the biggest Switch cartridge,” Karch explained in an email to GamesBeat.
Making sacrifices to save Witcher 3 on Switch
Everyone involved with The Witcher 3 Switch port knew the adaptation would need some visual sacrifices. When Saber started that process, it went right to features where it could get the biggest performance return. The issue with that is The Witcher engine. CD Projekt Red has already done a ton of work to optimize those tools. So Saber began taking the scalpel to important visual effects.
Saber’s engineers turned off dynamic shadowed lights, got rid of screen-space ambient occlusion, and cut down the number of NPCs in the world by 30%. But this first pass was too extreme. It led to a version of The Witcher 3 that no longer looked like The Witcher 3.
“As we worked on the game, we realized these things were really essential for the look and feel of the game,” said Karch. “For example, after cutting the number of NPCs by 30%, we started getting complaints that the levels, especially Novigrad and Toussaint, felt rather empty. We had to reintroduce most of those features back and find creative optimizations to get the frame rate up.”
So Saber started over.
“We went back and targeted other areas to optimize, like the in-game animation, AI, rendering, cloth simulation, etc,” said Karch. “In those instances, the process was less about deciding what to sacrifice and more about solving how to keep the things the game really needed.”
So Saber couldn’t turn features down or off to get The Witcher 3 running well on Switch. That forced it to get creative about how to save performance. An obvious example for that was shadows. On PC, turning down shadows is an easy way to get some extra frames per second. For the Switch version, however, Saber had to rethink the implementation from scratch.
“One of the things we knew we had to change for Switch was how the engine calculates shadows from the sun,” said Karch. “Shadows are obviously essential for creating a realistic look for huge outdoor levels, but the off-the-shelf solution was prohibitively expensive on Switch. We had to combine a blend of static shadowmap, terrain lightmap, and dynamic shadowmap to achieve a similar look to the original.”
Saber also encountered a similar issue with vegetation in the world of The Witcher 3.
“In outdoor environments, foliage can make up about 50% of all the visuals,” said Karch. “We had to rewrite the algorithm for how grass is generated and rendered. We also had to change [levels-of-detail for] trees, lighting, and shadows to keep the overall look and performance as close to the original as possible.”
That process was intense, but Saber was able to get the game into shape. It just took some time.
As Karch told GamesBeat, “We worked tirelessly for a year to get the game running on Switch at 30 fps without losing the incredible visuals fans expect.”