Pathfinding only works with prioritize graphs checked

There’s something happening that I’m not understanding. I have a 3 graph setup in my project, 1 layered grid graph, 1 grid graph, and 1 point graph (used for node links).

I set up a couple of node links to link the different layers of the layered grid graph. However the pathfinding only works when I have ‘prioritize graphs’ checked, othwersise it doesn’t find a possible path. I’m incredibly confused by whats happening as the path is clearly possible with the node links set up it just doesn’t find a path unless ‘prioritize graphs’ is checked.

The AI is using a seeker component with traversable graphs marked as the ‘layered grid graph’ and the ‘point graph’. I’ve supplied images below if they may help explain the issue.

Doesn’t Work

Works

I thought by default the pathfinding searched all possible graphs in a seeker graph mask so I don’t know why prioritize graphs being checked would help.

If I need to provide any additional screenshots or info I can. Thanks.

Hi

Why do you have both a grid graph and a layered grid graph? And do they overlap?

It will find the closest node in all graphs to the requested start point of the path, and the closest node to the requested end point of the path. Then it will try to find a path between those two nodes.

Yes they overlap which I considered could be the issue, however I believe I read somewhere that you mentioned a technique for creating different graphs of different cell sizes for different unit sizes so I didnt think it would be a problem.

I am using the layered grid graph for regular characters and the grid graph, which has a larger cell size, for other large scale pathing requirements. The AI seeker in this case also has its traversable graphs set to only the layered grid graph and point graph so I’m just not sure whats happening.

Hi

Are you sure you are not doing any path queries in other ways (e.g. using IsPathPossible)?
Otherwise, the Seeker’s traversable graph list should be all that you need.
You could try to make the traversable graph list also exclude the point graph.

I am doing an IsPathPossible call but just for debugging when this wasn’t working, not for calculating the path in any way. What I’m doing is simply just using the Seeker StartPath method.

Interestingly though when I moved the center of the larger cell size Grid Graph to be not overlapping the layered grid graph it starts to work with the node links without having to check prioritze graphs. Are the two graphs conflicting with each other in some way? Can I not have a layered grid graph and grid graph of different cell sizes overlapping? I was under the impression you could for different unit types.

By the way thanks so much for helping me.

Hi

I think your off-mesh links may not work properly. Currently, there’s no way to specify which graph an off-mesh link belongs to. With prioritize-graphs enabled, they will most likely be connected to the first graph. Otherwise, they will be connected to the closest graph, which is kinda undefined if they overlap a lot.

Ah yes, I guess I wasn’t clear how the ‘NodeLink2’ was working, only forming connections on one graph that of which is undefined when graphs overlap. In this case I suppose they are being formed on the larger Grid Graph which isn’t being used by the AI Seeker, instead of on the desired ‘Layered Grid Graph’ which the seeker is using.

I guess it may be nice as a feature to specify which graph they form on but I suppose that’s doable through code anyways.

Well thanks for the help I guess I understand what’s happening now.