A simple dungeon generator for roguelike games.
A simple dungeon generator for javascript (typed) and the browser with only one dependency (for seeded random numbers).
Highly configurable, but with sensible defaults.
!GitHub release (with filter) !GitHub issues !GitHub Workflow Status (with event)  !npm bundle size
Demo: https://purukitto.github.io/SDGdemo/
See the latest changelog here
``bash`
npm install simpledungeongenerator
`bash`
yarn add simpledungeongenerator
Simplest dungeon with:
`typescript
// ESM
import simpleDungeon from "simpledungeongenerator";
const dungeon = new simpleDungeon();
dungeon.drawToConsole();
`
`javascript
// CJS
const simpleDungeon = require("simpledungeongenerator").default;
const dungeon = new simpleDungeon();
dungeon.drawToConsole();
`
`html``
| 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 |
| 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 |
| Method | Description |
| --------------- | -------------------------------- |
| drawToConsole() | Draws the dungeon to the console |
| drawToSVG() | Draws the dungeon to an SVG |
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
- seedrandom - Seedable random number generator
- Article - Fabulous article on dungeon generation
- changesets - Used for managing changelogs and releases
- Rollup - Used for bundling the library