We have a fully functional game at this point, except for fleshing out the smarter enemies. After quite a bit of experimentation, we have found several things that don't work to improve the enemies, and a couple of things we can do to make them better. We tried using an enemy that used
A* Pathfinding
, which is considered the "gold standard" of pathfinding algorithms. However, this was not a great answer for the enemies, as they would stop and pause to recalculate a new route, which would often take a second or two, depending on how far away from the hero they were. If you had a couple of these enemies in the game at the same time, the entire system would freeze for a second or two. Not good.
After trying some different approaches (and different A*
implementations), we have settled on a hybrid enemy pathfinding. Most of the time it works like a standard enemy. The difference is when it hits a wall, it changes to use A* Pathfinding
to negotiate a route to the hero around the...