node-pathfinding

a Node.JS implementation for AStar path finding algorithm. This implementation uses primitive data types (Number and Byte/Buffer) to present location and block data that significantly improve the speed and have a good control on memory consumption

Node Path Finding

Is is a simple path finding module for NodeJS. This module is designed to be run on the server side

  • This module use much less runtime memory then other node path finding module I can find on the net
  • The path finding implementation uses primative JavaScript Number type, so much safe to memory leak
  • Simple code, easy to change and extend
  • The max size of map is limited to 65535 x 65535
  • Doesn't support nagtive location
  • BrickLoc: To reduce memory usage and use less Object instances, each dot(node, point) in the given map is represented by an 32bit uint, which is composed by x << 16 | y
  • Map Buffer: The map is presented by a Buffer, column by row. Each dot(node, point) is a bit in the Buffer. 0 means walkable, 1 means blocked.
# test building a map buffer from 2d array 
array2d = [
  [1000],
  [0100],
  [0010],
  [1100],
  [1000]
]
 
width = 4
height = 5
buf = Grid.bytesFrom2DArray(widthheightarray2d)
grid = new Grid(widthheightbuf)
 
path = syncfinder_astar.findPath(1,0,1,4,grid)
console.log "list the path:#{path}"
console.log "print out the path on map :#{grid.toString(1<<16|01<<16|4path)}"