cellular-dungeon
v1.0.0
Published
Procedural dungeon generator using a cellular automaton
Downloads
5
Maintainers
Readme
cellular-dungeon
Generate procedural dungeons
How to use:
The example code below will generate a dungeon with default options and output a visualisation like the one from the "Examples" section:
var Dungeon = require('./dungeon');
var level = new Dungeon(40, 20);
// Display the level:
level.grid.forEach(function(g) {
console.log(g.map(function(t) {
return t ? '*' : ' ';
}).join(''));
});
You can also use the library in the browser, using browserify.
Configuration
There's a few configuration options:
| Name | Description | Optional | Default |
| --- | --- | --- | --- |
| initialProbability | Probability of a tile being a wall in the initial (random) placing phase | y | 0.5 (50%) |
| iterations | Iterations of the cellular automaton running on the map | y | 5 |
| aliveThreshold | For every cell, if there's at least aliveThreshold
walls around it, it becomes a wall | y | 5 |
Examples
20x20 grid:
********************
* **** *
* ***** *
* ***** *
******* **
******* **
* **** ***
* ***
* ** ***
* *** **
* * *
* *
*** *
**** *
**** *
*** *
** * *
* *** *
* *** *
********************
40x20 grid:
****************************************
****** *** *****************
******* ******** **** ** ******
****** ************* *****
**** ************* *****
**** *************** ******
**** ***************** ********
*************************** *********
************************** **********
************************* ******* *
***** ********** ****** ***** *
**** ******** ***** ***** *
* * ******* ***** ***** *
* ** **** **** *
* *** ** *
* *** *
* ***** *
* *** ******* *** ** *
* ***** ******************** *
****************************************
Contributing
If you find a bug, have a question, improvement, idea or other suggestion, please feel free to open an issue. Pull requests are always welcome - to submit code please do the following:
- Fork this repository
- Create a new branch (bonus points for naming it neatly, e.g. "issue-3-adding-examples")
- Write the code you have in mind & push to your fork
- Create a pull request from your fork and branch into this repository's
master
branch
Hurray!