For instance, the firing code has been in the statemachine object for the player, and in the gamesession object for enemies. Clearly, this was unneeded duplication, and needed to be addressed. Also, there was 'ai' code in the game session object, and a half-baked Brain object that could create goals & subgoals for the enemies.
So, yesterday and this morning I fixed a few more minor navigation issues with vertical distances, mainly taking out test code that was breaking certain scenarios. Right now there is only one known issue with the navigation system, which I believe is due to the fact that the characters are 2 meter tall capsules, and the test shape is a 1 meter tall sphere. As soon as a swap those out ( which should be easy as they both implement the Collidable interface ), that should be fixed as well.
Today I've been cleaning up these various code pollution problems, and tonight I've been fleshing out the Brain ai a bit as well. Now the enemies should have an Attack goal, and create a Follow goal when they've lost sight of the player for too long, which should cause them to re-path. Once I have that working, I will make the AI use the last player position info it stores for the pathing, rather than omnisciently zooming in on the player.
I also made the AI stop moving towards the player when he is within 80% of his weapon range, so he won't have to stop and start all the time, but he won't have to get right in the character's face in order to attack.
Tomorrow I should hook up the dynamic re-pathing system that will hopefully keep the AI from bunching up too much, as they seem to do at times right now.
I've started relying on actual weapon data instead of hard coded things in order to determine weapon properties. I put an Attack method in the Entity object, removing the duplicated code, and consolidating the result there. This method checks the item properties to tell what sort of ammo is used, and what type of projectile to create when it's fired.
I've been relatively quiet on the Journal front, as we are gearing up to do a potential demo build of the game in the next few weeks. I can't talk about details, but we are pretty excited about it, and it gives us a great chance to get things moving very quickly.
Oh, I also added enemy animation. The player has been animating forever, but the enemies were sort of hacked in, but now they use the proper statemachine mechanism to drive their animations. Definitely better, but we are going to have to rip out the MD2 models pretty soon and replace it with a real boned animation system.
Here are some game shots :