Untitled Unreal Engine Project (from my job at QuantumSquid)
I got permission from my boss to show off some of the AI I designed for the project. It never got to a finished state before the company had to shut down, so it's unreleased, but here's some of the enemies I worked on:
The first enemy isn't that impressive. The jumping ghoul is designed to go straight for the player with Unreal's build in crowd avoidance. The only thing I was needed for was their jumping at the player logic; getting some degree of tracking and making sure that only the ghouls in front would jump attack.
The second enemy, the cave crawlers, I partially programmed the AI of; they'll sidestep away from your bullets, and attempt to lob projectiles. If they hit a wall, they'll move forward. If they get close enough, they'll do a melee charge attack. Very simple.
The third enemies, the slugs, I programmed entirely myself, including their crawling animation system which uses navmesh movement. They leave a trail of slime that slows the player and does a small amount of damage over time if you're standing on it. They're programmed to circle the player in a semi-irregular fashion. If there are multiple slugs traveling opposite directions, they'll navigate around each other. They'll also smartly navigate around obstacles in an attempt to keep on the navmesh while continuing the circular pattern.
The third enemies, the snake insects, were pretty easy. I designed them entirely myself as well. They use a formula to aim their shots so they'll hit the player (although said formula is available on Wikipedia so I can't take too much credit, I could also have derived the formula if I needed to). Other than that they're not too special.
This is my biggest accomplishment, the Health Bot. Programmed entirely by myself (with a little bit of maintenance by my coworker so he could use them the way he wanted), they navigate randomly around the area with a smoothly curving walking pattern, dropping health drops. After a certain amount of time they will return back to the hatch. They use two navmesh traces in order to decide when to switch turning directions; if they detect that they're in a corner they'll use more navmesh traces in order to decide which direction to turn. They trace about every 0.2 seconds instead of every frame to save on performance. I only designed for one health bot at a time but if we needed multiple I could stagger their traces to prevent frame drops. As you can see, they can walk around a fairly complex environment without ever getting caught in a corner.
This is the spider turret. It uses a simpler, less expensive version of the healthbot's smooth navmesh edge avoidance along with some additional logic to make it attempt to circle the player at a set radius instead of just moving randomly. This was the last thing I did before the team was told to move on to our other game to get it ready for release, so it's a bit unfinished. If there are multiple spiderbots they will navigate around each other as well, but you'll just have to take my word for that because I was rushed and forgot to get footage of that when I had the opportunity.
This was all programmed in blueprint (which is the standard set by the project lead) but if the project was continued, the bulk of the code would have been migrated to C++ for performance reasons. I am confident in my C++ skills so that wouldn't have been a problem.