Hello world
The smallest possible Intent Forge agent — one goal, one action, one fact. The entire authoring surface in 20 lines. Use this to verify your install and feel the model click.
[ Example ]
Hello, Intent Forge
One goal, one action, one fact. The entire authoring surface fits on one screen. The point isn't that it's useful; it's that you can see the whole API in 20 lines. If the model clicks here, the Quickstart and everything after it is inevitable.
Anatomy — the whole agent in three assets
Anatomy
Plus a DA_Archetype_Hello that bundles all three, and a pawn with a UIntentForgeComponent pointing at the archetype. There is no fourth piece.
DA_Schema_HelloFactSchemaAsset- Facts[0]
- bSatisfied : Bool
- TriggersReplan
- true
DA_Action_MarkSatisfiedIntentAction- Preconditions
- (none)
- Effects
- Set bSatisfied = true
- Executor
- Wait (1s)
- Cost
- Constant 1.0
DA_Goal_BeSatisfiedIntentGoal- Desired State
- bSatisfied == true
- Considerations
- Constant 1.0
- Priority
- 1.0
Build it
Create the schema. Content Browser → right-click → Miscellaneous → Data Asset → FactSchemaAsset, name DA_Schema_Hello. Open it; add one Fact row: Id bSatisfied, Type Bool, Triggers Replan true.
Create the action. Right-click → Miscellaneous → Data Asset → IntentAction, name DA_Action_MarkSatisfied. Preconditions: empty. Effects: one row, Set Bool Fact → bSatisfied = true. Executor Class: Wait. Default Params: Override Duration = 1.0. Cost Strategy: Constant, Cost = 1.0.
Create the goal. Right-click → Miscellaneous → Data Asset → IntentGoal, name DA_Goal_BeSatisfied. Desired State: one row, bSatisfied == true. Considerations: Constant 1.0. Priority: 1.0.
Bundle into an archetype. Right-click → Miscellaneous → Data Asset → IntentArchetypeAsset, name DA_Archetype_Hello. Schema: DA_Schema_Hello. Goals: DA_Goal_BeSatisfied. Actions: DA_Action_MarkSatisfied.
Attach to a pawn. Open any pawn → Add Component → IntentForge Component. Set Archetype to DA_Archetype_Hello. Leave Dispatch Mode Auto.
Play. Drop the pawn in a level. Hit Play. Open Window → Developer Tools → IntentForge Live Inspector.
Expected behaviour
t = 0Agent selected in InspectorbSatisfied = false. Plan contains one step:MarkSatisfied. Status: Running.t = 1sWait executor completesEffects apply:
bSatisfied = true. Planner re-evaluates. Goal satisfied. Plan empties.t > 1sAgent idleNo goal needs satisfying.
What just happened, in four bullets
- The component asked the planner for a plan toward
BeSatisfied. - The planner found exactly one action whose effect satisfies the goal, and returned a 1-step plan.
- The dispatcher subsystem spawned a
UWaitExecutor, ticked it for 1 second, then reported success. - The component applied the action's effect, re-planned, found the goal already satisfied, and emptied the plan.
If those four bullets make sense, you understand Intent Forge. Everything else is layering complexity on top of this loop.
Why this example is here
Most GOAP tutorials open with a 5-action, 3-goal, 10-fact agent and walk you through the planner's search visualisation. That's intimidating. This page is the opposite — the smallest agent that exercises every part of the pipeline (plan, dispatch, execute, apply effect, replan).
If something about the model clicks here, the rest is just more of the same with different action sets and goal mixes.