Simple Dungeon Generator
A simple dungeon generator for javascript (typed) and the browser with only one dependency (for seeded random numbers).
Highly configurable, but with sensible defaults.
Demo: https://purukitto.github.io/SDGdemo/
See the latest changelog here
Installation
npm
npm install simpledungeongenerator
yarn
yarn add simpledungeongenerator
Usage
Simplest dungeon with:
// ESM
import simpleDungeon from "simpledungeongenerator";
const dungeon = new simpleDungeon();
dungeon.drawToConsole();
// CJS
const simpleDungeon = require("simpledungeongenerator").default;
const dungeon = new simpleDungeon();
dungeon.drawToConsole();
<!-- Browser -->
<!-- path to bundle -->
<script src="./node_modules//simpledungeongenerator/dist/bundle.js"></script>
<script>
const dungeon = simpleDungeon();
const svgContainer = document.getElementById("svg-container"); // SVG container
dungeon.drawToSVG(svgContainer, 5, {
withIndex: true,
withColour: true,
});
</script>
Options
Option | Type | Default | Description |
---|---|---|---|
seed | string | "purukitto" | Seed for the random number generator |
maxH | number | 50 | Maximum height of the dungeon |
maxW | number | 50 | Maximum width of the dungeon |
type | string | "Base" | Type of the dungeon to generate (Currently has no effect) |
roomTries | number | 150 | Number of times to try to generate a room |
extraRoomSize | number | 0 | Extra size to add to the room |
windingPercent | number | 50 | Percentage of the dungeon to be winding |
tiles | Object | defaultTiles | Tiles to use for the dungeon |
startIndex | number | 1 | Index to start the dungeon from |
Properties
Property | Type | Description |
---|---|---|
map | object[][] | A 2D array representing the dungeon map. |
rooms | Room[] | An array of rooms in the dungeon |
tiles | Object | The tiles used for the dungeon |
Methods
Method | Description |
---|---|
drawToConsole() | Draws the dungeon to the console |
drawToSVG() | Draws the dungeon to an SVG |
Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
License
Acknowledgements
- seedrandom - Seedable random number generator
- Article - Fabulous article on dungeon generation
- changesets - Used for managing changelogs and releases
- Rollup - Used for bundling the library