Endless world

The above is randomised and using Instanced Static Meshes so it’s speedy. And yes, the idea would be to write algorithms that distribute elements randomly but also intelligently; you don’t want a forest in the middle of the river and no roads should intersect mountains.

However complex this is going to be, you’d need to work with layers of generation. Theme, ground, major features, minor features, details. Either generate content [procedurally from simple geometry][1] (or even procedural mesh) or have a vast library of ready-to-go assets and scatter them according to the some rules. Or, ideally, both - hand made, large, eye-catching elements & then procedural fillers like debris, small rocks, vegetation, etc. And work really hard on blending the edges.

So if you wanted a seamless bridge, you’d divide into min 3 bits and have a chunk manager actor control when to start the bridge, how many chunks have the middle bridge section and when the bridge ends.


Here’s the setup for the above (although this can be done in many ways and this may not be the best):

  • a chunk is an actor with an InterpToMovement component that moves the actor over 1500uus (750 to -750) over 5s and then resets

  • there are only 2 actors and the second chunk is delayed by 2.5s
  • you can have more, of course, it’d be a matter of setting an appropriate delay / interp distance

  • and the generation in this case:

  • create up to 25 Instanced Static Mesh Components
  • 5x5 sectors of 200uu each produces a square with a 1000uu side
  • each ISMC generates up to 25 instances of random mesh in its own sector, with randomised scale

This whole thing is a glorified grid and would work OK for a city or park (or an endless Flippy Bird orwhatshisname runner) where things are organised in a man-made fashion. For more organic stuff you’d need a very different algorithm.

Anyway, this is just an idea of how to potentially approach it. The actual generation would be an order of magnitude more complex but procedural generation is well covered.

1 Like