Configuration Reference
Documentation Unreal Engine AI Configuration Reference
Every SEC setting and the one place you set it: project settings, the Enemy AI Config, the data assets, the components.
Every setting SEC reads, grouped by where you set it. Look the value up here, follow the link for what it does.
Where a setting lives
| Where | What it covers | Reaches |
|---|---|---|
| Project Settings, Plugins, Soulslike Enemy Combat | Role slot limits, token budgets, target selection fallbacks, which vital counts as health | The whole project |
| Enemy AI Config | One enemy archetype: role registration, target selection, the sets it swaps per role, perception, recovery | Every enemy pointed at that asset |
| The assets that config names | Movesets, reactions, movement bands, perception ranges, damage | Wherever an asset is named |
| Components on the controller and the pawn | What stays the same whatever role the enemy plays | One Blueprint, or one placed actor |
The dividing line: an Enemy AI Config holds what changes with the combat role, a component holds what does not.
No target selector ships turned on. With Target Selector empty on the Enemy AI Config and Default Target Selector empty in Project Settings, an enemy takes the first target it may fight, whether that target was already in the pool or registered long after the enemy started running, as long as Register Combat Target is called with Auto Assign Unassigned ticked. Fill one of the two in once several enemies share a fight or several players are registered. Targeting covers the choices.
Project Settings
Edit, Project Settings, Plugins, Soulslike Enemy Combat. What you set here covers every enemy in the project.
Combat Roles
| Setting | Default | Sets |
|---|---|---|
| Additional Roles | empty | Custom role tags evaluated alongside Attacker, Waiter, Flanker, Supporter and Elite. |
| Role Limits | Attacker 3, Flanker 2, Supporter 2 | How many enemies hold each role against one target at a time. A role with no row is unlimited. |
| Fallback Role | SEC.Role.Waiter | The role handed out when every preferred slot is full. Keep it out of Role Limits so it can absorb the overflow. |
Timing
Role Reassignment Interval
8
Min Time In Role
8
Reevaluate Targets On Reassignment
| Setting | Default | Sets |
|---|---|---|
| Role Reassignment Interval | 8 s | Seconds between role re-evaluations. |
| Min Time In Role | 8 s | How long an enemy holds a role before it can be reassigned, which stops role thrashing. |
| Reevaluate Targets On Reassignment | off | Re-run each enemy's target selection on every cycle. Fights with one player see no difference. |
See Combat Roles.
Combat Tokens
Combat Tokens
Token Budgets
2 Array elements
SEC.Token.Attack
Budget
2
Reissue Delay
0
SEC.Token.Ranged
Budget
2
Reissue Delay
0
Budget caps how many enemies run one class of action against the same target at once. Reissue Delay holds a freed slot out of circulation for that many seconds, which paces how fast one attack follows another. A tag with no row is unlimited, and an action opts in by carrying a Combat Token Gate. See Combat Tokens.
Target Selection
Target Selection
Default Target Selector
None
Default Target Filter
None
Default Target Selector answers for any enemy whose config names none. Default Target Filter decides which actors an enemy is willing to fight at all; left empty, the built-in answer applies (never itself, never a declared ally, never an actor its team excludes, and anything with no team is fair game).
Vitals
| Setting | Default | Drives |
|---|---|---|
| Health Vital Tag | SEC.Vital.Health | Death, the Health Scorer, and the health fraction actions score against. |
| Stamina Vital Tag | SEC.Vital.Stamina | The Stamina Gate and the stamina value actions score against. |
An enemy with no vitals component, or no row for the named tag, reads as full health and 100 stamina. See Vitals.
Enemy AI Config
One asset per enemy archetype. Create it with right-click in the Content Browser, SEC, Enemy AI Config, then set it on the enemy pawn's AI Config.
EnemyConfig_Default and EnemyConfig_Boss ship with the plugin as working examples.Two settings outside the asset decide whether it is read at all. The pawn's AI Controller Class has to name a controller carrying a SEC Combat Controller component, since a pawn falling back to the project's default controller ignores every field below. And the pawn answers the config question ahead of the controller, so a pawn that carries an AI Config field and leaves it empty ends up with no config; the controller's Default AI Config does not fill that gap.
Combat Role
Combat Role
Auto-Register for Combat Roles
Allowed Roles (empty = any)
0 Gameplay Tags
Priority
0
Preferred Role
None
Fitness Evaluators
0 Array elements
Target Selector
None
Target Filter
None
Ignore Target Redistribution
| Field | Default | Sets |
|---|---|---|
| Auto-Register for Combat Roles | on | Join multi-enemy coordination at possession. Untick for ambient wildlife or a scripted boss. |
| Allowed Roles (empty = any) | empty | Restrict this enemy to the roles listed. An archer can allow Waiter and Supporter alone. |
| Priority | 0 | First pick of a limited slot. 0 standard, 50 elite, 100 mini-boss, 200 boss. |
| Preferred Role | none | Tried first when it is free. Must sit inside Allowed Roles, or Allowed Roles must be empty. |
| Fitness Evaluators | empty | Objects scoring how well this enemy fits each role. Empty scores by distance, closer being higher. |
| Target Selector | none | How this enemy picks among several targets. Empty falls back to the project setting, which also ships empty. |
| Target Filter | none | Which actors it is willing to fight at all. Empty uses the built-in answer. |
| Ignore Target Redistribution | off | Opt out of the periodic target reshuffle, for a boss with a scripted target. |
The sets it swaps per role
Action Sets
Manage Action Sets Automatically
Default Action Set
DA_SEC_ActionSet_Attacker
Role Action Sets
3 Array elements
Reaction Sets
Manage Reaction Sets Automatically
Default Reaction Set
DA_SEC_ReactionSet_Default
Role Reaction Sets
1 Array element
Movement Profiles
Manage Movement Profiles Automatically
Default Movement Profile
DA_SEC_Movement_Attacker
Role Movement Profiles
2 Array elements
Each of the three groups works the same way: a master switch, a default asset, and a per-role list.
| Field | Default | Sets |
|---|---|---|
| Manage Action Sets Automatically | on | Resolve the moveset by role and grant its abilities. Untick to drive abilities yourself. |
| Default Action Set | none | The moveset for any role with no entry of its own. |
| Role Action Sets | empty | One row per role: the role tag, a Managed tick, and the asset. |
| Manage Reaction Sets Automatically | on | Same switch for reactions. |
| Default Reaction Set | none | The reactions for any role with no entry of its own. |
| Role Reaction Sets | empty | One row per role, same shape as above. |
| Manage Movement Profiles Automatically | on | Same switch for movement. |
| Default Movement Profile | none | The movement band for any role with no entry of its own. |
| Role Movement Profiles | empty | One row per role: the role tag and the profile. |
Fill in the default alongside any per-role list. An enemy holding a role you did not list, or holding no role yet, takes the default; with the default empty it gets nothing.
Awareness
Details
Enemy AI Config
Awareness
Manage Awareness Automatically
Awareness Config
DA_EnemyAwareness
Awareness category on the Enemy AI Config asset the enemy pawn points at.
| Field | Default | Sets |
|---|---|---|
| Manage Awareness Automatically | on | Push the Awareness Config to the enemy's perception when the controller takes its pawn. |
| Awareness Config | none | Sight, hearing, damage sense, and memory. Empty senses nothing, which holds every awareness state at Unknown and keeps the brain out of its combat phase. |
| Stimulus Filters | empty | What this enemy can notice before an attack lands. Empty notices everything. |
Fill Awareness Config in for any enemy meant to fight. The controller carries a perception component whatever the config says, so an empty asset leaves that component with nothing to sense, and an enemy with every other field correct stands still.
Perception alone does not gate who the enemy fights. Set Target Selector above to an Awareness Filtered Target Selector as well, or the enemy senses a target and engages everything anyway. See Awareness.
Behavior
Details
Enemy AI Config
Behavior
Default State Tree
StateTree_SEC_Core
Decision Context Params
Aggression Level
1
Window Id Interval Seconds
1.0
LOS Trace Channel
Visibility
LOS Trace Complex
Empty Default State Tree runs the native combat loop. Decision Context Params feed Build Decision Context and the native brain.
Default State Tree picks the brain. Leave it empty and the Fallback State Tree on the StateTree component answers instead; with that empty too, the enemy runs the plugin's own combat loop with no StateTree at all.
StateTree_SEC_Core ships with the plugin as a graph to start from. See StateTree.| Decision Context field | Default | Sets |
|---|---|---|
| Aggression Level | 1.0 | Baseline aggression handed to scoring. 0 defensive, 1 balanced, 2 aggressive. |
| Window Id Interval Seconds | 1.0 | Seconds between reseeds of the score variation. 0 never advances. |
| LOS Trace Channel | Visibility | The channel the line-of-sight check traces on. |
| LOS Trace Complex | off | Trace per-poly collision instead of simple shapes. |
Recovery
Every field defaults to 0, which leaves recovery off.
| Field | Default | Sets |
|---|---|---|
| Action Recovery Time | 0 s | Seconds every offensive action is held back after one completes or times out. Movement and reactions keep running. |
| Interrupt Recovery Time | 0 s | The same window after an interrupt or a cancel. Keep it shorter, so a parry does not double-stun. |
| Action Recovery Time Randomization | 0 s | Plus or minus jitter on the completion window, so a pack does not act in lockstep. |
| Global Hook | none | A lifecycle hook run around every action this enemy commits, ahead of any per-action hook. |
A single action can replace the window: tick Override Recovery Time on that action and set its Recovery Time. See Recovery.
The data assets
Right-click in the Content Browser, SEC, then pick one.
| Asset | Holds | Set on |
|---|---|---|
| Action Set | A moveset: one card per action, with its scoring, cooldown and combo links | Enemy AI Config, or a weapon |
| Reaction Set | Reactions plus the trigger rules that fire them | Enemy AI Config, or a weapon |
| Movement Behavior Profile | The distance band and rest behavior for one role | Enemy AI Config |
| Awareness Config | Sight, hearing, damage sense, and memory | Enemy AI Config |
| Damage Config | Damage numbers and what a landed hit does | A melee trace window, or the trace component |
| Defense Rule Set | Blocks, parries and armour, in the order they answer a hit | SEC Defense component, or a weapon |
| Impact Surface Set | Which impact cue plays per surface struck | The Surface Set on a SEC Play Gameplay Cues hit effect |
| Enemy AI Config | Everything above, tied together per archetype | The enemy pawn |
Action Set
The asset holds an Actions array. Each action carries these numbers; see the Action System for what to do with them.
| Field | Default | Sets |
|---|---|---|
| Enabled | on | Unticking also stops the action's ability being granted. |
| Selection | Scored | How automatic selection reaches it. Scored puts it in the normal poll, Chain Only limits it to an open chain window, Manual Only leaves a direct call by Action ID as the only route in. |
| Action ID | empty | The name chain links and logs use. Required. |
| Execution Method | Gameplay Ability | How the action runs. An action added on the canvas arrives with this one already on it. |
| Selection Weight | 1.0 | Multiplies the score. 2.0 doubles this action against a weight 1 action. |
| Risk Penalty | 1.0 | Divides the final score. 2.0 halves it, 0.5 doubles it. |
| Tag Score Multipliers | empty | Per-tag multipliers, so a stunned target can favour a heavy attack. |
| Scoring | empty | The Scorers and Gates below. A new action has none, so it fires at any range. |
| Requires Tags / Block Tags | empty | Tags that must be present, and tags that block. |
| Require Line Of Sight | off | Fire only with a clear view of the target. |
| Add Tags | SEC.State.IsMovementBlocked | Held on the enemy while the action runs. Remove the default entry to let it move mid-swing. |
| Cooldown Duration | 0 s | The wait before this action runs again. 0 lets it repeat back to back. |
| Initial Cooldown | 0 s | A wait charged at spawn, so an enemy cannot open with its heaviest hit. |
| Randomization (%) | 0 | Plus or minus jitter on the cooldown. 0.2 turns a 5 s wait into 4 to 6 s. |
| Interrupt Refund (%) | 0 | Share of the remaining cooldown handed back when the action is cut short. |
| Spawn Cooldown Chance | 0 | Chance the action starts on cooldown at spawn, desyncing a group. |
| Max Consecutive Uses | -1 | Uses in a row before another action must run. -1 is unlimited. |
| Override Recovery Time | off | Give this action its own recovery window instead of the config's. |
| Hook | none | A lifecycle hook run around this action alone. |
| Chain Links | empty | Follow-ups this action prefers, each with a Bonus Multiplier (1.5 by default). |
Movement Behavior Profile
| Field | Default | Sets |
|---|---|---|
| Desired Distance | 400 cm | The range this enemy fights at. |
| Distance Tolerance | 0.2 | The far half of the comfort band, as a share of Desired Distance. |
| Crowd Tolerance | 0.45 | The near half, how far a target may press in before the enemy gives ground. |
| Enable Strafe Rest | on | Pause after continuous circling. |
| Strafe Rest Time Limit | 10 s | Seconds of circling before a rest. |
| Strafe Rest Duration | 1.5 s | How long that rest lasts. |
| Swap Strafe On High Threat | off | Change circling side once threat runs long. |
| Adjust Distance By Threat | off | Back off as threat rises. |
| Threat Distance Scale | 1.0 | How hard threat pushes the distance out. Greyed out until the line above is ticked. |
| Positioning Rules | empty | Direction preferences that stack on top of the band, such as flanking or backstabbing. |
Details
Movement Behavior Profile
Threat Response
Swap Strafe On High Threat
Adjust Distance By Threat
Threat Distance Scale
1
Role-swapped fields on the active movement profile. Both switches ship off on a new profile.
The two threat switches need a Threat Detection component on the controller; without one they sit inert. Everything else about movement lives on the Movement Evaluator component, the same for every role. See Movement.
Damage Config
Details
SEC Damage Config
Damage
Damage
10
Additional Vital Damage
0 Array elements
Damage Type
None
Damage Type Class
None
Damage Tags
0 tags
Multi Hit Interval
-1
Max Targets Per Swing Override
-1
Use Authored Hit Direction
Hit Effects
Hit Effects
0 Array elements
Data asset assigned on the montage notify or the trace component Default Damage Config.
| Field | Default | Sets |
|---|---|---|
| Damage | 10 | Base health damage, before anything the target does to it. |
| Additional Vital Damage | empty | Extra pools this attack drains, one row per vital. A target with no matching row ignores that row. |
| Damage Type | none | A tag naming the kind of damage, for a target that resists or reacts by type. |
| Damage Type Class | none | Carried on the point damage fallback. Unset sends the engine default. |
| Damage Tags | empty | Extra tags describing hits from this attack, a backstab or a critical. |
| Multi Hit Interval | -1 | Seconds before this attack can hit the same target again. -1 uses the trace component's Hit Reset Interval. |
| Max Targets Per Swing Override | -1 | How many targets one swing cuts through. -1 uses the trace component's own limit, 0 is unlimited. |
| Use Authored Hit Direction | off | Send a fixed blow direction instead of the attacker-to-target one. |
| Authored Hit Direction Local | (1, 0, 0) | That direction in attacker space. (0, 0, 1) launches the target upward. |
| Hit Effects | empty | What the hit does beyond the number: cues, impulses, anything you subclass. |
The target decides whether a hit reads as blocked, parried or critical, and reports that back with the result. See Melee Trace and Defense.
Scorers, gates and the curve they share
Distance, angle, health, speed and stamina are opt-in. Add an entry to an action's Scoring list, pick a class, tune its one property. Leave it out and that dimension has no say.
Range
Min Value
0
Optimal Min
100
Optimal Max
250
Max Value
500
Exponent
2
Clamp To Zero
Every built-in scorer shapes its dimension through one Range. Below Min Value the score is 0, it ramps to 1 across Optimal Min, holds through the sweet spot, then falls back to 0 at Max Value. Exponent (2.0) sharpens the ramp, and Clamp To Zero (on) holds the score at zero outside the range instead of letting it go negative.
You type the four numbers in. These bands come up often, and the named ones below are where the built-in scorers start:
| Band | Min, Optimal Min, Optimal Max, Max |
|---|---|
| Melee distance | 0, 100, 250, 500 cm |
| Ranged distance | 300, 500, 1000, 1800 cm |
| Frontal angle | 0, 0, 30, 90 degrees |
| Low health | 0, 0, 0.25, 0.5 fraction |
| No preference | Scores 1 at any value, which drops the factor |
| Scorer | Reads | Range default |
|---|---|---|
| Distance Scorer | Distance to the target in cm, 0 with no target | Melee distance |
| Angle Scorer | Angle to the target in degrees, 0 facing it | Frontal angle |
| Health Scorer | The enemy's own health as a 0 to 1 fraction | No preference |
| Speed Scorer | The enemy's horizontal speed in cm/s | No preference |
| Vital Scorer | Any named vital, as a fraction (Use Fraction on) or a raw value | No preference |
| Attribute Scorer | A gameplay attribute, optionally divided by a second one | 0, 200, 600, 1200 |
| Gate | Blocks unless | Default |
|---|---|---|
| Stamina Gate | Stamina is at least Min Stamina | 0 |
| Vital Gate | A named vital holds at least Min Value | 0, read as a raw value |
| Attribute Gate | An attribute sits between Min Value and Max Value | 0 and 0, where a Max of 0 drops the upper bound |
| Combat Token Gate | The target has a free slot in the pool named by Token Tag | empty tag, Cost 1 |
Four more gates read the stimulus that set a reaction off, so they belong on a reaction or a trigger rule rather than an action: Incoming Angle Gate (60 degrees either side), Time To Impact Gate, Stimulus Magnitude Gate, and Source Distance Gate. Every gate carries an Invert tick.
A Vital Scorer or Vital Gate pointed at a pool the pawn does not carry has no effect and passes. One shared Action Set can serve a boss with a stance bar and a grunt without one.
Components
Settings that do not change with the combat role live on components, so they are edited per Blueprint or per placed actor.
On the AI controller
| Component | Holds |
|---|---|
| SEC Combat Controller | Default AI Config, role registration, the threat detection switch, Drop Weapon On Death, Auto Handle Death On Health Depleted. |
| SEC Brain | The plugin's own decision loop: Evaluation Cooldown (0.1 s), Min Phase Duration (0.5 s), and what the enemy does while it walks home. |
| Action Evaluation | Chain Followup Window Seconds (0.6 s) and the action debug switches. |
| Reaction Evaluation | Fallback Stimulus Filters and the reaction debug switch. |
| Movement Evaluator | Sampling, avoidance, detour, navmesh and ledge guard, strafe feel, facing while travelling. |
| Threat Detection | How the player's camera builds and decays threat. |
| SEC Awareness | The live perception memory the Awareness Config tunes. |
| Bot State Tree AI | Fallback State Tree and Auto Initialize From Config. The brain creates it at runtime once a tree is named; add it by hand on a custom controller. |
AI|SEC
Default AI Config
None
AI|SEC|Combat Role
Auto Register For Combat Roles
AI|SEC|Threat Response
Enable Threat Detection
AI|SEC|Weapon
Drop Weapon On Death
AI|SEC|Vitals
Auto Handle Death On Health Depleted
On the pawn
| Component | Holds |
|---|---|
| SEC Action Set Component | The resolved moveset and any runtime override; carries action state to clients. |
| SEC Reaction Set Component | The same for reactions. |
| SEC Combat Role | Carries the assigned role to clients. |
| SEC Vitals | The pools: health, stamina, stance, or any tag you author. See Vitals. |
| SEC Melee Trace | Trace channel, Default Damage Config, hit reset interval, targets per swing. See Melee Trace. |
| SEC Defense | How the pawn answers a hit. See Defense. |
| SEC Equipment Component | The starting loadout and the sets a held weapon brings. See Weapons. |
| SEC Team | Team id, free-for-all, target exclusions. |
| SEC Territory | Patrol posts, wander area, leash anchor and radius. See Territory. |
| SEC Approach | The approach window that steers an attack in. |
| SEC Speed Modifier | Movement speed multipliers, driven by a watched tag or added by id. |
| SEC Token Budget Component | Token budgets for one target, overriding the project numbers. Goes on the actor being attacked. |
Debug it
Run these in the console during Play to see what an enemy resolved:
SEC.Debug.Role 1 // Name and combat role above each enemy
SEC.Debug.Decision 1 // Distance, angle, sight, speed and threat it scores against
SEC.Debug.Scoring 1 // What each action scored and which one won
SEC.Debug.Awareness 1 // Awareness state, meter fill, age of the last-known location
SEC.Debug.LogRoleAssignments 1 // Role registration and every reassignment
SEC.Debug.All 1 turns every overlay section on at once, and SEC.Debug.WatchPawn <name> narrows them to one enemy. Each section also has a matching checkbox on the component that feeds it, so one enemy can draw without the console.Saving an Action Set runs validation and reports into the Asset Check message log listing, naming any action with nothing to run.
AdvancedWhich AI Config an enemy ends up with
The controller asks the pawn first. A pawn that answers the config question at all wins, even when its answer is empty, and the controller's Default AI Config is read only for a pawn that does not answer.
An enemy built on the plugin's character base answers, returning its own AI Config field. So for that enemy, leaving the field empty gives it no config; Default AI Config on the controller does not fill the gap. Fill in the pawn's field.
Default AI Config is for a pawn of your own that carries no config field, or a controller class you want to answer for a whole squad.
AdvancedWhich set a role ends up with
Action sets and reaction sets resolve in order, and the first answer wins:
- A runtime override set from Blueprint.
- The set an equipped weapon supplies for that role.
- The role's entry in Role Action Sets or Role Reaction Sets.
- Default Action Set or Default Reaction Set on the config.
- The component's own Default Action Set or Default Reaction Set, which answers only when the controller found no AI Config at all.
- Nothing, which leaves the enemy moving but not attacking.
Movement profiles skip the weapon step: the role's entry in Role Movement Profiles, then Default Movement Profile.
Untick Managed on a role's row and that role is left alone, so an enemy playing it keeps whatever the previous role gave it. That is the switch for a role you drive from Blueprint. A row that stays managed with an empty asset applies nothing, which reads the same way in play and is almost always a mistake.
AdvancedSettings that apply nothing
Four switches leave a filled-in field inert:
- Manage Action Sets Automatically off ignores the default and every role row.
- Manage Reaction Sets Automatically off does the same for reactions.
- Manage Movement Profiles Automatically off does the same for movement profiles.
- Manage Awareness Automatically off leaves the Awareness Config unread, so the perception set on the component stands.
Two more depend on a component being present: the profile's threat switches need Threat Detection on the controller, and a role row needs that role assigned before its assets are applied.
AdvancedWhen each setting is read
- Project Settings are read as the subsystem needs them, so a role limit or a token budget takes effect on the next evaluation.
- The AI Config is resolved once, when the controller possesses the pawn. Swapping the asset at runtime needs Refresh Brain on the SEC Brain component to pick up a different StateTree.
- Awareness Config is pushed to the perception setup at possession.
- Action sets, reaction sets and movement profiles resolve at possession and again on every role change.
- Values inside an Action Set can be tuned during Play In Editor and the running enemy picks them up. Adding, deleting or renaming an action goes through, and the editor warns once in the message log that Play In Editor needs a restart before the change is safe to run.
AlternativeReading and writing config from Blueprint
The config is a data asset, so a Blueprint can read any field off it. Three helpers on the SEC Combat Controller component answer the questions worth asking at runtime:
| Node | Answers |
|---|---|
| Resolve AI Config | The config this controller ended up with. |
| Resolve Combat Role | The role tag it is playing. |
| Get Cached AI Config | The same config, off an instance you already have. |
The config asset itself exposes Get Action Set Config For Role, Get Reaction Set Config For Role and Get Movement Profile For Role, each running the same resolution the plugin runs, so a debug panel reports the asset the enemy ends up with rather than guessing at it.
To change a set without touching the config, use the runtime override on the pawn's SEC Action Set Component. It sits above every other source and clears back to the config when you clear it.