Cover Generator

Dynamic Tactical Cover Generator

The cover generator analyzes the level’s geometry to find possible cover points. Cover points can then be parsed via the native Environment Query System (EQS) to allow AI or player controlled characters to find spots to hide during a fight or even to prepare an ambush.

The system offers different info per generated cover such as if it is a crouched or a standing cover, if the character can stand or lean on the sides to shoot…

Example video of a GOAP AI using the cover generator

Download on GitHub: https://github.com/Deams51/CoverGenerator-UE4

2 Likes

This looks awesome! Will looky! Thanks!

looks awesome, I will need to implement a cover system soon, this is a huge help!

You’re welcome! :slight_smile:

Nice. Very cool, and should probably cost money XD So bonus!

This is very useful. Thanks

Will you be doing a tutorial on how your ai pick a cover spot? I’ve got a few cubes scattered out on an empty map and your cover generator works great. But I’m lost on how to actually implement this in the ai behavior tree. I haven’t used eqs for anything but random roaming. Does using eqs help avoid multiple ai trying to take the same cover location at the same time?

@Deams - This is amazing mate.

I can’t quite read code for the next couple of days, so if its not too much to ask, would you kindly and briefly explain the employed methodology?

Sorry if its too much to ask.

On a side note, except for games with destrutible environments, wouldn’t it be better to generate all the points per map, store them in the map itself, and load them when the map itself loads? Just a question of saving resources to not have to check for possible cover pointer - and all the involved math - every tick. Edited: nevermind, just saw you store them upon generation.

actually while importing Cover Generator plugin, Its showing error like could not be loaded because CoverGenerator Module was not found. Can u tell me what was the reason. im trying to load in 4.16 version UE4 with blueprint project.

Works the plugin with skeletal mesh on idle state too?

is there any network/multiplayer impact for this? If so, how much?

@Deams : I put the plugin into my project and reworked my behavior tree successfully faster than expected, NPCs act now usually much better, but they frequently choose cover places on wrong side of objects. so can you give some hints how to improve it, if the NPC knows the direction of the incoming attack, and as I see cover places store direction data.
I ask just a few hints where can I start with it… or how to setup the EQS doing proper tests.

I had an issue, when navmesh is dynamic, and updated runtime because of spawning actors affecting the navmesh, regenerating the covers caused short but disturbing freezes even in a relatively small level. Luckily, today I have modified the plugin to run it asynchronously as a FNonAbandonableTask. Now I’m doing some further tests, and if anyone interested I would share the code…

I am interested in the code.
I have been waiting for a reply about network impact, or, general impact of this plugin. I didnt get a reply back, so, i figure i may as well jsut add it myself and see if there is anything negative, or, how much negative (everything has impact).
This is working for 4.18?

Okay, I find out the best way, I modified only slightly a .h and a .cpp and added a really short class, so I can post it here or create a github fork…
I use it in a UE4.17 project, but should be okay with 4.18 as well.
My project is multiplayer, I have experienced no network load at all, it should work on server only, because all AI normally runs on server.
And because of the offline generation, and the async update I added its performance impact is minimal, but I will definitely test it this week (I have to decide to keep it or not).
Its creator is apparently more active on youtube, I was able to contact to him, he normally answers within a few days, but said to be quite busy recently…

Oh sweet, yeah, sounds great man, i am excited!
I’m running multiplayer as well, i want to use this for players. Dedicated server situation, so, as little impact as possible is perfect lol.
If we want to reach out to the primary DEV for this and have him add what you did, then, push out a 4.18 … that would be awesome, but, i can do without all that if the dev doesn’t have time …

EDIT:

Added this to my current 4.18 project and everything went in fine. No issues with anything as far as i can tell. I added it, you know just for fun, to a massive openworld filled city. It actually does an amazing job at locating hiding places around everything. Every door, every window has clear fire from it, every usable tree and fence and … everything. Great work.

I am having an issue adding the functionality to the player character as well as the AI. This is less for AI then it is for the players to use the cover system, so, i was wondering if there is a quick “how to” on adding this to the player character.

I have all the anims i would need for it but i dont know how to add the “use cover system” to the player character…

bump …

Any tutorial on adding this into the player char so they actually can use the cover system?

Hi,

I’m interested in the file you create to make everything run smoothly async.
Does your test run fine?

thanks

Yes, I was too busy last week with something else, but will share it here tomorrow (according to CET time zone). Pm me if I forget it :slight_smile: I would be happy if you test it with large complex levels, I’m curious how it can handle frequent and multiple navmesh updates that can happen in a game, maybe partial updates should be implemented…

luckily, I could have made it a bit earlier than promised, here is my fork: GitHub - s-ivan/CoverGenerator-UE4: A dynamic cover point generator plugin for Unreal Engine 4.</title
btw, I made a pull request on GitHub, 1st in my life :smiley:
only CoverGenerator.h and .cpp are modified a bit, and GenerateCoversAsync.h and .cpp added.