Landscape Road System

Tool feature example level

Tool feature example level

Spline Road Example Video - Landscape Manipulation

Spline Road Example Video - Snapping

Spline Road Example Video - Landscape Paint Layer Manipulation

Spline Road Example Video - Landscape Visibility Manipulation

Spline Road Example Video

Spline Road Example Video

Nativization of the tool to existing Landscape Spline toolset

Nativization of the tool to existing Landscape Spline toolset

Nativation of the tool to existing Landscape Spline toolset

Nativation of the tool to existing Landscape Spline toolset

Landscape Road System

These images and videos are from an unreleased project that I had the pleasure of being a Principal Technical Artist for. They represent WIP on a tool for generating road meshes based on splines. As part of the large maps being developed for this project it was important to be able to quickly layout complex roadways along organic terrain layouts.

Initially we were using the built in landscape spline system, but quickly ran into areas where we wanted to make improvements. Epic's existing system only allowed for a single mesh assignment where we would often have kits of roads with various pieces we would switch between. It was also not possible to access these splines from PCG systems in order to propagate other types of content along the roads. Extending off of the existing work that had gone into the stamp system detailed in a separate post I was able to make a spline based road tool that we could customize as we liked while retaining the ability to augment the landscape below it.

Other useful features included the ability to "snap" end spline points to other road actors allow us to easily transition from organic, winding roads back to more rigid grid based static meshes, painting landscape material layers/visibility and projecting an initial spline layout to the current landscape before turning on landscape modifications.

One of the drawbacks we did discover with this approach was that because all landmass derived actors are built to cook out at build time our roads would disappear in the actual game. The work around this the road system tool support a baking pipeline that uses the dynamic mesh blueprint library to baking the existing spline meshes to a custom static mesh actor. This actor is then placed at the same location as the tool and the functions that control the spline mesh are disabled. This allows us to "commit" our work to a static mesh, but also backtrack easily when we need to make edits by deleting the mesh and re-enabling the underlying tools behaviors. This also helped in cases of performance and various graphics features where spline meshes were less supported than static meshes and more expensive.

Future work on this tool would have involved improving overall performance of the tool at editor time while scaling up the resolution of the procedural landscape sculpting which could be a bit lacking in cases where very large terrain actors were used.

UPDATE:
More recently I nativized this tool in C++ by extending the original Landscape Spline workflow and deprecating the blueprint version. This created a more stable and performant set of tools and reduced the potential for bottlenecking behind custom/complex blueprint logic from an experimental plugin. We also switched to a data table based approach based on observed developer behavior where the desire to tweak individual settings per placement was generally less desirable than initially thought. This also consolidated the number of content assets that needed to be managed further streamlining the overall workflow.