Skip to content

A highly configurable simple dungeon generator for node.js and the browser

License

Notifications You must be signed in to change notification settings

Purukitto/simpleDungeonGenerator

Repository files navigation

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.

GitHub release (with filter) GitHub issues GitHub Workflow Status (with event) npm npm bundle size

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

MIT

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