Skip to content
This repository has been archived by the owner on Jan 3, 2022. It is now read-only.
/ a-star-lua Public archive

A clean, simple implementation of the A* pathfinding algorithm for Lua.

License

Notifications You must be signed in to change notification settings

lattejed/a-star-lua

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A* for Lua

A clean, simple implementation of the A* pathfinding algorithm for Lua.

This implementation has no dependencies and has a simple interface. It takes a table of nodes, a start and end point and a "valid neighbor" function which makes it easy to adapt the module's behavior, especially in circumstances where valid paths would frequently change.

The module automatically caches paths which saves CPU time for frequently accessed start and end nodes. Cached paths can be ignored by setting the appropriate parameter in the main function. Cached paths can be purged with the clear_cached_paths () function.

Usage example

-- this function determines which neighbors are valid (e.g., within range)
local valid_node_func = function ( node, neighbor ) 

	local MAX_DIST = 300
		
	-- helper function in the a-star module, returns distance between points
	if astar.distance ( node.x, node.y, neighbor.x, neighbor.y ) < MAX_DIST then
		return true
	end
	return false
end

local ignore = true -- ignore cached paths

local path = astar.path ( start, end, all_nodes, ignore, valid_node_func )

if path then
	-- do something with path (a lua table of ordered nodes from start to end)
end

Notes

This assumes that nodes are objects (tables) with (at least) members "x" and "y" that hold the node's coordinates.

node = {}
node.x = 123
node.y = 456
node.foo = "bar"

About

A clean, simple implementation of the A* pathfinding algorithm for Lua.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages