AI*

In development of AI movement, A* pathfinding is a sort of summum. You use Dijkstra A* pathfinding and you are an ‘intelligent’ coder or developer in general.

Though the above is true, I think there is something sincerely lacking in the whole method. It isn’t logical. The default states of enemies/AI in games tend to be: Patrol until a signal comes in view. Hunt the signal, no matter where it goes or stop when it goes beyond reach. That is all very well, but is that something a person would do?

Example: Lets take a guard of a mansion. He patrols. Specific weak spots in the ‘defense’ of the perimeter are the points of interest and he moves from each to another. A->B->C. Now the player must infilitrate the perimeter and does so at C. The guard happens to just walk about the spot of C and the raycast (technical term of a signalling line into the distance) detects the player would be in view. The guards FSM (Finite State Machine) dictates that he should be alert and ready to attack the intruder. He turns towards the player, who hastely returns into hiding.

Now, what happens in most games is: FSM dictates alert state cools down and guard will return to default sequence. But is that logical? Only if the guard had the memory of a gold fish (Or Dory). The guard now knows that there is an intruder near C, so his guard will not go down anymore. Worse even, if YOU were the guard, you would either stay at C spot or you would shorten the time on other spots and return to C more often (because you have memory of the incident).

Therefore I will try to extend the A* with a ‘legacy’ or ‘memory’ model. So the agent that follows the path will only follow a path he/she remembers and will more likely take a route that is more valid from memory perspective. Unlike the games where ‘armies’ keep running towards a wall that obstructs the path to the goal, while the previous members of the army got slaughtered. It would make more sense to NOT go to the obstruction, until memory serves that it was removed. In other words: Sentient pathing.