Tu-Maze is an enhanced, high-performance evolution of the Maze project, completely rewritten and accelerated using modern graphics libraries: SFML 3.0, GLM and OpenGL 4.1.
The core rendering engine features strict C++20 standard compliance, real-time animation clock tracking, and an automated multi-stage compilation framework.
Ensure you have CMake (v3.5 or higher) and a C++20 compliant compiler (such as GCC 15+, Clang, or MSVC) installed on your system.
To compile and run the main branch of the project in standalone development mode, use the following commands from the root directory:
cmake -B build -DCMAKE_BUILD_TYPE=Release
# or: make configurecmake --build build --parallel --config Release
# or: make buildUpon successful compilation, the compiled standalone binary along with its assets will be automatically placed in the centralized binary output folder: build/bin/.
./build/bin/tu-maze
# or: make runAlternatively, you can chain all the previuos steps in one single command:
make configure build runThis repository tracks the evolutionary milestones of the project using semantic versioning (SemVer) Git tags. A centralized automation utility script, export.sh, handles checking out historic milestones, filtering configuration configurations, and compiling them into a single parallelized collection.
To extract all tagged minor versions of the project into individual modular subdirectories (FCG_Stages/Stage_01, FCG_Stages/Stage_02, etc.) and automatically generate a unified wrapper CMakeLists.txt, execute:
./export.sh x
# or: ./export.sh exportThis script parses your Git tag history, safely copies tracked source files for each valid release version, and returns your workspace seamlessly to your active development branch.
Once exported, you can compile all evolutionary stages simultaneously in parallel through a single unified build tree by running:
./export.sh c
# or: ./export.sh compileAlternatively, you can chain both the export and the compilation pipelines sequentially in one single command:
./export.sh a
# or: ./export.sh allOnce compiled via the centralized multi-stage workspace, the independent executables for each specific milestone are isolated inside the build directory:
# To run Stage 1
cd FCG_Stages/build/bin/Stage_01
./tu-maze_01
# To run Stage 2
cd ../Stage_02
./tu-maze_02
# And so on...Or directly from the source directories:
# To run Stage 1
cd FCG_Stages/Stage_01
../build/bin/tu-maze_01
# or from
# To run Stage 2
cd ../Stage_02
../build/bin/tu-maze_02
# And so on...As the project evolves, the control scheme expands. Below are the specific commands mapped to each stage.
- Movement: W A S D (Move) | Shift (Sprint)
- Actions: F (Toggle torch)
- System: Esc (Pause Menu, close Leaderboard/Settings, Exit Main Menu)
- Mouse: Drag (Look around / Move camera)
- Movement: W A S D (Move) | Shift (Sprint)
- System: Esc (Pause Menu, close Leaderboard/Settings, Exit Main Menu)
- Mouse: Drag (Look around / Move camera)
- Movement: W A S D (Move) | Shift (Sprint)
- System: Esc (Pause Menu, close Leaderboard, Exit Main Menu)
- Mouse: Drag (Look around / Move camera)
- Movement: W A S D (Move) | Shift (Sprint)
- System: Esc (Toggle Pause Menu)
- Mouse: Drag (Look around / Move camera)
- Movement: W A S D (Move) | Shift (Sprint)
- System: Esc (Close application)
- Mouse: Left-Click + Drag (Look around / Move camera)
- Movement: W A S D (Move) | Shift (Sprint)
- Shaders: P (Phong) | F (Flat)
- System: Esc (Close application)
- Mouse: Left-Click + Drag (Look around / Move camera)
- Movement: W A S D (Move)
- Shaders: P (Phong) | F (Flat)
- System: Esc (Close application)
- Mouse: Left-Click + Drag (Look around / Move camera)
- Shaders: P (Phong) | F (Flat)
- System: Esc (Close application)
- Mouse: Left-Click + Drag (Rotate object) | Alt + Left-Click + Drag (Move object)
- Shaders: G (Gouraud) | P (Phong) | F (Flat) | C (Normal)
- System: Esc (Close application)
- Mouse: Left-Click + Drag (Rotate object) | Alt + Left-Click + Drag (Move object)