Tech Interview: How was The Witcher 3 ported to Nintendo Switch?
DF talks with CD Projekt RED on the conversion process.
How did they do that? It's becoming an increasingly common question with the top-end ports arriving on Switch, with developers delivering excellent work in bridging the immense power gap between PlayStation 4 and the Nintendo hybrid. But some might say that no Switch port is as ambitious as The Witcher 3: Complete Edition, created by CD Projekt RED with the port carried out by Saber Interactive. It's a vast game with upwards of 100 hours of gameplay, set within a massive open world - with no cuts to content.
We've already posted our impressions of the game running in Switch's handheld mode and taken a closer look at some docked direct feed capture and we're impressed. Yes, of course, there are compromises and cutbacks - just as there are on all of Switch's 'miracle' console ports - but it is The Witcher 3. In fact, it's an all-new take on the game, transitioning across to mobile hardware for the first time.
During a press event for the game held a couple of weeks ago at Nintendo's UK headquarters, we had the chance to go hands-on with the game and to spend some time talking about the title with CDPR senior producer Piotr Chrzanowski. In this detailed interview, we talk about the origins of the conversion effort, how the existing game and all of its expansions were crammed onto a 32GB cartridge and how the assets and content transitioned across to Switch.
Suffice to say that based on what we've seen and played, we're really looking forward to giving this one the complete Digital Foundry treatment. Look out for that closer to the game's release.
Digital Foundry: The Witcher 3 on Switch: what were your thoughts and expectations, going in?
Piotr Chrzanowski: When it comes to expectations we wanted to really bring the same experience. We wanted to make sure this is the same game that you'll see on PS4, you'll see on Xbox [One], that you'll see on PC. So our goal was to bring the same game: not to cut anything, not to change things unless you really have to. This is what we looked at.
Now, the way we work with Saber [the game's developer] is that from a CDPR perspective we are basically looking at the project from a high perspective - providing guidance. Also, we give access to the pool of people who created the game in the first place. We know all the in-depth stuff of how the game was created, what the challenges are, and how to overcome them. So this is the way we are organising [the project] but the actual execution of the port is on Saber's side.
Digital Foundry: How long did this take to develop?
Piotr Chrzanowski: Over a year now. Well it depends on whether you want to add the business stuff, but then I would say it's around 12 months at this point.
Digital Foundry: How did the first attempts at getting Witcher 3 running Switch pan out?
Piotr Chrzanowski: We had the project set up in a very clear [direction]. We wanted to achieve each stage that was planned - what was aimed at. Of course one of the first things was to make sure that engine would actually run on the Switch. I would say the other big milestone was to have a piece of the game actually playable. So we went with Kaer Mohren with the prologue, because it was a self-contained world that has all the systems, including combat etc. We looked through that, we saw how we needed to shape the next stages of the project. And then we could expand to the White Orchard, and then to the rest of the world.
Of course, along that path, we've worked on specific optimisations. We've definitely worked a lot on memory optimisation. We have much less memory available on the Switch [compared to the other consoles]. So making sure that the game works stable and within those boundaries, that took a while. Some things we've added a bit later, like the AO [ambient occlusion] which wasn't there I would say in the earlier builds.
Digital Foundry: It wasn't in the E3 build?
Piotr Chrzanowski: It was not. Which I think was pointed out by some people [laughs].
Digital Foundry: Did you have to create any new assets for the Switch version to work?
Piotr Chrzanowski: Well we haven't had to create any new assets from scratch, but we took the ones that were existing and we compressed them a bit. We had to keep within the memory budget - that was one of the things. The same with the cutscenes we wanted to fit it on the cartridge - we wanted to go for a 720p resolution everywhere, so we also changed those.
There are several things that we looked at to try to make sure we get the maximum out of the hardware. The same amount of time we focused in the right places. If you look at the audio system, normally you'd have five threads from the consoles, while the game has a separate thread just for audio. And so we need to try [to integrate] it with other activities as well. So that was a challenge in itself - to make sure it works fast enough and works well.
Digital Foundry: Is the geometry pretty much the same as PS4 and Xbox One?
Piotr Chrzanowski: Geometry is the same. I think we dropped the LOD 0s in the cutscenes in most places, because of the memory constraints again. In some of those at least, we had to balance where it made sense and doesn't make sense. But overall, yeah, basically, we changed most textures but models, we haven't changed much. There were some slight adjustments in some cases, but nothing [much] I would say. If you compare frame-by-frame, you won't see much of a difference besides things that are obvious, like foliage density.
Digital Foundry: How did you fit the game onto a 32GB cartridge size? What were the main parts that needed optimising?
Piotr Chrzanowski: I think on the audio. We did a lot to make sure that this doesn't take too much space, but mostly [that's for] memory consumption. Cutscenes, textures - mainly those things.
We had a set of optimisations planned basically for GPU, CPU and memory consumption, to make sure it would fit in the 3.5GB [available RAM]. So all three areas we'd been optimising simultaneously, and there were areas where we had to push to some level, and then switch to another one - pushing that little bit more. And then we can switch back to the one that was blocking us. So the work was going basically on those three areas simultaneously. I think we started with GPU first, and then we moved to the CPU side, and then the memory, and then a few iterations on those.
Digital Foundry: What are your thoughts on using dynamic resolution on Switch? Was this something you immediately thought you had to have?
Piotr Chrzanowski: As we iterated through the process we know what we wanted to do. Things like dynamic resolution, we always know there are some places [where] it would be good to have that. We can optimise in several areas, and it's good to have that option - if you have a heavy load, with a lot of particles flying around etc.
Digital Foundry: Is there one area in the game which gave you the biggest challenge in optimisation?
Piotr Chrzanowski: I don't think there's one specific spot. I know there are places and areas and cutscenes that have something specific - there are attacks in the game [too]. But having experience from the actual Witcher 3 implementation on PS4, this is not very much different because you still are still taxing the GPU, CPU in a very similar way, you just have a different limit to work with. So the swamp area [Crookback Bog], was of course [one] - very clear we wanted to take a look to make sure this one works well. Novigrad Market is of course a heavy place. This is normal for every one who plays the game, and sees this is as one of the taxing parts.
Digital Foundry: What part of the game are you most proud of?
Piotr Chrzanowski: It's the same experience. You play it, you feel the same way, you have all the systems, so you don't feel that anything is cut - and it's fluid gameplay. If you ask about one specific area, I love Novigrad market. You know we have the same amount of NPCs that we have on PS4. We kind of limited draw distance on those, in some specific cases, but yeah it's the same amount I would say as we had on that platform.