Seeds and randomness
Every graph has exactly one Graph Seed dial. That single number is the source of every random value, every scattered point, every noise field, and every L-system or dungeon branch in the graph. Change it and everything re-rolls together. This page explains how randomness flows from that one dial down to individual nodes, loops, and sub-graphs, and how to lock or vary each piece independently.
One dial, one graph
The Graph Seed appears in two places:
- The graph window toolbar while you are authoring.
- The instance inspector in the scene, so a designer can vary the result without opening the graph.
Spinning the dial re-rolls the whole graph at once. That is usually what you want: one knob that generates a new overall variation. The sections below cover how to take finer control when you need it.
Each node rolls its own dice
Every node that produces random output uses its own internal draw from the Graph Seed. Two random nodes in the same graph never produce the same sequence, so you can scatter, then add random scale, then add random rotation and each step is independent.
The Seed number on a node (the small number field in the node header) picks a different variation of that one node. Increment it to try an alternative without changing anything else. The node-level Seed is an offset, not a replacement: the Graph Seed still drives everything, so re-rolling the graph re-rolls the node too.
Noise and field nodes
Noise nodes (FBm, Voronoi, Height Displace, and similar) are stable across the graph by default. They do not vary per loop iteration on their own. This is intentional: a noise field should tile consistently across a structure. If you want a different noise pattern on each iteration of a loop, wire the loop Index port into the noise node’s Seed input. That gives you a deterministic, per-iteration noise field that still re-rolls predictably when the Graph Seed changes.
Randomness inside loops
A For Each or For Each Copy loop runs the body once per iteration. Random nodes inside the loop body roll a fresh value on every iteration automatically. You do not need to do anything special.
If you need a specific value to repeat on a specific iteration, wire Index into that node’s Seed. Index 0 always produces value A, index 1 always produces value B, and so on, regardless of how many times the loop runs or which Graph Seed is active.
Randomness inside a For Each Spawn loop
Random nodes inside a For Each Spawn loop follow the spawn’s position: the scatter result seeds the random draw for that spawn point. Two spawns at different positions produce different random values. If a spawn point moves (because the scatter changes), its random output re-rolls. This makes the output stable as long as the scatter is stable, and naturally re-distributes when the scatter changes.
Sub-graph variation
When a sub-graph is placed in a loop or used as a stamp, the Vary Each Copy toggle controls whether each placement picks its own variation:
- Vary Each Copy on (the default): each copy of the sub-graph draws independent random values. A row of trees all look different.
- Vary Each Copy off: every copy uses the same internal seed, producing identical results. Useful when you want consistent repetition rather than variation.
Locking a single node while the rest re-rolls
Right-click any seeded node and choose Follow Graph Seed to toggle it off. With that toggle off, the node holds its own fixed Seed regardless of the Graph Seed dial. The rest of the graph re-rolls normally. Use this when one element should stay constant (a fixed centrepiece, a repeating motif) while everything around it varies.
After the October 2026 update
Graphs opened after the October 2026 update re-rolled once: the structure and logic are unchanged, but the random output is different. This is expected. Spin the Graph Seed dial to find a variation you like and the graph will stay stable from there.
Quick reference
| What you want | How to do it |
|---|---|
| Re-roll the whole graph | Change Graph Seed in the toolbar or inspector |
| Try a different variation of one node | Change that node’s Seed number |
| Different noise per loop iteration | Wire loop Index into the noise node’s Seed |
| Specific random value per iteration | Wire loop Index into the node’s Seed |
| All sub-graph copies identical | Turn off Vary Each Copy |
| One node fixed, rest re-rolls | Right-click the node, turn off Follow Graph Seed |