Changelog

Runtime walls

  • New RemoveWallTile and ClearWallTiles - walls are no longer add-only; removing a tile re-routes affected orders on the next tick
  • Nav-mesh wall sync: with Sync Walls With Nav Mesh on (default), a runtime nav mesh rebuild re-syncs the wall grid automatically - newly blocked cells become walls, freed cells are removed. Manually stamped tiles are never touched
  • GenerateWallTilesFromNavMesh now removes stale nav-mesh walls too, and returns the number of tiles changed

Per-agent radius

  • New per-agent radius - set it at runtime with SetAgentsRadius / SetAgentRadius, read it back with GetAgentRadius. A negative value resets to the global Radius
  • Drives avoidance, wall collision, and formation slots - mixed groups size each slot to its agent, with big agents up front and centre. Pathfinding always uses the global Radius, whatever an agent's own size
  • Debug drawing reflects each agent's radius

Teams

  • New per-agent team id - set it at runtime with SetAgentsTeam / SetAgentTeam, read it back with GetAgentTeams. Agents spawn on team 0; the numbers are yours to define
  • Every selection query takes a Teams filter: GetAgents, GetAgentsInRect, GetAgentsInRadius, GetAgentsInScreenRect. An empty array returns every agent, so existing graphs are unchanged
  • New FilterAgents - narrow an index array you already have to certain teams
  • New GetNearestAgent - closest agent to a point, optionally restricted to teams

Team avoidance

  • New SetTeamAvoidance(TeamA, TeamB, Strength, SettlePushStrength) - override avoidance for one team pair. TeamA == TeamB sets the rule within a team
  • 0 disables that push entirely (the pair walks through each other); a negative value follows the matching global slider and keeps tracking it
  • ClearTeamAvoidance, ClearAllTeamAvoidance, GetTeamAvoidance to manage rules
  • Costs nothing when unused - with no rules set the avoidance loop does no team work at all

Formations

  • Fixed: agents piled up when a move order landed on a wall. Slots blocked by geometry were each pushed to the nearest free spot independently, so many of them converged on the same patch of ground next to the wall. Slot placement now lifts the formation origin clear of the wall first and keeps slots a full spacing apart while repairing them
  • Slots can also now escape walls over four times thicker than before
  • New per-order Anchor pin on SetAgentsTarget / SetAgentTarget: Near Edge (default, unchanged behaviour) puts the front of the formation on the ordered position; Center puts the middle of the group on it

Debug

  • New Show Teams overlay - a coloured dot above every agent, one colour per team, with team-id labels on the agents nearest the camera (Team Label Distance)
  • Renamed GetAgentsIndices to GetAgentsFromIds (existing Blueprints keep working via CoreRedirects)
  • New GetAgents - returns every agent's index in one call
  • GetAgentTransforms parameter renamed to FilterIndices for clarity
  • Named return pins on Blueprint nodes for more readable graphs

Initial release.

  • Group movement with shared pathfinding and formations (blob, box, wedge)
  • Flow Field and Spatial A* pathfinding backends
  • Local avoidance with separate settle-push tuning
  • Runtime walls, seeded from the nav mesh or stamped at runtime
  • Per-agent speed overrides on top of the global default
  • Facing targets - steer agents' rendered facing toward a point, independent of movement
  • Movement lifecycle events: reached-goal, stuck, order-canceled, spawned, removed
  • Selection queries: screen rect (marquee), world rect, radius
  • Ground snapping with per-agent Z tracking and slope alignment
  • Stable per-agent ids that survive index reshuffles
  • Bulk Blueprint math nodes for position/transform arrays
  • Supported on Unreal Engine 5.5 (Win64)