Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Yonaba/Jumper
Fast, lightweight and easy-to-use pathfinding library for grid-based games
https://github.com/Yonaba/Jumper
gamedev lua pathfinding pathfinding-algorithms pathfinding-library
Last synced: 2 months ago
JSON representation
Fast, lightweight and easy-to-use pathfinding library for grid-based games
- Host: GitHub
- URL: https://github.com/Yonaba/Jumper
- Owner: Yonaba
- License: mit
- Created: 2012-10-10T13:34:13.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2022-10-21T09:02:33.000Z (about 2 years ago)
- Last Synced: 2024-08-02T06:16:09.544Z (5 months ago)
- Topics: gamedev, lua, pathfinding, pathfinding-algorithms, pathfinding-library
- Language: Lua
- Homepage: http://yonaba.github.io/Jumper
- Size: 540 KB
- Stars: 607
- Watchers: 52
- Forks: 122
- Open Issues: 35
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
- awesome-love2d - Jumper - Grid-based pathfinding library. (AI)
- awesome-playdate - Jumper - A pure Lua pathfinding library for grid-based games. (Game Development / Programming Frameworks & Languages)
- awesome-defold - Jumper - based games. (Libraries / Programming Language)
README
Jumper
======[![Join the chat at https://gitter.im/Yonaba/Jumper](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/Yonaba/Jumper?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Build Status](https://secure.travis-ci.org/Yonaba/Jumper.png)](http://travis-ci.org/Yonaba/Jumper)
__Jumper__ is a pathfinding library designed for grid-based games. It aims to be __fast__ and __lightweight__.
It features a wide range of search algorithms, built within a clean interface with
chaining features which makes it __very friendly and easy to use__.__Jumper__ is written in pure [Lua][]. Thus, it is not __framework-related__ and can be used in any project embedding [Lua][] code.
## Installation
The current repository can be retrieved locally on your computer via:### Bash
```bash
git clone git://github.com/Yonaba/Jumper.git
````### Download (latest)
* __Development version__: [zip](http://github.com/Yonaba/Jumper/zipball/master) | [tar.gz](http://github.com/Yonaba/Jumper/tarball/master) ( __please do not use this!__ )
* __Latest stable release (1.8.1)__: [zip](http://github.com/Yonaba/Jumper/archive/jumper-1.8.1-1.zip) | [tar.gz](http://github.com/Yonaba/Jumper/archive/jumper-1.8.1-1.tar.gz) ( __Recommended!__ )
* __All stable releases__: [tags](http://github.com/Yonaba/Jumper/tags)### LuaRocks
```bash
luarocks install jumper
````### MoonRocks
```bash
luarocks install --server=http://rocks.moonscript.org/manifests/Yonaba jumper
````## Installing Jumper
Copy the contents of the folder named [jumper](http://github.com/Yonaba/Jumper/blob/master/jumper) and its contents and place it inside your projet. Use *require* function to import any module of the library.## A Simple Example of Use
Here is a simple example explaining how to use Jumper:```lua
-- Usage Example
-- First, set a collision map
local map = {
{0,1,0,1,0},
{0,1,0,1,0},
{0,1,1,1,0},
{0,0,0,0,0},
}
-- Value for walkable tiles
local walkable = 0-- Library setup
local Grid = require ("jumper.grid") -- The grid class
local Pathfinder = require ("jumper.pathfinder") -- The pathfinder class-- Creates a grid object
local grid = Grid(map)
-- Creates a pathfinder object using Jump Point Search
local myFinder = Pathfinder(grid, 'JPS', walkable)-- Define start and goal locations coordinates
local startx, starty = 1,1
local endx, endy = 5,1-- Calculates the path, and its length
local path = myFinder:getPath(startx, starty, endx, endy)
if path then
print(('Path found! Length: %.2f'):format(path:getLength()))
for node, count in path:nodes() do
print(('Step: %d - x: %d - y: %d'):format(count, node:getX(), node:getY()))
end
end--> Output:
--> Path found! Length: 8.83
--> Step: 1 - x: 1 - y: 1
--> Step: 2 - x: 1 - y: 3
--> Step: 3 - x: 2 - y: 4
--> Step: 4 - x: 4 - y: 4
--> Step: 5 - x: 5 - y: 3
--> Step: 6 - x: 5 - y: 1
````## Specs
Specs tests have been included.
You can run them using [Telescope](http://github.com/norman/telescope) with the following command
from the [root](http://github.com/Yonaba/Jumper/blob/master/jumper) folder:```
tsc -f specs/*
```## Credits and Thanks
* [Daniel Harabor][], [Alban Grastien][] : for the [Jump Point Search](http://harablog.wordpress.com/2011/09/07/jump-point-search/) algorithm.
* [XueXiao Xu][], [Nathan Witmer][]: for the [JavaScript port][] of the algorithm.
* [Steve Donovan](http://github.com/stevedonovan): for the awesome documentation generator tool [LDoc](http://github.com/stevedonovan/ldoc/).
* [Srdjan Markovic](http://github.com/srdjan-m), for his tremendous feedback.## License
This work is under [MIT-LICENSE][]
Copyright (c) 2012-2013 Roland Yonaba.> Permission is hereby granted, free of charge, to any person obtaining a copy
> of this software and associated documentation files (the "Software"), to deal
> in the Software without restriction, including without limitation the rights
> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> copies of the Software, and to permit persons to whom the Software is
> furnished to do so, subject to the following conditions:
>
> The above copyright notice and this permission notice shall be included in
> all copies or substantial portions of the Software.
>
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
> THE SOFTWARE.[Jump Point Search]: http://harablog.wordpress.com/2011/09/07/jump-point-search/
[Lua]: http://lua.org
[L�ve]: http://love2d.org
[L�ve2d]: http://love2d.org
[L�ve 0.8.0 Framework]: http://love2d.org
[Dragon Age : Origins]: http://dragonage.bioware.com
[Moving AI]: http://movingai.com
[Nathan Witmer]: http://github.com/aniero
[XueXiao Xu]: http://github.com/qiao
[JavaScript port]: http://github.com/qiao/PathFinding.js
[Alban Grastien]: http://www.grastien.net/ban/
[Daniel Harabor]: http://users.cecs.anu.edu.au/~dharabor/home.html
[the algorithm and the technical papers]: http://users.cecs.anu.edu.au/~dharabor/data/papers/harabor-grastien-aaai11.pdf
[MIT-LICENSE]: http://www.opensource.org/licenses/mit-license.php
[heuristics.lua]: http://github.com/Yonaba/Jumper/blob/master/Jumper/core/heuristics.lua[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/Yonaba/jumper/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
[![githalytics.com alpha](https://cruel-carlota.pagodabox.com/5165385288dcb27776c96dce1a82e33d "githalytics.com")](http://githalytics.com/Yonaba/Jumper)