EQS - PathExist always failing?

Good day all! I’m hoping to use this as an opportunity to better understand EQS.

In my project, I have two notable use cases for EQS:
1 - My enemy AI uses EQS to find a suitable location to move to (Find Firing Location). This uses the following tests:
- Generator: SimpleGrid, with the grid half size received as a parameter
- Project
- Distance to the player
- Distance to the enemy
- PathExist from the enemy must equal true
2 - My enemy AI uses EQS to find locations to spawn other actors at, which the enemy must be able to reach (Find Generator Locations). This uses the following tests:
- Generator: SimpleGrid, with teh grid half size received as a parameter
- PathExist from the enemy must equal true

With that in mind, I have the following considerations for BOTH queries:
1 - Certain aspects of the project are generated at runtime. The maps are created from a seed, and the selected size of the map scales the enemy characters.
2 - For the querier, EQS can use an actor that is guaranteed to always be at the origin of the map.

That said, both of my EQS queries are running into some hitches that I’m not sure how to handle.

Find Firing Location - Bosses over a certain size seem to result in the PathExist test failing. I thought this might have to do with some sort of limit on the height of a character need adjustments to the out-of-the-box navmesh, but using simple MoveTo nodes and other navigation methods seem to show that’s not the case.

Find Generator Locations - PathExist is also causing weirdness on this one, but in the opposite way. Navmesh islands inside the generated walls are being validated. I don’t understand how that is considered “reachable” with a PathExist considering that the project doesn’t create any navlinks between islands, we have a single arena to fight enemies in. So these additional actors the enemy spawns using the EQS results are place either inside walls, floors, or outside the map if there’s navmesh islands!

I’ve attached some screenshots of the results and the EQS below. I’m sure there’s something here that I’m just not understanding. Any insight and learnings are appreciated! Happy to provide additional information as well!








Bumping to hopefully get some more eyes on this! I’m still running into this issue and am hoping to still learn more about EQS from this experience :slight_smile:

I have other strange behavior. Here are my generator and PathExist filter:
0
I test it via EQSTestingPawn, it works in editor:


But if I try to call EQS query from C++, receive result and draw debug lines for items (green for valid and blue for invalid) - I see wrong behavior:

It is strange, but I found workaround: I just duplicated PathExist test:
4
I don’t know why but it works!

I tried to switch context and other options, but it didn’t help. Only two equal tests work for me :frowning:

In my case problem is in my code. I tried to call EQS with only one PathExist test from blueprint:


and got correct result:


I found solution - I set C++ EQS query to EEnvQueryRunMode::AllMatching. Looks like it is only working option.