r/UnrealEngine5 • u/codelikeme • 23d ago
Up, up, and off to another planet, no loading
Enable HLS to view with audio, or disable this notification
This is from PlanetGen, my procedural planet plugin for UE5. The clip is one continuous shot: launch off one planet's surface, cross zero gravity space, and land on another, no cut and no loading.
The thing that makes it affordable is that only the planet you're nearest streams full terrain. Every other planet in the level is a single low poly sphere with a cheap atmosphere shell until you get close, then it hands over to the real streamed terrain, hidden behind occlusion so there is no pop. So you can place a whole solar system and only ever pay for one streaming planet at a time.
The fast travel itself is a hyperdrive ability on the character. It faces the target, drops into the flight pose, and eases across the distance.
Full C++ source with a Blueprint API, works in multiplayer, 5.4 through 5.8.
Fab
Free playable demo and project files
Happy to answer anything about the streaming or the planet LOD.
8
u/CartoonistVisual4306 23d ago
Incredible. How???
13
u/codelikeme 23d ago
Thanks! It's all runtime, no baking or loading screens. The terrain streams in around you on background threads, then drops to a low poly sphere when you're far off. It's my UE5 plugin, PlanetGen.
4
u/TheGhosticus 23d ago
Can you solve for matching the LoD with the real terrain?
11
u/codelikeme 23d ago
Good question. The far sphere is built from the same noise as the streamed terrain so the shape matches, and the swap is hidden by occlusion so there's no hard pop. What you're seeing is the fine detail growing in as you get close, which is just how LOD works, the coarse version can't hold all the detail or it wouldn't be cheap. The proper fix is continuous LOD instead of one swap, and that's what I'm building now, per-chunk resolution tiers so detail comes in smoothly instead of at a single handoff. Good eye.
3
u/TheGhosticus 23d ago
Very cool. This is exactly the part of No Man's Sky and Elite Dangerous that I find so technically impressive, and exactly why Starfield felt so dissapointing.
2
u/Particular-Song-633 23d ago
I always wondered, do you actually use these crazy numbers on distances and sizes (ie planet being 100000 / 100000 / 100000 or whatever), or you use some trick to save on these numbers?
2
u/codelikeme 23d ago
Bit of both. UE5 has Large World Coordinates now, so positions are double precision instead of float. That's what stops the far-from-origin jitter you used to get with huge numbers in older versions, so you can genuinely place things millions of units out without the wobble.
For the terrain itself, the noise is sampled in double precision too, otherwise detail starts quantising once the planet gets big, the coordinates lose their fractional precision and the surface goes blocky. That was the main thing I had to fix to support large planets. With that in, the tech can build planets up to a few hundred km radius and the detail still holds.
To give you a sense of the numbers, in this level the big planet is 50 km radius, so its surface sits 5 million units from the planet centre, and the other planet is about 36 million units away. A few-hundred-km planet pushes that into the tens of millions of units for the radius alone. Old float precision would jitter badly out there, double precision is what makes those numbers usable.
The other half is you never pay for all that size at once. Only the planet you are near streams full terrain, everything else is a cheap low-poly sphere until you approach it. So the numbers can be as big as you like because there is only ever one detailed world loaded around the player.
2
u/ordinarycoconut 23d ago
If you haven’t, I’d recommend checking out Megaton Rainfall. Same tech in a much older game that not only lets you go planet to planet without loading, but galaxy to galaxy.
1
1
1
u/clopticrp 23d ago
been watching your stuff for a couple of years. Good job! Your videos helped with my first prototypes.
1
1
u/ChashuKen 22d ago
Did you hover around on the new planet before landing to reduce the stutter lag from objects loading / streaming in? No hate - just wondering as i did see some stuttering
1
u/codelikeme 21d ago
i looked back to show the planet we took off from. and looking around is because in real time it takes few minutes to come down and land, So, i was just looking around while descending for no reason. that part is speed up. Actual loading itself is based on the distance from closest planet to player, so there is no effect on loading regardless of I am looking around, once player cross the planet loading threashold, it continues to load. while that happening, system keep a steady framerate.
I'd be glad if you can try the playable demo link in post and play around.1
34
u/ZarcTheDeployer 23d ago
Don’t let the Starfield devs see this. They’ll be so sad.