So, since UE5 is now officially released I wanted to spend some time getting the project ported over to see how well it performs. UE5 has some very appealing features on offer, which include such gems as free global illumination from emissive surfaces, virtually unlimited poly, and object counts, and true 64-bit doubles that will allow us to model the whole galaxy at a very granular scale.
If we can switch over now and hit the ground running it would be a huge boost for the upcoming demo, buuuut having spent a good 48 hours or so wrestling with the new engine I sadly have to say it’s not ready yet.
Firstly my performance was awful, even with high-cost features like Lumen turned off. It seems to be fundamentally related to trying to render the whole ship’s interior with Nanite, which as of this time doesn’t support hard distance culling. That means all geometry is calculated at all times, with Nanite deciding what to raster. With quite a bit of overdraw and some other technicalities, it just means Nanite isn’t ready yet for the sort of game we’re making.
More specifically – because I’m sure we’re going to get asked this a lot – here’s why we can’t switch to UE5 right now:
– Nanite doesn’t yet support distance culling. This means all Nanite meshes cost occlusion checks at all times.
– Nanite doesn’t yet support lighting channels. We alternate lighting channels per deck, so lights would shine through floors/ceilings.
– Nanite only works with DX12 or Vulkan. According to Steam 9% of gamers still only have DX11, and Vulkan has some rendering bugs.
– We use 5 core engine plugins for the game, and only 1 of them has been updated to UE5 so far.
Even with Nanite disabled, I was barely getting 50-60fps on my 2080ti, when I get 170+fps in UE4. I’m sure some of that loss comes from the fact I ported the project over and did a lot of conversion in place, but it’s still a fairly significant performance loss.
UE5 has some truly amazing tech behind it, and if you’re making an open-world game with a single skylight you can produce breathtaking visuals. I’m certainly not trying to bad-mouth the engine because it’s honestly incredible, but for our specific use case, it’s just not ready yet. I’m going to get the demo finished in UE4, and then once that’s released I’ll look at building a from-scratch UE5 project to see if that fares any better