APSDocs

Blueprint nodes#

Generated from the APS 3.0 source code: every name, pin, default and description below is read from the plugin itself, so it matches what you see in the editor.

Every APS node you can place in a Blueprint graph, grouped by where it lives. Green nodes are pure (no white execution pins: they only read), blue nodes do something, red ones are events you override. Pins are coloured as in the editor. Search this page with Ctrl + F, or the site search above: every node is in it.

APS Core#

The component on every AI. Its nodes read what the AI believes and change how it behaves. Drag from an APS Core reference, or right-click in its owner's graph and type the node's name.

Config#

Set Profile
Callable Target is APS Core APS › Config
TargetAPS CoreNew ProfilePerception Profile

Give this AI a different Perception Profile while playing. Called from inside an APS event, the swap waits until that perception pass ends. When the new profile runs the same senses in the same order with the same Max Tracked Targets, the AI keeps everything it believes and only the values change; otherwise the senses are rebuilt and the AI starts fresh. Does nothing when passed None or the profile it already has.

Get Source Profile
Pure Target is APS Core APS › Config
TargetAPS Core
Return ValuePerception Profile

The profile asset you assigned, before its parent and any overrides are applied.

Set Profile Number
Callable Target is APS Core APS › Config
TargetAPS CorePropertyNameValueFloat
Return ValueBoolean

Change one number on this AI's profile now, for this AI only: it gets a private copy, and the asset and other AI are untouched. Property is the setting's override name, shown on the profile reference (for example VisionMaxRange). Returns false, and logs, when no setting has that name. Nothing the AI believes is reset.

Set Profile Flag
Callable Target is APS Core APS › Config
TargetAPS CorePropertyNameValueBoolean
Return ValueBoolean

Like Set Profile Number, for a tickbox. A tickbox's override name keeps its b, for example bEnablePeripheralCone.

Get Profile Number
Pure Target is APS Core APS › Config
TargetAPS CorePropertyNameFallbackFloat 0
Return ValueFloat

Read one number from this AI's profile by its override name. Returns Fallback when no setting has that name.

Clear Profile Overrides
Callable Target is APS Core APS › Config
TargetAPS Core

Drop every per-agent override and go back to the profile as authored.

Set Quality Profile
Callable Target is APS Core APS › Config
TargetAPS CoreNew QualityAPS Quality Profile

Swap the quality profile at runtime. Safe at any moment: no sense is rebuilt, no belief is discarded. Pass none to return to full quality.

View#

Set Show Visualizer
Callable Target is APS Core APS › View
TargetAPS CoreShowBoolean

Show or remove this AI's Visualizer now.

Get Visualizer
Pure Target is APS Core APS › View
TargetAPS Core
Return ValueActor

This AI's Visualizer actor, while it is shown.

Get Vision Fans
Callable Target is APS Core APS › View
TargetAPS CoreClip to WallsBoolean OnOn FloorBoolean OnDegrees Per SpokeFloat 3
Out FansArray of APSView FanReturn ValueBoolean

Each of this AI's view cones as a flat fan whose edge stops where sight stops: at a wall, past glass as far as sight gets through, at full range in the open. Re-traced when the eyes move or turn, otherwise about twelve times a second, so it is cheap to call every frame. False with no Vision sense.

Is Looking At
Pure Target is APS Core APS › View
TargetAPS CoreTargetActor
Why NotAPSPerception BlockerReturn ValueBoolean

True while vision is looking the target's way: inside one of its cones and in range. Only then do its sample points mean anything; a clear line to someone outside every cone only says nothing is in between. Why Not says why not (Outside Cone, Out Of Range; No Context for an AI without a Vision sense).

Get Sample Points
Callable Target is APS Core APS › View
TargetAPS CoreTargetActor
Out PointsArray of APSView PointReturn ValueBoolean

Vision's sample points on a target and how much sight reaches each (Seen, Partly, Blocked): the same points and traces vision uses. A head over a wall is one Seen point and four Blocked. It traces once per point, so ask about one target at a time. False with no Vision sense or no target.

Get Recent Sounds
Callable Target is APS Core APS › View
TargetAPS CoreMax Age SecondsFloat
Out SoundsArray of APSHeard Sound

The sounds this AI heard in the last Max Age seconds, oldest first (see Record Heard Sounds).

Has Sense
Pure Target is APS Core APS › View
TargetAPS CoreSense IDName
Return ValueBoolean

True when this AI runs the sense, for example Vision, Hearing, Smell. A profile has ranges for every sense; only the ones in Sense Classes run.

Get Sense IDs
Pure Target is APS Core APS › View
TargetAPS Core
Return ValueArray of Name

The senses this AI runs, in profile order.

Get Sense Ranges
Pure Target is APS Core APS › View
TargetAPS Core
Return ValueAPSSense Ranges

How far each sense reaches right now, with any zone the AI stands in applied. 0 for a sense it does not run.

Get Sound Reach
Pure Target is APS Core APS › View
TargetAPS CoreSound TypeSound Type Definition
Return ValueFloat

How far a Sound Type carries to this AI right now (cm): its range, scaled by any zone the AI stands in.

Get View Target
Pure Target is APS Core APS › View
TargetAPS Core
Return ValueActor

The target a view of this AI is about: the local player when this AI holds a belief about them, otherwise its most confident belief that is not a friend or teammate. None when it believes nothing about anyone.

Get LOD Tier
Pure Target is APS Core APS › View
TargetAPS Core
Return ValueInteger

How much detail APS gives this AI right now: 0 full, higher is cheaper (farther from the camera).

Attention#

Get Attention Target
Pure Target is APS Core APS › Attention
TargetAPS Core
Return ValueActor

The one target this AI focuses on, among those it has noticed (Suspected or more). It is sticky (Attention Stickiness Time, Attention Switch Threshold), so a slightly better rival doesn't take it. It can be one the AI only suspects, or a teammate: check Get Awareness Level for Target before chasing it. None when there is no one.

Get Attention Duration
Pure Target is APS Core APS › Attention
TargetAPS Core
Return ValueFloat

How long, in seconds, it has been focused on its current attention target: for an I've-chased-this-too-long check.

Force Attention Target
Callable Target is APS Core APS › Attention
TargetAPS CoreNew TargetActor

Make this its attention target now, ignoring stickiness: when the player shoots this AI, say. Gives the AI a belief about the target if it had none. If the AI never notices that target, the focus lets go after the stickiness time.

Query#

Get Top Target
Pure Target is APS Core APS › Query
TargetAPS Core
Return ValueActor

The target with the best sort score right now, among those the AI has noticed (Suspected or more). It can change often.

Get Top Target Belief
Pure Target is APS Core APS › Query
TargetAPS Core
Out RecordBelief RecordReturn ValueBoolean

Everything this AI believes about its top target (the one it ranks first). Returns false when it believes in no one.

Get Targets Sorted by Score
Callable Target is APS Core APS › Query
TargetAPS Core
Out RecordsArray of Belief Record

Every actor this AI holds a belief about, best sort score first, even ones still Undetected. Never things (APS Evidence: see Get Perceived Objects), places or Expired beliefs.

Get Perceived Objects
Callable Target is APS Core APS › Query
TargetAPS Core
Out ObjectsArray of Belief Record

Beliefs about things rather than someone: a body, a forced lock (APS Evidence, Set Perceived As Object). Most confident first. Smoothed Confidence says how well the AI has seen each; Target is the thing itself.

Get Belief Data
Pure Target is APS Core APS › Query
TargetAPS CoreTargetActor
Out RecordBelief RecordReturn ValueBoolean

Everything this AI believes about one target: its confidence, state, last known position, prediction, threat, loss reason and more. Returns false when it holds no belief about that actor.

Get Awareness Level
Pure Target is APS Core APS › Query
TargetAPS Core
Return ValueAwareness Level

How alert this AI is overall, judged from its top target's confidence: Unaware, Peripheral, Suspicious, Alerted or Fully Aware.

Get Awareness Level for Target
Pure Target is APS Core APS › Query
TargetAPS CoreTargetActor
Return ValueAwareness Level

How aware this AI is of one target, from that target's confidence. Unaware when it holds no belief about it.

Get Active Target Count
Pure Target is APS Core APS › Query
TargetAPS Core
Return ValueInteger

How many actors this AI currently holds a belief about in the Suspected, Detected, Tracked or Lost state. Places, and things marked with APS Evidence, are not counted. When this falls to 0, On AI All Clear fires.

Has Any Detection
Pure Target is APS Core APS › Query
TargetAPS Core
Return ValueBoolean

True while this AI's awareness is above Unaware.

Get Sense Contributions
Callable Target is APS Core APS › Query
TargetAPS CoreTargetActor
Out ContributionsMap of Name to FloatReturn ValueBoolean

Each sense's own confidence about a target, by sense name (Vision, Hearing, ...): did it see you, or only hear you? Returns false when the AI holds no belief about the target.

Get Sense Result
Pure Target is APS Core APS › Query
TargetAPS CoreTargetActorSense IDName
Out ResultPerception Sense ResultReturn ValueBoolean

Everything one sense reported about a target the last time it ran: its confidence, where it placed the target, and for vision the exposure, the visible points, the cone, the light and the blocker. Senses run on their own intervals, so Is Active is false between their updates: use Was Active Last Eval to ask whether it perceives the target now. False when the AI holds no belief about the target or runs no such sense.

Get Eye View Point
Pure Target is APS Core APS › Query
TargetAPS Core
Out LocationVectorOut ForwardVector

Where this AI's eyes are and which way they look, as vision uses them: the eye socket (with Use Eye Socket) or the actor plus Eye Height Offset, facing with Eye Direction Mode and Eye Turn Rate applied. Use it to draw the real cone or aim a head or a flashlight.

Spatial#

Get Last Known Position
Pure Target is APS Core APS › Spatial
TargetAPS CoreTargetActor
Return ValueVector

Where this AI last placed the target. (0, 0, 0) when it holds no belief about it.

Get Predicted Position
Pure Target is APS Core APS › Spatial
TargetAPS CoreTargetActor
Return ValueVector

Where this AI expects the target to be by now, from how it was moving. Only moves past the last known position while the target is unsensed and the profile's Enable Prediction is on.

Get Uncertainty Radius
Pure Target is APS Core APS › Spatial
TargetAPS CoreTargetActor
Return ValueFloat

How unsure the AI is of where the target is, as a radius in cm around the last known position: it grows while the target is unsensed, up to the profile's Max Uncertainty Radius, and shrinks when it is sensed again. A ready-made search radius.

Get Estimated Velocity
Pure Target is APS Core APS › Spatial
TargetAPS CoreTargetActor
Return ValueVector

The target's velocity as this AI has measured it, smoothed.

Get Estimated Acceleration
Pure Target is APS Core APS › Spatial
TargetAPS CoreTargetActor
Return ValueVector

How the target's velocity has been changing, as this AI measured it: a sudden sprint or stop.

Cover#

Get Last Seen Cover Actor
Pure Target is APS Core APS › Cover
TargetAPS CoreTargetActor
Return ValueActor

The actor that blocked the AI's view when it lost the target from Detected or Tracked: the crate or wall you slipped behind. None when nothing was found.

Was Target in Cover
Pure Target is APS Core APS › Cover
TargetAPS CoreTargetActor
Return ValueBoolean

True when the target was behind cover at the moment it was lost.

Loss#

Get Loss Reason
Pure Target is APS Core APS › Loss
TargetAPS CoreTargetActor
Return ValueLoss Reason

Why the AI last lost this target: Occluded, OutOfRange, SoundFaded, ScentLost, SensorDropout or TargetDestroyed. Unknown if it never lost it or has found it again. Branch your search on it.

Get Loss Direction
Pure Target is APS Core APS › Loss
TargetAPS CoreTargetActor
Return ValueVector

Which way the target was moving when it was last lost, from its last measured velocity. (0, 0, 0) when it wasn't moving.

Memory#

Get Recent Episodes
Callable Target is APS Core APS › Memory
TargetAPS CoreTargetActor
Out EpisodesArray of Perception EpisodeReturn ValueBoolean

This AI's last five encounters with the target, oldest first: how each ended, where, which way the target went and how long it lasted. False until the AI has lost the target at least once from Detected or Tracked.

Get Last Episode
Pure Target is APS Core APS › Memory
TargetAPS CoreTargetActor
Out EpisodePerception EpisodeReturn ValueBoolean

The most recent encounter with the target. False when there is none yet.

Clear Episodes
Callable Target is APS Core APS › Memory
TargetAPS CoreTargetActor

Forget this AI's encounter history with a target: a new game, a respawn.

Make Actor Subjectlibrary
Pure APS › Memory
ActorActor
Return ValueAPSMemory Subject

A memory about a person, object or anything else with an actor.

Make Place Subjectlibrary
Pure APS › Memory
LocationVectorPlace TagName
Return ValueAPSMemory Subject

A memory about a place. PlaceTag separates kinds of thing at one spot, so "a body here" and "a fight here" stay distinct memories.

Remember
Callable Target is APS Core APS › Memory
TargetAPS CoreSubjectAPSMemory SubjectTagNameNumberFloat 0PlaceVector (0, 0, 0)Related ActorActor None

Store something. Writing the same Tag about the same Subject again updates it and increments Count, rather than piling up duplicates.

Every value field is optional — pass only what your game means by this tag.

Recall
Callable Target is APS Core APS › Memory
TargetAPS CoreSubjectAPSMemory Subject
Out MemoriesArray of APSMemoryReturn ValueBoolean

Everything held about a subject, newest first. False when nothing is.

Recall Tag
Callable Target is APS Core APS › Memory
TargetAPS CoreSubjectAPSMemory SubjectTagName
Out MemoryAPSMemoryReturn ValueBoolean

One specific memory. The usual query: "have I been attacked by this one?"

Has Memory Of
Pure Target is APS Core APS › Memory
TargetAPS CoreSubjectAPSMemory Subject
Return ValueBoolean

True if anything at all is held about this subject. Cheapest check.

Forget
Callable Target is APS Core APS › Memory
TargetAPS CoreSubjectAPSMemory SubjectTagName
Return ValueBoolean

Drop one tag. Returns false if it was not there.

Forget Subject
Callable Target is APS Core APS › Memory
TargetAPS CoreSubjectAPSMemory Subject

Drop everything about a subject.

Forget Everything
Callable Target is APS Core APS › Memory
TargetAPS Core

Wipe the lot.

Get Remembered Subject Count
Pure Target is APS Core APS › Memory
TargetAPS Core
Return ValueInteger

How many subjects are currently held. For budgeting and debugging.

PlayerModel#

Get Player Behavior Model
Pure Target is APS Core APS › PlayerModel
TargetAPS CoreTargetActor
Out ModelPlayer Behavior ModelReturn ValueBoolean

What this AI has recorded about how a target plays: crouch, walk and sprint shares, how encounters ended, where it lost them, and whether that is enough data yet. Returns false when the profile's player model is off or nothing has been learned yet.

Reset Player Behavior Model
Callable Target is APS Core APS › PlayerModel
TargetAPS CoreTargetActor

Forget everything this AI has learned about a target's behaviour.

Brain#

Get Emotional State
Pure Target is APS Core APS › Brain
TargetAPS Core
Return ValueEmotional State

This AI's five emotions, each 0 to 1 (fear, aggression, curiosity, alertness, panic), and the dominant one.

Get Dominant Emotion
Pure Target is APS Core APS › Brain
TargetAPS Core
Return ValueEmotion Type

The emotion that leads right now. Panic wins over all others once it passes the profile's Panic Override Threshold.

Get Threat Level
Pure Target is APS Core APS › Brain
TargetAPS CoreTargetActor
Return ValueThreat Level

How much of a threat this AI thinks one target is: None, Low, Medium, High or Critical. None when it holds no belief about it.

Get Highest Threat Level
Pure Target is APS Core APS › Brain
TargetAPS Core
Return ValueThreat Level

The highest threat level among everything this AI believes in.

Get Relationship
Pure Target is APS Core APS › Brain
TargetAPS CoreTargetActor
Return ValueTarget Relationship

What this AI takes the target for (enemy, friend, neutral, ...), as its APS Relationship resolved it. Unknown when it holds no belief about it.

Get Stimulus Source
Pure Target is APS Core APS › Brain
TargetAPS CoreTargetActor
Return ValueStimulus Source

Which sense first made this AI notice the target. Unknown when it holds no belief about it.

Get Combat Role
Pure Target is APS Core APS › Brain
TargetAPS Core
Return ValueCombat Role

The combat role this AI holds in its squad, or None.

Has Threat at or Above
Pure Target is APS Core APS › Brain
TargetAPS CoreLevelThreat Level
Return ValueBoolean

True when anything this AI believes in is at this threat level or higher.

Set Fear Input
Callable Target is APS Core APS › Brain
TargetAPS CoreValueFloat

An outside source of fear, 0 to 1, that lasts until you change it: a horror event, a roar. Above 0 it makes fear rise, faster the higher it is; above 0.9 it raises panic. 0 lets fear fade by the rules.

Set Emotion
Callable Target is APS Core APS › Brain
TargetAPS CoreEmotionEmotion TypeValueFloat

Set one emotion, 0 to 1, once. The emotion rules carry on from there on the next update; for lasting fear, use Set Fear Input.

Reset Emotional State
Callable Target is APS Core APS › Brain
TargetAPS Core

Set every emotion, and the fear input, to 0: Calm.

Squad#

Set Squad ID
Callable Target is APS Core APS › Squad
TargetAPS CoreNew Squad IDName

Put this AI in a squad, by name; AI with the same squad name share what they perceive. None takes it out of any squad.

Get Squad ID
Pure Target is APS Core APS › Squad
TargetAPS Core
Return ValueName

This AI's squad name, as set by Set Squad ID. None when it is in no squad.

Share Target with Squad
Callable Target is APS Core APS › Squad
TargetAPS CoreTargetActor

Tell this AI's squadmates everything it believes about a target, now. Does nothing when the AI is in no squad, holds no belief about the target, or the belief is about a thing (APS Evidence) rather than a person.

Broadcast Alert to Squad
Callable Target is APS Core APS › Squad
TargetAPS CoreTargetActorAlert LocationVectorThreat LevelThreat Level

Tell squadmates about a place and a threat level without sharing a belief about anyone: I heard something over there. On AI Squad Alert fires on them.

Request Combat Role
Callable Target is APS Core APS › Squad
TargetAPS CoreRoleCombat Role
Return ValueBoolean

Claim a combat role in this AI's squad. Each role is held by one squad member at a time: returns false when another member holds it, when the AI is in no squad, or when the role is not in the profile's Eligible Roles (if that list has any). Claiming a role gives up the role it held before, and fires On Combat Role Assigned.

Release Combat Role
Callable Target is APS Core APS › Squad
TargetAPS Core

Give back this AI's combat role, so a squadmate can take it.

Input#

Report Touch Contact
Callable Target is APS Core APS › Input
TargetAPS CoreInstigatorActorTypeContact TypeStrengthFloat 1PersistentBoolean OffContact LocationVector (0, 0, 0)

Report a contact yourself: who, what kind (Bump, Grab, Collision, Explosion), how strong (0 to 1), whether it is held (until End Touch Contact) and where. Touch wires the AI's own hits and overlaps by itself; use this for anything else. Needs Touch Sense.

Report Touch Contact with Impulse
Callable Target is APS Core APS › Input
TargetAPS CoreInstigatorActorTypeContact TypeImpulseVectorPersistentBoolean OffContact LocationVector (0, 0, 0)

Report a contact from a physics hit: the impulse sets the strength (Touch Max Impulse for Full Strength counts as full).

End Touch Contact
Callable Target is APS Core APS › Input
TargetAPS CoreInstigatorActor

End a held contact (a grab, an overlap) reported earlier.

Set Target Confidence
Callable Target is APS Core APS › Input
TargetAPS CoreTargetActorConfidenceFloat

Raise this AI's confidence in a target to at least this value, once, at any range: a tip-off, an alarm. It never lowers belief, and afterwards belief fades as usual unless a sense keeps it up. To cap, lower or clear belief, or to make a change last, use Add Target Evidence.

Report Vibration Event
Callable Target is APS Core APS › Input
TargetAPS CoreLocationVectorStrengthFloatSurfaceSurface Type Ground

Report a vibration nobody's footsteps made (a grenade, a collapse) at a place. The AI feels the place, not whoever stands near it. Moving actors are felt by themselves. Needs Vibration Sense.

Pain#

Report Pain from Definition
Callable Target is APS Core APS › Pain
TargetAPS CorePain DefPain Type DefinitionPain AmountFloat

Add pain of one type (a Pain Type Definition asset): it dulls the senses the asset lists, and fades at its Decay Rate. On AI Pain Reported fires on the next update. Needs Pain Sense in the profile; an amount of 0 or less does nothing.

Clear Pain from Definition
Callable Target is APS Core APS › Pain
TargetAPS CorePain DefPain Type Definition

Remove all pain of one type: a medkit, an extinguisher.

Clear All Pain
Callable Target is APS Core APS › Pain
TargetAPS Core

Remove all pain of every type.

Set Pain Type Enabled from Definition
Callable Target is APS Core APS › Pain
TargetAPS CorePain DefPain Type DefinitionEnabledBoolean

Turn one pain type off or on for this AI: immunity. While off it ignores reports and dulls nothing, and its level waits, unfaded.

Get Pain Level from Definition
Pure Target is APS Core APS › Pain
TargetAPS CorePain DefPain Type Definition
Return ValueFloat

One pain type's level now, 0 to 1.

Get Total Pain Level
Pure Target is APS Core APS › Pain
TargetAPS Core
Return ValueFloat

Every enabled pain type's level added up, at most 1.

Evidence#

Add Target Evidence
Callable Target is APS Core APS › Evidence
TargetAPS CoreTargetActorEvidence TagNameOperationAPSEvidence OpValueFloatLifetimeFloat 0SourceName

Hold belief about a target at a floor (Raise), under a ceiling (Clamp), lower than the senses say (Lower) or at zero (Invalidate). It applies every update after the senses, so a Clamp holds even while the AI sees the target. The same Evidence Tag again replaces the entry. Lifetime 0 lasts until removed; Source is a label for your own debugging.

Remove Target Evidence
Callable Target is APS Core APS › Evidence
TargetAPS CoreTargetActorEvidence TagName
Return ValueBoolean

Remove one piece of evidence about a target, by its tag. True if there was one.

Clear Target Evidence
Callable Target is APS Core APS › Evidence
TargetAPS CoreTargetActor

Remove every piece of evidence about a target.

Get Target Evidence
Callable Target is APS Core APS › Evidence
TargetAPS CoreTargetActor
Out EvidenceArray of APSEvidence

The evidence applied to a target now, each with its operation, value, lifetime, age and source.

Debug#

Debug Reset Damage Tracking
Callable Target is APS Core APS › Debug
TargetAPS Core

Zero the damage dealt and received on every belief this AI holds.

Debug Print Belief State
Callable Target is APS Core APS › Debug
TargetAPS Core

Write every belief this AI holds to the Output Log.

Debug Toggle Pause
Callable Target is APS Core APS › Debug
TargetAPS Core

Flip Pause Perception.

Get Sense Blocker
Pure Target is APS Core APS › Debug
TargetAPS CoreTargetActorSense IDName
Return ValueAPSPerception Blocker

Why one sense reported nothing about a target the last time it ran: out of range, outside the cones, hidden, too few points showing, the reaction window... Only Vision gives reasons; other senses say None. None also when the sense did report the target.

Explain Perception
Callable Target is APS Core APS › Debug
TargetAPS CoreTargetActor
Return ValueString

A short text report of what this AI believes about a target: its state by name and how sure it is as a percentage, then each sense, active with its confidence or silent with the reason. For a debug key or the log.

Replication#

Get Replicated Perception State
Callable Target is APS Core APS › Replication
TargetAPS Core
Out TargetsArray of APSReplicated Target StateOut AwarenessAwareness Level

Read the replicated perception summary.

On the server this is the authoritative state; on clients it is the copy that replicated with the Pawn. Requires Replicate Perception State on the profile and Replicates on the Pawn.

Fairness#

Is Location in Never Search Zone
Pure Target is APS Core APS › Fairness
TargetAPS CoreLocationVector
Return ValueBoolean

True when the location is inside a never-search zone registered on the APS Subsystem; always false when this AI's profile has Respect Never Search Zones off. APS doesn't enforce zones: your search logic asks this.

Belief#

Report Location Belief
Callable Target is APS Core APS › Belief
TargetAPS CoreLocationVectorTagNameConfidenceFloat 1AccuracyFloat 0.5

Tell this AI something happened at a place with no known author: where, what kind of thing (Tag), how strongly it registered (Confidence, 0 to 1) and how precisely it is placed (Accuracy, 0 to 1). Reports close together with the same tag merge into one belief.

Get Location Beliefs
Callable Target is APS Core APS › Belief
TargetAPS Core
Out BeliefsArray of Belief Record

Every belief about a place this AI holds, strongest first.

Get Strongest Location Belief
Pure Target is APS Core APS › Belief
TargetAPS Core
Out BeliefBelief RecordReturn ValueBoolean

Its strongest belief about a place. False when it holds none.

Clear Location Belief
Callable Target is APS Core APS › Belief
TargetAPS CoreLocationVectorTagName
Return ValueBoolean

Drop a belief about a place: it checked, and there was nothing.

Recording#

Start Recording
Callable Target is APS Core APS › Recording
TargetAPS CoreSecondsFloat 10

Start keeping a rolling record of what this AI believes: the last Seconds of it. Starting again throws away what was recorded. While on, it costs one small frame per believed actor per update.

Stop Recording
Callable Target is APS Core APS › Recording
TargetAPS Core

Stop recording. What was captured stays available until cleared.

Is Recording
Pure Target is APS Core APS › Recording
TargetAPS Core
Return ValueBoolean

True while Start Recording is capturing this AI's belief.

Get Recorded Frames
Pure Target is APS Core APS › Recording
TargetAPS Core
Return ValueArray of APSPerception Frame

Everything captured, oldest first.

Get Recorded Frames For
Pure Target is APS Core APS › Recording
TargetAPS CoreTargetActor
Return ValueArray of APSPerception Frame

Just the frames about one target, oldest first.

Clear Recording
Callable Target is APS Core APS › Recording
TargetAPS Core

Discard everything captured so far. Does not stop an active recording.

Get Recorded Frame At
Callable Target is APS Core APS › Recording
TargetAPS CoreTargetActorWorld SecondsFloat
Out FrameAPSPerception FrameReturn ValueBoolean

The recorded frame for Target nearest to World Seconds.

Returns false when nothing was recorded for that target. Use this to read what the AI believed at the moment something went wrong, rather than what it believes now that the moment has passed.

Explain Recorded At
Callable Target is APS Core APS › Recording
TargetAPS CoreTargetActorWorld SecondsFloat
Return ValueString

Explain Perception, but for a moment already gone.

Reads the recorded frame nearest World Seconds and describes it the same way the live trace does. Returns a note saying so when nothing was recorded.

APS Perception Listener#

Put your reactions in a Blueprint made from APS Perception Listener and add it to every AI that should share them. These are the events you implement there.

Sense Events#

On AI Seeoverride in Blueprint
Event to override Target is APS Perception Listener APS › Sense Events
TargetActorConfidenceFloatDistanceFloat

Fires each time vision (or echolocation) reports the target: about every 0.15 s while it is seen.

On AI Hearoverride in Blueprint
Event to override Target is APS Perception Listener APS › Sense Events
LocationVectorLoudnessFloatSound Type NameName

Fires on each hearing update that hears the target: when a sound of theirs arrives, and again on each update after it while the built-up noise lasts. On those build-up updates Sound Type Name is None and Location is where the target is now, not where the sound was. For one event per sound, use On Sound Heard.

On AI Smelloverride in Blueprint
Event to override Target is APS Perception Listener APS › Sense Events
LocationVectorIntensityFloatScent TagName

Fires each time smell reports the target: about every 0.25 s while it smells them.

On AI Feeloverride in Blueprint
Event to override Target is APS Perception Listener APS › Sense Events
InstigatorActorContact TypeContact TypeStrengthFloat

Fires when touch reports a contact from the target.

On AI Sense Vibrationoverride in Blueprint
Event to override Target is APS Perception Listener APS › Sense Events
LocationVectorStrengthFloatSurfaceSurface Type

Fires when vibration reports something: a target's footsteps, or a vibration at a place. No line of sight needed.

Memory Events#

On AI Suspectoverride in Blueprint
Event to override Target is APS Perception Listener APS › Memory Events
TargetActorLocationVectorStimulusStimulus Source

A target entered Suspected: from Undetected, or stepping down from Detected.

On AI Detectoverride in Blueprint
Event to override Target is APS Perception Listener APS › Memory Events
TargetActorThreat LevelThreat LevelStimulusStimulus Source

A target entered Detected: from Suspected, stepping down from Tracked, or found again after Lost or Remembered.

On AI Trackoverride in Blueprint
Event to override Target is APS Perception Listener APS › Memory Events
TargetActorPredicted PositionVectorConfidenceFloat

A target entered Tracked: high, sustained confidence.

On AI Lostoverride in Blueprint
Event to override Target is APS Perception Listener APS › Memory Events
TargetActorLast KnownVectorPredictedVectorLast Cover ActorActor

A target entered Lost. Gives where it was last placed, where it is predicted to be, and the cover it went behind.

On AI Rememberoverride in Blueprint
Event to override Target is APS Perception Listener APS › Memory Events
TargetActorLocationVectorAge SecondsFloat

A lost target faded to Remembered. Age Seconds is the time since the AI first noticed it.

On AI Forgetoverride in Blueprint
Event to override Target is APS Perception Listener APS › Memory Events
TargetActor

The AI let go of a target: it Expired, or dropped back to Undetected.

Brain Events#

On AI Think Threatoverride in Blueprint
Event to override Target is APS Perception Listener APS › Brain Events
TargetActorLevelThreat LevelScoreFloat

A target's threat level changed.

On AI All Clearoverride in Blueprint
Event to override Target is APS Perception Listener APS › Brain Events

No actor is left at Suspected, Detected, Tracked or Lost (Get Active Target Count fell to 0): time to stand down.

On AI Awareness Changedoverride in Blueprint
Event to override Target is APS Perception Listener APS › Brain Events
PreviousAwareness LevelNewAwareness Level

Overall awareness level changed (Unaware / Peripheral / Suspicious / Alerted / Fully Aware).

On AI Pain Reportedoverride in Blueprint
Event to override Target is APS Perception Listener APS › Brain Events
Pain TypeNamePain LevelFloatThreshold CrossedFloatPain DefPain Type Definition

Fires for each Report Pain from Definition, on the next update: Pain Type (the asset's name), Pain Level (after that report), Threshold Crossed (always -1, kept for older Blueprints) and Pain Def (the asset).

On AI Damagedoverride in Blueprint
Event to override Target is APS Perception Listener APS › Brain Events
InstigatorActorAmountFloatDamage Type TagNameHit LocationVector

Fires on every Unreal damage call that hits the AI (Apply Damage, Apply Point Damage, Apply Radial Damage), with or without Damage Sense: who did it, how much, the damage type's short tag and where.

On Attention Changedoverride in Blueprint
Event to override Target is APS Perception Listener APS › Brain Events
Old TargetActorNew TargetActor

The AI's focus moved to a different target. Old Target is none the first time. The new target can be one the AI only suspects, so check its state before reacting; to start a chase, use On AI Detect.

Squad Events#

On AI Squad Alertoverride in Blueprint
Event to override Target is APS Perception Listener APS › Squad Events
TargetActorLocationVectorThreatThreat Level

A squadmate told this AI something new: a shared target, or a place and threat (Broadcast Alert to Squad). It doesn't fire again for the same news.

Fairness Events#

On AI Telegraphoverride in Blueprint
Event to override Target is APS Perception Listener APS › Fairness Events
TargetActorConfidenceFloat

Confidence about a target crossed Telegraph Threshold — the moment for a "huh?" bark or head-turn before the AI commits to full alert. Once per target.

Belief Events#

On Location Belief Changedoverride in Blueprint
Event to override Target is APS Perception Listener APS › Belief Events
LocationVectorTagNameStateBelief Lifecycle StateConfidenceFloat

A belief about a place (a noise nobody made, a blast) changed state.

APS Target Component#

Get Effective Stance
Pure Target is APS Target Component APS › Stance
TargetAPS Target Component
Return ValueAPSStance

The posture in effect now. With Auto Detect Stance on: what an APSStance Provider or the Character's crouch reports, or this component's Stance when that says Standing. With it off: Stance.

APS Relationship#

Get Relationship
Callable Target is APS Relationship Relationships
TargetAPS RelationshipTargetActor
Return ValueTarget Relationship

What this AI takes an actor for: its override if it has one, else the class rule, else the team rule, else Default Relationship.

Set Relationship Override
Callable Target is APS Relationship Relationships
TargetAPS RelationshipTargetActorRelationshipTarget Relationship

Decide what this AI takes one actor for, now, over every rule: the player in a uniform as Friendly, a recruit as Teammate.

APSSubsystem#

World-wide APS settings and lookups. Get it with Get APSSubsystem (any Blueprint) and drag from it.

Subsystem#

Get APS Subsystemlibrary
Callable APS › Subsystem
Return ValueAPSSubsystem

Get the APS world subsystem from anywhere in Blueprint.

Drag off any node and search "Get APS Subsystem". Everything world-wide lives here: ambient light, sun direction, weather, the perceivable-actor registry and no-search zones.

Perception › Subsystem#

Get Agent Count
Callable Target is APSSubsystem Perception › Subsystem
TargetAPSSubsystem
Return ValueInteger

How many AI with APS Core are running in this world.

Set Ambient Light
Callable Target is APSSubsystem Perception › Subsystem
TargetAPSSubsystemLevelFloat

Set the world's light level for APS, 0 (dark) to 1 (full daylight): drive it from your day and night cycle.

Set Weather Modifier
Callable Target is APSSubsystem Perception › Subsystem
TargetAPSSubsystemModFloat

Set how much the weather leaves of the AI's senses, 0 to 1: 1 is clear, and lower values mean heavier rain (it sets the rain intensity to 1 minus this).

Environment#

Set Environment State
Callable Target is APSSubsystem APS › Environment
TargetAPSSubsystemNew StateEnvironment State

Set the world's light, rain, wind, indoors and time of day in one call.

Get Environment State
Pure Target is APSSubsystem APS › Environment
TargetAPSSubsystem
Return ValueEnvironment State

The world's current conditions as APS uses them: light, rain, wind, indoors and time of day.

Set Wind State
Callable Target is APSSubsystem APS › Environment
TargetAPSSubsystemDirectionVectorSpeedFloat

Set the world's wind: the direction it blows and its speed. Smell uses it outdoors.

Set Indoors
Callable Target is APSSubsystem APS › Environment
TargetAPSSubsystemIndoorsBoolean

Tell APS the world is indoors (or not): indoors concentrates scent and ignores the wind.

Set Time Of Day
Callable Target is APSSubsystem APS › Environment
TargetAPSSubsystemHourFloat

Set the time of day, in hours (0 to 24). For your own logic and the Visualizer: APS's senses don't read it.

Set Sun Direction
Callable Target is APSSubsystem APS › Environment
TargetAPSSubsystemDirectionVector

Tell APS which way the sun points so vision can trace for shadow and work out whether a target is genuinely hidden in the dark. Pass your directional light's forward vector.

Get Environment At
Pure Target is APSSubsystem APS › Environment
TargetAPSSubsystemLocationVector
Return ValueEnvironment State

The conditions at a point: the world's, with the APS Environment sphere that covers the point applied (only the winning one, where they overlap).

Get Sense Range Scale At
Pure Target is APSSubsystem APS › Environment
TargetAPSSubsystemLocationVectorSense IDName
Return ValueFloat

How far a sense reaches at a point, as a multiplier from the APS Environment sphere there (1 elsewhere). Sense ID: Vision, Hearing or Smell; anything else gives 1.

Fairness#

Register Never Search Zone
Callable Target is APSSubsystem APS › Fairness
TargetAPSSubsystemCenterVectorRadiusFloat

Mark a sphere as a safe place: a save room, a locker. APS doesn't enforce it: your search and chase logic asks Is Location in Never Search Zone before sending an AI there.

Unregister Never Search Zone
Callable Target is APSSubsystem APS › Fairness
TargetAPSSubsystemCenterVectorToleranceFloat 50

Remove the closest registered zone within tolerance of Center.

Clear Never Search Zones
Callable Target is APSSubsystem APS › Fairness
TargetAPSSubsystem

Clear every registered no-search zone.

Is in Never Search Zone
Pure Target is APSSubsystem APS › Fairness
TargetAPSSubsystemLocationVector
Return ValueBoolean

True when the location is inside any registered never-search zone, whatever any AI's profile says.

Registry#

Register Perceivable Actor
Callable Target is APSSubsystem APS › Registry
TargetAPSSubsystemActorActor

Let AI perceive an actor that isn't a Pawn (Pawns are found by themselves). An APS Target Component does this for its actor. Unregister it at End Play.

Unregister Perceivable Actor
Callable Target is APSSubsystem APS › Registry
TargetAPSSubsystemActorActor

Stop AI perceiving an actor you registered with Register Perceivable Actor.

Set Perceived as Object
Callable Target is APSSubsystem APS › Registry
TargetAPSSubsystemActorActorIs ObjectBoolean On

Mark an actor as a THING the AI perceives rather than someone: a body, a forced lock, a dropped weapon. APS Evidence does this for its actor.

The AI still sees it, and its belief says how well (Get Belief Data, Get Perceived Objects), but it is never a target: no threat, no attention, and no event names it (On AI Suspect, On AI Detect, On AI See...). Takes effect on each AI's next perception pass, so a guard that dies and becomes a body can be marked then. This does not register it: pawns are found anyway, and any other actor also needs Register Perceivable Actor.

Is Perceived as Object
Pure Target is APSSubsystem APS › Registry
TargetAPSSubsystemActorActor
Return ValueBoolean

True while Actor is marked as a thing (Set Perceived As Object, APS Evidence).

Performance#

Get Agent Significance
Pure Target is APSSubsystem APS › Performance
TargetAPSSubsystemAgentAPS Core
Return ValueFloat

An AI's latest significance score, 0 to 1: what picks its level of detail. For tuning.

Stimulus#

Emit Stimuluslibrary
Callable APS › Stimulus
EventAPSStimulus Event

Send your own tagged signal to every AI that listens for it. Skipped: AI beyond Radius, above Max LODTier, on the source's team (with Team Filter) or behind a wall (with Requires Clear Path). Of the built-in senses only Vibration listens; your own C++ senses can.

Perception Sound System#

Make noises the AI can hear. Callable from any Blueprint.

Emit Soundlibrary
Callable Perception › Sound
SourceActorSound TypeSound Type Definition

Make a noise someone made (Source): a footstep, a shot, a reload. AI within the Sound Type's Max Range hear it, muffled by walls, and their belief is about the Source. Call it on the server, from any Blueprint.

Emit Sound at Locationlibrary
Callable Perception › Sound
Sound LocationVectorSound TypeSound Type Definition

Make a noise nobody made, at a place: an explosion, a trap, a can landing. AI within the Sound Type's Max Range form a belief about the place, not about anyone. Call it on the server, from any Blueprint.

APSView Library#

Read-only data for drawing what an AI perceives (the APS Visualizer is built only from these). Callable from any Blueprint.

Get Focus Agentlibrary
Callable APS › View
Prefer VisibleBoolean OnOnly VisualizedBoolean On
Return ValueAPS Core

The AI to show in full detail: the nearest one the player's camera can see (in front of it, nothing solid between the camera and the top of its head), or the nearest one when none is in view. Only Visualized: consider only AIs with Show Visualizer on.

Is Agent in Camera Viewlibrary
Callable APS › View
AgentAPS Core
Return ValueBoolean

True when the player's camera can see this AI: in front of it, nothing solid in between (glass and foliage its profile sees through do not count).

Get Feet Locationlibrary
Pure APS › View
ActorActor
Return ValueVector

The floor under an actor: its location minus its collision half height. For drawing on the floor under an AI or a target.

Get Head Locationlibrary
Pure APS › View
ActorActor
Return ValueVector

The top of an actor's collision: where a label over its head goes.

Get All Agentslibrary
Callable APS › View
Out AgentsArray of APS Core

Every APS Core in the world.

Get Visualizer Modelibrary
Pure APS › View
Return ValueInteger

What the APS Visualizer shows: 0 nothing, 1 everything (the default), 2 status only (each AI's state over its head, no cones or rings). The console variable aps.Visualizer.

Set Visualizer Modelibrary
Callable APS › View
ModeInteger

Set what the APS Visualizer shows: 0 nothing, 1 everything, 2 status only (each AI's state over its head). Sets the console variable aps.Visualizer, so it applies to every Visualizer.

Get Visualizer Pagelibrary
Pure APS › View
Return ValueInteger

The page the Visualizer's screen panel shows (0 Senses ... ). The console variable aps.VisualizerPage.

Set Visualizer Pagelibrary
Callable APS › View
PageInteger

Choose the page the Visualizer's screen panel shows: 0 Senses, 1 Memory, 2 Brain, 3 Squad, 4 Events, 5 Player Model, 6 Environment. Sets the console variable aps.VisualizerPage.

APSDebug Helper#

Tools for inspecting squads while you play. Callable from any Blueprint.

Squad State Reportlibrary
Callable APS › Debug › Squad
AgentAPS Core
Return ValueString

Agent's squad: its Squad ID, every member, their distance to Agent, whether they are in share range, and their combat role. Run it on one AI to check a squad is wired up.

Simulate Squad Sharelibrary
Callable APS › Debug › Squad
SenderAPS CoreTargetActorReceiverAPS Core
Return ValueString

Hand Sender's belief about Target to Receiver, as a squad share would, without Receiver perceiving anything. Sender must hold a belief about Target. For testing sharing with one pair of AI.

Simulate Squad Alertlibrary
Callable APS › Debug › Squad
ReceiverAPS CoreTargetActorLocationVectorThreatThreat Level
Return ValueString

Fire On AI Squad Alert on Receiver, to test its response to an alert in isolation.

Trace Squad Share Pathlibrary
Callable APS › Debug › Squad
SenderAPS CoreTargetActor
Return ValueString

Why a share from Sender would or would not reach each squad member, step by step: Squad ID set, belief held, Min Threat To Share met, members registered, each in range. A dry run: nothing is shared.

Squad Beliefs Reportlibrary
Callable APS › Debug › Squad
AgentAPS CoreTargetActor
Return ValueString

What every member of Agent's squad believes about Target. Run it after a share to see it landed.

Force Full Squad Sharelibrary
Callable APS › Debug › Squad
SenderAPS CoreTargetActor
Return ValueString

Share Sender's belief about Target with every squad member, ignoring range and Min Threat To Share.

Perception Profile#

Composition#

Get Overridden Property Names
Callable Target is Perception Profile APS › Composition
TargetPerception Profile
Return ValueArray of Name

Names of the fields this asset holds differently from its Parent Profile.

Apply Archetype Tolibrary
Callable APS › Composition
TargetPerception ProfileIn ArchetypeAPSArchetype

Set the fields an archetype defines, on any profile.

Exposed so a Blueprint can build a profile at runtime — spawn a profile, apply Civilian, override two numbers, hand it to an agent.

Describe Archetypelibrary
Pure APS › Composition
In ArchetypeAPSArchetype
Return ValueText

One line describing what an archetype is for.

Archetype#

Apply Archetype
Callable Target is Perception Profile Archetype
TargetPerception Profile

Stamp the chosen archetype's values onto this profile.

Workbench#

Estimate Budget
Pure Target is Perception Profile APS › Workbench
TargetPerception ProfileAgent CountInteger 50Targets Per AgentInteger 3
Return ValueString

Rough per-second cost of running this profile, as text.

An estimate from the settings alone, not a measurement — it says what the asset is asking for, which is the number worth knowing before a level is full of agents rather than after.

Diff Against
Pure Target is Perception Profile APS › Workbench
TargetPerception ProfileOtherPerception Profile
Return ValueArray of String

Every field where this profile differs from Other, as "Field: theirs -> mine".

Pain Sense#

Not reachable from Blueprint in APS 3.0. These are on the Pain Sense object the APS Core creates, and no node returns it. Use the APS Core's pain nodes of the same names; Set Health Ratio, Get Health Ratio and Get Pain State are for C++ only (the core's GetSenseInstances). From Blueprint, give APS health with the APSHealth Provider interface.

Report Pain from Definition
Callable Target is Pain Sense APS › Pain
TargetPain SensePain DefPain Type DefinitionPain AmountFloat

Add pain of one type. From Blueprint, use the APS Core's node of the same name.

Get Pain Level from Definition
Pure Target is Pain Sense APS › Pain
TargetPain SensePain DefPain Type Definition
Return ValueFloat

One pain type's level, 0 to 1.

Get Total Pain Level
Pure Target is Pain Sense APS › Pain
TargetPain Sense
Return ValueFloat

Every enabled pain type's level added up, at most 1.

Clear Pain from Definition
Callable Target is Pain Sense APS › Pain
TargetPain SensePain DefPain Type Definition

Remove all pain of one type.

Clear All Pain
Callable Target is Pain Sense APS › Pain
TargetPain Sense

Remove all pain of every type.

Set Pain Type Enabled from Definition
Callable Target is Pain Sense APS › Pain
TargetPain SensePain DefPain Type DefinitionEnabledBoolean

Turn one pain type off or on.

Set Health Ratio
Callable Target is Pain Sense APS › Pain
TargetPain SenseRatioFloat

Set the health fraction, 0 to 1. It sticks only while nothing on the AI answers the health lookup; otherwise the next update overwrites it.

Get Health Ratio
Pure Target is Pain Sense APS › Pain
TargetPain Sense
Return ValueFloat

The health fraction the Pain sense uses, 0 to 1: read each update from the APSHealth Provider interface or a health function on the pawn, else as set by Set Health Ratio.

Get Pain State
Pure Target is Pain Sense APS › Pain
TargetPain Sense
Return ValuePain State

The health band from that fraction: Healthy above 0.75, Wounded above 0.40, Critical above 0.15, Near Death below.

Touch Sense#

Not reachable from Blueprint in APS 3.0. These are on the Touch Sense object the APS Core creates, and no node returns it. Use the APS Core's Report Touch Contact, Report Touch Contact with Impulse and End Touch Contact, which do the same.

Report Contact
Callable Target is Touch Sense APS › Touch
TargetTouch SenseInstigatorActorTypeContact TypeStrengthFloat 1PersistentBoolean OffContact LocationVector (0, 0, 0)

Report a contact: who, what kind, how strong (0 to 1), whether it is held, and where. From Blueprint, use the APS Core's Report Touch Contact.

Report Contact with Impulse
Callable Target is Touch Sense APS › Touch
TargetTouch SenseInstigatorActorTypeContact TypeImpulseVectorPersistentBoolean OffContact LocationVector (0, 0, 0)

Report a contact from a physics hit; the impulse sets the strength. From Blueprint, use the APS Core's Report Touch Contact with Impulse.

End Touch Contact
Callable Target is Touch Sense APS › Touch
TargetTouch SenseInstigatorActor

End a held contact. From Blueprint, use the APS Core's End Touch Contact.

Vibration Sense#

Not reachable from Blueprint in APS 3.0. This is on the Vibration Sense object the APS Core creates, and no node returns it. Use the APS Core's Report Vibration Event, which does the same.

Report Vibration Event
Callable Target is Vibration Sense APS › Vibration
TargetVibration SenseLocationVectorStrengthFloatSurfaceSurface Type

Report a vibration at a place: where, how strong (0 to 1) and on what surface. From Blueprint, use the APS Core's Report Vibration Event.

Smell Sense#

Not reachable from Blueprint in APS 3.0. This is on the Smell Sense object the APS Core creates, and no node returns it. For one kind of AI with its own wind, set Wind Direction in the Class Defaults of a Blueprint child of Smell Sense; for everyone, Set Wind State on the APS Subsystem.

Set Wind Direction
Callable Target is Smell Sense Perception › Smell
TargetSmell SenseDirectionVector

Give this smell sense its own wind direction, over the world's: the way the air moves. (0, 0, 0) uses the world's wind.

Sense Unit#

Evaluateoverride in Blueprint
Event to override Target is Sense Unit Perception › Sense
ContextPerception ContextProfilePerception ProfileTargetActor
Out ResultPerception Sense Result

Override it in your own sense: judge one target and fill in Out Result (Is Active, Confidence, Estimated Location, Location Accuracy, Sense ID).

Get Sense IDoverride in Blueprint
Event to override Target is Sense Unit Perception › Sense
Return ValueName

Override it in your own sense: return its name, for example Thermal. It is what Get Sense Contributions and the Visualizer show.

APS Signature#

Set Trait
Callable Target is APS Signature APS › Signature
TargetAPS SignatureKeyNameValueNameObservabilityFloat 0.8

Set or replace one trait. The usual way to change a disguise at runtime.

Remove Trait
Callable Target is APS Signature APS › Signature
TargetAPS SignatureKeyName

Remove a trait entirely — a dropped weapon, a discarded coat.

Get Signature
Pure Target is APS Signature APS › Signature
TargetAPS Signature
Return ValueAPSDescriptor

The full set of traits this actor carries (its Signature), as set in the Details panel or by Set Trait and Remove Trait.

Get Observed Subset
Pure Target is APS Signature APS › Signature
TargetAPS SignatureObservation QualityFloat
Return ValueAPSDescriptor

The traits an observer makes out with a look this good (0 to 1): a trait is noticed when its Observability is at least 1 minus the quality, so a poor look gets only the obvious ones.

APS Observer#

Observer#

Get Observation Quality
Pure Target is APS Observer APS › Observer
TargetAPS ObserverTargetActor
Return ValueFloat

How good a look this AI has at a target now, 0 to 1, from how sure it is and how far away the target is. It decides which traits it can make out.

Report Now
Callable Target is APS Observer APS › Observer
TargetAPS ObserverTargetActor

File a report now, ignoring the interval and confidence gates. For scripted moments — an alarm pull, a phone call.

Cancel My Pending Reports
Callable Target is APS Observer APS › Observer
TargetAPS Observer
Return ValueInteger

Everything this AI has personally filed and not yet had delivered. Cancel it and the report never arrives.

Get Provenance
Pure Target is APS Observer APS › Observer
TargetAPS Observer
Return ValueName

The provenance this observer stamps on its reports.

Observer › Evidence#

On Evidence Discoveredoverride in Blueprint
Event to override Target is APS Observer APS › Observer › Evidence
Evidence ActorActorEvidence TagNameLocationVector

Fires the first time this AI notices a given piece of evidence.

By the time it fires, a belief about the place and a memory have already been recorded — so a handler can read them. What it MEANS is yours: raise the alarm, investigate quietly, or step over it.

Get Discovered Evidence Count
Pure Target is APS Observer APS › Observer › Evidence
TargetAPS Observer
Return ValueInteger

Everything this AI has already found, so it does not rediscover it.

APS Evidence#

Get Age
Pure Target is APS Evidence APS › Evidence
TargetAPS Evidence
Return ValueFloat

Seconds this has existed. Read it to age a description — "still warm".

Remove Evidence
Callable Target is APS Evidence APS › Evidence
TargetAPS Evidence

Remove it from the world. Hiding the body.

Begin Search
Callable Target is APS Search APS › Search
TargetAPS SearchLast Known LocationVector

Begin searching from a last known position. Clears any search in progress.

End Search
Callable Target is APS Search APS › Search
TargetAPS Search

Stop, and release the grid.

Is Searching
Pure Target is APS Search APS › Search
TargetAPS Search
Return ValueBoolean

True while a search is running (between Begin Search and End Search).

Mark Cleared
Callable Target is APS Search APS › Search
TargetAPS SearchLocationVectorRadiusFloat

Mark somewhere as checked. Called automatically for wherever the owner goes; call it directly for a look down a corridor the AI did not enter.

Get Best Search Point
Callable Target is APS Search APS › Search
TargetAPS Search
Out PointAPSSearch PointReturn ValueBoolean

The single best place to look next. False when nothing is left.

Get Ranked Search Points
Callable Target is APS Search APS › Search
TargetAPS SearchCountInteger
Out PointsArray of APSSearch Point

The best N places, most promising first.

Is Search Exhausted
Pure Target is APS Search APS › Search
TargetAPS Search
Return ValueBoolean

True once everything reachable has been checked — the AI has genuinely looked everywhere rather than merely run out of patience.

Get Search Progress
Pure Target is APS Search APS › Search
TargetAPS Search
Return ValueFloat

How much of the reachable area has been checked, 0 to 1.

Get Search Duration
Pure Target is APS Search APS › Search
TargetAPS Search
Return ValueFloat

Seconds since the search began. What the reachable area is derived from.

APSKnowledge Subsystem#

The Knowledge module's world-wide memory of identities, factions and dispatch. Get it with Get APSKnowledge Subsystem.

Get APS Knowledgelibrary
Callable APS › Knowledge
Return ValueAPSKnowledge Subsystem

The Knowledge module's world subsystem, from any Blueprint. None if there is no world.

Report Observation
Callable Target is APSKnowledge Subsystem APS › Knowledge
TargetAPSKnowledge SubsystemFactionNameSubjectActorDescriptorAPSDescriptorLocationVectorConfidenceFloatProvenanceName
Return ValueInteger

Tell a faction something, at once and complete. It merges with an entry about the same actor, or one whose description matches, so ten sightings stay one manhunt. Returns the entry's id, or -1 if nothing was recorded.

Report Via Channel
Callable Target is APSKnowledge Subsystem APS › Knowledge
TargetAPSKnowledge SubsystemFactionNameSubjectActorDescriptorAPSDescriptorLocationVectorConfidenceFloatProvenanceNameChannelAPSComms Channel

The same, but sent along a channel — so it arrives late, vaguer, and missing details, according to what that channel costs.

A radio report is not available the instant it is spoken. Until the delay elapses the faction does not know, and anything that stops the sender in that window stops the message.

Cancel Pending From
Callable Target is APSKnowledge Subsystem APS › Knowledge
TargetAPSKnowledge SubsystemProvenanceName
Return ValueInteger

Discard everything a sender has in flight but not yet delivered. Silencing the witness before the message lands.

Get Pending Count
Pure Target is APSKnowledge Subsystem APS › Knowledge
TargetAPSKnowledge Subsystem
Return ValueInteger

How many messages are still in transit.

Get Entry
Callable Target is APSKnowledge Subsystem APS › Knowledge
TargetAPSKnowledge SubsystemFactionNameEntry IdInteger
Out EntryAPSKnowledge EntryReturn ValueBoolean

Look up one entry of a faction's knowledge by its id (the id Report Observation returned). Returns false when the faction has no such entry: it was forgotten, faded or merged.

Get Entry for Subject
Callable Target is APSKnowledge Subsystem APS › Knowledge
TargetAPSKnowledge SubsystemFactionNameSubjectActor
Out EntryAPSKnowledge EntryReturn ValueBoolean

What the faction knows about a specific actor, if anything.

Get Entries
Callable Target is APSKnowledge Subsystem APS › Knowledge
TargetAPSKnowledge SubsystemFactionName
Out EntriesArray of APSKnowledge Entry

Everything the faction currently believes, strongest first.

Get Entry Count
Pure Target is APSKnowledge Subsystem APS › Knowledge
TargetAPSKnowledge SubsystemFactionName
Return ValueInteger

How many entries a faction currently holds.

Match Descriptor
Callable Target is APSKnowledge Subsystem APS › Knowledge
TargetAPSKnowledge SubsystemFactionNameDescriptorAPSDescriptorMin MatchFloat
Out BestAPSKnowledge EntryOut ScoreFloatReturn ValueBoolean

Who does the faction know of that fits this description? Returns the best match and how well it fits, 0 to 1; you decide whether that is enough to act on.

Forget Entry
Callable Target is APSKnowledge Subsystem APS › Knowledge
TargetAPSKnowledge SubsystemFactionNameEntry IdInteger
Return ValueBoolean

Drop one entry — cleared, arrested, proven wrong.

Forget Faction
Callable Target is APSKnowledge Subsystem APS › Knowledge
TargetAPSKnowledge SubsystemFactionName

Drop everything a faction knows and reset its alert level, at once.

Get Faction Alert
Pure Target is APSKnowledge Subsystem APS › Knowledge
TargetAPSKnowledge SubsystemFactionName
Return ValueFloat

How alarmed a faction is, 0 to 1: a wanted level.

Raise Faction Alert
Callable Target is APSKnowledge Subsystem APS › Knowledge
TargetAPSKnowledge SubsystemFactionNameAmountFloat

Add to a faction's alert level (kept between 0 and 1) and fire On Faction Alert Changed. Amounts of 0 or less are ignored.

Set Faction Alert
Callable Target is APSKnowledge Subsystem APS › Knowledge
TargetAPSKnowledge SubsystemFactionNameValueFloat

Set a faction's alert level outright (kept between 0 and 1) and fire On Faction Alert Changed.

APSDescriptor Library#

Build and compare descriptors (what a witness says about someone). Callable from any Blueprint.

Set Descriptor Traitlibrary
Callable APS › Knowledge › Descriptor
DescriptorAPSDescriptorKeyNameValueNameObservabilityFloat 0.8

Add a trait, or change its value if the key is already there.

Remove Descriptor Traitlibrary
Callable APS › Knowledge › Descriptor
DescriptorAPSDescriptorKeyName

Remove the trait with this key, if any.

Get Descriptor Traitlibrary
Pure APS › Knowledge › Descriptor
DescriptorAPSDescriptorKeyName
ValueNameReturn ValueBoolean

The value held for a key. False when the descriptor says nothing about it.

Match Againstlibrary
Pure APS › Knowledge › Descriptor
DescriptionAPSDescriptorKnownAPSDescriptor
Return ValueFloat

How well Description fits Known, 0 to 1. Only keys both have are compared, and each contradiction halves the score: the same rule Match Descriptor uses.

Shared Key Countlibrary
Pure APS › Knowledge › Descriptor
DescriptorAPSDescriptorOtherAPSDescriptor
Return ValueInteger

How many keys the two have in common: a confident match on one trait is not a confident match on five.

APS Fusion Policy#

Make a Blueprint child of this class and set it on the profile's Fusion Policy to decide how senses combine.

Fuse Confidenceoverride in Blueprint
Event to override Target is APS Fusion Policy APS › Policy
SamplesArray of APSSense SampleCorroboration BonusFloat
Return ValueFloat

Override it: combine this update's sense readings into one confidence, 0 to 1. Samples has one entry per sense, in the profile's order (Sense ID, Confidence, Weight, Is Active). Corroboration Bonus is the profile's, for reference.

APS Threat Policy#

Make a Blueprint child and set it on the profile's Threat Policy to score threats your way.

Score Threatoverride in Blueprint
Event to override Target is APS Threat Policy APS › Policy
RecordBelief RecordRelationshipTarget Relationship
Return ValueFloat

Override it: return how dangerous the target is, 0 to 1. Record is everything the AI believes about the target; Relationship comes from its APS Relationship. APS still turns the score into a level with the profile's thresholds, and keeps Friendly, Teammate and Expired targets at None.

APS Attention Policy#

Make a Blueprint child and set it on the profile's Attention Policy to choose what the AI attends to.

Select Attention Targetoverride in Blueprint
Event to override Target is APS Attention Policy APS › Policy
CandidatesArray of Belief RecordCurrentActorTime on CurrentFloatStickiness TimeFloatSwitch ThresholdFloat
Return ValueActor

Override it: return the target the AI should commit to, Current to keep it, or none. Candidates are the actors it holds beliefs about, best first. Time on Current is how long it has held Current; Stickiness Time and Switch Threshold are the profile's, so you can honour them. It replaces the built-in rule entirely.

APS Significance Policy#

Make a Blueprint child and set it on the APS subsystem to rank which AI get full-quality updates.

Score Significanceoverride in Blueprint
Event to override Target is APS Significance Policy APS › Significance
AgentAPS CoreNearest Viewer DistFloatIs EngagedBooleanAwarenessInteger
Return ValueFloat

Override it: return how important this AI is, 0 to 1. More important AI update more often and win the frame budget. Nearest Viewer Dist is the distance to the closest player camera in cm (0 on a dedicated server); Is Engaged is true while its awareness is Suspicious or higher; Awareness is 0 (Unaware) to 4 (Fully Aware).

APSHealth Provider#

An interface: implement it on your character so APS can read its health without knowing your health system.

Get APSHealth Fractionoverride in Blueprint
Event to override Target is APSHealth Provider APS › Adapters
Return ValueFloat

Remaining health as a fraction, 1 for untouched and 0 for dead. Values outside that range are clamped.

APSStance Provider#

An interface: implement it on your character so APS can read its stance (standing, crouching, prone) from your own movement code.

Get APSStanceoverride in Blueprint
Event to override Target is APSStance Provider APS › Adapters
Return ValueAPSStance

Implement it to tell APS the posture: Standing, Crouched or Prone.

APS Advanced Perception System, by AuraGame. Unreal Engine 5.2 and later. These docs are for APS 3.0.
Questions and bug reports