Skip to content

t1k:unity:dots-ai:bdp-tactical-pack

FieldValue
Moduledots-ai
Version2.1.7
Efforthigh
Tools

Keywords: AI behavior, BDP, tactical

/t1k:unity:dots-ai:bdp-tactical-pack

Reference for the BDP Tactical Pack add-on — 9 group combat AI tasks (BDP 3.0.2 install) using Unity NavMesh and formation groups. Covers task catalog, required interfaces, shared settings, and DOTS ECS integration patterns.

Related skills: behavior-designer-pro (ECS task patterns) · agents-navigation (NavMesh bridge) · dots-rpg (combat systems) Related agents: dots-implementer


using Opsive.BehaviorDesigner.AddOns.TacticalPack.Runtime.Tasks;

To use Tactical Pack tasks, implement both interfaces on the authoring MonoBehaviour (BDP bridges to ECS via entity baking). Namespace: Opsive.BehaviorDesigner.AddOns.TacticalPack.Runtime (not the .Tasks sub-namespace).

public interface IAttackAgent
{
float MinAttackDistance { get; }
float MaxAttackDistance { get; }
float AttackAngleThreshold { get; }
void RotateTowards(Vector3 direction);
void Attack(Transform targetTransform, IDamageable targetDamageable);
}
public interface IDamageable
{
bool IsAlive { get; }
void Damage(float amount);
}

DOTS gotcha: For ECS mode, IAttackAgent.Attack() and IDamageable.Damage() must bridge to ECS by writing DamageEvent to the entity’s buffer or scheduling an ECB command — they cannot directly mutate ECS component data from MonoBehaviour context.


→ See references/task-catalog.md for all 9 tasks with parameters and behavior.

BDP 3.0.2 note: Hold, Marching Fire, Request Reinforcements, and Reinforcements Response are NOT present in the BDP 3.0.2 TacticalPack install. The installed task count is 9.

Quick reference:

CategoryTasks
OffensiveAttack, Charge, Flank, Ambush, Shoot and Scoot, Leapfrog, Surround
DefensiveDefend
WithdrawalRetreat

All 9 tasks inherit from FormationsBase. Settings are shared with the Formations Pack.

→ See references/shared-settings.md for full parameter list.

Critical settings at a glance:

SettingPurpose
FormationGroupIDGroup membership — same ID = coordinated unit
Is2DEnable for XZ-plane (top-down/side-view) formations
ForceLeaderDesignate a specific agent as group leader
AttackDelayNone / Arrival / GroupArrival — when to trigger attack
TargetsTarget list passed to the task

→ See references/dots-integration-guide.md for the full DOTS integration pattern — file structure, data flow, and FormationGroupData component.

  1. Tasks operate on groups, not individualsFormationGroupID is mandatory. Missing GroupID = each unit acts independently, defeating tactical coordination.

  2. MonoBehaviour movement by default — Tactical tasks call NavMeshAgent directly. For DOTS, write to NavigationTarget instead; bridge via AgentNavigationBridgeSystem.

  3. IAttackAgent/IDamageable on authoring MB — Both interfaces on the MonoBehaviour with BehaviorTree. Implement as ECS bridges (write to ECB / DamageEvent buffer), not direct data mutation.

  4. Shared base with Formations Pack — Same FormationGroupID links tactical and formation tasks on the same entity. Do not duplicate group state.

  5. AttackDelay = GroupArrival — Waits for ALL group members before any attacks. Requires FormationGroupID on every participating entity, or delay never resolves.

  6. ForceLeader + FailOnAgentRemoval — If leader dies, entire group task fails. Set UpdateUnitLocationsOnAgentRemoval = true for resilient groups.


FileContents
task-catalog.mdAll 9 tasks — description, NavMesh behavior, key params
shared-settings.mdFull FormationsBase settings reference
dots-integration-guide.mdDOTS ECS wrapper pattern, data flow, FormationGroupData
api_reference.mdFull API reference for Tactical Pack classes and methods