Procedural Cave System

This document describes how to use the custom procedural Cave System plugin, to generate at editor -or real- time fully procedural caves.


Plugin Installation and contents

This section describes the installation of the plugin


Installed as part of the Goofish Optimization project plugins. Checkout from goofish perforce and copy the following folders to /Engine/Plugins

  • HighMaterialsPlugin

  • ProceduralTools

  • CaveSystem

  • GoofishOptimization


The plugin consists of quite a few Blueprints, Meshes and c++ classes.

Only the important ( frequently used, or applicable to the user ) ones will be covered in this document, for information and details about the static meshes and/or materials simply go through the plugin content folder using the content browser, and filter by type, or use the reference viewer.

Important c++ Classes:

  • ProceduralContentSpawner

    • This is the main class, from which a child blueprint should be constructed, and placed in the level. This will be used to generate the Cave.

  • CaveSystemGenerator

    • Used to generate a section ( walls, floor, ceiling, walkway, portals [ to next walkways/sections ] )

  • CaveWallActor

    • Used to produce cave walls.

  • MultiSplineActor

    • Used to produce walkways.

  • ProceduralScatterActor

    • Used to scatter various actors across the cave system. ( rocks, roots, props, etc )

  • SealActor

    • Used to “Seal“ certain portals, to create closed off areas.


Important Blueprints

  • Procedural Content Spawner


  • This is the main CaveSystem blueprint that gets placed in the world, and manages all cave generation systems.

    • All of these systems/generators can be modified/duplicated, simply by changing their reference in this blueprint, to the desired class.

The CaveSystem plugin is a code & content plugin


Be sure to enable “Show Plugin Content” in the Content Browser





This section describes how to use the plugin to generate fully traversable, and procedural caves.

Drag the “procedural_content_spawner_bp" into the scene.

Modify Seed and/or Sections as desired. Then press “Generate System"

This will generate the basic cave layout, and because it is using a seed it will always look the same after redoing generation.


Next go through each of the various scatter generators, and use them to decorate the environment with scatter actors.

It is usually better to start with the large props, then move towards the smaller ones, Boulders, PIllars, Roots, then Rocks and Smaller Rocks.


The environment can now be modified at editor time, and walls removed, and sections manually added to create more distinctive environments.

Everytime the generation is rerun, those manually placed/custom sections would need to be reconnected by removing the sealed walls, and placing open portals again manually. Although any manually placed actors will remain in the scene, so no need to rebuild entire sections manually.


The plugin already has prebuilt cave generators, that can be used without requiring any custom class/blueprint creation or modification.




Realtime Procedural Generation vs Editor Time

The tool may be used to generate realtime cave systems, in stead of at editor time.

Simply place the procedural_content_spawner_bp, in the level, ensure all generators are empty, and all scatter spawners ( meaning dont generate any cave systems in the editor)

Ensure the “Generate at Runtime" is ticked.


When the game starts, or the level starts, or this Actor is spawned in the level ( whenever, or however this blueprint starts )

It will generate a fully procedural cave on the fly, as set out by the sections ( i.e walkways )

Realtime Demo: