Wardogs — GameFeatures: AI

Extracted from cooked game data (UE 5.7 export JSON, read-only dump). Source folder: Plugins/GameFeatures/AI/ — 39 JSON files. Each file was parsed as a sequence of --- export: blocks; the first block is the asset, later blocks are sub-objects (EQS options, tests, generators, data providers, goals). Values below are raw export values.


1. What This Folder Holds

The AI folder is the PvE AI stack plus several example/test feature packs. It is organised as ten feature folders and contains three kinds of data:

  1. Core config in WDAIPvEAICore/ — the character AI preset, alert-state thresholds, influence-map settings, the blackboard, and the smart-object/action definitions that the rest of the game references.
  2. Behaviour content — goal classes (BHGameFeatureAction_AddGoal) and Environment Queries (EQS) used by the behaviours.
  3. Example packs (*Example, Behavior_*, BesiegeExample, CoverExample, SmartObjectExample, AINavigation_Example) — these are GameFeature packs with EQS and goals. The dump does not say whether they ship in the live build; treat them as example/test content unless a live reference is found.
Metric Value
Files 39
GameFeatureData assets (across all files, including sub-exports) 10
EQS query assets (EQS_*.json with an EnvQuery or equivalent root) 22
Blackboard assets 1 (BB_PVEAI)
Behaviour goals 4
Smart-object / action definitions 2

1a. Subfolder breakdown

Subfolder Files Contents
WDAIPvEAICore/ 16 Core AI: DefaultAIPreset, BB_PVEAI, alert thresholds, influence data, influence-map config, EQS_FindTarget, 8 cover/position EQS, 2 action defs, the core GFD
Behavior_Besiege/ 7 GFD + 6 besiege EQS (cover and point search around a besiege target)
SquadExample/ 4 GFD + goal Goal_Example_AttackPlayer + 3 squad EQS (closest cover, cover toward goal, leap-frog token handling)
Behavior_Patrol/ 3 GFD + goal Goal_Patrol + 2 patrol-point EQS
Behavior_Search/ 2 GFD + goal Goal_Search + 1 EQS EQS_FindSearchLocation
Behaviour_Example/ 2 GFD + goal Goal_Example_Flee + 1 EQS flee point
CoverExample/ 2 GFD + EQS_FindRandomPeekPoint
AINavigation_Example/ 1 GFD with BH.AISpawn scan rule (WDAICharacterConfigData)
BesiegeExample/ 1 GFD only (no actions)
SmartObjectExample/ 1 GFD only (no actions)

2. Core AI Preset (WDAIPvEAICore/Content/DefaultAIPreset)

This is the WDAICharacterConfigData that the PvE configs in the PvE folder follow. Its fields define the AI character baseline.

Field Value
AICharacterClass B_WDCore_MoverPlayerCharacter_C (WDCore)
AIControllerClass BP_CoreAIController_C
FireModePriority Burst > Automatic > SemiAutomatic
FactionTag Meta.Alignment.Faction.Bravo
AIInventory Id.Item.AK74M ×1
BehaviorTree BT_WDAIPvECore_Base
AlertStatesWithThreashold AlertStateThreashold_DataConfig
AIInfluenceDataAsset AIInfluence_DataConfig

(The asset name spells “Threashold” as in the source; keep the spelling when searching.)


3. Alert State Thresholds (AlertStateThreashold_DataConfig)

Alert state LowerThreshold Require sight to go up from lower Require sight to go down from higher
EWDAIAlertState::Relaxed 0.0 false false
EWDAIAlertState::Alert 0.8 false false
EWDAIAlertState::Combat 1.0 true false

Meaning: The threshold is compared against a continuous value. The blackboard has a Pressure key, which is the likely input, but the export does not say so explicitly. This is an inference.


4. Influence Maps

4a. Influence data (AIInfluence_DataConfig, type WDAIInfluenceData)

Influence tag Radius Strength
InfluenceMap.TeamMap 1000.0 1.0
InfluenceMap.EnemyMap 500.0 1.0
InfluenceMap.AlertMap 1000.0 1.0

SensesToUseForAlertMap: AISense_Hearing — hearing feeds the alert map.

4b. Influence-map config (WDInfluenceConfigData, type SDInfluenceMapConfigDataAsset)

Map DecayPercentagePerSecond UpdateFrequency (s) PropagateInfluence EvaluationType CreateArea CheckPathExistToAreaID RemoveEvaluation
TeamMap 10.0 5.0 true NavRaycast false false None
EnemyMap 10.0 2.0 true None false false None
AlertMap 1.0 0.5 false None true true NavRaycast

AIPawnClass: B_WDCore_MoverPlayerCharacter_C. Debug is off on all three maps.


5. Blackboard (BB_PVEAI)

13 keys. The types come from the sub-exports (Bool, Enum EWDAIAlertState, Object/Actor, Vector).

# Key Notes
1 HasLineOfSight Bool, default true
2 MoveGoal Vector
3 SelfActor Object
4 TargetActor Object
5 Pressure Float-like driver of alert state (inferred)
6 HasTeleportedToAO Bool
7 Cover Object, with EQS context EQS_Context_TargetEnemy in some sub-exports
8 PeekPoint Vector
9 SOClaimHande Smart-object claim handle. The spelling is in the source.
10 GoalActor Object
11 LastAlertState Enum EWDAIAlertState
12 TargetAreaId Int-like area id
13 AlertInterruptible Bool

6. Goals (BHGameFeatureAction_AddGoal)

Goal purposes are inferred from class names and folder EQS; the goal logic is not in this folder.

Goal class Source file Notes
Goal_Patrol_C Behavior_Patrol/Content/Behavior_Patrol.json Patrol (inferred from name; folder EQS EQS_PatrolPoint)
Goal_Search_C Behavior_Search/Content/Behavior_Search.json Search (inferred from name; folder EQS EQS_FindSearchLocation)
Goal_Example_Flee_C Behaviour_Example/Content/Behaviour_Example.json Flee (inferred from name; folder EQS EQS_FindFleePointFromGoalTarget)
Goal_Example_AttackPlayer_C SquadExample/Content/SquadExample.json Attack-player example (inferred from name)

7. Actions and Smart Objects

Asset Type Tag / context Action class
DA_Action_AIIdle BHActionDefinition Action.Player.Idle; contexts TwoHanded, Holdable B_Action_AIIdle_C
DA_Action_UseComputer BHActionDefinition Action.SmartObject.UseComputer; contexts Interaction, TwoHanded, Holdable; activation context WDSmartObjectActionContext B_Action_UseComputer_C

The WDAIPvEAICore GFD scans BH.Action in /SmartObject/UseComputer and /WDAIPvEAICore/Actions.


8. Components Added by the Core GFD (WDAIPvEAICore)

Feature actions in WDAIPvEAICore (from GameFeatureAction_AddComponents):

Host actor Component added Module
WDGameState WDAIPvEGameStateComponent WDAIPvEAICoreRuntime
WDGameMode SDAIRuleManagerComponent SDAIRules
Player character (B_WDCore_MoverPlayerCharacter) SDAISmartObjectActorComponent SDUESmartObject
Player character BP_PlayerCharacterDetectabilityComponent WDAIPvEAICore
Player character WDAISightTargetComponent WDAIPvEAICoreRuntime
BP_CoreAIController WDAITetherComponent WDAIPvEAICoreRuntime
BHBaseVehiclePawn WDVehicleDetectabilityComponent WDAIPvEAICoreRuntime

It also activates SDGameFeatureAction_ActivateSubsystem.


9. EQS Catalogue

22 query assets. Purpose is inferred from the file name and the tests. The “Tests” column lists the test or generator classes with counts across the query’s options.

Query Folder Generator Main tests Purpose (inferred)
EQS_FindTarget WDAIPvEAICore WDEnvQueryGenerator_ThreatActors ×3 GameplayTags ×3 Pick a target from threats
EQS_FindCoverNearby WDAIPvEAICore/Cover SDEnvQueryGenerator_Covers Distance ×2, Dot, AIConfigData provider Nearby cover
EQS_FindCoverCloserToEnemy WDAIPvEAICore/Cover SDEnvQueryGenerator_Covers, Composite provider WeaponData ×4, Distance ×3, Dot, PathfindingBatch, WDEnvQueryTest_CoverTrace Cover that closes on the enemy
EQS_FindCoverTowardsEnemy WDAIPvEAICore/Cover SDEnvQueryGenerator_Covers Distance ×3, Dot, Pathfinding, Distance provider Cover facing the enemy
EQS_FindBestPeekPointOfCurrentCover WDAIPvEAICore/Cover SDEnvQueryGenerator_PeekPoints WDEnvQueryTest_CoverTrace Peek point off current cover
EQS_FindPeekPointToStimulus WDAIPvEAICore/Cover SDEnvQueryGenerator_PeekPoints — Peek toward a stimulus
EQS_FindCombatPositionCloserToTarget WDAIPvEAICore/Cover Donut Distance ×2, Pathfinding, WeaponData ×2, Composite, Distance provider Combat position
EQS_FindShootPositionInTheOpen WDAIPvEAICore/Cover Donut WeaponData ×3, Distance ×2, Pathfinding, Trace, AgentHeight provider Open-ground shot position
EQS_BesiegeTakeOverMovementTokenHandling Behavior_Besiege SDEnvQueryGenerator_TokenRequests WDEnvQueryTest_InfluenceMapValue Movement tokens during besiege takeover
EQS_FindCoverInBesiegeArea Behavior_Besiege SDEnvQueryGenerator_Covers Distance, Dot, PathfindingBatch, Volume, InfluenceMapValue, VolumeSize provider Cover inside besiege volume
EQS_FindCoverInBesiegeAreaClosest Behavior_Besiege SDEnvQueryGenerator_Covers Distance ×2, PathfindingBatch, Volume, VolumeSize provider Nearest cover inside besiege volume
EQS_FindCoverTowardBesiegeTarget Behavior_Besiege SDEnvQueryGenerator_Covers Distance ×2, Dot, PathfindingBatch, Volume, SDAIGoalDataProvider_Target Cover toward besiege target
EQS_FindPointAroundBesiegeTarget Behavior_Besiege Donut Distance ×2, PathfindingBatch, Volume Ring points around besiege target
EQS_FindPointCloseToBesiegeTarget Behavior_Besiege Donut Distance ×2, PathfindingBatch Points close to besiege target
EQS_PatrolPoint Behavior_Patrol ProjectedLocation Distance ×2, PathfindingBatch Patrol point
EQS_PatrolPoint_Follower Behavior_Patrol Donut Distance, PathfindingBatch Patrol point for a follower
EQS_FindFleePointFromGoalTarget Behaviour_Example Donut Distance Flee point
EQS_FindSearchLocation Behavior_Search BP_InfluenceEvaluator_AlertLocationGenerator Dot, Pathfinding, Covers Search location from alert data
EQS_FindRandomPeekPoint CoverExample SDEnvQueryGenerator_PeekPoints — Random peek point (example)
EQS_FindClosestCoverToQuerier SquadExample SDEnvQueryGenerator_Covers Distance, Dot, Pathfinding Closest cover (squad example)
EQS_FindCoverTowardGoalTarget SquadExample SDEnvQueryGenerator_Covers Distance ×2, Dot, Pathfinding, Target provider Cover toward goal (squad example)
EQS_LeapFrogTokenHandling SquadExample SDEnvQueryGenerator_TokenRequests Distance Leap-frog token handling

Note: EQS_FindSearchLocation has BP_InfluenceEvaluator_AlertLocationGenerator_C as its first export, not an EnvQuery. The count of 22 includes it.


10. How Values Combine

These are general UE EQS semantics. The dump gives the test settings, but this pass did not verify scoring behaviour in the runtime.

  • Each test has a TestPurpose (Filter, Score, or both) and a TestOrder. Filters run first; scoring tests then combine.
  • FilterType (Minimum/Maximum) with FloatValueMin/FloatValueMax defines the pass range. Values seen include minimum distances of 100 to 400 and dot thresholds of 0.4 to 0.8 (Dot2D).
  • ScoringFactor (typically 0.5 to 10) and ScoringEquation (for example InverseLinear) weight a test’s contribution.
  • MultipleContextScoreOp is MinScore on most distance tests, so an item must satisfy the nearest context.
  • WDAIDataProvider_* nodes feed AI config values (cover radius, weapon min/max range, agent height) into the test’s DataBinding.

11. Still not pulled / limitations

  • Unit system. Distances are in the export’s native units. The export does not name them. Treat them as Unreal units (cm) only after checking against a known value.
  • Enum meanings. EWDAIAlertState values are given by name, but the numeric thresholds are not linked to a documented meaning. The Pressure key is inferred to drive them.
  • Example packs. Whether *Example and BesiegeExample/CoverExample/SmartObjectExample ship in the live build is not established here.
  • Blackboard key use. Which AI task reads or writes each key is in behaviour trees and BP graphs, not in this folder. This doc does not map key use.
  • Behaviour trees. BT_WDAIPvECore_Base is referenced but not in this folder.
  • Sub-exports not expanded. EQS sub-exports (individual test settings) are summarised by count and type, not every field.
  • Unnamed localisation keys. Some properties appear as _aaa… hashes; those were not resolved.

12. Round 36: controller senses, detectability, firing, health

Source: BP_CoreAIController, BP_PlayerCharacterDetectabilityComponent, BTS_FireWeapon, BTS_AimAtTarget, the BT_* trees and native constructors 0x8863540, 0x8863AB0, 0x8863090, 0x8864400 (static reading). Full table and method: docs/evidence/round36-ai.md.

Item Value
AI health The soldiers are B_WDCore_MoverPlayerCharacter_C, the player character: max health 100 (native UWDVitalityComponent ctor); no AI-specific health, attribute or damage multiplier found
Sight SightRadius 200000, LoseSightRadius 210000, MaxAge 30 s
Hearing HearingRange 100000, MaxAge 30 s
Damage sense MaxAge 10 s
WDAIPerceptionComponent VisionRangeMultiplier 0.02, HearingRangeMultiplier 0.05; VisionAngleMultiplier and VisionPlayerConcealmentMultiplier 1.0 (native). How the multipliers combine with the ranges is native logic, not verified
Threat detection DetectionDecayRate 0.25 (native default 0.01), TimeBeforeStartDecay 5 s (native 10), MaxDetectionLevel 1.0 (native)
Player detectability Stand 1.0, Crouch 0.4, Prone 0.3; StanceDetectabilityMultiplier 0.5; HearingMovementSpeedMultiplier 0.0015; WeaponFiring 5.0
Config defaults (native, not set in assets) POILookAtSwitchTime 2.5 s, AlertWaitTime 2.0 s, RadiusToSearchForCovers 3000
Firing (BTS_FireWeapon) burst of 3 shots, BurstDuration 0.2, BurstInterval 1.0, ShotInterval 0.2, TriggerPullDuration 0.05; WDBTTask_ShootAtTarget.RoundOfBursts 3
Aim BTS_AimAtTarget focuses on the target’s Head bone every 0.1 s; no AI-specific spread or accuracy value in any asset
Goals that ship in missions Goal_Patrol (VIP Escort), Goal_Search and Goal_BesiegeTarget (Strike and Disarm, plugin dependencies; Besiege and Goal_StopHack added by the hack quest). Goal_Example_Flee and Goal_Example_AttackPlayer have no dependent plugin