CAT Interstellar: Remastered UE4.0 to UE5.0
So, we decided to develop a Remastered version of CAT Interstellar using the Unreal Engine 5. When UE5 dropped I was as surprised as everyone else and started playing around with it. I was working on the sequel to CAT Interstellar at the time and figured it would almost certainly be made in UE5 so I needed to start learning it. After reviewing the features like Nanite, Lumen, and the Chaos Engine I realized the first CAT Interstellar game was uniquely situated to leverage UE5’s technology.
We currently have a strong build (accessible through the ue_5 branch of the original game) but we’re still going to release to Early Access so we can get benchmarks and feedback. Our planned release date is August 4th for Steam (and hopefully the Epic Store). While this most likely isn’t the first game published using the Unreal Engine 5 (or what is arguably now the Fortnite Engine) it’s at least one of the first. Because of that I thought I’d make a post on how the new systems like Nanite and Lumen carry over from UE4 games. Even though we also implemented the Chaos engine I won’t cover it in this post. CAT Interstellar is a good test project for this as it almost entirely made with blueprints and has, over the years, been ported from UE4.0 to UE5.0 with the migration path:
UE4.0 (game jam submission) – UE4.7(EA release) – UE4.16 (Full Release PC, Linux, PS4)>> UE4.26>>UE5.0(Remastered EA Release)
It was also painstakingly optimized to run on an array of platforms and last gen consoles (Xbox one, PS4, GTX 750Ti).
All benchmarks are on “High” settings –
Original Version (UE4.16) –
- Content folder size: 5.19GB
- Packaged Application Size: 2.15GB
- Compression Ratio: 0.41
- 1080p@30fps – GTX 750 Ti
- 1440p@60fps – GTX 970
- 1080p@30fps – Xbox One
- 960p@30fps – PS4
- 1080p@60fps – PS4 Pro
Remastered Version (UE5.0) –
- Content folder size: 18.2 GB – (can shave 8gigs after all optimizations)
- Packaged Application Size: 7.74GB
- Compression Ratio: 0.42
- 1080p@<30fps – GTX 970
- 1080p@60fps – RTX 3060 (laptop)
- 1440p@60fps – RTX 3070
I still consider the game very well optimized even though the barrier of entry is a little higher. If you play the remastered version, It would be incredibly helpful to post your graphics card and rough frame rate while playing “The Surface” level either here or on the Steam forums.
Before UE5 Early Access came out I was getting pretty heavy into photoscanning. I even submitted an Epic Mega Grant (comments and critiques appreciated) to partner with my local university and photoscan an entire trail. I also regularly post scans on twitter.
The Nanite system is as good if not better than Epic has claimed. With the integration of Quixel bridge every developer can drag and drop photoscanned meshes into their games. Activating Nanite on a mesh takes one click. With Reality Capture even relative beginners like myself can get their own photoscans in a game with a two piece pipeline. It took about 4 hours (including the hike and taking pictures) to get a photoscanned asset of a gravel trail in CAT Interstellar (red area). With Reality Capture’s licensing scheme it cost $2.39 to generate the gravel trail model.
Cool, but how does it actually run? Consistently. There’s a slight overhead cost but then it’s surprisingly smooth sailing. Again, it really is as good as they say. There are some new ways you can get bottlenecks like culling amounts at steep angles of nanite meshes but generally it’s incredibly stable. Here’s an image of the overdraw visualizer.
Will Nanite make games bigger? Yes, but not as bad as I initially thought. I could see the opposite of the “low-poly” fad happening simply because Quixel Bridge is the easiest path to an aesthetically pleasing environment now. With Quixel you don’t even have to leave the editor to grab photorealistic assets. It’s faster and easier than the marketplace which says a lot.
Can Nanite make your game smaller? Possibly, while the mesh file sizes are significantly larger you can, in a lot of instances, get rid of normal maps which are even bigger (Another 3 gigs of storage we’ll eventual claw back). If you’re generating your own models, you probably won’t have a mask for roughness and metallic unless it’s faked which is another ~200mb per model you can save. Furthermore, the direction Epic is going with virtual textures, Lumen Real-time GI, and virtual shadow maps will make games like CAT Interstellar that relied heavily on static lighting smaller in size (~2.5 gigs in our case). With all that added up we’ll ultimately end up shaving ~8 gigs off the project’s content folder size. I don’t know how much is will save in a packaged build but I will definitely update this post when I do.
Quick Quixel Collision
A quick trick to get good collision for your nanite meshes to right click>>Assets Actions>>export you nanite mesh and then reimport it and assign it to the original model’s collision. The nanite meshes all get “converted” to ~2000 triangles so that’s what you get when you export. It can’t really be used for anything other than a static object but it’s works great for that. The mesh below was scaled 100 times and it’s collision was still great.
You can obviously use simplified geometry on them too for physics interactions.
Nanite for Characters –
Another thing that made CAT Interstellar a good candidate for remaking in UE5 is the main character is a bunch of hard-surface models attached to bones that are programmatically animated. Obviously, this isn’t the case for most games but we recommissioned the original artist to remake DOG VII without a poly limit. We don’t have it implemented yet but haven’t run into any issues yet. Here’s some images of the original version and the updated one.
Lumen is wild. All those little emissive materials in your scene will actually act as light sources. Wild. We have a lumen demo scene in our starting level but no spoilers. The worst thing about Lumen is you can’t use it with static lighting and Unreal Engine has the best gd static lighting. There’s also a few issues that can present themselves with a slow update rate like emissive materials on a moving character.
The lighting effect with lumen is controlled by emissive intensity and the size of the emissive area and was very intuitive to get running. It was also incredibly easy to replace the lighting in our game since we were using construction scripts to modify our light meshes and parameters already. The biggest change came with the The Surface level which has some indoor areas but mainly outdoors. We basically had to break a few walls down to let more indirect light in. It’s not really intended (at this point) for high fidelity interior lighting but with a few changes we were able to support but lighting schemes in about 50% of our game. We’ll flush out the rest as we get feedback what looks wonky. Ideally we’ll move completely away from static lighting.
If you found this at all interesting I’d be very interested in your thoughts and let me know if there’s anything you want more detail or pictures about. Also, check out the CAT Interstellar: Remastered steam page.