top of page

Procedural Level Design Tools

As a level designer, blocking out levels can be a time-consuming task so I tried to create a tool to make this proces as efficient as possible with the power of PCG graphs in UE5.

This is a high-level breakdown of what the finished tool does.

Credit to Synty Store for their amazing POLYGON Horror Asylum asset pack!

Project goal

Building tool:​​

​

  • Create a tool for level designers that allows them to quickly block out interior and exterior playspaces in and surrounding buildings.
     

  • Walls must adhere to a spline and rotate correctly.
     

  • Every wallpiece should be swappable with window and door variations, with appropriate collision applied.
     

  • Content must be playable right away.
     

  • Easy to adjust with exposed variables.

​

​

Environment tool:

Add the ability to 'paint in' LD objects:

  • Blockers

  • Placeholder set-dressing to define playspace (paths and context)

  • Procedurally place objects to rapidly create environments (trees, rubble, rocks, hedges, paths, anything they can think of!)

  • Define spaces inside the splines to exclude from generating objects

​​​

​

Performance

Keep it performant by limiting drawcalls:​​

  • Being aware of material slots

  • Using instanced static meshes

Visuals to be added very soon!

Pre-viz

Building tools

Generating buildings​​

​​

  • The user can select PCG mode in the editor and pick the building generator tool to start drawing out a spline. The walls of the building will follow this spline an rotate accordingly.

  • The user can select different pieces from the dropdown 'Data Instance' list and pick what window or door piece they want to draw in. Can be easily removed by shift-clicking the object again.

  • Floor pieces are generated inside the building procedurally with some variation in tiles (damage vs undamaged) and rotation. These values can easily be tweaked in the graph. 

​

Generating interior walls

​​

  • Interior walls follow a simple spline (loop off, not closed) and are used to create rooms within the main building.

  • Like the exterior walls, they can be painted in with doors and windows that are selected for interior spaces.

​

Extra:

  • Synty pack metrics were used, so every piece fits together perfectly.

  • Proper collision is maintained so built content is playable immediately: players can walk through doorways etc.

  • Easily add variations to the graph to create a more varied look (damaged vs. undamaged).
     

  • All generated objects are instanced static meshes for performance!

Visuals to be added very soon!

Environment tools

Scatter tool (PCG tool made outside of UE5.7's PCG mode)​​

​​

  • The user can draw a spline (closed loop) and generate trees, rocks, bushes (or whatever they want!) in an area. Variables are exposed so each instance of the spline can be set up appropriately.

  • Exclusion spline: the user can draw a spline to exclude zones from the generation zone. For example: trees will not generate on top of paths.

  • Seeds can be used to find the desired result.

  • Some objects have sockets to spawn objects alongside it.
    For example: a tree has a chance of spawning a rock at the base.

  • Possibility to create small, custom set-ups to spawn in as instanced levels to preserve artistic control. 

​

​

Prop painting tool (PCG tool made inside of UE5.7's PCG mode):

  • The user can pick a prop from the dropdown 'Data Instance' list and start painting in objects.

  • Some props have rules like: 'free to place anywhere' or 'always up against a wall' etc.

  • Used to fill out a space quickly to show context of a space or establish the playable space.

  • 'Random' rotation and size variations per prop if appropriate.

  • Props can easily be 'erased' by holding shift and clicking on the places object again.
     

​

Spline meshes for additional detail:

  • Allows the user to quickly place repeating objects like trims for buildings to increase readability, hedges etc.

  • Variations can easily be made for any object.
     

  • All generated objects are instanced static meshes for performance!

Visuals to be added very soon!

Find me on

  • Twitter
  • LinkedIn
  • YouTube

©2020 by Jamie ten Hove

bottom of page