INSODIMENSIONStudios
TargetingReference

Presets Guide

Complete reference for targeting presets, tasks, and the JSON configuration workflow

Presets Guide

Complete reference for targeting presets, tasks, and the JSON configuration workflow.

The 9 presets and 12 tasks below are starter templates included with the plugin. Creating custom presets and tasks is simple - just create a Data Asset and configure properties. No C++ required. See Creating Custom Presets.


What Are Presets?

Presets define WHO to target:

  • Range - How far to search
  • Selection - How to find targets (AOE, trace)
  • Filters - What to exclude (dead, blocked, too far)
  • Sorting - How to rank targets (distance, threat, screen position)

Styles define HOW lock-on behaves. Presets define WHO gets targeted.


Built-in Presets

Targeting Presets

PresetTagAcquireBreakSelectionBest For
MeleeAgentic.Targeting.Preset.Melee15m20mAOESwords, axes
RangedAgentic.Targeting.Preset.Ranged30m40mTraceBows, crossbows
Ranged.ShortAgentic.Targeting.Preset.Ranged.Short15m20mTraceThrowing weapons
AstraAgentic.Targeting.Preset.Astra100m120mTraceDivine weapons
FreeflowAgentic.Targeting.Preset.Freeflow8m12mAOECrowd combat
Freeflow.RangedAgentic.Targeting.Preset.Freeflow.Ranged15m20mAOEBatarangs, gadgets

Awareness Presets

PresetTagRangeUpdate RateBest For
AwarenessAgentic.Targeting.Preset.Awareness15m0.5sGeneral melee awareness
Awareness.RangedAgentic.Targeting.Preset.Awareness.Ranged30m0.5sArcher awareness
Awareness.AstraAgentic.Targeting.Preset.Awareness.Astra50m0.3sDivine weapon charging

Hysteresis: Acquire vs Break Distance

Each preset has two distance thresholds:

ThresholdPurpose
Acquire DistanceHow close target must be to lock on
Break DistanceHow far target can go before lock breaks

Why different? Prevents frustrating lock breaks during combat movement.

Example: Melee Preset
  - Acquire: 15m (target must be within 15m to lock)
  - Break: 20m (target can go up to 20m before lock breaks)

Player locks at 14m → target backs up to 18m → STAYS LOCKED
Target at 21m → lock breaks

How It Works

The FilterValidationDistance task enables hysteresis:

  • During selection: Skipped (acquire distance from AOE/Trace radius)
  • During validation: Active (break distance check)
// In preset tasks:
{
    "TaskTag": { "TagName": "Agentic.Targeting.Task.AOE" },
    "Params": { "Radius": "1500" }  // 15m acquire
},
{
    "TaskTag": { "TagName": "Agentic.Targeting.Task.Filter.ValidationDistance" },
    "Params": { "MaxDistance": "2000" }  // 20m break
}

Preset Details

Melee

Tag: Agentic.Targeting.Preset.Melee

Souls-style melee lock-on for swords, axes, and close combat.

PropertyValue
SelectionAOE Sphere 15m
Acquire Distance15m
Break Distance20m
LOS RequiredYes
Sort PriorityDistance 70%, ScreenCenter 30%

Task Pipeline:

  1. AOE (15m sphere)
  2. Filter.Targetable
  3. Filter.ValidationDistance (20m)
  4. Filter.LOS
  5. Sort.Distance (weight 0.7)
  6. Sort.ScreenCenter (weight 0.3)

Ranged

Tag: Agentic.Targeting.Preset.Ranged

Souls-style ranged lock-on for bows and crossbows.

PropertyValue
SelectionSphere Trace 30m
Acquire Distance30m
Break Distance40m
LOS RequiredYes
Sort PriorityScreenCenter 60%, Distance 40%

Task Pipeline:

  1. Trace (30m sphere sweep)
  2. Filter.Targetable
  3. Filter.ValidationDistance (40m)
  4. Filter.LOS
  5. Sort.ScreenCenter (weight 0.6)
  6. Sort.Distance (weight 0.4)

Ranged.Short

Tag: Agentic.Targeting.Preset.Ranged.Short

For throwing weapons - knives, firebombs, chakrams.

PropertyValue
SelectionSphere Trace 15m
Acquire Distance15m
Break Distance20m
LOS RequiredYes
Sort PriorityScreenCenter 50%, Distance 50%

Astra (Divine Weapons)

Tag: Agentic.Targeting.Preset.Astra

Extreme-range for divine weapons (Brahmastra, Agneyastra).

PropertyValue
SelectionSphere Trace 100m
Acquire Distance100m
Break Distance120m
LOS RequiredYes
Sort PriorityScreenCenter 70%, Distance 30%

Freeflow

Tag: Agentic.Targeting.Preset.Freeflow

Arkham-style auto-targeting for crowd combat.

PropertyValue
SelectionAOE Sphere 8m
Acquire Distance8m
Break Distance12m
LOS RequiredNo (instant snappy targeting)
Sort PriorityStickDirection 60%, Distance 40%

Key Difference: No LOS check for instant, snappy combat feel.


Freeflow.Ranged

Tag: Agentic.Targeting.Preset.Freeflow.Ranged

Freeflow for thrown weapons (Batarangs, gadgets).

PropertyValue
SelectionAOE Sphere 15m
Acquire Distance15m
Break Distance20m
LOS RequiredYes
Sort PriorityStickDirection 50%, ScreenCenter 50%

Awareness Presets

PresetRangeUpdate RateNotes
Awareness15m0.5sMatches melee lock-on range
Awareness.Ranged30m0.5sMatches ranged lock-on range
Awareness.Astra50m0.3sFast updates for charging

All awareness presets use pure distance sorting (closest first).


Task Reference

Presets are built from modular Tasks. Each task performs one operation in the targeting pipeline.

Selection Tasks

Find initial pool of potential targets.

TaskTagDescription
AOEAgentic.Targeting.Task.AOESphere/box overlap detection
TraceAgentic.Targeting.Task.TraceLine/sphere/capsule sweep
DynamicAOEAgentic.Targeting.Task.DynamicAOEBlueprint AOE with dynamic radius

AOE Parameters

{
    "TaskTag": { "TagName": "Agentic.Targeting.Task.AOE" },
    "Params": {
        "Radius": "1500",              // Detection radius (cm)
        "ShapeType": "Sphere",         // Sphere or Box
        "CollisionChannel": "ECC_Pawn",
        "bIgnoreSourceActor": "true"
    }
}

Trace Parameters

{
    "TaskTag": { "TagName": "Agentic.Targeting.Task.Trace" },
    "Params": {
        "TraceType": "Sphere",            // Line, Sphere, Capsule, Box
        "DefaultTraceLength": "3000",     // Trace distance (cm)
        "DefaultSweptTraceRadius": "100", // Sweep radius
        "bIgnoreSourceActor": "true",
        "bMultiTrace": "true"             // Find all hits, not just first
    }
}

Filter Tasks

Remove invalid targets from pool.

TaskTagDescription
FilterTargetableAgentic.Targeting.Task.Filter.TargetableCheck IAgenticTargetable::CanBeTargeted
FilterActorClassAgentic.Targeting.Task.Filter.ActorClassFilter by actor class (default: Pawn)
FilterLOSAgentic.Targeting.Task.Filter.LOSRequire line of sight
FilterDistanceAgentic.Targeting.Task.Filter.DistanceMax distance (runs during selection AND validation)
FilterValidationDistanceAgentic.Targeting.Task.Filter.ValidationDistanceMax distance (ONLY during validation - enables hysteresis)

FilterTargetable Parameters

{
    "TaskTag": { "TagName": "Agentic.Targeting.Task.Filter.Targetable" },
    "Params": {
        "bFilterNonImplementors": "true"  // Require IAgenticTargetable interface
    }
}

FilterLOS Parameters

{
    "TaskTag": { "TagName": "Agentic.Targeting.Task.Filter.LOS" },
    "Params": {
        "TraceChannel": "ECC_Visibility",      // Collision channel
        "bUseTargetableLocation": "false"      // Use GetTargetLocation() from interface
    }
}

FilterDistance vs FilterValidationDistance

TaskWhen It RunsPurpose
FilterDistanceSelection + ValidationHard distance limit
FilterValidationDistanceValidation onlyHysteresis (break distance)

Use FilterValidationDistance for hysteresis:

// Acquire at 15m, break at 20m
{ "TaskTag": { "TagName": "Agentic.Targeting.Task.AOE" }, "Params": { "Radius": "1500" } },
{ "TaskTag": { "TagName": "Agentic.Targeting.Task.Filter.ValidationDistance" }, "Params": { "MaxDistance": "2000" } }

Sort Tasks

Rank remaining targets by priority.

TaskTagDescription
SortDistanceAgentic.Targeting.Task.Sort.DistanceClosest first
SortScreenCenterAgentic.Targeting.Task.Sort.ScreenCenterNearest to crosshair
SortThreatAgentic.Targeting.Task.Sort.ThreatHighest threat level
SortStickDirectionAgentic.Targeting.Task.Sort.StickDirectionMatch stick input direction

Sort Parameters

All sort tasks support:

{
    "TaskTag": { "TagName": "Agentic.Targeting.Task.Sort.Distance" },
    "Params": {
        "Weight": "0.7",           // Contribution to final score (0-1)
        "MaxDistance": "2000"      // Normalize distance against this
    }
}

SortScreenCenter Parameters

{
    "TaskTag": { "TagName": "Agentic.Targeting.Task.Sort.ScreenCenter" },
    "Params": {
        "Weight": "0.6",
        "FalloffExponent": "2.0",         // How fast score drops off-center
        "bUseTargetableLocation": "false"  // Use interface location
    }
}

SortStickDirection Parameters

{
    "TaskTag": { "TagName": "Agentic.Targeting.Task.Sort.StickDirection" },
    "Params": {
        "Weight": "0.6",
        "FalloffExponent": "1.5"
    }
}

Creating Custom Presets

  1. Content Browser -> Right-click -> Miscellaneous -> Data Asset
  2. Pick Agentic Targeting Preset

Pick Agentic Targeting Preset

  1. Fill in the properties:
    • Preset Tag - Unique tag for this preset
    • Display Name - Human-readable name
    • Tasks - Add selection, filter, and sort tasks

That's it. Your preset is ready to use.

TargetingComponent->SetPresetByTag(
    FGameplayTag::RequestGameplayTag("Agentic.Targeting.Preset.MyCustom")
);

For AI/External Tools: See AI JSON Workflow for bulk editing and AI-driven config generation.


Best Practices

  1. Use FilterValidationDistance for hysteresis - Acquire at one range, break at a larger range
  2. Weight your sorts - Multiple sorts combine (e.g., Distance 70% + ScreenCenter 30%)
  3. Skip LOS for snappy combat - Freeflow presets don't use LOS filter
  4. Use Trace for ranged weapons - AOE is circular, Trace follows aim direction

Troubleshooting

No Targets Found

  1. Check preset range matches your level scale
  2. Ensure enemies have IAgenticTargetable interface
  3. Enable debug: TargetingComponent->bDebugDraw = true
  4. Check collision channels match enemies

Lock Breaks Too Easily

  1. Increase break distance in FilterValidationDistance
  2. Increase style's GracePeriod
  3. Use GoW style (longer grace period)

Wrong Target Selected

  1. Adjust sort weights
  2. Check sort order (first sort has priority)
  3. Try different sort combination