ActionGraph
ActionGraph is a visual scripting system that lets you create game logic using nodes instead of code. Connect nodes together to build behaviors, respond to events, and control your scene โ all from a graphical editor.

ActionGraph is a visual scripting system that lets you create game logic using nodes instead of code. Connect nodes together to build behaviors, respond to events, and control your scene โ all from a graphical editor.
What Can You Do?
- Script without code โ build gameplay logic, UI interactions, and event handling visually
- React to events โ trigger graphs from collisions, input, timers, or custom C# delegates
- Control flow โ use loops, branches, and delays to create complex behaviors
- Mix with C# โ call ActionGraphs from code or expose C# methods as custom nodes
- Reuse logic โ save graphs as action resources and share them across your project
How It Works
Every ActionGraph starts with a root node that fires a signal when the graph runs. You connect action nodes (blue) to perform operations in sequence, and expression nodes (green) to compute values. Links between nodes carry signals or data.
Graphs can be attached to components via the Actions Invoker, wired up to built-in component events like trigger collisions, or invoked directly from C# using delegate properties.
Pages
- ๐ฑ Getting Started โ learn the basics of nodes, links, and graph editing
- ๐งฉ Component Actions โ add ActionGraphs to your scene with built-in components
- ๐พ Variables โ store and reuse values in your graphs
- ๐ ๏ธ Using With C# โ invoke graphs from code and pass parameters
- ๐ Examples โ copy-paste examples for common patterns
- ๐ Custom Nodes โ create your own node types
Referenced API
Canonical API pages mentioned in this guide.
Represents an async method as a directed graph. Control will enter through an "event" node, which can route signals through a network of other nodes that perform actions. Use `Facepunch.ActionGraphs.ActionGraph.CreateEmpty(Facepunch.ActionGraphs.NodeLibrary)` to create a completely blank graph, or `Facepunch.ActionGraphs.ActionGraph.CreateDelegate`(Facepunch.ActionGraphs.NodeLibrary)` to create a graph that handles an event matching the signature of a particular delegate.
Node inputs and outputs of this type will transmit signals rather than values.
Base class for all value expressions used as arguments and assignments within blocks.
Built-in static methods available to Doo scripts.
Represents an on-disk project.
Parameters for constructing a noise field. Use `Sandbox.Utility.Noise.FractalParameters` if you want a noise field made from multiple octaves.