Glossary
Working definitions for the terminology used across the Intent Forge docs and source.
[ Glossary ]
Terminology, defined
Working definitions for the terminology that shows up across the docs and source. Each entry cross-links to the canonical page where the concept lives in depth.
A–E
A* (A-star)
The classic best-first graph-search algorithm Intent Forge's planner
uses. Expands states in order of cost-so-far + heuristic-estimate,
guarantees an optimal solution when the heuristic is admissible
(never overestimates the true remaining cost). See
Concepts → The planner.
Action
A UIntentAction data asset declaring preconditions (the world
state required to start), effects (the world-state changes
applied on success), an executor class (the code that runs the
action), an optional cost strategy, and default parameters. The
planner chains actions whose effects compose toward a goal's desired
state.
Anti-flap toolkit
The framework's signature feature — five orthogonal stability families that prevent agents from oscillating between near-equal goals or actions. See Anti-Flap Toolkit for the full layered model.
Archetype
A UIntentArchetypeAsset bundling a schema, a set of goals,
a set of actions, and optional sensor defaults. Assign one to a
component to give the agent its complete behaviour space. Designers
swap archetypes at runtime to model role changes (peasant → guard).
Cost strategy
A UIntentCostStrategy Blueprintable object that returns a cost for
an action given the current world state. Built-in strategies:
Constant (fixed cost) and FactWeighted (linear weighting against
world-state scalars). Curved costs are designer-authorable via a
Blueprint subclass — see
Cookbook recipe 6.
Dispatcher
The component-side abstraction for who calls EnterAction /
TickAction / ExitAction. Four options, selected per-component via
UIntentForgeComponent::DispatchMode:
| Mode | Driver |
|---|---|
Auto (default) | UIntentForgeDispatcherSubsystem — tickable world subsystem |
StateTree | FIntentForgeRunActionTask — a task in your StateTree |
BehaviorTree | UBTTask_RunIntentForgeAction — a task in your BT |
External | Your own code |
Contract is identical regardless of mode. See Concepts → The dispatcher abstraction.
Effect
A FInstancedStruct row in an action's Effects array that
declares a world-state change the planner assumes will happen on
the action's success. The executor may write additional facts not
declared as effects, but the planner only reasons about declared
effects.
EMA filter (Family 4)
Exponential Moving Average smoothing applied at
FWorldState::SetScalar time, configurable per scalar fact on the
schema. Formula: smoothed = α·raw + (1-α)·prior. α=0.25 (default)
is moderate smoothing; α=1.0 is identity (no smoothing); α below 0.1
is aggressive smoothing.
Goal: kill noise before it reaches goal scoring. See Anti-Flap Toolkit → Family 4.
Executor
A UIntentActionExecutor subclass that drives an action through its
lifecycle: EnterAction → TickAction (returning Running /
Succeeded / Failed) → ExitAction (or CancelAction on plan
invalidation). One executor per action; one instance per
dispatch. See
Cookbook recipe 21.
F–M
Fact
One named slot in the agent's world state. Three storage kinds:
| Kind | Storage | Used for |
|---|---|---|
| Bool | Packed TBitArray indexed by schema | Has-X questions: HasTarget, IsArmed |
| Scalar | TMap<FName, float> | Continuous values: health %, distance |
| Object | TMap<FName, FInstancedStruct> | Structured payloads (rare) |
Fact IDs are FNames; the schema is the source of truth and catches
typos at load time. See Concepts → Facts.
Family (1–5)
The five anti-flap families. Each lives at a different layer of the planner pipeline:
| Family | Layer | Mechanism |
|---|---|---|
| 1 | Selection | Goal-momentum bonus |
| 2 | Fact derivation | Schmitt latched bool facts |
| 3 | Execution | Min-action-commit time |
| 4 | Fact derivation | EMA scalar smoothing |
| 5 | Plan shape | Structural plan reuse |
A flap may be killed at any layer; attack the earliest layer that makes the signal stable. See Anti-Flap Toolkit.
FPlan
The immutable output of the planner — a TArray<FPlanStep> of
actions to execute in order, plus metadata (cost, root goal). Built
by UIntentForgePlannerSubsystem::Plan and consumed by the
dispatcher. Never mutated post-creation.
Goal
A UIntentGoal data asset declaring a target world state
(DesiredState, a FInstancedStruct array of preconditions) plus a
scoring policy (UIntentGoalConsiderationSet). The planner picks
the highest-scoring satisfiable goal and plans toward it.
Goal momentum bonus (Family 1)
A multiplicative bonus on the currently-active goal's score during
replan ranking: score *= 1 + GoalMomentumBonus. Switching to a
different goal requires the new goal to clear the bonus margin.
Default 0.15. See
Anti-Flap Toolkit → Family 1.
Hysteresis
The property of a system whose output depends on the history of the input, not just the current input. A Schmitt latch is the canonical hysteresis primitive: once the input crosses one threshold, the latch holds its state until the input crosses the other threshold. Critical to the anti-flap toolkit.
Live Inspector
The Intent Forge editor tab (Window → Developer Tools → IntentForge
Live Inspector) showing every live agent and full per-agent state in
PIE. Companion to the Gameplay Debugger (on-screen overlay) — both
back the same UIntentForgeWorldSubsystem registry.
Min Action Commit Time (Family 3)
A per-component float on UIntentForgeComponent. Once an action has
started, it can't be preempted for MinActionCommitTime seconds
unless RequestReplan has set the internal bBypassCommitGate
flag, or a Critical-interruption-level goal demands preemption.
Default 0.5 s. See
Anti-Flap Toolkit → Family 3.
N–S
Plan Generation
The monotonic int32 counter on UIntentForgeComponent
(GetPlanGeneration) that bumps every time the active action handle
changes. Dispatcher tasks cache the last-observed value and detect
plan invalidation by comparison. See
Concepts → Plan invalidation.
Plan reuse (Family 5)
When the planner emits a new plan whose first action matches the currently-running action, the component keeps the in-flight executor running rather than tearing down and respawning. Structural commitment to the same first step prevents executor-thrash flapping.
Precondition
A FInstancedStruct row in an action's Preconditions array (or a
goal's DesiredState array) that the planner evaluates against the
world state. Bundled types: BoolFactEquals, ScalarComparison.
Custom types are subclassable — see
Cookbook recipe 17.
Schema
A UFactSchemaAsset listing every fact an archetype family knows
about, with type (Bool / Scalar / Object), replan-trigger
flag, optional filter (Family 4), and optional latch (Family 2).
The authoritative fact catalog; resolves FactId → indices for the
world state.
Schmitt latch (Family 2)
A FIntentLatchedScalarFactConfig row on the schema that derives a
bool fact from a scalar fact using a hysteresis band (Enter and Exit
thresholds). Canonical low-side form (Enter < Exit): output is
true when scalar is below Enter, stays true until scalar rises
above Exit. Inverse form (Enter > Exit) supported. See
Anti-Flap Toolkit → Family 2.
Stable GOAP
Intent Forge's framing of GOAP enhanced with the five-layer anti-flap toolkit — classic GOAP optimality per replan, with orthogonal stability layers wrapped around it. The framework's signature framing.
StateVersion
A uint32 counter on FWorldState that bumps whenever any fact's
value changes. The planner uses it as a coalesce key: N fact writes
in a single frame produce one EvaluateReplan on the next tick.
Mirrors the PlanGeneration pattern at the world-state level.
T–Z
World State
The runtime fact storage on a component: bool bitset + scalar map +
object map + version counter, all packed into an FWorldState. The
planner reads from it and produces plans against it; sensors and
gameplay code write to it through the component's SetFactBool /
SetFactScalar / SetFactObject methods.