I’m still fighting with enemy AI. I scaled back the overly complicated hierarchical utility AI I implemented last week. There’s still a hierarchy, but it’s simpler. Intents were replaced with priorities, there are fewer priorities than intents, the priority selection logic is simpler than the intent selection logic, and the action selection logic is simpler for each priority. Less really is more with enemy AI, I’ve found.
The smart enemies are noticeably more brutal. They choose tactically optimal positions to attack the player from, avoid being lured into disadvantaged positions, and continuously put pressure on the player. Only some enemies will be “smart”, and I plan on having different roles/personalities for different enemy types to further vary behaviors. The latter should be easy to accomplish by adjusting priority weights and other AI system parameters.
Next week, I’ll continue working on the enemy AI. My plan was to have it working by the end of the year. That’s still a possibility. Melee combat is in good shape. Ranged combat needs more testing. Intelligent fleeing has been the most difficult thing to get right, in terms of both concept and implementation. And, I’m questioning whether I’m spending too much time on it; no one likes excessive fleeing.

