A Lua library for procedural generation of mazes, rooms, and dungeons for roguelikes and dungeon crawlers.
Astray is a Lua library for procedural generation of mazes, rooms, and dungeons. It provides a flexible system for creating diverse layouts suitable for dungeon crawlers, roguelikes, and other games requiring procedural map generation. The library solves the problem of manually designing game levels by offering configurable algorithms that generate unique dungeons each time.
Game developers working on roguelikes, dungeon crawlers, or any Lua-based game that requires procedural map generation. It's particularly useful for indie developers and hobbyists creating 2D tile-based games.
Developers choose Astray for its fine-grained control over dungeon characteristics, simple Lua integration, and customizable ASCII output. Its modified depth-first search algorithm produces organic-feeling dungeons with configurable room placement and corridor behavior.
Astray is a lua based maze, room and dungeon generation library for dungeon crawlers and rougelike video games
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Offers fine-tuning via mods for corridor winding, sparseness, dead ends, and room properties, enabling diverse dungeon feels as shown in the configurable ranges.
Generates maps with user-definable symbols for walls, doors, and spaces through the symbols table, ideal for text-based or terminal games.
Simple constructor with Astray:new() and methods like Generate() and CellToTiles() make integration quick, per the clear quick start example.
Uses modified depth-first search to create natural-looking mazes and rooms, avoiding rigid grid patterns in the sample output.
Input dimensions are halved and produce uneven maps (e.g., 39x39 from 40x40), which can be unintuitive and complicate level design.
Outputs only ASCII representations, requiring additional rendering logic for graphical games, as admitted in the customization section.
Modifiers like changeDirectionMod (1-30) lack detailed documentation on how values affect generation, leading to trial-and-error tuning.