[ Intent Forge / GOAP for Unreal Engine 5 ]

Intent Forge

Plans intent. Executes anywhere.
A Goal-Oriented Action Planning framework for Unreal Engine 5 with a first-class anti-flap toolkit, so your agents actually stay stable.

UE 5.7GOAP PlannerStable GOAPBlueprint-FirstMIT
83
Automation tests passing
9
Modular plugins
2000
Agents · p99 < 0.5 ms
0
AI runtimes required

[ Why Stable GOAP ]

The replan problem in GOAP, and why it deserves five fixes

Intent Forge is a planner: you declare goals and actions, and an A* search invents the sequence that gets the agent from where it is to where the goal wants it. Every time the world changes, it replans.

That replan loop is where most GOAP implementations break. Two goals score near-equal — say Patrol and Chase. The planner picks Patrol; a tiny sensor jitter pushes Chase ahead a tick later; the agent switches mid-step. Next tick Patrol wins back. The agent stutters between goals, visibly twitching instead of acting. This is called flapping (or thrashing).

It's been a known production problem for 20 years. Éric Jacopin's Game AI Pro 2 chapter (2015) showed F.E.A.R.'s own rats kept replanning long after the player had left the level. Chris Conway's GDC 2015 retrospective made the same point a decade after Jeff Orkin's original F.E.A.R. paper.

Most GOAP plugins partially address it — usually a single re-evaluation throttle or a priority bias — and call it done. Flap doesn't have one source, so a single patch doesn't fix it. Intent Forge ships five orthogonal layers at the five natural points in the pipeline:

01

Goal-momentum bonus

Selection

The currently-active goal gets a small score bonus. Near-equal ties go to whatever the agent is already doing.

02

Schmitt-latched bool facts

Fact derivation

Hysteresis on derived booleans. Once IsLowHealth flips true it stays true until health rises clearly above the threshold.

03

Minimum action commit time

Execution

Actions can't be preempted mid-step for a configurable window, unless the new goal carries a higher interruption level.

04

EMA scalar smoothing

Fact derivation

Noisy raw sensor values get filtered before the planner sees them. Distance jitter no longer drives goal flips.

05

Structural plan reuse

Plan shape

If a replan produces the same first action, the running executor keeps running. No tear-down churn.

Why five layers and not one? Flap born in noisy sensor data won't be caught by a selection-layer fix. Hysteresis in derived booleans won't help if the executor gets torn down every tick. Each family lives at the layer where the signal it stabilises is born: attack the flap at the earliest layer that makes the signal clean, and the downstream layers see stable input.

[ Why ]

Why Intent Forge

Dependencies /

One required

Core uses only Core, CoreUObject, Engine, and GameplayTags. StateTree, BT, AI Module, Navigation, Smart Objects, and Gameplay Debugger live in optional modules you can disable.

Runtime /

Runtime-agnostic

Works with StateTree, Behavior Trees, custom Blueprint AI, or the built-in dispatcher subsystem (which works with no AI runtime at all).

Signature /

Stable GOAP

Five orthogonal anti-flap layers — goal momentum, Schmitt latched bool facts, min-commit time, EMA scalar smoothing, structural plan reuse — keep agents from oscillating.

Authoring /

Blueprint-first

Every C++ extension point has a Blueprintable companion. Designers ship goals, actions, costs, considerations, executors, and sensors without engineer involvement.

Scope /

Honest scope

Single-agent planning, sync A*. Multi-agent coordination, HTN, and async planning are explicitly out of scope. Server-authoritative replication is the v1.0-alpha design target. See the networking ADR.

Benchmarks /

Public budgets

p99 < 0.5 ms at 2000 agents on a single thread. Reproducible benchmark suite. Verify the numbers yourself.