A*
Started on a grid based tactics game that had certain nodes cost more to move through (different weights). There were also obstacles (not in this example). I used A* Pathfinding.
It was rather simple, I used a priority Queue that worked it's way to the end point judging weights and heuristics; leaving breadcrumbs along the way to be used as the path. Performance was perfect for this project.
I create a A* API as I needed the Player, Abilities, Environment, and Enemies to determine if they were able to access or effect certain nodes under certain circumstances.
A High Stress Example was when the player would cast fireball on a different node. First the A* API would be used to determine if the player could see the target node and if it was in range. The from the target node A* API would need to path to every neighboring node that would be affected by the fireball creating a targeted sphere of influence each and every time the player moved their mouse over a block on the grid.