A* Pathfinding

Engine/Framework:

Visual Studio 2015

 

Coding & Scripting Languages:

C++

 

Target Platform:
Windows PC

Development Time:

1 month

Completed On:
2016

Goals and Objectives

1. Implement shortest-path algorithms in C++ • Dijkstra’s Algorithm. • A* (Astar) & variants
2. Justify use of data structures used within the algorithms.
3. Compare performance of previously implement solutions

Reasons for Shortest-Path

• Shortest-path algorithms integral for a games developer.
• Multiple variants allows for performance testing.
• Project I’m working on requires a pathfinding solution.
• Usage of grids instead of general purpose graphs

Choosing data structures

Using arrays to hold information such as the grid, path, open nodes and closed nodes. Unlike vectors arrays need to have a constant size meaning I could not change them during runtime. I could directly access an element of an array from memory while that would not be as simple in a vector or other container classes. Arrays are more memory compact.
Using a priority queue for the main data holder.

  • Insertion and extraction less time consuming (from O(n) to O(1)).

  • Automatic ordering of data makes calculating path much faster.

  • Most of the program time is spent making a new node and then deleting it.

  • 40% for making a new node, 18% for deletion versus only 0.7% for push back and 7% for heap adjustments.