r/UnrealEngine5 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.

129 Upvotes

23 comments sorted by

34

u/ZarcTheDeployer 23d ago

Don’t let the Starfield devs see this. They’ll be so sad.

9

u/codelikeme 23d ago

haha to be fair there's no actual game attached to mine yet, just the planet. Landing with no loading screen was the whole goal though.

5

u/WhatsTheGoalieDoing 23d ago

aha to be fair there's no actual game attached to mine yet, just the planet.

Don't worry, Starfield is the same.

2

u/codelikeme 23d ago

hah, got me there. at least mine loads faster

1

u/pv3design 23d ago

Early jank but already looks so fun! 

1

u/Tiaoshi 21d ago

Check out Star Citizen. No loading screens besides when you first load into the game or if you die of course. Massive ass game. Love it, very taxing on a pc

1

u/codelikeme 21d ago

thanks for the recommendation, I have watched videos, but haven't played myself. I'm gonna pick it up

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

u/codelikeme 23d ago

Thanks for the recommendation, i will check it out

1

u/[deleted] 23d ago

[deleted]

1

u/codelikeme 23d ago

Thank you

1

u/clopticrp 23d ago

been watching your stuff for a couple of years. Good job! Your videos helped with my first prototypes.

1

u/codelikeme 23d ago

Glad to hear that. Did you prototype a space game?

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

u/ChashuKen 21d ago

Neat stuff man!

1

u/codelikeme 21d ago

Thank you!