EQS vs Selective Cover Points

Building my game for a typical ARMA style game for PVE. I have seen two implementations for AI to find cover.

  1. Use rang finding with EQS and let the AI find locations it can hide behind. I can set this for full, half and 1/4 cover (prone).

  2. Placing control points in the level at locations the AI can use for cover. Then use a combination of BP/AI perception/EQS to located these specific covers and move quickly to the closet one to the player.

If using EQS per #1 if there are 10-12 bots swarming the map how would this EQS setup impact computer performance? Would it be more CPU intense and possible slow the game down? However, this would give the most realistic AI action as the locations would be random, but unpredictable I think.

Using #2, it would be more work on the level designers, however the level designer would have more control over what areas are really good cover and which areas the AI should avoid. I simply search the control points added by the level designer, select the closet one with best LOS to Player and move to it.

I see more games built using #2, but my main question/concern is if using the EQS system alone would impact performance.

i really doubt it would affect anything. the heavy lifting of the AI is the navmesh algorithm that lets it find arbitrary places to walk to and its already doing that all the time, so why would it matter if you let it decide to find its own places to cover at when its already doing these exact same decisions?

Because there is a difference in cover and concealment. When being shot at it is not smart to hide behind a building next to a gas barrel or a carboard box that the player can shoot through.

So the question comes in do I dig deep into the AI system to determine that, or let the level designer simply tag the safe cover locations. That is how I am used to doing years ago and was common in the engines I used.

I suspect the EQS system was developed to replace the older method I am used to, so will probably go ahead and prototype out a max test and see what happens.

Maybe using the EQS system, and simply tagging assets that are not to be used as cover would be a better approach.

i don’t think you understood what i was saying. the AI is already making decisions about where to walk, the navmesh algo allows it to pick any point on it as a destination. so when you allow it to pick “cover points” all by itself too that’s not going to cause lag, because its the exact same thing, it’s just a point on a navmesh that it walks to and plays an animation when it gets there.

using pre-determined cover points will make the AI look smarter and give you more control about where it will choose to cover at, but it shouldn’t affect performance either way. all i was talking about is the performance.

OK, I got you. I had to wrap my had around what the EQS system was actually doing. Either way I go I have to query the system.

But I come from the old school of design where everything you do in some way effects performance:).

Thanks for the thought check.

Eqs is also not simply about finding things.
Eqs is build as a queried multi threaded algorithm which runs asynchronously.

This means that it is designed not to block your game.

Every single test in Eqs can be paused by the the engine and is then executed when computational ressources are available.

Every single test in Eqs can be paused by the the engine and is then executed when computational ressources are available.

True/Understood. But when you have a very robust AI system that pause can make for a unrealistic/undesirable movement as well, right? Then again, I guess it would be solely dependent on the target machines.

But what I am hearing the impact by using the EQS system for what I want to do is probably the best approach.

You didn’t understand what I mean with pause.
Your game isn’t paused.

The eqs system simply uses your system resources better by splitting up the checks and executing them when system resources are available.

So there will be no hanging graphic or network calculations due to the gameloop.

And yes, in my opinion eqs is the right choice to find specific objects out of a large number of objects, like cover points etc.

It is unimportant for the eqs system if these are predefined cover points or dynamically calculated ones.

No I understood what you said. I am just thinking further as EQS is just one part of what is going on in the game - not the only thing.

I have a saying:
“Code easy and design hard, or code hard and design easy”

If you use EQS, you will do more hard coding, but after it works, you can design the landscape easily since the AI will automatically look for cover.

If you use cover nodes, it’s easier to code, if you have code anything at all, but you will have to place cover nodes all over the map, which make design hard.

It depends on the game, but ultimately it’s your choice.

Thanks, but I am not looking for so much as which method is harder. Since I am the one for now doing it regardless of method :slight_smile: I am looking more for what the player sees. For some games, using the EQS to find cover may be OK. But I am starting to see the use of cover Nodes makes the game more realistic for what I am going for.

I was more interested in performance, if there is no performance hit then I prefer a combination.

As an example cover in an open world is fine. But when you move into close cover having the bot find cover away from a door or hiding under a window to be sniped hurts the games playability. So cover points to control choke points, entrys ect. Makes sense.

So the combination seems the best choice.