All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Conventional Commits.
0.7.0 - 2025-03-05: Keep compatibility with knossos
crate where possible.
- Library: Implement optional random seeding for maze algorithms to enable deterministic outputs.
- New method to format maze without saving to file.
- CLI: Introduce an optional
--seed
argument for reproducible maze generation.
- Maze builder now enforces positive width and height values.
- Image formatter now enforces positive passage and wall values.
- Resolve margin(0) and right shift bugs in maze rendering.
0.6.3 - 2025-03-02
- Added
Cell::walls_count
, a way to know how many walls aCell
has. - Added
Cell::is_end
, a way to know if a cell has 3 walls. - Added
OrthogonalMaze::ends
, a way to get all maze ends. - Added
MazeEndsPaths
resource andfind_maze_ends_paths
inpathfinding
feature so that you can pathfind all Maze Ends by cost. This can be opt-out with the featuresingle_end
. - Added
MazeEnd
component for Maze cells that have 3 walls. - Added example
bevy_multiple_ends
with pathfinding the secondary ends.
- Cargo update and bevy
0.15.3
- Added
Cell::to_bits
helper API for developer experience returns theCell::bits
representation.
- Improved examples
bevy_pathfinding
andbevy_ecs_tilemap
to useCell::to_bits
instead ofto_bits_str
. - Cargo update
to_bits_str
now returns&'static str
whereasto_bits_string
now returns aString
.
- Introduced feature
pathfinding
as default feature. - Added A*Pathfinding for
OrthogonalMaze
. - Added
Start
andGoal
components forOrthogonalMaze
. Support for Pathfinding. - Added extra functions to
CoordsComponent
:new
creates newCoordsComponent
fromx
andy
type usizexy
returns(usize, usize)
ofCoordsComponent
. Where(x, y)
- Added maze
CellSize
Resource as type f32. - Added examples:
- bevy_ecs_tilemap
- bevy_pathfinding
- Implemented
fmt::Display
forCoordsComponent
.
- Cargo update
0.5.1 - 2025-01-31
- Added Bevy Plugin to support
Reflect
types.
- Increase test coverage for type
CooordsComponent
.
- Forked to focus on Bevy Compatibility
- Add start coords for algorithms that support initial coords. Trait function changed from
Algorithm::generate(&mut self, grid: &mut Grid)
toAlgorithm::generate(&mut self, grid: &mut Grid, start_coords: Option<Coords>)
. None preserves previous behaviour.
- Add
Index
trait toOrthogonalMaze
andGrid
returning, now public,Cell
. OrthogonalMaze
can be a Bevy Resource.Cell
can be a Bevy Component.Cell
auxiliary methods (iter, into_inter, to_bits_str
).CoordsComponent
to mapCoords
as Bevy Component. MultipleFrom
trait implemented forCoordsComponent
.
- Apply more modern Rust code styling, including
rustfmt
andcargo clippy
. - Replace test bencher with
criterion
. - Move non-release dependencies to
dev-dependencies
.
- Run
cargo update
to update dependencies.
0.4.0 - 2023-11-01
-
Implement an option to randomly place start
S
and goalG
points along the borders ensuring a viable path between the two points for the GameMap formatter. -
Add the new option
--with-start-goal
to thegame-map
command on CLI.
0.3.0 - 2023-05-06
- New
AsciiNarrow
andAsciiNarrow
formatters replacingAscii::narrow()
andAscii::broad()
calls.
- Fix usage of old Ascii output types in code and docs.
- Move lib examples to the
examples
dir.cargo run --example name
to run the specified example.
0.2.0 - 2023-04-02
- Implement knossos CLI.
- Add new narrow and broad ASCII formatters.
- Fix method to validate if a maze is valid.
- Use bitflags to optimize and speed up maze generation process.
0.1.2 - 2022-04-11
- Orthogonal maze builder with 10 optional generation algorithms.
- Ascii, game map and image formatters to save the generated maze to files.