added settings for corredor generation
This commit is contained in:
@@ -1,2 +1,55 @@
|
||||
# desktop_dungeon_generator
|
||||
# Desktop Dungeon Generator
|
||||
|
||||
A Rust + `egui` desktop app for generating simple tabletop dungeon layouts on a scalable grid.
|
||||
|
||||
## 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`
|
||||
- Generate control:
|
||||
- `Generate New Layout` button increments seed and creates a new layout
|
||||
|
||||
## 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.
|
||||
|
||||
### 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
|
||||
|
||||
```bash
|
||||
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).
|
||||
|
||||
Reference in New Issue
Block a user