How one of PS5’s most advanced games made its way across to PC.
As usual, the text has been edited for length and clarity.
And that’s usually the basis of starting a port, right?
Patrick Den Bekker - Nixxes: We started with the renderer, which is already there and mostly feature-complete.
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.
And obviously you’ve got a lot more controllers available on PC.
What were some of the learnings from the original Horizon Zero Dawn port?
What did you want to do better or differently this time around?
It’s more like a tailored experience, rather than a very customizable experience.
And that didn’t lead directly to PC scalability, but it informed and helped for sure.
Also, just having more experience helped.
One thing I noticed is that the UI and user experience options that are part of Forbidden West PC.
That’s usually the most time-intensive part.
Julian Huijbregts - Nixxes: It’s good to stress that this title has averylarge amount of cutscenes.
It was quite a big commitment!
But we do support up to 32:9, even in cutscenes.
And yeah, we did put a lot of work into that in terms of art and lighting.
I have a 4:3 and a 16:9 but no 32:9!
I really wish I did - I obviously need that right here.
Jeroen Krebbers - Guerrilla: You don’t know what you’re missing.
What scalability options existed in the PS4/PS5 game already, and what was added for the PC version?
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!
What it does ensure you never run out of VRAM.
What areas were chosen that scale beyond the PS5 version on PC, besides resolution?
We also improved some of the shadow filtering and resolution.
Does that come intact to PC?
Jeremy Laumon - Guerrilla: Deferred texturing is mainly an optimisation for PS4, for foliage mostly.
So we did some other optimisations instead.
What about CPU optimisations?
Did this require any changes or did the system already scale well to lower or higher core counts?
So that’s something else we had to change.
It’s a gigantic entity that needed some excellent job tool work to make performant, even on PS5.
We always attempt to ensure that we can scale, we can split work up into separate jobs.
That requires a lot of CPU resources that it’s crucial that you 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.
We get better results that way, both on the GPU and consistently across machines.
We therefore decided to use LZ4 which, I think, is very, very fast on the CPU.
Therefore, we decided to do a very quick CPU-based decompression.
There, we had to do an entire lighting pass to get RT shadows to work.
Jeroen Krebbers - Guerrilla: Don’t forget a lot of the content is alpha-tested trees.
I mean, alot.
And it’s not an easy addition to the PC version.
We really like the tech of course.
One thing I wanted to go back to is PSOs.
That’s reasonable - but what is the PSO process like, how are they collected?
If these shaders aren’t ready in time, they cause streaming issues.
To alleviate that, we front-load those specific shaders and that’s the shader compilation step you see.
And how do you feel about the whole PSO issue for Windows gaming in general?
I think PSOs are not a great solution.
It’s the best we have, but I think something else can be done here.
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.
So there’s energy waste and things like that.
I think we nailed that one, hopefully you agree!