Multi Horizon Forbidden West PC tech interview with Nixxes and Guerrilla Games

cm2

Well-Known Member
Full GL Member
20,726
2018
1,632
Awards
25
Credits
588
Nintendo $20 EShop
Nintendo $20 EShop
Mature Board Viewing
PSN Gift Card $20
PSN Gift Card $20
Read from Digital foundry:

When did work start on Horizon Forbidden West for PC, and what was the working relationship like between Nixxes and Guerrilla?

Patrick Den Bekker - Nixxes
: We normally start a project a year before it is released, so that would be February or March last year.

Jeroen Krebbers - Guerrilla: We at Guerrilla internally have a PC version, which is not the same as shipping a PC game... we use that for our internal tooling and also for verifying that our rendering backend and all of our subsystems work on PC, to make sure that can run tooling and bakes and things like that without requiring a PlayStation for everything. And that's usually the basis of starting a port, right? So there's a bunch of legwork that we do internally that is basically handed over to Nixxes, and they do the magic.

Patrick Den Bekker - Nixxes: We started with the renderer, which is already there and mostly feature-complete. Then we work to make that into a shippable PC game, because it only runs on certain GPUs on the tooling side, it just makes assumptions. It's also designed to do high-quality bakes, which doesn't mean it performs well on every machine.

Michiel Roza - Nixxes: It also didn't have any scalability options. So that's something we added.

Craig Leach - Nixxes: Also, it only allowed you to use the keyboard and mouse for debug stuff, so we need to add keyboard and mouse controls in. And obviously you've got a lot more controllers available on PC.

One thing I noticed is that the UI and user experience options that are part of Forbidden West PC. For example, you can change graphics settings and see those changes happen live in the game - did that require specific engine changes?

Michiel Roza - Nixxes
: We always try to do everything in real-time, even stuff that's not actually real-time - such as if you change your texture quality, you won't see that change in one frame because it's going to take some time to unload the textures.

Patrick Den Bekker - Nixxes: One of the bigger challenges is that the PS4 and PS5 versions, they have different data sets that are very optimised for that platform. On PC, we didn't want to have separate downloads for separate configurations, because it also conflicts with the live toggling of these options. So we decided to pick the highest-quality version, PS5, and then scale that down in some ways that can even go below PS4. That was partially done to be able to do all of these live changes... but that does require some different challenges, you are solving things in a bit different way... but it came out quite nice!

Craig Leach - Nixxes: The way it updates is kind of cool for people that are interested in game development... I got rid of that solid panel and you could see the updates in real-time propogate through the engine...

What scalability options existed in the PS4/PS5 game already, and what was added for the PC version?

Jeroen Krebbers - Guerrilla
: When people make content for PS4 or PS5, they can add LODs or change a few things to make it suitable for that system. In terms of memory useage, we don't have a fixed budget for streaming textures... a settlement might have a very heavy load on animations, models, characters, much more than in the open world. So we need to scale the texture streaming budget even on PS4 or PS5, and these things can be used by Nixxes to scale down. Resolution scaling is another big aspect, wherer you can set a target resolution for a preset and then scale performance to match, and that will reduce the amount of VRAM used. In terms of asset streaming, therer are a few things that can be scaled, like terrain detail or LODs can be popped in our out earlier or later... we tweaked them for PS4 and PS5. That's most of the scalability options, or is there anything else you at Nixxes introduced?

Michiel Roza - Nixxes : We introduced a whole lot more! We tried to leverage the PS4 content where we could, but we also looked at what else we could scale. For example, screen-space shadows can be turned off to get performance back, and clouds could use PS5 performance quality modes... We also added a memory manager, which we introduced in Marvel's Spider-Man. What it does make sure you never run out of VRAM. If you're almost running out, we start moving data back to system RAM, which does come at a performance cost, but we try to move stuff that's not necessary for a specific scene.

What areas were chosen that scale beyond the PS5 version on PC, besides resolution?

Michiel Roza - Nixxes
: One of the easiest things is anisotropic filtering (AF), so we bumped that to 16x, though we didn't put it in a preset - people have to turn that on themselves. We also improved some of the shadow filtering and resolution.

One of the core technical features in terms of presentation was the visibility buffer used in the PS4 and PS5 versions. Does that come intact to PC?

Michiel Roza - Nixxes
: The base rendering is pretty much the same, the only feature that didn't translate well to PC is deferred texturing, so we used a more traditional GBuffer approach.

Jeremy Laumon - Guerrilla: Deferred texturing is mainly an optimisation for PS4, for foliage mostly. But the way it's implemented on PlayStation is very console-specific and there was no easy solution to make it work on PC and have the same gains. So we did some other optimisations instead.

What about CPU optimisations? Obviously you have a fixed amount of threads on PS4 and PS5, but on PC you can have more or fewer. Did this require any changes or did the system already scale well to lower or higher core counts?

Michiel Roza - Nixxes
: It's a job system that we made more dynamic, so it can go narrower or wider based on your CPU. And for some core counts, we had to... add a system where we can actually run jobs while we are waiting on the GPU. And on top of that, on PS4 and PS5, you can get away with a lot of spin locking, on the PC the Windows scheduler will see you're just wasting cycles basically, so it's going to preempt your threads at that point. So that's something else we had to change.

Jeroen Krebbers - Guerrilla: Historically we've always been very 'jobified', we had a PS3 version running on SPU with thousands of small cores. That obviously doesn't translate very well to even 32 core and 64 thread CPUs, but it's getting closer... We've continued doing that. One of challenges with the Burning Shores DLC for PS5 was the Horus, that huge robot that traverses the mountain and the beach. It's a gigantic entity that needed some excellent job application work to make performant, even on PS5. We always try to make sure that we can scale, we can split work up into separate jobs. That lets the game scale up and down based on thread count, though obviously not as much as on PC. And that's something that we like, because we can get something back from Nixxes as well and improve on our side as well.

Patrick Den Bekker - Nixxes: On PC, you have extra challenges as well, like where your OS and applications are running, you also need to handle data decompression... and also the PSOs. That requires a lot of CPU resources that you need to schedule in some way. It becomes really hard for lower core counts get everything right and get everything in there on time. That definitely requires some tweaking.

On both PS4 and PS5 there is dedicated decompression hardware, but on PC we don't have that - so how is asset decompression being done?

Patrick Den Bekker - Nixxes
: We compress all the data on disk to reduce the amount of size it takes for the end user. Because of the limitations with GPU decompression, we decided not to use that part and do all decompression on the CPU. We get better results that way, both on the GPU and consistently across machines.

Was ray tracing considered for Horizon Forbidden West, like the RT shadows in previous Nixxes PC port Shadow of the Tomb Raider?

Michiel Roza - Nixxes
: It was definitely considered, and it's good that you mentioned Shadow of the Tomb Raider. There, we had to do an entire lighting pass to get RT shadows to work. And for this project, with the hours of cinematics and the scope... we decided that the game already looks really good, there's a strong direction here and we really didn't want to mess with it.

Jeroen Krebbers - Guerrilla: Don't forget a lot of the content is alpha-tested trees. I mean, a lot. Of course we have settlements and some hard surfaces, but most of it is really hard to ray trace against, even for shadows. There's a lot of content, maybe 100 square kilometres of content or more, and we'd need to go through the whole game... it's just mind-boggling... obviously having the scalability between PS4 and PS5 meant that we wanted to focus on stuff that would work on both PS4 and PS5, that sadly excluded RT. And it's not an easy addition to the PC version. We really like the tech of course. Watch this space.

Are you happy with that PSO (Pipeline State Object Caching) collection process for Forbidden West on PC - could automation be used as well? And how do you feel about the whole PSO issue for Windows gaming in general?

Michiel Roza - Nixxes
: We do have an automated collection, which doesn't catch everything, but does make sure the game is in a playable state and QA won't run into a stutter fest every time we change the shaders... I think PSOs are not a great solution. It's the best we have, but I think something else can be done here. I really like the way Valve is handling it on the Steam Deck... and I wonder if that can be extended to PC as well.

Jeroen Krebbers - Guerrilla: Yeah, it would need a lot of collaboration between Microsoft, hardware manufaacturers and software developers to come to an understanding of how this should work. I've jokingly said like "why do we have GPUs that are so fast and yet we can't compile a shader on it?"

Patrick Den Bekker - Nixxes: Compared to consoles, it's actually a big burden on the development project. Whereas on the PS5 you can build them on a build machine and load them in, execute them and you're done, on PC we really need to rely on vendors and caches to get them compiled, and we spent a lot of trouble making sure they're compiled faster. At some point in the project we had one PSO that took 150 seconds... It's not only the collection, it's making sure they can execute fast enough.

Jeroen Krebbers - Guerrilla: As a developer, the PSO situation is very frustrating. We know that it doesn't have to be as bad as it currently is. And it is really bad. It takes a lot of time and effort, and then you compile the same shader on a million different PCs, right? So there's energy waste and things like that.
 
Back
Top