2026-03-24 09:27:53 -05:00
2026-03-24 09:27:53 -05:00
2026-03-24 09:25:44 -05:00
2026-03-05 22:04:33 +01:00
2026-03-06 20:25:12 +01:00

Desktop Dungeon Generator

Pre-release Notice: This program is incomplete and functionality is subject to change and it might break, you've been warned. though releases should at least be stable enough to run

A Rust desktop app for generating simple tabletop dungeon layouts.

Current Features

  • Resizable split layout:
    • Left panel: generation settings
    • Right panel: vector-rendered grid + dungeon preview
  • Grid controls:
    • Columns
    • Rows
  • Room controls:
    • Room count
    • Minimum room size (in grid cells)
    • Maximum room size (in grid cells)
    • Square Rooms Only toggle
  • Corridor controls:
    • Corridor Randomness (%) from 0 to 100
    • Dead-End Rooms (%) from 0 to 50
  • Door controls:
    • Door Frequency (%)
    • Room/Hallway Door Chance (%)
    • Locked Door Chance (%)
    • Allow Middle Corridor Doors toggle
  • Accessibility:
    • Colorblind Mode toggle (right panel)
    • Pattern/style encoding:
      • Rooms: crosshatch
      • Corridors: dotted fill
      • Walls: solid lines
      • Doors: long dashes
      • Locked doors: short dashes
      • Archways: dotted lines
  • Generate control:
    • Master seed input (u64)
    • Random seed button
    • Reset button
    • Export Image button
    • Export format selector: .png, .jpeg, .webp, .svg
    • Export uses an OS folder picker to choose save location

Generation Behavior

  • Rooms are stored as rectangles (x, y, width, height) and placed without overlap.
  • Corridors are stored separately as vector line segments between grid cells.
  • Every generated room is connected into one navigable network when possible.
  • A master seed drives deterministic generation, and internal subsystems derive their own sub-seeds from it.
  • Doors are generated from corridor adjacency:
    • Open doors are rendered in red
    • Locked doors are rendered in green
    • Doors are rendered as line segments on grid boundaries

Corridor Randomness

  • 0% randomness:
    • Uses shortest-path routing for room-to-room corridor paths.
    • Produces cleaner, direct corridor routes.
  • 100% randomness:
    • Uses noisy/randomized routing while still ensuring room connectivity.
    • Produces more wandering, less direct routes.
  • Intermediate values blend between the two behaviors.

Dead-End Rooms

  • Controls how many rooms should end up as dead ends (rooms with only one room-to-room connection).
  • 0% targets no dead-end rooms (except tiny edge cases where topology makes this impossible, such as only 2 rooms).
  • 50% is the upper cap to avoid over-constraining connectivity.

Run

cargo run

Notes

  • Rendering is vector-based in-app (egui painter), so zooming/scaling the preview remains crisp.
  • Room and corridor vectors are stored separately to support future export workflows (for example, SVG export).
  • Settings are persisted on exit and restored on startup from:
    • Windows: %LOCALAPPDATA%/desktop_dungeon_generator/settings.json
    • Linux: ~/.local/share/desktop_dungeon_generator/settings.json (or distro-equivalent local data dir)
S
Description
No description provided
Readme MIT
364 KiB
Languages
Rust 100%