APSDocs

Enums, types & console#

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.

The choices (enums) and data (structs) APS nodes and events pass around, with every value and field.

Enums#

APSArchetype#

A preset Apply Archetype stamps onto a profile.

ValueMeaning
GuardAlert and forward-facing: commits to a contact quickly and keeps it.
CivilianWide senses, high thresholds, short memory: reacts without investigating.
StalkerA narrow, long look and a memory that doesn't let go.
Military PatrolThe longest sight; shares contacts with the squad.
WildlifeSmell and hearing over sight; reacts long before it is sure.

APSBelief Subject#

What a belief is about.

ValueMeaning
ActorSomeone: a specific actor.
LocationA place something happened, with nobody known behind it.
DescriptorNot used in APS 3.0.
ObjectA thing, not someone: a body, a forced lock (APS Evidence, Set Perceived as Object). Never a target.

APSComms Channel#

How a report reaches a faction: the slower ones lose time, precision and detail, and can be cut off.

ValueMeaning
Direct (witnessed)Seen first-hand: at once and complete.
Shout0.5 s late, up to 3 m off, a quarter of the detail lost.
Radio2 s late, up to 6 m off, 35% of the detail lost.
Report (in person)In person: 8 s late, up to 15 m off, over half the detail lost.

APSEvidence Op#

What a piece of evidence does to belief.

ValueMeaning
Raise (floor)Belief is at least Value. Gives the AI a belief if it had none.
Clamp (ceiling)Belief is at most Value, even while the AI senses the target.
Lower (relative reduction)Belief settles Value below what the senses say, while a sense reports the target.
Invalidate (force zero)Belief is held at 0: it steps back down.

APSEye Direction Mode#

Where vision's facing comes from.

ValueMeaning
Actor RotationThe actor's facing. Cheapest; the default.
Control RotationThe controller's control rotation (what Unreal's own perception uses).
Socket Rotation (head bone)The eye socket's facing: it follows the head bone's animation.
Blended (actor + socket)A blend of the actor's and the socket's facing (Eye Socket Rotation Weight).

APSEye Socket Alignment#

How the eye socket's rotation becomes a look direction.

ValueMeaning
Use Socket Rotation As AuthoredUses the socket's rotation exactly: for a socket you made and pointed yourself.
Manual OffsetApplies Eye Socket Rotation Offset.

APSPerception Blocker#

Why a sense reported nothing about a target.

ValueMeaning
NoneNothing blocked it (or it reported the target). In view but too faint (far, dark) also counts here.
Out Of RangeToo far for the sense.
Outside ConeIn range, but outside every vision cone.
OccludedSomething solid in the way: no sample point visible.
Below Min ExposureVisible, but less of it than Min Exposure to Register.
Too Few Visible PointsSome points visible, but fewer than the target's stance needs.
Target Opted OutThe target's APS Target Component has Visibility Multiplier 0.
Suppressed By PainPain or low health dulled the sense to nothing.
Fairness Reaction HoldFirst Spot Reaction Time is still running: on purpose.
Not Evaluated This TickNever reported in APS 3.0: a sense keeps its last answer between updates.
No ContextNo belief about that target, or no such sense on this AI.

APSStance#

A target's posture: how many sample points must show before it counts (the profile's Min Visible Points).

ValueMeaning
StandingStanding.
CrouchedCrouched.
ProneLying down.

APSView Fan Kind#

Which of an AI's view cones a fan is.

ValueMeaning
FocalThe main cone.
Peripheral LeftThe left side cone.
Peripheral RightThe right side cone.
Rear MotionThe rear cone.
KeyholeThe keyhole-shaped main cone (Keyhole Vision).

APSView Point State#

How much of vision reaches one of a target's sample points.

ValueMeaning
SeenMore than half of sight reaches the point.
PartlySome sight gets through (glass, leaves, smoke), too little to count.
BlockedNo sight reaches it.

APSVision Cone#

Which vision cone saw the target.

ValueMeaning
NoneNone.
FocalThe main cone.
PeripheralA side cone.
Rear MotionThe rear cone (moving targets only).

Awareness Level#

How alert the AI is overall, from its most confident belief.

ValueMeaning
UnawareBelow Suspect Threshold.
PeripheralAt Suspect Threshold or above: something on the edge of notice.
SuspiciousAt Detect Threshold or above.
AlertedAt Track Threshold or above.
Fully AwareAt Full Aware Threshold or above.

Belief Lifecycle State#

Where a belief is in its life, from Undetected to Expired.

ValueMeaning
UndetectedNot noticed (yet).
SuspectedSomething is there: confidence at Suspect Threshold or above.
DetectedIt is sure the target is there: Detect Threshold or above.
TrackedHigh, sustained confidence: Track Threshold, for at least Min Track Duration.
LostThe senses lost the target; the AI knows where it last was, and why it lost it.
RememberedFaded to memory: it still knows the target was there.
ExpiredForgotten: the slot is free.

Combat Role#

A role one squad member at a time can hold. APS gives roles no behaviour: your logic does.

ValueMeaning
NoneNo role.
ApproacherMoves in.
FlankerGoes round the side.
SuppressorKeeps the target pinned.
InvestigatorChecks it out.
SupportBacks the others up.

Contact Type#

What kind of contact touch felt. When several land in one update, the strongest kind counts: Explosion, then Grab, Collision, Bump.

ValueMeaning
BumpWalked into: stronger the faster it moved.
GrabHeld contact: an overlap, a grab.
ExplosionA blast.
CollisionA physics hit.

Emotion Type#

The dominant emotion.

ValueMeaning
CalmNo emotion above Emotion Active Threshold.
CuriousCuriosity leads.
AlertAlertness leads.
AggressiveAggression leads.
FearfulFear leads.
PanickedPanic is above Panic Override Threshold: it wins over everything.

Loss Reason#

Why the AI lost a target.

ValueMeaning
UnknownNever lost, or found again.
OccludedIt went behind something: search that cover.
OutOfRangeIt walked out of range or out of the cones: go on along Loss Direction.
SoundFadedIts noise stopped: look around there, don't chase.
ScentLostThe trail went cold: follow Loss Direction.
SensorDropoutThe sense just stopped: too dark, cloaked, blinded, or a sense like touch or vibration went quiet.
TargetDestroyedThe actor is gone.

Pain State#

A band of health (C++ only: Get Pain State).

ValueMeaning
HealthyAbove 0.75.
WoundedAbove 0.40.
CriticalAbove 0.15.
Near Death0.15 or less.

Sound Alert Level#

How alarming a sound is, for filters.

ValueMeaning
WhisperBarely: a crouched step.
NormalOrdinary: a footstep.
LoudLoud: a gunshot.
ExplosiveAn explosion.

Sound Category#

What made a sound, for filters.

ValueMeaning
EnemyAn enemy (the default).
FriendlyA friend.
AnimalAn animal.
EnvironmentThe world: doors, glass, explosions.
CustomYour own.

Stimulus Source#

Which kind of evidence a belief came from.

ValueMeaning
UnknownNone of the others: touch, vibration, echolocation or a custom sense.
VisionSeen.
HearingHeard.
SmellSmelled.
DamageIt was hurt by the target.
Shared IntelA squadmate told it.

Surface Type#

What a target is moving on, for vibration (from the target's Surface.Metal, Surface.Water or Surface.Ground actor tag).

ValueMeaning
AnyNo particular surface.
GroundGround (the default).
WaterWater.
MetalMetal.

Target Relationship#

What the AI takes a target for (from APS Relationship).

ValueMeaning
UnknownNo rule matched. Threat weight 0.5.
NeutralCivilians, wildlife: perceived, not threatening. Threat weight 0.3.
FriendlyAn allied faction: never a threat.
TeammateIts own side: never a threat.
EnemyHostile. Threat weight 1.
High ValueA priority target: a VIP, an objective carrier. Threat weight 1.2.
FearedSomething to run from. Threat weight 1.5, the most.

Threat Level#

How dangerous the AI thinks a target is, from its threat score and the profile's thresholds.

ValueMeaning
NoneNo threat (also always for Friendly, Teammate and Expired targets).
LowScore at Threat Threshold Low or above.
MediumScore at Threat Threshold Medium or above.
HighScore at Threat Threshold High or above.
CriticalScore at Threat Threshold Critical or above.

Structs#

APSChannel Spec#

What a channel costs the information passing through it.

DelayFloat
Default 0at least 0

Seconds before the faction knows. The window in which stopping the messenger still changes the outcome.

Position ErrorFloat
Default 0at least 0

Random position error added, in cm. A shouted location is approximate.

Trait Loss ChanceFloat
Default 00 to 1

Chance per trait that a detail is lost in the retelling (0 to 1). Weighted by observability, so the obvious things survive and the subtle ones do not.

Confidence ScaleFloat
Default 10 to 1

Multiplier on the reported confidence. Second-hand is less certain.

APSDescriptor#

A set of traits: what someone really is (an APS Signature), or what a witness made out. The same type serves both, so one can be matched against the other.

TraitsArray of APSTrait

The traits that make up the description: each a key (such as Coat), a value (such as Red) and how easy it is to notice.

APSEvidence#

One piece of scripted evidence about a target (Add Target Evidence): what it does to belief, by how much, and for how long.

TagName
Default empty

Identity of this evidence. Adding a second entry with the same tag replaces the first, so re-applying "Disguise" refreshes it instead of stacking.

OperationAPSEvidence Op
Default Raise (floor)

What the evidence does to confidence: Raise (a floor it can't fall below), Clamp (a ceiling), Lower (settles it below what the senses say), or Invalidate.

ValueFloat
Default 00 to 1

Meaning depends on Operation. Ignored entirely by Invalidate.

LifetimeFloat
Default 0at least 0

Seconds before this expires on its own. 0 or less = holds until removed.

SourceName
Default empty

A free label for your own debugging: Disguise, Dispatch, Cutscene_03.

AgeFloat
Default 0

Seconds this entry has been held. Managed by APS.

APSHeard Sound#

One sound, as one AI heard it.

OriginVector
Default (0, 0, 0)

Where the sound was made.

SourceActor
Default None

Who made it. None for a noise with no maker (Emit Sound At Location).

Sound TypeSound Type Definition
Default None

The Sound Type Definition of the sound that was heard.

Sound NameName
Default empty

The Sound Type's name, for example "Creak". "Sound" when it has none.

Display NameString

Sound Name as words, for a label: "FootstepWalk" reads "Footstep Walk".

LoudnessFloat
Default 0

How loud it was made (the Sound Type's loudness times the emitter's multiplier).

HeardFloat
Default 0

How loud it reached this AI, 0 to 1: after distance, walls and rain. What hearing works with.

ReachFloat
Default 0

How far this sound carries to this AI (cm): the Sound Type's range, scaled where the AI stands.

DistanceFloat
Default 0

From the sound to this AI (cm).

WallsInteger
Default 0

Walls between the sound and this AI's ear. 0 when the path is clear.

Clear PathBoolean
Default On

True when nothing stood between the sound and the AI's ears; false when walls muffled it (see Walls).

No MakerBoolean
Default Off

A noise with no maker: it becomes a belief about the place, not about anyone.

TimeFloat
Default 0

World seconds when it was heard.

APSKnowledge Entry#

One thing a faction believes.

Entry IdInteger
Default 0

This entry's id within its faction: pass it to Get Entry or Forget Entry.

SubjectActor

The actor this is about, when anyone has actually identified one. Null for a description nobody has tied to a person yet — which is the normal state of a manhunt before it succeeds.

DescriptorAPSDescriptor

What is known about them.

Last Known LocationVector
Default (0, 0, 0)

Where the subject was last reported.

ConfidenceFloat
Default 0

How strongly the faction believes the entry, 0 to 1: it fades while nobody reports it again, and the entry is dropped below the subsystem's Entry Forget Threshold.

AgeFloat
Default 0

Seconds since this was last refreshed by anyone.

ProvenanceName
Default empty

Who said so. Free-form: an agent's name, "Dispatch", "Camera_03".

Hop CountInteger
Default 0

How many retellings from the original sighting. 0 means witnessed.

APSMemory#

One remembered thing. Every field except Tag is optional — use what fits.

TagName
Default empty

What this is, in your vocabulary. "AttackedMe", "OwesMeMoney", "SeenWith".

NumberFloat
Default 0

A number, meaning whatever you decide. Damage taken, coins owed, a rating.

PlaceVector
Default (0, 0, 0)

A place, if the memory has one. Where it happened, where they ran to.

CountInteger
Default 1

How many times this tag has been remembered about this subject. Maintained by APS because counting is bookkeeping, not meaning — you still decide whether three is a lot.

AgeFloat
Default 0

Seconds since this was last written.

APSMemory Subject#

What a memory is about: an actor, or a place with a Place Tag. Build one with Make Actor Subject or Make Place Subject.

ActorActor

The actor the memory is about, when it is about an actor.

LocationVector
Default (0, 0, 0)

Where the remembered place is, when it is about a place.

Place TagName
Default empty

What kind of place, when this is about a location rather than an actor.

Is PlaceBoolean
Default Off

True when the memory is about a place (named by Place Tag) rather than an actor.

APSPerception Frame#

One target's belief at one moment, from a recording (Start Recording).

Time SecondsFloat
Default 0

World seconds at which this was captured.

TargetActor

Who the belief was about. May have been destroyed since.

ConfidenceFloat
Default 0

Confidence as acted on, after smoothing.

Raw ConfidenceFloat
Default 0

Confidence as the senses reported it, before smoothing.

StateBelief Lifecycle State
Default Undetected

The belief's state at that moment.

AwarenessAwareness Level
Default Unaware

The AI's overall awareness at that moment.

Last Known PositionVector
Default (0, 0, 0)

Where the AI believed the target was.

Time Since Last SensedFloat
Default 0

Seconds since any sense last had this target.

Active Sense CountInteger
Default 0

In APS 3.0, how many senses the AI runs (not how many were reporting).

APSProfile Override#

One changed profile setting, by its override name: a number or a tickbox. Used by a profile's Overrides and an APS Core's Profile Overrides.

PropertyName

The setting's override name, shown on the profile reference: for example VisionMaxRange, or bEnablePeripheralCone for a tickbox.

NumberFloat
Default 0

The value, for a number setting (a choice uses its position in the list, from 0).

FlagBoolean
Default Off

The value, for a tickbox.

APSReplicated Target State#

One target as clients see it, in the replicated summary (Get Replicated Perception State).

TargetActor
Default None

The actor this state is about.

ConfidenceFloat
Default 0

The AI's confidence in the target, 0 to 1.

StateBelief Lifecycle State
Default Undetected

The belief's state: Undetected through Expired.

Threat LevelThreat Level
Default None

How much of a threat the AI thinks the target is.

Last Known PositionVector
Default (0, 0, 0)

Where the AI last placed the target.

APSSearch Point#

One place worth looking, and how much it is worth.

LocationVector
Default (0, 0, 0)

Where to look: a reachable point on the navmesh.

ProbabilityFloat
Default 0

How likely the target is here, relative to the other points (0 to 1).

Distance from SearcherFloat
Default 0

Distance from the searcher. Exposed so a caller can trade "most likely" against "nearest" itself rather than accepting a ranking it did not choose.

APSSense Ranges#

How far each of an AI's senses reaches right now (cm). 0 for a sense it does not have.

VisionFloat
Default 0

How far vision reaches right now, in cm.

Vision Half AngleFloat
Default 0

Half the focal cone's width (degrees).

PeripheralFloat
Default 0

0 when the peripheral cone is off.

Peripheral Half AngleFloat
Default 0

Half the width of the peripheral cone, in degrees.

Rear MotionFloat
Default 0

0 when the rear-motion cone is off.

Rear Motion Half AngleFloat
Default 0

Half the width of the rear motion cone, in degrees, measured from directly behind the AI.

HearingFloat
Default 0

Hearing's cap, scaled by any quiet or loud zone the AI stands in. A Sound Type can carry less far (Get Sound Reach).

SmellFloat
Default 0

How far smell reaches right now, in cm. 0 when the AI has no smell.

VibrationFloat
Default 0

How far vibration reaches right now, in cm. 0 when the AI has no vibration sense.

EcholocationFloat
Default 0

How far echolocation reaches right now, in cm. 0 when the AI has no echolocation.

Echo DirectionalBoolean
Default Off

Echolocation pings forward only, about 101 degrees to each side.

APSSense Sample#

One sense's reading, as a Fusion Policy sees it.

Sense IDName
Default empty

"Vision", "Hearing", or whatever a custom sense returns from Get Sense ID.

ConfidenceFloat
Default 0

What this sense reported, before weighting.

WeightFloat
Default 1

The profile's weight for this sense.

Is ActiveBoolean
Default Off

False when the sense is silent — it should contribute nothing.

APSStimulus Event#

A signal for the stimulus bus (Emit Stimulus): what it is, where, how strong, and who receives it.

Stimulus TagName

A dotted name for the signal. Senses listen for a beginning, so one listening for Stimulus.Custom gets Stimulus.Custom.Psychic.

LocationVector
Default (0, 0, 0)

World origin of the stimulus.

SourceActor
Default None

The actor that caused the signal; none for things like weather.

StrengthFloat
Default 10 to 1

How strong, 0 to 1.

RadiusFloat
Default 1500at least 1

AI further than this (cm) don't receive it.

Max LODTierInteger
Default 20 to 4

AI at a higher (cheaper) level of detail tier don't receive it: 4 reaches every AI.

Requires Clear PathBoolean
Default Off

Trace from the signal to each AI and skip those behind a wall. Costs a trace per AI: only for signals walls should stop.

Team FilterBoolean
Default Off

Skip AI on the Source's team.

APSTrait#

One thing a witness could describe about someone: a key (Coat), a value (Red), and how easy it is to notice.

KeyName
Default empty

What kind of fact this is — "Clothing", "Vehicle", "Build", "Voice", "Face".

ValueName
Default empty

The value for this observer to match on — "RedCoat", "BlueSedan", "Tall".

ObservabilityFloat
Default 0.80 to 1

How easily this is noticed (0 to 1). 1 is unmissable at any range a target can be seen at; 0.1 needs a close, clear look.

Suggested: clothing colour 0.9, build 0.8, vehicle 0.85, gait 0.4, face 0.25, voice 0.3 (and only when in earshot).

APSView Fan#

One view cone as a flat shape: from the Apex, a fan whose edge (the Rim) stops where sight stops, at a wall, past glass, or at full range.

KindAPSView Fan Kind
Default Focal

Which cone this is: focal, peripheral or rear.

ApexVector
Default (0, 0, 0)

The fan's point: under the eyes on the floor, or at the eyes.

ForwardVector
Default (1, 0, 0)

Flat direction the fan's angles are measured from.

RangeFloat
Default 0

The cone's range before anything stops it (cm).

From DegFloat
Default 0

The fan's edges, degrees about world up from Forward.

To DegFloat
Default 0

The angle, in degrees about world up from the cone's forward direction, where the cone's outline ends. The outline runs from From Deg to To Deg.

Reach AheadFloat
Default 0

How far sight gets along the middle of the fan (cm): less than Range when something is in the way.

RimArray of Vector

Where sight ends, in order from FromDeg to ToDeg: world points at the Apex's height.

Rim AnglesArray of Float

Each rim point's angle from Forward (degrees).

Rim ReachArray of Float

How far sight gets to each rim point (cm).

Confidence ScaleFloat
Default 1

How much a sighting in this cone counts: 1 for the focal cone, the profile's scale for the others.

APSView Point#

One of vision's sample points on a target.

LocationVector
Default (0, 0, 0)

Where the sample point is on the target.

TransmissionFloat
Default 0

How much of vision reaches it, 0 (blocked) to 1 (clear).

StateAPSView Point State
Default Blocked

Whether vision gets through to the point: Seen (more than half gets through), Partly (glass, foliage or smoke lets some through, too little to count) or Blocked.

WeightFloat
Default 1

The point's weight in the exposure: how much of the target it stands for.

APSVisibility Sample#

One point on a target that vision traces to: a mesh socket, or an offset from the actor when there is no socket.

Socket NameName
Default empty

Mesh socket / bone to trace against. None = use Offset instead.

OffsetVector
Default (0, 0, 0)

Local-space fallback offset from the actor root (cm), used when SocketName is None or the socket does not exist. Rotated by the target's facing, unlike a raw world offset.

WeightFloat
Default 10 to 1

How much this point counts, 0 to 1: a visible head counts for more than a visible foot.

Belief Record#

Everything an AI believes about one target (Get Belief Data).

TargetActor

The actor this belief is about.

Target IDInteger
Default 0

A number that identifies the target.

Subject KindAPSBelief Subject
Default Actor

Whether this belief is about an actor (someone), a thing (APS Evidence) or a place.

Subject LocationVector
Default (0, 0, 0)

Where a belief about a place is. For a belief about an actor, read Last Known Position.

Subject TagName
Default empty

What kind of thing this is — "Sound.Gunshot", "Evidence.Body". Empty for actor beliefs, which identify themselves.

Fused ConfidenceFloat
Default 0

The senses' combined confidence this update, before smoothing.

Smoothed ConfidenceFloat
Default 0

The confidence the AI acts on, 0 to 1, after smoothing: the states, the events and the meter all use this one. Use it for detection meters.

Lifecycle StateBelief Lifecycle State
Default Undetected

Where the belief is in its life: Undetected, Suspected, Detected, Tracked, Lost, Remembered or Expired.

Time Since Last SensedFloat
Default 0

Seconds since any sense last had the target.

Total Time TrackedFloat
Default 0

How long, in all, the target has been Tracked.

Time in Current StateFloat
Default 0

Seconds in the current state.

Last Known PositionVector
Default (0, 0, 0)

Where the AI last placed the target.

Estimated VelocityVector
Default (0, 0, 0)

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

Estimated AccelerationVector
Default (0, 0, 0)

How the target's velocity has been changing.

Uncertainty RadiusFloat
Default 0

How unsure the AI is of where the target is, in cm around the last known position: grows while it is unsensed.

Predicted PositionVector
Default (0, 0, 0)

Where the AI expects the target to be by now.

Long Term Memory StrengthFloat
Default 0

A slow memory of the target, 0 to 1: it builds by 0.02 a second while the target is sensed and fades by about 1% a second after (or as Long Term Decay Curve says). APS itself doesn't act on it: read it for your own logic.

Detection CountInteger
Default 0

How many times the target has been noticed: each rise out of Undetected, and each time it is found again after being Lost or Remembered.

Was Ever DetectedBoolean
Default Off

True once the target has ever been noticed.

First Detected TimeFloat
Default 0

The world time, in seconds, when the target was first noticed.

Last Seen Cover ActorActor

What stood between the AI and the target when it was lost from Detected or Tracked — set before On AI Lost fires. Cleared on every loss.

Last Seen Cover PositionVector
Default (0, 0, 0)

Where the line of sight broke, on the face of that cover.

Was in CoverBoolean
Default Off

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

Loss ReasonLoss Reason
Default Unknown

Why the AI last lost this target (Occluded, OutOfRange, SoundFaded, ScentLost, SensorDropout, TargetDestroyed). Cleared when it is found again. Branch your search on it.

Loss DirectionVector
Default (0, 0, 0)

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

EpisodesArray of Perception Episode

The last five encounters with this target, oldest first: each written when the AI lost the target from Detected or Tracked. Read them with Get Recent Episodes.

Primary Stimulus SourceStimulus Source
Default Unknown

The source that first made this belief.

Dominant Stimulus SourceStimulus Source
Default Unknown

The sense contributing most right now; while none reports, the last source the belief came from (Shared Intel for one a squadmate shared). This is what On AI Suspect / On AI Detect pass as Stimulus.

Threat LevelThreat Level
Default None

How much of a threat the AI thinks the target is: None, Low, Medium, High or Critical.

Threat ScoreFloat
Default 0

The threat score behind Threat Level, 0 to 1.

Damage Received from TargetFloat
Default 0

How much damage the target has done to this AI. Fades over time while the target is lost (the profile's Threat Damage Decay Rate).

Damage Dealt to TargetFloat
Default 0

Does nothing in APS 3.0. Never written by APS 3.0: always 0 (only Debug Reset Damage Tracking touches it, to set it to 0). Track damage the AI deals in your own code.

Is Known ThreatBoolean
Default Off

True once the target has been Tracked.

Encounter CountInteger
Default 0

How many separate encounters the AI has had with the target: one for each rise from Undetected to Suspected.

Last Threat LevelThreat Level
Default None

The threat level before the most recent change: compare it with Threat Level to see which way the threat moved.

RelationshipTarget Relationship
Default Unknown

What the AI takes the target for (enemy, friend, neutral, ...), as its APS Relationship resolved it.

Emotional State#

The AI's five emotions (each 0 to 1), the dominant one, and the fear input.

FearFloat
Default 0

Fear, 0 to 1.

AggressionFloat
Default 0

Aggression, 0 to 1.

CuriosityFloat
Default 0

Curiosity, 0 to 1.

AlertnessFloat
Default 0

Alertness, 0 to 1.

PanicFloat
Default 0

Panic, 0 to 1.

Dominant EmotionEmotion Type
Default Calm

The emotion that leads now: Calm, Curious, Alert, Aggressive, Fearful or Panicked.

Fear InputFloat
Default 0

The outside fear set by Set Fear Input, 0 to 1.

Environment State#

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

Light LevelFloat
Default 10 to 1

The light level, 0 (dark) to 1 (full daylight). Vision sees less in the dark, unless a per-target light value overrides it.

Rain IntensityFloat
Default 00 to 1

Rain, 0 (dry) to 1 (downpour). Rain shortens vision, hearing and smell.

Wind SpeedFloat
Default 00 to 2000

How hard the wind blows. Smell carries less the stronger it is, outdoors only.

Wind DirectionVector
Default (1, 0, 0)

The way the wind blows. Smell reaches further downwind.

Is IndoorsBoolean
Default Off

True indoors: scent is stronger and the wind is ignored.

Time Of DayFloat
Default 120 to 24

The time of day in hours, 0 to 24. Informational: APS's senses don't read it.

Perception Context#

What a sense knows about the AI and the moment when it judges a target (for your own senses).

Owner ActorActor
Default None

The AI doing the perceiving.

Owner LocationVector
Default (0, 0, 0)

Where the AI is.

Owner RotationRotator
Default (0, 0, 0)

Which way the AI faces.

Owner Eye LocationVector
Default (0, 0, 0)

Where the AI's eyes are.

Delta TimeFloat
Default 0

The length of this update, in seconds.

Ambient Light LevelFloat
Default 1

The light level where the AI is, 0 (dark) to 1 (full light): from the environment, 1 when there is none.

Weather Visibility ModFloat
Default 1

How much of its sight the rain leaves the AI: 1 minus the rain intensity, 1 when dry.

Target LocationVector
Default (0, 0, 0)

Where the target is.

Target VelocityVector
Default (0, 0, 0)

How fast, and which way, the target moves.

Owner Eye ForwardVector
Default (1, 0, 0)

The direction the AI's eyes face, with Eye Direction Mode and Eye Turn Rate applied: use it rather than the actor's rotation.

Owner OffscreenBoolean
Default Off

True when this AI is off the first player's screen (more than about 75° from where the camera points). Used by Offscreen Hearing Penalty.

Quality Max Vision SamplesInteger
Default 0

The Quality Profile's cap on sample points: 0 for no cap.

Quality Skip Per Target LightBoolean
Default Off

Skip per-target light sampling and the sun-shadow trace, using the global ambient level instead.

Hearing Range ScaleFloat
Default 1

How far hearing reaches here, from any APS Environment volume the AI stands in: 1 changes nothing.

Smell Range ScaleFloat
Default 1

How far smell reaches here, from any APS Environment volume the AI stands in: 1 changes nothing.

Perception Episode#

One past encounter with a target, written when the AI lost it from Detected or Tracked. The last five are kept (Get Recent Episodes).

How LostLoss Reason
Default Unknown

How this engagement ended.

State when LostBelief Lifecycle State
Default Undetected

State before going Lost (was AI Tracked or just Detected?).

Location when LostVector
Default (0, 0, 0)

World position of target when AI lost them.

AICamera DirectionVector
Default (1, 0, 0)

Direction AI was facing when they lost the target. Useful for predicting blind spots.

Target Flee DirecitonVector
Default (0, 0, 0)

Direction target was moving when lost (from EstimatedVelocity).

Engagement DurationFloat
Default 0

All the time this target has spent Tracked so far, in seconds, not just this encounter: it only grows.

Peak Threat LevelThreat Level
Default None

The threat level at the moment the AI lost the target. Despite the name, not the highest of the encounter.

World Time StampFloat
Default 0

World time when this episode was recorded. Use for "was this recent?" checks.

Perception Sense Result#

What one sense reported about one target (Get Sense Result; your own sense fills one in).

ConfidenceFloat
Default 0

This sense's confidence about the target, 0 to 1.

Raw Signal StrengthFloat
Default 0

The signal before falloff and the other multipliers: for your own debugging.

Estimated LocationVector
Default (0, 0, 0)

Where this sense places the target. Imprecise senses (hearing, smell) place it roughly.

Location AccuracyFloat
Default 1

How precise that position is, 0 to 1.

Sense IDName
Default empty

Which sense this is (Vision, Hearing, ...).

Is ActiveBoolean
Default Off

True while this sense is perceiving the target. When false, the rest is ignored.

Exposure RatioFloat
Default 0

Vision only: how much of the target was visible, 0 (hidden) to 1 (fully in view), weighted by its sample points.

Visible Point CountInteger
Default 0

Number of sample points that had a clear line this evaluation. Vision only.

Detected by ConeAPSVision Cone
Default None

Which cone produced the detection. Vision only.

BlockerAPSPerception Blocker
Default None

Why the sense reported nothing, when it reported nothing. Only Vision gives reasons (and pain or the reaction window, for any sense).

Light LevelFloat
Default -1

How lit vision judged the target, 0 (dark) to 1 (fully lit): Light Level Override when the target sets one, otherwise the sun-shadow trace or the ambient level. Vision only. -1 when vision stopped before judging light (outside the cones, out of range, hidden).

Was Active Last EvalBoolean
Default Off

What this sense said the last time it actually ran. Senses run on their own intervals, so between their updates Is Active is false; this tells you whether it still has the target.

Player Behavior Model#

What an AI has recorded about how a target plays (Get Player Behavior Model).

Crouch RatioFloat
Default 0

Share of the time, during encounters, the target spent crouched or prone.

Sprint RatioFloat
Default 0

Share of the time, during encounters, the target spent sprinting.

Walk RatioFloat
Default 0

Share of the time, during encounters, the target spent walking.

Stealth RatioFloat
Default 0

Share of encounters that ended with the target behind the AI.

Aggression RatioFloat
Default 0

Share of encounters that ended with the target in front. It and Stealth Ratio add up to 1.

Recent Hide LocationsArray of Vector

Up to 5 different places (each more than 2 m from the others) where the AI lost the target.

Custom Behavior RatiosMap of Name to Float

Does nothing in APS 3.0. Stays empty in APS 3.0: no node or APS code records into it.

Engagement CountInteger
Default 0

Number of distinct engagements observed so far.

Has Enough DataBoolean
Default Off

True once Engagement Count reaches the profile's Min Engagements Required: check it before your logic adapts.

Sense Impair Entry#

One sense a pain type dulls, and how much.

Sense ClassSense Unit Class

Sense to impair. Select from the dropdown — for example Vision Sense, Hearing Sense.

EffectFloat
Default 00 to 1

How much this pain dulls the sense, 0 to 1: at full pain, 1 takes the sense to its floor.

Sense Loss Config#

How the AI loses a target when this sense is the one that last had it.

Grace TimeFloat
Default 0.30 to 60

Seconds after the sense stops reporting before the target can be lost. Brief cover (a pillar, a doorframe) doesn't drop it.

Direct CutBoolean
Default Off

On: once the grace ends, straight to Lost (vision, echolocation). Off: confidence steps down through the states first (the other senses).

Confidence Decay MultiplierFloat
Default 10.1 to 10

How fast belief fades once this sense has stopped, compared with normal (1): 3 fades three times as fast.

Console commands#

Type these in the console (` while playing, or the editor's Cmd box).

aps.Visualizer#

What the APS Visualizer shows. 0: nothing. 1 (default): everything. 2: status only (each AI's state over its head). (default 1)

aps.VisualizerPage#

The page the APS Visualizer's screen panel shows (0 Senses, 1 Memory, 2 Brain, 3 Squad, 4 Events, 5 Player Model, 6 Environment). (default 0)

aps.UseSpatialIndex#

1 (default): find perception candidates through the APS subsystem's spatial index. 0: fall back to scanning every Pawn in the world, once per agent, per gather. (default 1)

aps.Tune#

aps.Tune <PropertyName> <Value> — set a profile value on every running agent, without touching the asset. Try: aps.Tune VisionMaxRange 5000

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