Even though the game runs very well on my laptop after the first round of optimization, it was still running badly in the HIVE. I went back to the GPU profiling tools I had been using before to find out the issues. My biggest problems were lighting, HZB, translucent lighting, and particle injection.
Lighting was brought down by taking away the light attached to the player. Since I have some more static lightmaps in the night scene now this wasn’t really needed and took some stress off of the GPU.
HZB is a type of occlusion rendering that ue4 does in the background that I really don’t need, so I just popped a line into the defaultconsole.ini that set it to 0.
Translucent lighting was a big deal, so the directional light that is pre-baked was set to not light transluncey and I went back though some of my materials and unlit them. I was worried about the rain and grass, as I had unlit materials on them before and they looked quite bad, but spending a bit of time getting a balance between colour and light in the emissive slot gave me a couple more milliseconds on the GPU per frame.
Particle injection was a tough one – this is only an issue when particles first spawn, but things like the rain can’t be pre warmed as they switch on and off. Turing off problematic emitters within fx didn’t seem to change this – its not the effect but the fact that its being spawned that’s the issue, so I had to leave this one.
These changes brought the game to 90-100fps on my pc, so I thought the HIVE build would be fine. I was wrong – it didn’t even run at 15. I was getting 14fps at maximum. I noticed when I ran the game in windowed mode that I got about 20fps, so I tried setting the screen percentage to 50. What this did was stay fullscreen, but render at half the size of the screen and scale up. This gave me 30fps! Whilst it might not be “true” 30, it works, and that’s what’s important. At that res I don’t notice any pixelisation on the HIVE screen, which is fantastic. Had this occurred I think I’d have had a very difficult decision between performance and artistic fidelity!
I then capped the frame rate at 30, as it jumps around a lot and I wanted it to match the pc build, which is capped to make sure the fx run optimally. 60 was just odd and too fast feeling.