I started the year by working on a procedural 3D Road Generator in Godot engine. This tool allows for quick adjustments and prototyping, featuring smooth corners and grounded tracks. I also integrated the ability to place and adjust objects around the track procedurally.
Realtime/Procedural generation tooling#
Using Godot’s built in Path3D Nodes you can use the handy spline controls to define the track’s path in real time. A CSGPolygon node then extrudes a 2D shape along this path, with adjustments made for a smoother geometry match.
For a more road-like appearance, I modified the track shape and added edges with another CSGPolygon node. Materials and textures were then applied, paying attention to Normal map quality settings in Godot 4.0.
To spawn objects along the track, I wrote a script that calculates positions and orientations based on the track’s curve allowing for dynamic object placement.
Levelling up#
I continued working on this after this video, getting sick of CSGPolygon limitations (namely performance) and adding functionality:
To allow for proper track curvature controls, I setup three procedural meshes using Godot’s SurfaceTool. These are still defined using Path3D nodes, but allowing for more granular track controls:
Then improving the spawning of objects relative to track position. This included curve angle defined signage, randomised spawning and offsetting, and using lower resolution procedural geometry when editing to ensure editor experience.
Ultimately this all led to a second video where I time lapsed all these features combined:
I really should revisit and finish this project, as I feel it could make a decent Add-on for the Godot asset store. That said, there have been a few released since this video which may do a better job!
Thanks for reading/watching, and please let me know what you’d like to see next in the comments!
🦋 Follow me on BlueSky: https://bsky.app/profile/bimbam-tm.bsky.social
▶️ More on my Channel: youtube.com/c/BeauSeymour
Beau Seymour




