While working on a challenge for my upcoming game U Complete Me I was faced with the challenge of procedurally generating unique forest race tracks for racing drones. At face value It seemed rather complex but its actually Incredibly simple.
I downloaded Surge from the Unity asset store and created a looping spline with 8 points arranged roughly in a circle.
Through code I scale and rotate these spline points by a seeded random amount creating a unique path. The next thing I did was spawn obstacles along the path for the player to avoid. I did this by moving a empty game object along the spline in increments, each increment I move it to the left or right by a clamped random amount and ray-cast downwards to get a point on the ground. I then instantiate a new obstacle at that point. I repeat this a specific amount based off the approximate length of the spline. The resulting track looks good but needed something to define the edges. The edging stones were placed in a similar way to the obstacles but without the randomization.
Finally after adding a delay and a challenge start zone I am left with this :
In the next blog post I'll talk about how I am implementing the game-play for this challenge.