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
Installation
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
Contents
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
Usage
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.
Demo:
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: