Overview:
Putting all of the AI together has caused a few problems, enough of which makes the AI not feel very smart, and sometimes hard to play the game with. In some cases these problems are more fun though, so in this post I’ll cover each of the main problems I’ve noticed and how they affect the game. I’ll also discuss potential solutions to the problems.
Brute AI:
Greg (programmer) decided one day to make the brutes huge just to see how it would affect the AI gameplay, and we all loved the end result. The brutes are huge an intimidating, and they charge the player relentlessly. When in range of the player the brute will swing for its’ attack and will send the player flying while dealing massive damage. One problem that has come up is the radius that the brute uses to attack the player. Because the brute is so large, the radius is also large, and this causes problem when the player is already inside the attack radius.
The brute attacks the player properly when the player starts outside of the swing radius. In this state the brute is still swinging while walking forward toward the player. When the player is already inside the radius, the brute may stop walking and be swinging, thus never hitting the player. The fix? Most likely I can switch the brute to keep following the player while swinging. This may affect balancing but will make the brute more deadly.
Grunt AI:
The Grunt AI feels disjointed from the game. They tend to run in every direction and this adds a sort of chaos to the game. It can be hard at times to tell if the grunts are fleeing or just moving to random destination points because interactions with them are so quick. I’m brainstorming how to make a quick fix for this problem. I could potentially have them strafe side to side when attacking. Currently they still run to random points while firing at the player. The other issue is that the grunts vary rarely enter the flee mode because the player often kills them off quickly. Given more time for the game, I would love to have the grunts use a hive mind.
Nav Mesh Link:
One of the main problems with the nav mesh we’ve had this whole quarter is restricting enemies to the correct nav mesh surface. We eventually solved the problem by setting controllers to assign to each grouping of enemies. Now an issue is that enemies from outside the ship will try to chase the player to the last known position. This will lead enemies to get stuck at different parts of the ship, most noticeably the main entrance to the inside of the ship. This is because there are separate nav mesh surfaces. In this case I’m working on a fix to allow the enemies to traverse between certain surfaces. I have worked, with no success yet, using nav mesh links and off mesh links. These both seem to attempt the same thing, allow traversal between surfaces, but there is little documentation. From the few sources I’ve found, I tried to create the link but traversal has but unaffected.
At this point, the enemies are now allowed to set points on the other meshes, however their Y position doesn’t change properly and they get stuck inside / under the other nav mesh surface. I currently don’t have an idea for a fix for the nave mesh link. To fix the strange following behavior, I can have the enemies use a last known position timer and once the timer is up, they can switch back to patrol state.
Moving Forward:
For this week I’ll be focused on those small changes which will make the AI feel more believable. The first task will be to fix the brute because that enemy feels the best right now. Next will be the grunt. Greg will help me out with fixing how they fire at the player (that’s mainly his system), and I’ll attempt to make them more believable when attacking as well. Lastly I’ll be reaching out to others in the class and possibly Will (the professor) about the nav mesh link issues.
Comments