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:

ModeDriver
Auto (default)UIntentForgeDispatcherSubsystem — tickable world subsystem
StateTreeFIntentForgeRunActionTask — a task in your StateTree
BehaviorTreeUBTTask_RunIntentForgeAction — a task in your BT
ExternalYour 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: EnterActionTickAction (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:

KindStorageUsed for
BoolPacked TBitArray indexed by schemaHas-X questions: HasTarget, IsArmed
ScalarTMap<FName, float>Continuous values: health %, distance
ObjectTMap<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:

FamilyLayerMechanism
1SelectionGoal-momentum bonus
2Fact derivationSchmitt latched bool facts
3ExecutionMin-action-commit time
4Fact derivationEMA scalar smoothing
5Plan shapeStructural 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.

On this page