The real challenge on a procedurally generated racing world is to make it believable, consistent and varied when it comes to the environment, as if it was created by an artist with his own hands.
So, the engine should “think” as naturally as possible. Just as an artist, the engine has a “layered” way of thinking, that starts with the creation of a basic layer. More and more details are added afterwards, for characterisation and diversification of the scene.
In most cases, when we speak of procedural environments, we refer to hybrids which combine parts generated by the algorithms, such as roads and land patches, and pre-modelled assets that are placed on functional points.
One of our future goals is evolving the engine and making it able to also generate the assets themselves, like they were Lego™. We think of a building and break it down into its primitive parts such as doors, windows, stairs and roofs. Based on these parts, if you apply certain rules you can get thousands of different buildings (examples here).
If you also add a library of procedurally generated textures (we’ll talk about it later), the number of possibilities will dramatically increase.
Track Pipe Flow
The same principle is applied to the sides of the track, between borders and the left/right limits, creating what we define inbound areas, later filled with materials such as grass, soil, sand and concrete.
External track cells (outbound) are then filled to cover the area between the base track and the terrain.
To avoid seams between tarmac and the off-track, profiles are extruded along the separation line creating stripes of variable width like the classic white line or more complex patterns that enlarge the track on functional points.
Until now no 3D artist has been used, except for creating materials 🙂 They will come into play in the next step… so, stay tuned!