What's New in Tactical AI
Complete release documentation, architectural highlights, new component references, and upgrade guides for Versions 3.0, 2.5, and 2.0.
Tactical AI 3.0: Combat Locomotion, Synchronized Squads & Scene Validator
Tactical AI Version 3.0 represents a major evolutionary leap: bridging the gap between the Search Phase (choosing where to hide, introduced in v1 and expanded in v2/v2.5) and the Execution Phase (how agents dynamically react, adjust posture, peek corners, vault barriers, and coordinate squad fireteams once in cover).
Version 3.0 is 100% backwards-compatible with existing v2.x projects while adding dedicated locomotion execution APIs, coordinated squad fireteams, 3 new tactical scorers, sensory stimulus management, universal cover metadata, and an automated in-editor scene diagnostic validator with 1-click auto-fix.
1. TacticalAgent: Combat & Locomotion Execution APIs
Previously, TacticalAgent primarily focused on finding candidate spots and moving towards them. In Version 3.0, your agents can continuously query and execute tactical combat logic while in or navigating to cover:
Stance Recommendation (`DesiredStance`)
Reads CoverPointFlags from the active cover spot to dynamically inform your animation controller whether the agent should stand, crouch, or is versatile.
// Listen to stance transitions
agent.OnStanceChangeRequired += (newStance) => {
animator.SetBool("IsCrouching", newStance == CoverStance.Crouching);
};
Smart Corner Peeking (`TryGetBestPeekDirection`)
Evaluates whether stepping left or right from behind cover yields clear line of sight to the enemy without exposing the agent's core mass.
if (agent.TryGetBestPeekDirection(targetPos, out PeekDirection dir)) {
if (dir == PeekDirection.PeekRight) PlayPeekRightAnimation();
else if (dir == PeekDirection.PeekLeft) PlayPeekLeftAnimation();
}
Proactive Flank Warnings (`IsFlanked`)
Calculates GetCoverFlankAngle(). If an enemy crosses the cover plane (>90° angle), IsFlanked becomes true, allowing AI to scramble before taking damage.
if (agent.IsFlanked) {
// Enemy is behind our cover line; immediately repath
agent.FindTacticalPosition();
}
Obstacle Vaulting (`CanVaultCover`)
Validates if low barrier cover can be mantled over during rush maneuvers and computes the exact landing coordinate on the NavMesh.
if (agent.CanVaultCover(out Vector3 landingPos)) {
animator.SetTrigger("Vault");
navMeshAgent.Warp(landingPos);
}
Live Agent Suppression Meter (`SuppressionLevel` & `IsSuppressed`)
Provides a real-time normalized float value (0.0 to 1.0) reflecting the incoming fire intensity directed at the agent. Integrates with automatic recovery decay over time.
if (agent.SuppressionLevel > 0.7f) {
// Agent is under intense suppressive fire; cower or seek fortified bunker
animator.SetTrigger("CowerUnderFire");
}
2. SquadCoordinator: Synchronized Maneuvers & Dynamic Fireteams
Version 3.0 upgrades squad coordination from passive reservations to active tactical fireteams and synchronized squad maneuvers:
Dynamic Fireteam Splitting (`AssignFireteams`)
Automatically divides any registered squad into two coordinated sub-teams:
- Base of Fire (Suppression Element): Pins the target down with sustained gunfire and holds position.
- Maneuver Element (Flanking Force): Paths around the sides or rear of the pinned enemy using flank providers.
Synchronized Squad Commands (`ExecuteManeuver`)
| Maneuver Order | Tactical Execution Behavior |
|---|---|
TacticalSquadManeuver.SuppressAndFlank |
Suppression team engages target directly while flanking team advances to unmonitored angles. |
TacticalSquadManeuver.BoundingOverwatch |
Alternating leap-frog advances where one element covers the movement of the second element. |
TacticalSquadManeuver.TacticalFallBack |
Coordinated, rearward withdrawal into defensive perimeter cover. |
TacticalSquadManeuver.HoldPerimeter |
Agents fan out into 360° defensive cover surrounding an objective or strongpoint. |
Hivemind Threat Memory (`BroadcastSquadThreat`)
When any squad member acquires line of sight to a hostile, calling BroadcastSquadThreat(squadName, targetPos) updates the shared threat location across all allies in the squad.
3. 3 New Tactical Scorers (v3.0)
Zone Control State
`ZoneControlStateScorerSO` evaluates candidate hiding spots based on whether their TacticalZone is FriendlyControlled, Contested, or HostileControlled.
preferredState | Favored zone state |
vetoHostileZones | Reject enemy-held zones |
vetoContestedZones | Reject contested zones |
Enables defensive medics/snipers to veto hostile territory while rushers prioritize contested objectives.
Vault Opportunity
`VaultOpportunityScorerSO` rewards low obstacles that have the CoverPointFlags.Vaultable bit set.
vaultableScore | Score for low barriers (1.0) |
nonVaultableScore | Score for high walls (0.2) |
requireVaultableOnly | Veto static cover |
Allows shotgunners, rushers, and agile flankers to favor barriers they can immediately mantle over.
Sensory Stimulus Filter
`SensoryTypeScorerSO` evaluates proximity to disturbances recorded in StimulusRegistry with category bitmask filtering.
targetStimuli | Gunshot, Footstep, etc. |
hearingRange | Audible reaction radius |
investigateMode | True = seek, False = flee |
Supports investigation mode (seeking gunshots) or evasion mode (fleeing loud explosions).
4. StimulusRegistry: Global Sensory Events
High-speed, zero-allocation global sensory registry tracking audio and visual disturbances across your scene:
Stimulus Categories
StimulusType.Gunshot: High threat, large audible radius.StimulusType.Footstep: Subtle disturbance with acoustic falloff.StimulusType.Explosion: Extreme intensity, triggers evasive retreat.StimulusType.Distraction: Rocks, coins, lure devices.StimulusType.VoiceCallout: Shoutings, teammate warnings.
Public API Example
// Register a disturbance when shooting
StimulusRegistry.RegisterStimulus(
StimulusType.Gunshot,
muzzleTransform.position,
radius: 40f,
intensity: 1.0f
);
// Query perceived stimuli
if (StimulusRegistry.TryGetLoudestStimulus(agent.position, threshold: 0.2f, out var stimulus)) {
agent.InvestigatePosition(stimulus.Position);
}
5. Custom Cover Metadata & Universal Stance System
Tactical AI 3.0 provides a universal metadata pipeline connecting level geometry directly to AI tactical evaluations:
`CoverPointFlags` Enum
[Flags]
public enum CoverPointFlags {
None = 0,
LowStance = 1 << 0, // Crouch cover
HighStance = 1 << 1, // Standing cover
EdgePoint = 1 << 2, // Corner for peeking
Vaultable = 1 << 3, // Mantleable barrier
Destructible = 1 << 4 // Thin / penetrable
}
`CoverMetadata` Drop-In Component
Attach CoverMetadata to any collider, crate, sandbag, or wall in your scene to instantly author:
- Stance: Low, High, or Both.
- Corner/Edge Toggle: Informs peeking algorithms.
- Vaultable / Destructible: Physical flags.
- String Gameplay Tags: e.g.
"SniperNest","Reinforced".
6. Environment & Agent Scene Validator Tool (v3.0)
Tactical AI 3.0 includes an in-editor diagnostic and auto-repair suite designed to eliminate silent configuration errors before playtesting:
The 7 Diagnostic Inspection Categories:
1. Scene Environment
Checks for unbaked NavMesh, missing light probes for shadow scorers, and missing directional lights.
2. Agent Setup
Detects missing settings assets, missing NavMeshAgent components, self-occlusion hazards, and stopping distance conflicts.
3. Service Dependencies
Flags missing SuppressionService, SquadCoordinator, or ThreatMapService singletons required by active agents.
4. Provider Dependencies
Warns when providers like CoverNodeProviderSO or TacticalZoneProviderSO are active but 0 scene helpers exist.
5. Scorer Optimization
Identifies zero-weight scorers wasting search cycles and flags zone scorers without zones.
6. Semantic Compatibility
Verifies providers supply CoverPointFlags when using posture scorers, and validates path max distances.
7. Orphaned Scene Authoring
Alerts designers when placed CoverNode or TacticalZone volumes are never referenced by any active agent profile, or if zone colliders were accidentally left non-trigger.
Ctrl+Z) support.
7. v3.0 Integration Code Example
using UnityEngine;
using MaharajaStudio.TacticalAI;
using MaharajaStudio.TacticalAI.Helper;
public class SquadAssaultController : MonoBehaviour
{
[SerializeField] private string squadName = "BravoTeam";
[SerializeField] private Transform enemyTarget;
public void ExecutePincerAssault()
{
// 1. Issue synchronized squad maneuver: suppressors pin enemy, flankers wrap around
SquadCoordinator.Instance.ExecuteManeuver(
squadName,
TacticalSquadManeuver.SuppressAndFlank,
enemyTarget
);
// 2. Broadcast high-priority enemy target position across squad hivemind
SquadCoordinator.Instance.BroadcastSquadThreat(squadName, enemyTarget.position);
}
}
Ready to explore full v3.0 technical documentation?
View full class references, method signatures, parameter tables, and cookbooks.
Go to Full DocumentationTactical AI 2.5: Dynamic Suppression, CQB Stacking & Weapon Sweetspots
Tactical AI Version 2.5 introduces high-fidelity ballistics awareness, tactical CQB spatial analysis, weapon-range behavioral tuning, and high-ground vantage anchor capabilities.
Version 2.5 is 100% backwards-compatible with v2.0 setups, allowing you to selectively add ballistic suppression, doorway stacking breach points, and Gaussian weapon range profiles.
1. Dynamic Suppression & Incoming Fire Awareness
Provides your AI with real-time awareness of incoming gunfire streams and bullet paths:
`SuppressionService`
High-performance singleton tracking active gunfire lines and bullet streams in real-time with automatic temporal decay.
SuppressionService.Instance.RegisterSuppressiveFire(
origin: muzzle.position,
direction: muzzle.forward,
length: 50f,
radius: 1.5f,
duration: 0.8f
);
`SuppressionPressureScorerSO`
High-stakes survival scorer that penalizes or vetoes candidate spots that fall inside active bullet corridors or incoming fire lines.
- strictVeto = true: Immediately returns
-Infinityto reject spots under fire. - Zero-Allocation: Fast vector cylinder distance math.
2. Advanced CQB & High-Ground Spatial Providers
Door Stack Provider (`DoorStackProviderSO`)
Dynamically scans geometry to detect doorway openings and choke points, generating wall-hugging "Stack Left" and "Stack Right" candidate points outside the fatal funnel.
| maxDoorwayWidth | Max opening width (default: 3.0m). |
| stackOffset | Distance from doorframe edge (default: 1.0m). |
| raycastDepth | Wall depth scan tolerance (default: 2.0m). |
Elevation Anchor Provider (`ElevationAnchorProviderSO`)
Identifies multi-story NavMesh surfaces with significant altitude advantage over the enemy, verifying drop-off ledges for snipers, marksmen, and overwatch units.
| minElevationAdvantage | Minimum vertical height difference (default: 3.0m). |
| requireLedgeEdge | Rejects gentle slopes; requires drop-off ledge (default: true). |
| maxSearchRadius | Maximum altitude search radius (default: 40.0m). |
3. Weapon Range Sweetspots & 360° Flank Security
Weapon Sweetspot (`WeaponSweetspotScorerSO`)
Evaluates distance to target using a tunable Gaussian bell-curve. Allows distinct archetype tuning for Shotguns, Rifles, and Snipers.
| Shotgun Rusher | optimal: 4.0m, stdDev: 2.5m |
| Assault Rifle | optimal: 18.0m, stdDev: 8.0m |
| Sniper | optimal: 40.0m, stdDev: 15.0m |
Flank Exposure Risk (`FlankExposureRiskScorerSO`)
Radial 360° raycast scorer that measures ambient exposure. Rewards spots tucked deep into wall corners and penalizes open-field positions.
| scanRadius | Barrier scan distance (default: 10.0m). |
| rayCount | Radial ray samples (default: 8 rays). |
| threatMask | Layers considered protective occluders. |
4. v2.5 Step-by-Step Setup Guide
-
Add Suppression Service to Your Scene:
Create an empty GameObject in your scene named[SuppressionService]and attach theSuppressionServicecomponent. -
Create Weapon Sweetspot Profiles:
Right-click in Unity:Create > TacticalAI > Scorers > Offensive > Weapon Sweetspot.
SetoptimalRange: 4.0for Shotguns,18.0for Assault Rifles, and40.0for Snipers. -
Add v2.5 Providers & Scorers to Settings:
AddDoorStackProviderSOandElevationAnchorProviderSOunder Providers, and addSuppressionPressureScorerSOandFlankExposureRiskScorerSOunder Scorers.
Ready to explore full v2.5 technical documentation?
View full class references, method signatures, parameter tables, and cookbooks.
Go to Full DocumentationVersion 2.0 Archive & Upgrade Guide
MaharajaStudio.HidingSystem to MaharajaStudio.TacticalAI.
Namespace & Class Migration Reference
| Old Term (v1.x) | New Term (v2.0+) | Notes |
|---|---|---|
MaharajaStudio.HidingSystem |
MaharajaStudio.TacticalAI |
Root namespace update |
EnemyHider |
TacticalAgent |
Primary component script |
HidingSettingsSO |
TacticalProfileSO / TacticalAISettingsSO |
Settings profile asset |
HideSpotScorerSO |
TacticalScorerSO |
Base class for custom scorers |
HideSpotProviderSO |
TacticalSpotProviderSO |
Base class for custom providers |
8 Providers Introduced in Version 2.0
Leapfrog forward movement towards targets.
Constricted corridor and doorway ambushes.
Vertical corner peeking and wall boundaries.
Side and rear flanking candidate arcs.
Squad encirclement and pincer formations.
Pie-slicing doorways and room breach points.
Wedge, line, and V squad spatial shapes.
High-ground sniper bias and elevated perches.
25 Specialized Scorers Introduced in Version 2.0
Version 2.0 introduced 25 specialized scorers organized across tactical disciplines:
Offensive & Combat Scorers
AggressiveLOSScorerSO— Rewards clear offensive sightlines.PlayerPathPredictionScorerSO— Intercepts player heading vectors.PushForwardScorerSO— Drives rushers towards the front line.RearAttackScorerSO— Prioritizes blind spots behind targets.HighGroundScorerSO— Rewards vertical advantage.
Defensive & Survival Scorers
FatalFunnelScorerSO— Penalizes standing directly in doorway openings.EscapeRouteScorerSO— Verifies unobstructed secondary retreat paths.SkyliningScorerSO— Penalizes silhouetting against open ridgelines.BulletPenetrationScorerSO— Tests wall thickness against calibers.CasualtyAversionScorerSO— Flees spots where teammates fell.
Squad & Formation Scorers
SquadReservationScorerSO— Prevents teammates claiming identical spots.SquadSeparationScorerSO— Maintains healthy dispersal spacing.LineOfFireScorerSO— Prevents stepping into friendly firing corridors.MuzzleDisciplineScorerSO— Penalizes sweeping allies with crosshairs.SectorWatchScorerSO— Divides 360° defensive surveillance sectors.
Spatial & Sensory Scorers
LightProbeScorerSO— Favors dark, shadowy hiding spots.AudioStimulusScorerSO— Investigates gunshot / footstep disturbances.WallHuggingScorerSO— Hugs solid geometry contours.ZoneControlScorerSO— Scores spots by TacticalZone control state.StalemateBreakerScorerSO— Applies penalties to campers to break stalemates.
Tactical AI Profiler Window
Introduced in v2.0, the Tactical AI Profiler (Window > Analysis > Tactical Cover And Retreat AI > Tactical AI Profiler) provides millisecond-accurate diagnostics for AI searches:
- Pulse Graph (Live Monitor): Visualizes computational cost per search request with a 16ms (60 FPS) yellow budget line.
- Timeline Breakdown: Color-coded execution metrics dividing time into Generation, Job Setup, Burst Execution, Scoring, and NavMesh Pathing.
- Pause on Fail: Automatically pauses Unity playmode the instant any agent fails to find cover, allowing immediate inspection in the Tactical Decision Inspector.
- Candidate Spatial Map: Top-down 2D dot cluster showing all evaluated candidate positions and the winning spot.
Ready to explore full technical documentation?
View full class references, method signatures, parameter tables, and cookbooks.
Go to Full Documentation