How best should I "repeat" a 2D platform level with finite width to make it endless?

If I have a scene that’s a simple 2D platform, wider than the camera view horizontally, are there any common/accepted best practices to make it “endless” - so that when you reach the furthest right hand side it repeats and you’re back at the left? i.e if I knock this together:

And you pass the 6th raised platform, the 1st raised platform will be visible again. So essentially you’re playing the same level but could be running endlessly. (I’m sure there’s a proper name for this…).

The best results I’ve found so far are when I manually set the player’s position.x coordinate so it essentially shoots back to the left when it hits a threshold on the right, but this means the whole screen has to be clear of things like platforms, enemies, etc so they don’t disappear.

I’d also prefer not to make loads of duplicate objects or, if I have to, only temporary ones to help make the effect work - mainly because in my levels there are a finite number of objects that will change as the player continues to pass through and it matters that they only see the same objects on each pass through the level.

Hope that makes sense! Any help on reading or next steps to try would be much appreciated!

Duplicate the end parts of the level at the beginning so that when you blip back to the left, it looks the same. If you don’t want them visible, mask them (disable) on first start. Alternatively, reposition the objects to the right as the player runs and scroll infinitely. This is what I’m doing with my wrap-around space shooter - when an object gets too far away travelling in one direction, position it on the other side of screen to scroll into view.

Ultimately it depends on how you are creating your level. Infinite runners will be procedurally generated, so you can create blocks at start and hide/show/position as you go. Don’t forget it’s perfectly acceptable to just move objects off screen (and disable the GameObject)! So create platforms 1-20 at start, then position them at runtime off the right as the player gets near, and disappear them when they’re off to the left.

May be you’ll be interested