APSDocs

Components & assets#

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 component you can add to an actor, every asset type you can create, and every sense, with all their settings. All components are listed under Add in the Components panel: type aps.

Components#

APS Core#

The component that makes an AI perceive. Put it on the AI's Pawn (never its controller), assign a Perception Profile, and handle its events. Getting started
It has [109 Blueprint nodes](nodes.md#aps-core) and [26 events](events.md#aps-core).
ProfilePerception Profile
Default None

The Perception Profile this AI uses: everything it perceives and how sharply. Set it in the Details panel; while playing, use Set Profile.

Profile OverridesArray of APSProfile Override

Changes applied to this one agent's copy of the profile.

Leave empty and the agent shares the profile asset directly, which costs nothing. Add an entry and this agent gets a private resolved copy.

Quality ProfileAPS Quality Profile
Default None

Optional cost controls applied on top of the profile. Leave empty for full quality. Changing this never resets what the AI believes — that is the whole reason it is separate from the profile.

Show VisualizerBoolean
Default Off

Show this AI with the APS Visualizer. Its actor is spawned at Begin Play and removed with the AI. Off: nothing is shown and nothing is spent on it.

Visualizer ClassActor Class (soft)
Default BP_APSVisualizeronly when Show Visualizer is on

The Visualizer to spawn: the plugin's BP_APSVisualizer by default. Make a child Blueprint of it to restyle it, or any actor of your own that reads the View nodes.

Record Heard SoundsBoolean
Default Off

Keep the sounds this AI hears for Get Recent Sounds. On by itself while a Visualizer is shown or On Sound Heard is bound; working out how loud each sound arrived costs a few traces per sound, so it is otherwise skipped.

Pause PerceptionBoolean
Default Off

Stop every sense: nothing new is perceived while paused, and beliefs fade as they would with nothing in view. For watching memory and decay on their own.

APS Perception Listener#

Optional. Make a Blueprint from it, implement the APS events there, and add it to every AI that should share those reactions. It must sit on the same actor as the APS Core.
It has [20 Blueprint nodes](nodes.md#aps-perception-listener).

No settings of its own: add it and it works.

APS Target Component#

Optional, on anything AI look at (the player, NPCs, vehicles): where its sample points are, its stance, a light level from your own light gem, camouflage, and registration for non-Pawns. Confidence
It has [1 Blueprint nodes](nodes.md#aps-target-component).
Visibility SamplesArray of APSVisibility Sample
Default 5 points: head socket (weight 1), chest (0.9), pelvis (0.7), clavicle_l and clavicle_r sockets (0.6 each)

Points the AI traces against to decide how exposed this actor is. Socket names are resolved on the owner's skeletal mesh; entries with no socket fall back to their local-space Offset.

Leave empty to inherit the observing AI's profile defaults.

Visibility MultiplierFloat
Default 10 to 1

How visible this actor is, 0 to 1: camouflage, tall grass, a cloak. 0 makes it invisible to sight.

StanceAPSStance
Default Standing

Current posture. Drives how many sample points must be visible to register.

Auto Detect StanceBoolean
Default On

Work out the posture automatically: an APSStance Provider if the actor has one, else the Character's crouch.

Light Level OverrideFloat
Default -1-1 to 1

How lit this actor is, 0 to 1, from your own light gem: it wins over everything. -1 lets APS work it out.

Auto Register as PerceivableBoolean
Default On

Register the owner as perceivable on BeginPlay so AI can find it with no extra setup.

APS Relationship#

Optional, on an AI beside its APS Core: who is an enemy, a friend, feared or neutral, by class, by team or per actor. Squads & teams
It has [2 Blueprint nodes](nodes.md#aps-relationship).
Team RelationshipsMap of Byte to Target Relationship

A team id (Unreal's Generic Team Id, from the target or its controller) and the relationship it means.

Class RelationshipsMap of Actor Class to Target Relationship

An actor class and the relationship it means. Class rules win over team rules.

Default RelationshipTarget Relationship
Default Unknown

Default when no rule matches.

APS Environment#

Makes a sphere around its actor where light, rain, wind, indoors or sense ranges are different: fog, smoke, a cellar, a market. World & fairness
RadiusFloat
Default 1000at least 1

Sphere of influence around the owning actor, in cm.

PriorityInteger
Default 0

Higher wins where volumes overlap. Equal priorities resolve to whichever is nearer its own centre, so a small volume inside a large one takes effect.

Override LightBoolean
Default Off

Inside this volume, use Light Level instead of the world's light.

Light LevelFloat
Default 10 to 1only when Override Light is on

0 is pitch dark, 1 is full daylight.

Override RainBoolean
Default Off

Inside this volume, use Rain Intensity instead of the world's rain.

Rain IntensityFloat
Default 00 to 1only when Override Rain is on

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

Override WindBoolean
Default Off

Inside this volume, use this Wind Direction and Wind Speed instead of the world's wind.

Wind DirectionVector
Default (1, 0, 0)only when Override Wind is on

The way the wind blows inside this volume. Smell uses it.

Wind SpeedFloat
Default 0at least 0only when Override Wind is on

How hard the wind blows inside this volume.

Override IndoorsBoolean
Default Off

Inside this volume, use Is Indoors instead of the world's setting.

Is IndoorsBoolean
Default Offonly when Override Indoors is on

Indoors concentrates scent and shelters from wind.

Vision Range ScaleFloat
Default 10 to 4

Smoke, fog, dust. 0.3 means vision reaches a third as far in here.

Hearing Range ScaleFloat
Default 10 to 4

A crowded market or a running generator. Below 1 makes it harder to hear anything specific; above 1 models a room that carries sound.

Smell Range ScaleFloat
Default 10 to 4

How far smell reaches inside this volume: 1 changes nothing, 0.5 is half as far, 2 is twice as far.

APS Signature#

What a witness could describe about this actor: traits like a red coat or a white van. Knowledge & witnesses
It has [4 Blueprint nodes](nodes.md#aps-signature).
SignatureAPSDescriptor

The traits an observer can perceive, subject to how good a look they got.

Ships with a plausible starter set so the component does something the moment it is added. Replace the values with your own.

APS Observer#

On an AI beside its APS Core: reports what it perceives to its faction, as a description, and discovers evidence. Knowledge & witnesses
It has [6 Blueprint nodes](nodes.md#aps-observer).
FactionName
Default Police

Who this AI reports to. Entries are scoped per faction, so two factions hunting the same person do not share what they have worked out.

Report ChannelAPSComms Channel
Default Radio

How reports travel. Direct is instant and complete; anything else costs time and detail, and can be cut off before it lands.

Min Confidence to ReportFloat
Default 0.450 to 1

Belief required before this AI is willing to say anything. Below it, the AI has a suspicion rather than a sighting.

Report IntervalFloat
Default 2at least 0.1

Seconds between reports about the same target, so a sustained sighting is an update rather than a flood.

Ideal Observation RangeFloat
Default 600at least 50

Distance at which a look is as good as it gets (cm). Closer than this adds nothing; further degrades toward noticing only the obvious.

Max Observation RangeFloat
Default 4000at least 100

Beyond this, no describable detail is made out at all (cm).

Alert Per ReportFloat
Default 0.150 to 1

Alert added to the faction each time this AI files a report.

Discover EvidenceBoolean
Default On

Notice traces left in the world — bodies, blood, forced locks. Off makes this AI blind to evidence without changing anything else it does.

Report Evidence to FactionBoolean
Default On

Also file evidence with the faction. Off keeps the discovery private to the AI that found it — it knows, its organisation does not.

APS Evidence#

Turns its actor into something AI can find and draw a conclusion from: a body, a forced lock, blood. Search & evidence
It has [2 Blueprint nodes](nodes.md#aps-evidence).
Evidence TagName
Default Evidence

What kind of trace this is — "Body", "Blood", "ForcedLock", "Footprints". Your vocabulary; the plugin attaches no meaning to any of them.

ConspicuousnessFloat
Default 0.60 to 1

How obvious this is (0 to 1). 1 is a body in a corridor; 0.2 is a scuff mark.

An observer must perceive it at least this well before it registers, so subtle traces need a closer, longer look — and a hurried search misses them, which is the behaviour that makes searching feel like searching.

Belief StrengthFloat
Default 0.80 to 1

How strongly discovering this should register, (0 to 1). Feeds the confidence of the location belief it produces.

Lifetime SecondsFloat
Default 0at least 0

Seconds before this fades from the world on its own. 0 = it stays until something removes it. Blood dries; a body does not tidy itself away.

InstigatorActor

Who caused it, if the game knows. Carried into the finder's memory, so "this was them" is available without the AI having witnessed anything.

Implied DirectionVector
Default (0, 0, 0)

Which way it suggests they went. Zero when it says nothing about direction.

Auto Register as PerceivableBoolean
Default On

Register this actor as perceivable on BeginPlay, so AI can find it with no further setup. Turn off if your project registers it another way.

Hands an AI the best place to look next while it searches, spreading at the target's speed and staying on the navmesh. Search & evidence
It has [9 Blueprint nodes](nodes.md#aps-search).
Cell SizeFloat
Default 300at least 50

Grid resolution in cm. Smaller is more precise and costs more cells.

Grid RadiusInteger
Default 203 to 64

Half-width of the grid in cells. 20 at 300 cm covers a 120 m square.

Target SpeedFloat
Default 450at least 1

How fast the target is assumed able to move, cm/s. This is what turns elapsed time into a search area — set it near your player's sprint speed.

Clear RadiusFloat
Default 450at least 50

How close the searcher must get before a cell counts as checked (cm).

Require NavigableBoolean
Default On

Reject cells that are not on the navmesh, and hand out only places the searcher can walk to.

This is what stops the search spreading through walls. Each point is the cell's spot on the navmesh, never its raw centre (which can be inside a wall), and the first time a point comes up APS checks the searcher has a full path to it: a closed room or a roof is skipped. Turned off — or with no navigation system present — every cell is accepted, which degrades to a plain expanding area rather than failing outright: a project with no navmesh should still get a usable search, not an empty one.

Assets#

Create these in the Content Browser: right-click, Miscellaneous → Data Asset, and pick the class.

Perception Profile#

Every setting for how one kind of AI perceives. Profiles
Its 174 settings have [their own page](profile.md).

APS Quality Profile#

Makes an AI cheaper or dearer without changing what it does: update rates, sample points, the light trace. Nothing it believes is reset. Performance & crowds
Update Interval ScaleFloat
Default 10.1 to 20

Multiplier on the profile's Base Update Interval. Above 1 means the whole perception pass runs less often; below 1 makes it more responsive.

Sense Interval ScaleFloat
Default 10.1 to 20

Multiplies every sense's update interval: thin out vision without slowing the rest.

Max Vision SamplesInteger
Default 00 to 16

Hard cap on vision sample points per target, which is the single biggest trace cost in the system. 0 leaves the profile's Vision Sample Count alone.

This only ever lowers the count — a quality asset cannot make an agent more expensive than its profile asked for.

Skip Per Target LightBoolean
Default Off

Skip the per-target light and sun-shadow trace and use the world's light. This changes stealth: a target in shadow reads as lit. Only for AI nobody watches closely.

Sound Type Definition#

One kind of noise (a footstep, a gunshot): how loud, how far, how alarming. Emit it with Emit Sound. Hearing
Sound NameName
Default empty

The sound's name. On AI Hear passes it as the sound type's name, so you can branch on it, and it becomes part of the sound's stimulus tag (Stimulus.Sound.<name>).

CategorySound Category
Default Enemy

What made the sound: Enemy, Friendly, Animal, Environment or Custom. A Sound Filter Profile can accept only some categories.

Alert LevelSound Alert Level
Default Normal

How alarming the sound is: Whisper, Normal, Loud or Explosive. A Sound Filter Profile can ignore sounds below a level.

Base LoudnessFloat
Default 10.01 to 10

Base loudness. 1.0=normal footstep, 3.0=gunshot, 0.3=whisper.

Max RangeFloat
Default 1500at least 1

Max detection range (cm). Footstep=800, Gunshot=4000, Explosion=10000.

Is DirectionalBoolean
Default On

Does nothing in APS 3.0. No code reads it: how precisely a sound is placed comes from Location Accuracy Override (or the distance-based default).

Location Accuracy OverrideFloat
Default 00 to 1

How precisely a hearer places this sound, 0 to 1: 0.9 a gunshot, 0.2 a distant thud. 0 works it out from the distance.

PriorityInteger
Default 50 to 10

Does nothing in APS 3.0. No code reads it: when more than Max Pending per Tick sounds of one type arrive in a tick, the quietest is replaced by a louder one.

Max LODTierInteger
Default 20 to 4

AI at a higher (cheaper) level of detail tier ignore this sound: 1 for a footstep, 3 for a gunshot, 4 for an explosion everyone should hear.

Max Pending Per TickInteger
Default 31 to 10

How many sounds of this type wait for an AI per update. Past that, the quietest is replaced by a louder one.

Sound Filter Profile#

Which sounds an AI reacts to, by category, alert level and team, and how loud each seems to it. Hearing
EnabledBoolean
Default On

False = hear everything. True = apply filters below.

Accepted CategoriesArray of Sound Category
Default Enemy, Animal, Environment, Custom

Sound categories this AI reacts to. Empty list = completely deaf.

Min Alert LevelSound Alert Level
Default Whisper

Minimum alert level. Whisper=react to all sounds. Loud=only gunshots+. Explosive=only explosions.

Loudness MultiplierFloat
Default 10.1 to 5

Loudness multiplier. 1.0=normal, 2.0=sensitive ears (dog), 0.5=hard of hearing.

Filter Friendly TeamBoolean
Default Off

Ignore sounds from the AI's own team (its Generic Team Id, or its controller's; for a projectile, whoever launched it).

Pain Type Definition#

One kind of pain (a flash, burning, bleeding): which senses it dulls and how fast it fades. Emotions & pain
Display NameText

A readable name for this pain type, for your own UI.

Debug ColorLinear Color
Default (1, 0.5, 0)

A colour for this pain type, for your own UI or debug view.

Decay RateFloat
Default 0.20 to 5

How much of the level is lost per second, in a straight line: 0.05 lingers (bleeding), 0.2 fades (burning), 1 is quick (a stun). 0 never fades: clear it with Clear Pain from Definition.

Sense EffectsArray of Sense Impair Entry

Which senses this pain dulls, and how much: each entry is a sense and an effect from 0 to 1. At full pain, an effect of 1 takes that sense down to its floor.

Max LevelFloat
Default 10 to 1

The highest this pain can reach, 0 to 1, however many reports land.

Amount OverrideFloat
Default 00 to 1

Above 0, every report adds this instead of the amount passed: for all-or-nothing pain like a flash. 0 uses the amount passed.

Senses#

A profile lists the senses its AI has in Sense Classes. Settings shared by every sense live on the profile; the settings below belong to one sense: to change them, make a Blueprint child of the sense (right-click it in the class picker, or Blueprint Class and search its name), set them in its Class Defaults, and put your child class in the profile's Sense Classes instead.

Every sense#

The parent of every sense, and of your own: a sense made directly from it sets these in its Class Defaults. The built-in senses ignore them. Custom senses
Default IntervalFloat
Default 0.10 to 10

Seconds between evaluations of this sense. Overridden per-profile by Sense Intervals.

Max Sensing RangeFloat
Default 0at least 0

Furthest this sense can reach (cm). Feeds the candidate-gathering radius, so a sense that reaches further than vision must say so or its targets are never even considered. 0 means it adds nothing to the gather range.

Loss Grace TimeFloat
Default 0.30 to 60

Seconds after this sense stops reporting before the target can be lost.

Allows Direct Lost CutBoolean
Default Off

True = jump straight to Lost once grace expires, the way vision does when a target steps behind a wall. False = fade down through the states.

Sense Loss ReasonLoss Reason
Default SensorDropout

Reason written to the belief record when this sense is the one that lost the target. Behaviour trees read it to decide how to search.

Subscribed Stimulus TagsArray of Name

Stimulus tag prefixes this sense subscribes to. Prefix matched, so "Stimulus.Sound" receives "Stimulus.Sound.Gunshot". Empty = opt out.

Damage Sense#

Being hurt tells the AI who did it, at any range, from every Unreal damage call. Emotions & pain
*All of this sense's settings are on the Perception Profile.*

Echolocation Sense#

Sonar pulses: no light or line of sight needed, precise up close. Senses
*All of this sense's settings are on the Perception Profile.*

Hearing Sense#

Hears only the sounds your game emits, muffled by walls, building up with repeats. Hearing
*All of this sense's settings are on the Perception Profile.*

Pain Sense#

Pain you report, and low health, dull the AI's other senses. Emotions & pain
*All of this sense's settings are on the Perception Profile.*

Smell Sense#

Scent carried by the wind, in the dark and around corners; places a target only roughly. Senses
Max Smell RangeFloat
Default 40050 to 5000

Maximum range at which this sense can detect targets (cm). Much shorter than vision or hearing; smell is close-range.

Wind DirectionVector
Default (0, 0, 0)

This sense's own wind: the way the air moves (1, 0, 0 carries scent toward +X). (0, 0, 0) uses the world's wind (Set Wind State, or an APS Environment).

Downwind BonusFloat
Default 21 to 3

How much stronger the scent is when the wind carries it straight to the AI: 2 is twice as strong.

Base Scent IntensityFloat
Default 10.01 to 5

Base scent intensity of targets. Increase for "strongly scented" targets (animals, sewage, explosives) or reduce for neutral/masked targets. This is the noise equivalent for smell: higher = easier to detect.

Scent ThresholdFloat
Default 0.40.01 to 2

Divides the scent intensity: lower is more sensitive.

Wall Absorption CoeffFloat
Default 0.250 to 1

Absorption per wall crossing. Walls partially block scent (lower than hearing by default, since scent can seep under doors).

Smell Accumulation RateFloat
Default 0.10.01 to 2

How fast scent confidence builds per second when target is in range.

Smell Accumulation Decay RateFloat
Default 0.050.01 to 2

How fast scent confidence decays per second when target leaves range.

Touch Sense#

Contact: bumps, grabs, hits and blasts, wired automatically; the only sense that knows exactly where you are. Senses
Max Impulse for Full StrengthFloat
Default 1000

Does nothing in APS 3.0. Overwritten every tick by the profile's Touch Max Impulse for Full Strength, unless that is 0.

Contact Type Strength MultiplierMap of Contact Type to Float

Confidence multiplier per contact type. Lets you tune impact per type in the asset.

Persistent Accumulation RateFloat
Default 0.3at least 0

Does nothing in APS 3.0. Overwritten every tick by the profile's Touch Persistent Accumulation Rate, unless that is 0.

Max Persistent BonusFloat
Default 0.50 to 1

Does nothing in APS 3.0. Not used: the profile's Touch Max Persistent Bonus always sets the cap.

Vibration Sense#

Footsteps through the floor, through walls, faster movement felt more. Senses
*All of this sense's settings are on the Perception Profile.*

Vision Sense#

Sight: five points per target, cones, the head's direction, light, cover and see-through surfaces. Senses
*All of this sense's settings are on the Perception Profile.*
APS Advanced Perception System, by AuraGame. Unreal Engine 5.2 and later. These docs are for APS 3.0.
Questions and bug reports