Astar Lib (TS)
The Astar Library provides a way for graph traversal to be abstracted away from positions and locations, and used for other forms of shortest-route decision making.
I took the existing library, ported it to TypeScript, and abstracted its idea of nodes, edges and heuristics away from positions and grids. This allowed the core graph traversal logic to be used in a Goal based context; where a node instead of a position in the world becomes a snapshot of the state of the world, where an edge instead of moving left, right, forward or back, is an action an agent may do to change the state of the world from one state to another, where a heuristic isnt the approximate distance to another position, but is the cost of changing the world so, and whether it is possible to do so from the current state at all Re-applying graph traversel in this way allows AI agents to choose from a list of actions to change the world in a sequence and find the best way to reach a goal. It means that the actions an agent could choose would change depending on how the world was, what actions were available to the agent and how costly they might be in that particular scenario.
The library was built on the back of an exsiting javascript astar library (https://github.com/bgrins/javascript-astar) which was extended to be written in Typescript, and re-purposed to be used as a goal-finding library, following guidelines for how to build such a system mentioned in the AI paper https://alumni.media.mit.edu/~jorkin/gdc2006_orkin_jeff_fear.pdf written by Jeff Orkin as a result of work done in the videogame F.E.A.R.