nylira-maze

A library for generating mazes.


Keywords
maze, mazes, procedural, roguelike, prims, prims-algorithm, backtracker, recursive-backtracker, growing-tree, theseus, ariadne, labyrinth, dungeon, dungeons
License
MIT
Install
npm install nylira-maze@0.3.1

Documentation

nylira-maze

A JavaScript library for generating maze data.

_________________________________________________________________________________
|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|__ |   |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|   |  __ |   |â–ˆ|â–ˆ|â–ˆ|  ______ |â–ˆ|â–ˆ|â–ˆ|
|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|  __ |___|________ |â–ˆ|â–ˆ|â–ˆ|â–ˆ| |___|â–ˆ| | |_________|â–ˆ|â–ˆ|â–ˆ| |â–ˆ|â–ˆ|â–ˆ|
|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|___|______ |â–ˆ|â–ˆ|â–ˆ|____ |â–ˆ|â–ˆ| |â–ˆ|â–ˆ|â–ˆ|___|â–ˆ|â–ˆ|â–ˆ|  __ |â–ˆ|â–ˆ| |â–ˆ|   |
|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|  _|  ____ |  _|â–ˆ|â–ˆ| |â–ˆ|â–ˆ|â–ˆ|   |  _____|  _|  ___|  _| |
|   |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|_____|â–ˆ|   |__ |â–ˆ|â–ˆ| |â–ˆ|â–ˆ|â–ˆ| |___|â–ˆ|  ___|â–ˆ|____ | |  _|
| | |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ| | |â–ˆ|_______|â–ˆ|â–ˆ|  _|â–ˆ|â–ˆ|  _|â–ˆ|â–ˆ|â–ˆ|   | | | |â–ˆ|
| |______ |   |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ| |________ |â–ˆ|â–ˆ|â–ˆ|______ |___________| |___| |â–ˆ|
| |â–ˆ|   |___| |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ| |â–ˆ|â–ˆ|â–ˆ|â–ˆ| |  ________ |__ |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|__ |â–ˆ|__ |
| |â–ˆ| | |â–ˆ|â–ˆ|________________ |â–ˆ| |â–ˆ|â–ˆ|â–ˆ|â–ˆ|___|â–ˆ|â–ˆ|â–ˆ|â–ˆ|_____|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ| |   | |
|_____|______ |â–ˆ|â–ˆ|â–ˆ|â–ˆ|  _____|â–ˆ| |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|  ________ |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ| | | | |
|  __ |â–ˆ|â–ˆ|â–ˆ| |â–ˆ|â–ˆ|â–ˆ|â–ˆ| |  __ |â–ˆ| |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|____ |â–ˆ|â–ˆ|______ |â–ˆ|â–ˆ|â–ˆ|___| | |
|__ | |  _____|â–ˆ|â–ˆ|   | | |â–ˆ|_____|   |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ| |â–ˆ|â–ˆ|  _____|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ| | |
|  _|___|  _________| |___|â–ˆ|  __ | |__________ |   | |â–ˆ|â–ˆ| |â–ˆ|   |â–ˆ|_________| |
|______ | |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ| |   |â–ˆ| |  _| |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ| | |___|â–ˆ|â–ˆ|_____| |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|  _|
|  _____| |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ| | | |â–ˆ| |_____|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ| | |â–ˆ|â–ˆ|â–ˆ|â–ˆ|  _____|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|__ |
|  _______|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ| | |__ |__ |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ| | |â–ˆ|â–ˆ|â–ˆ|â–ˆ| |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ| |
|__ |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|___|â–ˆ| |â–ˆ|______ |â–ˆ|â–ˆ|â–ˆ|â–ˆ| | |â–ˆ|â–ˆ|â–ˆ|â–ˆ|__________ |â–ˆ|â–ˆ|â–ˆ|â–ˆ| |
|  _|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ| |â–ˆ|â–ˆ|  ___|   |â–ˆ|â–ˆ|___|â–ˆ| |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|  ___|â–ˆ|â–ˆ|   | |
| |   |  ___|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ| |â–ˆ|â–ˆ|____ | | |â–ˆ|â–ˆ|â–ˆ|   | |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|___________| | |
|___|___|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|_____________|_________|___|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|___|

Installation

npm i nylira-maze --save

Usage

Basic usage:

var maze = require('nylira-maze')

// returns a 2d array of values for a 10x10 maze
maze()

// returns a 2d array of values for a 20x20 maze
maze(20)

// returns a 2d array of values for a 15x23 maze
maze(15, 23)

Parameters

maze(31, 23, 'growing-tree:newest', 0.65, undefined, true)
  • Parameter 1: Width.
  • Parameter 2: Height.
  • Parameter 3: The maze generation algorithm. Options:
    • "growing-tree": The Growing Tree algorithm. Defaults to random.
    • "growing-tree:random": Lots of dead ends, similar to Prim's Algorithm
    • "growing-tree:newest": Long windy passages, similar to "backtracker"
    • "growing-tree:middle": Lots of long straight passages.
    • "growing-tree:oldest": Only long straight passages.
    • "backtracker": The Recursive Backtracker algorithm. Tends towards long and twisted passages.
  • Parameter 4: Sparseness. A sparse maze will have some of its nodes removed. If you type in a value less than 1, e.g. 0.25, the maze will be 25% sparse. If you enter an integer value more than 1, e.g. 5, the maze will remove 5 nodes from each of its dead ends.
  • Parameter 5: The integer seed for the maze. Putting a value here will guaranteee you can recreate the maze over and over again.
  • Parameter 6: You can preview the grid by passing in true as the fifth parameter.

That function call above will generate the following:

_______________________________________________________________
|â–ˆ|â–ˆ|â–ˆ|____________________ |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|
|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|__ |  _|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ| |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|
|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|__ |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|  _|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|
|â–ˆ|â–ˆ|â–ˆ|____ |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ| |â–ˆ|â–ˆ|â–ˆ|â–ˆ|  _|â–ˆ|â–ˆ|â–ˆ|â–ˆ|  ___|â–ˆ|â–ˆ|
|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|________ |â–ˆ|â–ˆ|__ |â–ˆ| |â–ˆ|â–ˆ|â–ˆ|â–ˆ| |â–ˆ|â–ˆ|â–ˆ|â–ˆ|  _|â–ˆ|â–ˆ|â–ˆ|â–ˆ|
|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ| |â–ˆ|â–ˆ|â–ˆ|__ |____ |  ________  ___|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|
|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ| |â–ˆ|â–ˆ|  ______ |  ______  _|â–ˆ|â–ˆ|â–ˆ|â–ˆ|_____|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|
|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|__ |   |â–ˆ|â–ˆ|â–ˆ|___|â–ˆ|â–ˆ|  ____   |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|
|â–ˆ|____  ____  _| |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|  __ |â–ˆ|â–ˆ| |____ |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|
|â–ˆ|â–ˆ|  _|â–ˆ|â–ˆ| |â–ˆ|_|â–ˆ|â–ˆ|â–ˆ|â–ˆ|  _|â–ˆ|   |â–ˆ| |â–ˆ|â–ˆ|  _________|â–ˆ|â–ˆ|â–ˆ|
|â–ˆ|___|â–ˆ|â–ˆ|â–ˆ| |â–ˆ|â–ˆ|â–ˆ|  __  _|â–ˆ|â–ˆ| | |â–ˆ|__ |â–ˆ| |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|
|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|_|â–ˆ|â–ˆ|â–ˆ| |â–ˆ|_|â–ˆ|â–ˆ|  _| |â–ˆ|â–ˆ| |â–ˆ|__ |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|
|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|  _|â–ˆ|â–ˆ|â–ˆ|â–ˆ| |â–ˆ| |â–ˆ|â–ˆ|____ |__  __________ |
|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ| |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ| |â–ˆ| |â–ˆ|â–ˆ|â–ˆ|  _|â–ˆ|__   |â–ˆ|â–ˆ|   |
|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ| |â–ˆ|  _|â–ˆ|â–ˆ|â–ˆ|  ___|â–ˆ|   |â–ˆ|â–ˆ| |â–ˆ|â–ˆ|â–ˆ| | |â–ˆ|â–ˆ| | |
|â–ˆ|â–ˆ|â–ˆ|__  ______ |â–ˆ|â–ˆ|â–ˆ|â–ˆ| |â–ˆ|â–ˆ|â–ˆ| | |â–ˆ|â–ˆ| |â–ˆ|â–ˆ|â–ˆ| | |â–ˆ|â–ˆ| | |
|â–ˆ|â–ˆ|â–ˆ|â–ˆ| |â–ˆ|â–ˆ|â–ˆ| |â–ˆ|â–ˆ|â–ˆ|â–ˆ| |â–ˆ|â–ˆ|  _| |â–ˆ|â–ˆ| |â–ˆ|â–ˆ|â–ˆ| | |â–ˆ|â–ˆ| |_|
|â–ˆ|  _____|â–ˆ|â–ˆ|â–ˆ| |â–ˆ|â–ˆ|_____|â–ˆ|  _|â–ˆ| |â–ˆ|â–ˆ| |â–ˆ|â–ˆ|  _| |â–ˆ|â–ˆ| |â–ˆ|
|â–ˆ|_|â–ˆ|â–ˆ|  __ |   |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ| |â–ˆ|â–ˆ|_____|____ | |â–ˆ|_|â–ˆ|â–ˆ|_|â–ˆ|
|â–ˆ|â–ˆ|â–ˆ|___|â–ˆ|___|_|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|    __ |â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ| |_|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|
|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|_|_|â–ˆ|_|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|_|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|
|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|
|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|â–ˆ|

The maze at the top of the README was generated with this function:

maze(40, 20, 'growingtree:newest', 0.47, undefined, true)

Test

Check out a demo.

npm test

License

MIT