From d5d4646f1414d4850f751b7fefdebf0b0ea42c5e8b8fd8e8fbcc27710d1a1c9b Mon Sep 17 00:00:00 2001 From: Foxarc Date: Sun, 14 Jul 2024 22:32:23 +0200 Subject: [PATCH] Update README.md for first release. --- README.md | 39 ++++++++++++++++++++++++++++++++++++++- demo.png | Bin 0 -> 38117 bytes 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 demo.png diff --git a/README.md b/README.md index d359ba5..7d8a27f 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,39 @@ -# maze_generator +# Maze generator +A dependency of a video game *(Furries in the Backrooms)* made by Foxarc. +![Screenshot of a maze being generated for a surface size of 57x27 with a case size of 1.](demo.png) + +The maze generator is based on [Randomized depth-first search](https://en.wikipedia.org/wiki/Maze_generation_algorithm#Randomized_depth-first_search) with an [Iterative implementation (with stack)](https://en.wikipedia.org/wiki/Maze_generation_algorithm#Iterative_implementation_(with_stack)) approach for optimization. +Furthermore, the maze generator is optimized to only use a **single layer of the maze to open the walls**: this make uses of **the 8 allocated cases surrounding a free case to be walls (purple cases)** avoiding the need for another layer to open the walls. Herefrom, the algorithm is modified to jump every 2 cases as if there was nothing in-between except for when a wall needs to be opened. + +## Features + +- When recording is enabled: + - Export the maze animation to a JS file that can be replayed in a web browser. + - Locate each case where there is a 3-way intersection. +- Generate a maze for any X and Y. +- Export the maze into a CSV file. +- Real-time update by hovering over a case (tooltip) while the maze is being generated. +- Progress bar for how many cases to visit before the end of the generation. +- Upscaling **(before running the animation)**. +- Localization in English, French, Spanish, German and Polish. + +## License + +GNU AGPLv3 + +> Maze generator, version 1 +> Copyright (C) 2024 Foxarc +> +> This program is free software: you can redistribute it and/or modify +> it under the terms of the GNU Affero General Public License as +> published by the Free Software Foundation, either version 3 of the +> License, or (at your option) any later version. +> +> This program is distributed in the hope that it will be useful, +> but WITHOUT ANY WARRANTY; without even the implied warranty of +> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +> GNU Affero General Public License for more details. +> +> You should have received a copy of the GNU Affero General Public License +> along with this program. If not, see . \ No newline at end of file diff --git a/demo.png b/demo.png new file mode 100644 index 0000000000000000000000000000000000000000000000000000000000000000..1146947fa4326c3c04448cf1ae952555ae0694614470728e09957ccb3b570e45 GIT binary patch literal 38117 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 literal 0 HcmV?d00001