Algorithms

RNGMaps provides a lot of algorithms with many variants and parameters. This page presents all of them, including links and cheat sheets.

Algorithms using Snippets

Prim’s Maze Algorithm

Classical maze with cutOffDeadEnds and MergeDeadEnds disabled
Maze with cutOffDeadEnds and MergeDeadEnds enabled

You need at least one „snippets“ Map below your Space Map.

You can add optional parameters; the order will affect the output maze.

$dungeonGenerator.prims()
.cutOffDeadEnds(n)    // optional
.mergeDeadEnds(p)     // optional
.generate()

...
.finalize()

cutOffDeadEnds

cutOffDeadEnds(n)    // n = natural number > 0

This method looks for corridors with dead-ends and shortens them. The argument n stands for the number of repetitions, e.g., having a corridor with a length of 4 and using n=2, the corridor will have a length of 2 afterward.

mergeDeadEnds

mergeDeadEnds(p)    // p = decimal number 0.0 < p <= 1.0

This method looks for dead-ends and will create new tunnels back into the maze, lowering the number of dead ends and making the maze imperfect, allowing multiple solutions for the Player. The argument p stands for the probability that a tunnel is created; 1.0 = always, 0.0 = never.

Random Walk

$dungeonGenerator.randomWalk()
.start("bottom")
.exit("top")
.allowGoingBack(true / false)     // optional
.allowLargeAreas(true / false)    // optional
.allowRevisit(true / false)       // optional
.generate()

...
.finalize()

„start“ and „exit“ are required. Other parameters are optional.

allowGoingBack

Default: true. If disabled, the step-wise Random Walk is not allowed to walk back to its starting point, e.g. when start = „bottom“ the step-wise walker can walk only to the left, right, or top.

allowLargeAreas

Default: true. If disabled, the walker walks in a way that no large Areas are built.

allowRevisit

Default: false. If enabled, the walker can walk on cells that he already visited before.

Rooms and Corridors

Example using the Snippets

This algorithm draws some rooms at randomly chosen positions and then connects them using a spanning tree.

$dungeonGenerator.roomsAndCorridors()
.minRooms(5)
.maxRooms(5)                        // optional
.minRoomWidth(1).maxRoomWidth(3)    // optional
.minRoomHeight(1).maxRoomHeight(2)  // optional
.generate()

...
.finalize()

All parameters are optional.

Algorithms not using Snippets

Cave

This algorithm uses noise maps and path finders to generate a map.

Rooms and Corridors

This algorithm draws some rooms at randomly chosen positions and then connects them using a spanning tree. You can define different types of rooms, such as living room, pantry, kitchen, which will all appear on the map at the same time.

World Map

This algorithm uses noise maps to generate a beautiful world map. By default, it assigns each continent with a biome, then it adds mountains, rivers, towns, and more for you!

Static Map

Not a „real“ algorithm. It takes an ordinary Map and lets you apply all the features to randomly spawn assets.