Skip to content

Command line ​

The package ships a dungeonmaker-js command. Run it without installing:

sh
pnpm dlx dungeonmaker-js generate --preset design3A --seed 42 --format json,png,tmj --out ./dungeons
pnpm dlx dungeonmaker-js generate --design ./my-cave.json --seeds 1..50 --format json --name "cave-{seed}"
pnpm dlx dungeonmaker-js generate --design ./old-design.txt --count 10 --rooms --entities list
sh
npx dungeonmaker-js generate --preset design3A --seed 42 --format json,png,tmj --out ./dungeons
npx dungeonmaker-js generate --design ./my-cave.json --seeds 1..50 --format json --name "cave-{seed}"
npx dungeonmaker-js generate --design ./old-design.txt --count 10 --rooms --entities list
sh
yarn dlx dungeonmaker-js generate --preset design3A --seed 42 --format json,png,tmj --out ./dungeons
yarn dlx dungeonmaker-js generate --design ./my-cave.json --seeds 1..50 --format json --name "cave-{seed}"
yarn dlx dungeonmaker-js generate --design ./old-design.txt --count 10 --rooms --entities list
sh
bunx dungeonmaker-js generate --preset design3A --seed 42 --format json,png,tmj --out ./dungeons
bunx dungeonmaker-js generate --design ./my-cave.json --seeds 1..50 --format json --name "cave-{seed}"
bunx dungeonmaker-js generate --design ./old-design.txt --count 10 --rooms --entities list

The other commands:

sh
pnpm dlx dungeonmaker-js presets                      # list the eleven presets
pnpm dlx dungeonmaker-js validate ./my-cave.json      # exit code 1 on errors
pnpm dlx dungeonmaker-js convert ./old-design.txt     # legacy text -> design JSON
pnpm dlx dungeonmaker-js schema dungeon > dungeon.schema.json
sh
npx dungeonmaker-js presets                      # list the eleven presets
npx dungeonmaker-js validate ./my-cave.json      # exit code 1 on errors
npx dungeonmaker-js convert ./old-design.txt     # legacy text -> design JSON
npx dungeonmaker-js schema dungeon > dungeon.schema.json
sh
yarn dlx dungeonmaker-js presets                      # list the eleven presets
yarn dlx dungeonmaker-js validate ./my-cave.json      # exit code 1 on errors
yarn dlx dungeonmaker-js convert ./old-design.txt     # legacy text -> design JSON
yarn dlx dungeonmaker-js schema dungeon > dungeon.schema.json
sh
bunx dungeonmaker-js presets                      # list the eleven presets
bunx dungeonmaker-js validate ./my-cave.json      # exit code 1 on errors
bunx dungeonmaker-js convert ./old-design.txt     # legacy text -> design JSON
bunx dungeonmaker-js schema dungeon > dungeon.schema.json

dungeonmaker-js --help lists every option of generate: --seed, --seeds (1..50,99, at most 10 000), --count, --format, --out, --name ({name} and {seed}; {seed} is required for several seeds), --rooms, --entities list|baked, --steps, --manifest, --embed-design, --scale. Existing files are overwritten; the output is reproducible.

Exit codes ​

CodeMeaning
0Success.
1Design, validation, generation or file error.
2Usage error: unknown command, missing or conflicting options, invalid seeds or formats.

Legacy design text is checked with parseDesignText first, so text the parser rejects (for example an N record with showMovie and storeMovie both 0) has to be fixed before the CLI generates it; dungeonmaker-js/core takes raw text directly.

From a build script ​

The same from a build script (Node only):

js
import { generateToFiles } from 'dungeonmaker-js/node';

await generateToFiles({
  preset: 'design3A',
  seeds: [1, 2, 3],
  formats: ['json', 'png'],
  outDir: './dungeons',
  output: { rooms: true },
});

The files are the ones described in Rendering and export. The Playground shows the matching command for every dungeon it displays: copy it and the CLI writes the very same files.

DungeonMaker 2.05 © Peter Henningsen. WebAssembly port, package and site created by spearwolf. Released under GPL-3.0-or-later. About · License