Console variables
The three agenticbiomes.GcGuard console variables, the engine PCG and garbage-collection variables the plugin reads, and where the plugin's other settings live.
Console variables
Agentic Biomes registers three console variables and no console commands. All three belong to one editor-only feature, the PCG garbage-collection guard. Everything else you tune lives on assets and actors (the Terraformer, biome assets, regions, PCG node settings), not on the console. The plugin also has no Project Settings page.
The variables are registered by the AgenticBiomesEditor module, which loads in the editor only. They do not exist in a packaged game, and a game build has nothing to configure here.
Variables
| Variable | Type | Default | Effect |
|---|---|---|---|
agenticbiomes.GcGuard | int | 1 | Any value other than 0 defers automatic editor garbage collection while a PCG graph is executing. 0 turns the guard off. |
agenticbiomes.GcGuard.MaxWindowSeconds | float | 900 | Hard cap, in seconds, on one deferral window. Past it the guard stops deferring and logs a Warning even though PCG is still running. 0 or below disables the cap. |
agenticbiomes.GcGuard.MinFreeMemoryMB | float | 512 | If available physical memory drops below this many megabytes, the guard stops deferring and logs a Warning. 0 or below disables the check. |
All three are registered with the default flags, so you can change them at any time from the editor console. Each is read every tick, and a change takes effect immediately.
agenticbiomes.GcGuard 0
agenticbiomes.GcGuard.MaxWindowSeconds 1800
agenticbiomes.GcGuard.MinFreeMemoryMB 1024Typing a variable name without a value prints its current value. The values above are examples, not recommendations.
The garbage-collection guard
Why it exists
With pcg.GraphMultithreading on (the engine default), PCG applies some object-reference overrides on a worker thread. In UE 5.8 that code path does not hold the engine's garbage-collection scope guard, and the object lookup it makes is fatal if it lands while garbage collection holds the object hash-table lock. The race is live for as long as a bake or generation runs. The guard removes the other half of the race: while PCG is busy, it stops the engine from starting automatic garbage collection.
It is a mitigation for that engine behaviour, not a change to PCG.
What it does
- It watches the editor's PCG subsystem (the Play In Editor one while a session is running). While any PCG task is scheduled or executing, it opens a window and pauses automatic garbage collection. It also asks the engine to delay the periodic collection.
- When PCG goes idle, the window closes, the guard releases the pause it took, and the deferred collection happens on the next tick.
- An explicit collection is never blocked.
obj gcand script calls to collect garbage still run, so the guard cannot leave the editor unable to collect. - With
pcg.GraphMultithreadingoff, the race does not exist, so the guard never touches garbage collection. If the engine variable cannot be found, the guard assumes it is on. - A pause that was already in place before the guard opened its window is not the guard's to release, and it is left alone.
- With
agenticbiomes.GcGuard 0, the guard still times the window and logs it, but defers nothing. If it is holding a pause when you switch it to 0, it releases that pause on the next tick.
The caps
Pausing collection while PCG allocates can grow memory use, so two caps stop a runaway bake from running the machine out of memory.
- Duration. When a window reaches
agenticbiomes.GcGuard.MaxWindowSeconds, the guard logs a Warning and lets collection resume. The Warning text says the off-thread race is live again until PCG goes idle. - Free memory. When available physical memory falls below
agenticbiomes.GcGuard.MinFreeMemoryMB, the guard logs a Warning and lets collection resume.
After either cap trips, the guard stays out of the way until PCG goes idle, then arms again for the next generation burst.
Engine variables it interacts with
The engine also ends a collection pause on its own:
| Variable | Engine default | Effect |
|---|---|---|
gc.PauseGCTimeLimitSeconds | 30 | A paused garbage collection resumes by itself after this many seconds. |
gc.PauseGCFreeMemThresholdMB | 300 | A paused garbage collection resumes by itself if free physical memory falls below this many megabytes. |
If the engine resumes collection on its own while PCG is still running, the guard takes a new pause the next time it sees the engine unpaused. Its own two caps still bound the window.
What you see in the log
The guard writes to the LogAgenticBiomes category. N stands for a number.
GcGuard armed: automatic GC will be deferred while PCG graphs execute (agenticbiomes.GcGuard=1, MaxWindowSeconds=900, MinFreeMemoryMB=512).
GcGuard: PCG execution started - suppressing automatic GC (gc period Ns).
GcGuard: suppression window closed (PCG idle) after Ns, N ticks deferred, ~N automatic collection(s) deferred. Released the guard's GC pause.With the guard turned off, the start line reads OBSERVING ONLY, agenticbiomes.GcGuard=0. The two caps log Warnings that begin GcGuard: hard cap hit and GcGuard: only N MB physical memory free.
Engine variables the plugin depends on
These are Epic's variables. The plugin reads them but does not register or change them.
| Variable | Engine default | Read by | Effect on Agentic Biomes |
|---|---|---|---|
pcg.GraphMultithreading | on | The GC guard, every tick | Controls whether the guard is active at all (see above). |
pcg.RuntimeGeneration.Enable | on | The Terraformer, when it hands the runtime core to the scheduler after a build | If it is off or missing, the hand-off is refused and an Error is logged. Runtime ground cover does not generate. |
pcg.RuntimeGeneration.GlobalRadiusMultiplier | 1.0 | Epic's runtime generation scheduler | Scales the generation radius of every runtime-generation component, including the ground cover core. The plugin does not read it. |
The runtime hand-off is refused for several other reasons too (no live world, no runtime scheduler, an inactive or unregistered component). The Error line lists what it needs.
Logging
To see more detail from the plugin, raise the verbosity of its log category with the engine's Log command:
Log LogAgenticBiomes Verbose
Log LogAgenticBiomes LogThe first line turns on Verbose output, which adds per-node detail from the PCG nodes, for example the counts of points Cliff Place rejected as too short, too tall or without terrain. The second returns to the default level.
Settings that are not console variables
| What you want to change | Where it lives |
|---|---|
| Placement mode, terrain backend, quality level, build and bake buttons | The Terraformer actor. See Terraformer. |
| Species, ground cover entries, per-biome values | The biome data asset. See Biome asset. |
| Height, curvature, cliff and fog filtering | The settings on each PCG node. See PCG nodes. |
| Density, scale and clustering of runtime ground cover | The generator graph parameters. See Runtime ground cover. |
| Which sources drive runtime generation | The level's PCG World Actor (Epic's class). |
The plugin does not set any rendering or project variables. Its Config/DefaultEngine.ini contains only a [CoreRedirects] section that maps class, enum and package names from earlier releases of the plugin onto the current ones, so older assets still load.
Limits
- There are no variables for ground-cover density, view distance or build behaviour. Use the parameters in the table above.
- The guard cannot stop a collection you start yourself, and it does not prevent a crash from other causes.
- The guard is for the editor. It does nothing in a packaged build.
Need help? Join the Insodimension Discord.
PCG nodes
Reference for the six custom PCG nodes Agentic Biomes adds - pins, every setting with its default and range, exact behaviour, and which shipped graphs use each node.
Editor toolsets
Every tool in the two Agentic Biomes editor toolsets, with argument names, defaults, return values, blocking behaviour and refusals