PCGODOT is a highly powerful, node-based Procedural Content Generation (PCG) framework for Godot 4.6+, heavily inspired by advanced node-based procedural workflows. It enables developers to construct intricate point-set distributions, manipulate spatial attributes, and spawn meshes, lights, or scene hierarchies procedurally using a visual flow graph editor inside Godot.
- Standardized Node Structure: Unified categories, clear names, and consistent logical schemas.
- +110 Nodes: A robust library of nodes for spatial, attribute, and asset generation. Check out the full PCGODOT Node Library Reference.
- Interactive 3D Viewport Debugging: Toggle 3D visualizations showing point positions, density gradients, scale, and rotations directly in Godot's editor (select a node and press
D). - Searchable Data Inspector: Spreadsheet/table inspector showcasing attributes at any node, with active highlighting linked back to the 3D viewport (select a node and press
E). - Subgraphs & Loops: Nest graphs with local parameters, custom outputs, and feedback loops.
- Core Tagging Support: A dedicated
tagsproperty (PackedStringArray) inside data elements for tag-based filtering. - Copy/Paste: Import/export graph components instantly as JSON.
- Auto-Reload Pipeline: Automatically monitors filesystem changes, invalidates caches, and hot-reloads graphs in the editor.
PCGODOT organizes nodes into a clean category structure, expanded with custom Godot helpers. For detailed documentation on what each node does and to view their source code, see the PCGODOT Node Library Reference.
- Subgraphs & Control Flow: Nested subgraphs (
subgraph.gd), loops (loop.gd), inputs/outputs, branches, select nodes, and conditional switches. - Metadata & Attributes: Add/remove attributes, rename streams, filter attribute ranges, and manipulate tag collections.
- Math & Logic Ops: Standard math operations (
math_op.gd), curve/density remapping, custom expression parser (expression.gd), and aggregate reductions. - Splines & Paths: Sample spline paths, generate splines from point arrays, calculate distance gradients, and clip points by boundary polygons.
- Point Transformations: Move, rotate, scale, and snap points to grid boundaries, prune overlaps (
self_pruning.gd), or apply Lloyd relaxation. - Assets & Spawning: Spawn MultiMeshes, scene instances (
spawn_scenes.gd), lights/GI nodes (spawn_nodes.gd), or apply point data properties to actors. - Spatial & Physics Queries: Perform spatial difference/intersection/union operations, trace raycasts, or check for physics collisions.
- Generators & Grid Nodes: Draw coordinate grids, extract edge/corner boundaries, generate simplex noise, and build room-carving layouts.
Distribute points across the faces of a 3D Mesh while pruning points near hard edges.

Distribute different subscenes randomly along curves and paths using attributes, custom rotation-alignment filters, and scene scanners.

Browse nodes structured into standardized categories. Select filters such as Filter Data by Attribute, Filter Data by Tag, and Filter Data by Type.

Sample points and scale their density values smoothly based on their distance/proximity to curves or splines.

Create nested graphs and easily collapse selected nodes into a reusable Subgraph.

Generate complex procedural architecture such as helical towers. Combines curve sampling with coordinate transforms, relative lintel placement, and duplicate scatter operations to create debris and rubble.

Generate dynamic gameplay platforms such as the multi-colored hexagon grid inspired by Fall Guys. Use the Random Color node to assign random color attributes from a palette to a MultiMesh.

- Copy the following folders from this repository into your Godot project's root:
demo/addons/flow_nodes_editordemo/bin
- Open your project in Godot: Project → Project Settings → Plugins.
- Locate Flow Nodes Editor and toggle the status to Enabled.
In a 3D Scene:
- Create a
FlowGraphNode3Dnode. - In the bottom dock panel, select the Data Flow workspace (appears when the node is selected).
- Press Shift+A (or Right-click) inside the graph to open the Add Node search panel.
- Add a generator like Grid, then connect it to Spawn Scenes or Spawn Meshes.
- Press D on a selected node to toggle its 3D debug visualizer.
- Press E to toggle the bottom Data Inspector spreadsheet.
If you want to compile the C++ wrappers (KdTree, RTree) yourself:
git submodule update --init
sconsPrecompiled binaries for Windows and macOS are included under demo/bin/ by default.
This project is licensed under the MIT License. Feel free to adapt and expand it!
