I agree with the sentiment of your posts, and a lot of people really want a better solution. I do think it's worth acknowledging that on PC the problem is an order of magnitude more complex and even the tools in place (endless layers of caching through the whole driver stack, vulkan/DX12 having some limited PSO caching, prepopulating driver shader caches in updates before big games hit, etc) are not entirely sufficient. It's not just "there's a tool to fix this but it's too complex to use", it's that there's a bunch of stuff you can do to try and mitigate the effects but nothing is guaranteed since there are at least 3 different moving pieces of software on the end users machines that the game does not control that affect the outcome.
At least for Unreal when you cook for PC you are doing the front-end compiles (FXC/DXC/etc) of the shaders. Most of the hitches after that point are driver compiles. Pre-running through some scripted sequences in the background to warm driver shader caches certainly helps, but even then it is not a guarantee since many PC drivers do various forms of PGO and background compilation of their own. DX12 attempted to eliminate some of this, but it crept back in over the following years after release as the economic incentives for IHVs to win benchmarks ultimately trump everything.
Anyways I think most graphics devs would agree with the frustration and it's part of the reason why many prefer consoles where the game is in much more control of the end user experience. Certainly I'm not saying more couldn't be done on PC, but it's not like the area has received no attention... as you imagine making the first Fortnite experience smooth for folks across a wide variety of machines is very important. But it's important to acknowledge that it is both intrinsically more complex on PC, and worse a dance between at least 3 different companies.
Honestly overall I think step 1 is just to cut down on the total number of shaders in Unreal games, but it's hard to put the permutation and shader editor genies back in the box to some extent.
Thanks Andrew!
Yeah, I fully appreciate that it's a massively more complex problem to solve than I make it out to be. If it wasn't, there'd already be a widely adopted solution out there, I'm sure.. but as you said, there's so many moving parts and finding the best solution isn't easy, or potentially even possible, since lot of the ability to control the situation is completely out of the developers hands.
I'm a gamer with a high interest in technology, especially PC/Console/Gaming related hardware and technology. My understanding is extremely high level, but I enjoy having a basic understanding about how the technology works and how developers create their games. It gives me a greater appreciation as a consumer when I see something that's clearly a cut above. I like to help improve games by leaving feedback and reporting issues. Basically what I try to get across in my posts regarding this topic specifically is that I as a consumer am willing to deal with precompiling, or waiting a bit longer on an initial load, or games requiring larger storage capacity... whatever the case must be.. if it is something that will help improve the initial experience. Often I just try to raise awareness about this issue, and that if a Studio releases a game, and it includes this "process" it's because the developer very carefully considered the gamer's experience, and it shouldn't be looked at as a bad thing, but a good thing. I remember people talking trash about Horizon Zero Dawn having a shader compilation screen which took minutes (sometimes really long on CPUs with less threads) and they were saying the game was unoptimized and garbage "because other games don't need to do it!!" So I did my best to explain why that process was there and why to maybe expect more of it in the future (especially regarding games developed purely with consoles in mind from the beginning) and to my surprise a decent amount of people complaining understood and realized ok yea, it's better than the alternative.. and it wasn't just for no reason. A lot of people simply don't understand what's going on.
You brought up a really good point about IHV's and the drivers often doing background compilations/recompiles which devs have no control over. Yea, DX12 was supposed to cut a lot of that out, and a lot of this driver BS was supposed to go away... but of course as you say.. the incentive for IHVs to eek out a few more frames to win benchmarks is just too much. That's because the fastest code to generate isn't always the most optimal code in practice. I mention that in one of my posts above where I spoke about the optimization of framerate being important, but the stability of the frametimes is vastly more essential to having a good experience. I'd always take a bit lower overall framerate, with a smoother more consistent frame delivery, than the highest peak frames possible.. every single time. And as you said.. it's a dance between multiple companies. I spoke mostly about the developers, but yes, the IHVs need to understand that having higher peak performance should NEVER come at the expense of the game's stability. Nothing is going to look worse for them, than a $500 console running the game smoothly first run... and the $2500 PC stuttering and hitching like crazy during the same time. It's why I'm glad sites like Digital Foundry exist where they put more of a focus on frametimes and stalls and stutters, when it's a point of contention between devices.. and not so much on the overall framerate. It helps raise awareness to more consumers that frametimes and stability are always more important to the experience than 8 extra frames per second when you're already at 100+. IHVs need to start working together to figure this out.
But anyway, I know you guys work damn hard on this stuff, it's not that you don't care.. it's tough to solve when there's so many moving parts. It's absolutely mindboggling the stuff you guys are doing in the first place. It is frustrating though. I know the reality of the situation is tough, but I can only say what I can as a consumer. It needs to get better. This needs to be a part of the quality assurance and should be rejected until the game is as it should be. If that means a publisher has to delay the PC version until these issues can be sorted out, then so be it. If I have to wait 10m for shaders to compile, so be it. If Nvidia needs to not win a benchmark, so be it. If MS has to do some OS level stuff, so be it. It NEEDS to improve. I'm not saying all games have this issue of course.. and I'm not saying there's not a billion other factors that can contribute to stutters and hitches on PC... and I completely realize I'm just one person and not everyone has the same opinion as me, but I can only express my own opinion.
Thanks for the response, and regardless of all this stuff.. UE5 looks amazing and I can't wait to see what devs do with it in the future.