"Diagonal Connections not Supported"

  • A* version: 5.4.3
  • Unity version: 6000.0.56f1

When units are navigating a GridGraph, I keep getting an Exception: Diagonal connections are not supported

This does not happen immediately when the units spawn, it only happens a little bit into them navigating the grid. Full stack trace is posted below.

It happens when there’s a couple units on the grid. I’ve made a screen recording below

What does this error mean? I understand if it’s some misconfiguration, but why does it then only pop up when there are many units?

Exception: Diagonal connections are not supported
  at Pathfinding.PathTracer.ResolveNormalizedGridPoint (Pathfinding.GridGraph grid, Pathfinding.Collections.CircularBuffer`1[Pathfinding.GraphNode]& nodes, Pathfinding.Collections.UnsafeSpan`1[T] cornerIndices, Pathfinding.Funnel+PathPart part, System.Int32 index, System.Int32& nodeIndex) [0x0017b] in ./Library/PackageCache/com.arongranberg.astar@9a6b1e585a1a/Utilities/PathTracer.cs:1837 
  at Pathfinding.PathTracer.SimplifyGridInnerVertex (Pathfinding.Collections.CircularBuffer`1[Pathfinding.GraphNode]& nodes, Pathfinding.Collections.UnsafeSpan`1[T] cornerIndices, Pathfinding.Funnel+PathPart part, Pathfinding.Collections.CircularBuffer`1[System.Byte]& portalIsNotInnerCorner, System.Collections.Generic.List`1[T] alternativePath, System.Int32& alternativeStartIndex, System.Int32& alternativeEndIndex, Pathfinding.TraversalConstraint& traversalConstraint, Pathfinding.TraversalCosts& traversalCosts, System.Boolean lastCorner) [0x00174] in ./Library/PackageCache/com.arongranberg.astar@9a6b1e585a1a/Utilities/PathTracer.cs:1900 
  at Pathfinding.PathTracer.GetNextCornerIndices (Unity.Collections.NativeArray`1[System.Int32]& buffer, System.Int32 maxCorners, Unity.Collections.Allocator allocator, System.Boolean allowSimplify, System.Boolean& lastCorner) [0x00122] in ./Library/PackageCache/com.arongranberg.astar@9a6b1e585a1a/Utilities/PathTracer.cs:1490 
  at Pathfinding.ECS.JobRepairPath.Execute (Unity.Transforms.LocalTransform& transform, Pathfinding.ECS.MovementState& state, Pathfinding.ECS.AgentCylinderShape& shape, Pathfinding.ECS.AgentMovementPlane& movementPlane, Pathfinding.ECS.AutoRepathPolicy& autoRepathPolicy, Pathfinding.ECS.DestinationPoint& destination, Unity.Entities.EnabledRefRW`1[T] readyToTraverseOffMeshLink, Pathfinding.ECS.ManagedState managedState, Pathfinding.ECS.MovementSettings& settings, Unity.Collections.NativeList`1[T] nextCornersScratch, Unity.Collections.NativeArray`1[System.Int32]& indicesScratch, Unity.Collections.Allocator allocator, System.Boolean onlyApplyPendingPaths) [0x00102] in ./Library/PackageCache/com.arongranberg.astar@9a6b1e585a1a/Core/ECS/Jobs/JobRepairPath.cs:188 
  at Pathfinding.ECS.JobRepairPath.Execute (Unity.Entities.ArchetypeChunk& chunk, System.Int32 unfilteredChunkIndex, System.Boolean useEnabledMask, Unity.Burst.Intrinsics.v128& chunkEnabledMask) [0x0011e] in ./Library/PackageCache/com.arongranberg.astar@9a6b1e585a1a/Core/ECS/Jobs/JobRepairPath.cs:127 
  at Pathfinding.ECS.JobRepairPath.Unity.Entities.IJobChunk.Execute (Unity.Entities.ArchetypeChunk& chunk, System.Int32 unfilteredChunkIndex, System.Boolean useEnabledMask, Unity.Burst.Intrinsics.v128& chunkEnabledMask) <0x4708a3288 + 0x0005b> in <2aad84f142c446d29831a2af1b8b21fe>:0 
  at Unity.Entities.JobChunkExtensions+JobChunkProducer`1[T].ExecuteInternal (Unity.Entities.JobChunkExtensions+JobChunkWrapper`1[T]& jobWrapper, System.IntPtr bufferRangePatchData, Unity.Jobs.LowLevel.Unsafe.JobRanges& ranges, System.Int32 jobIndex) [0x0013f] in ./Library/PackageCache/com.unity.entities@6a355619334f/Unity.Entities/IJobChunk.cs:420 
  at Unity.Entities.JobChunkExtensions+JobChunkProducer`1[T].Execute (Unity.Entities.JobChunkExtensions+JobChunkWrapper`1[T]& jobWrapper, System.IntPtr additionalPtr, System.IntPtr bufferRangePatchData, Unity.Jobs.LowLevel.Unsafe.JobRanges& ranges, System.Int32 jobIndex) [0x00001] in ./Library/PackageCache/com.unity.entities@6a355619334f/Unity.Entities/IJobChunk.cs:363

[EDIT] I tried downgrading back to 5.3.8 but now I’m getting Exception: Run more migrations than there are migrations to run. Finished: 4000000F all: 40000007

[EDIT2], I reverted all of my prefabs/assets (using git) to the versions before updating to 5.4, which fixed the migrations error. Also, on A* 5.3.8, I don’t get the “diagonal connections” error.

Regression maybe? Has your entities version changed at all? Or does it have an update? I’ll tag @aron_granberg here since it didn’t exist before but did after updating.

That’s expected when downgrading. Reverting them using git is the proper solution.

Can you post your grid settings?

Do you have any way to reliably replicate the issue?

It happens all the time (on A* 5.4) .

But that’s in my project, I haven’t set up a clean repro.
(I would be willing to share the project with you though, if you’re interested)

Settings below:

Just curious. Does the NotBuildable tag affect the movement of agents?

Do you have any other tags that affect the movement of agents?