Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/adi3120/Fazen2d/llms.txt

Use this file to discover all available pages before exploring further.

Fazen2d has no package manager distribution — you clone the repository and compile it directly using a C++ toolchain. There are no third-party runtime dependencies beyond the Windows SDK that ships with MinGW or Visual Studio Build Tools, which keeps the setup process short and the project entirely self-contained.

System Requirements

RequirementDetails
OSWindows 10 or later
Compilerg++ with C++11 support (MinGW / MSYS2 recommended)
Build toolGNU Make (make / mingw32-make) or a manual g++ invocation
Consolecmd.exe or a compatible terminal configured with a Unicode font

Installing the Toolchain

Fazen2d’s Makefile and documented build commands are written for the g++ compiler. The repository does not include an officially documented MSVC workflow — no .vcxproj or CMakeLists.txt is provided.If you already have Visual Studio installed and prefer to stay in that environment, you can adapt the build manually (compile each .cpp with cl /std:c++11 /c and link with link), but you are on your own for that path. For the smoothest experience, install MinGW or MSYS2 alongside your Visual Studio installation and use g++ as described above.

Cloning Fazen2d

Open a terminal in the directory where you want to work, then run:
git clone https://github.com/adi3120/Fazen2d.git
This creates a Fazen2d/ folder containing the full source tree. No additional npm install, pip install, or similar step is required.

Repository Layout

Fazen2d/
├── include/
│   ├── headers/            ← Public API headers (.h)
│   │   ├── Fazen.h
│   │   ├── Box.h
│   │   ├── Circle.h
│   │   ├── Colors.h
│   │   ├── ConsoleHandler.h
│   │   ├── GraphicsRenderer.h
│   │   ├── KeyboardHandler.h
│   │   ├── Line.h
│   │   ├── MathUtils.h
│   │   ├── MouseHandler.h
│   │   ├── Point.h
│   │   ├── Shape.h
│   │   ├── StateManager.h
│   │   ├── Text.h
│   │   └── TimeManager.h
│   ├── Box.cpp             ← Implementation units
│   ├── Circle.cpp
│   ├── Colors.cpp
│   ├── ConsoleHandler.cpp
│   ├── Fazen.cpp
│   ├── GraphicsRenderer.cpp
│   ├── KeyboardHandler.cpp
│   ├── Line.cpp
│   ├── MathUtils.cpp
│   ├── MouseHandler.cpp
│   ├── Point.cpp
│   ├── StateManager.cpp
│   └── TimeManager.cpp
├── main.cpp                ← Demo entry point
└── Makefile                ← Build script
include/headers/ is the public API surface. Every class declaration, enum, and interface lives here. Your code should #include paths under this directory. include/*.cpp are the paired implementation files. Each .cpp is named after its corresponding header (e.g., Box.cpp implements Box.h) and is compiled automatically by the Makefile — you do not need to list them individually. main.cpp is the demo entry point. It instantiates the Fazen engine, runs the render loop, and demonstrates the built-in shapes in motion. It is the natural place to start experimenting.

Including Fazen2d in Your Project

You have two practical options: Option 1 — Use the repository as-is (fastest start) Write your application logic directly in main.cpp. The Makefile compiles everything in one step, so your code is automatically linked against all subsystems. This is ideal when you are learning the API or prototyping. Option 2 — Copy include/ into your own project Copy the entire include/ directory into your project tree, then point your compiler at it:
#include "include/headers/Fazen.h"
Compile all include/*.cpp files together with your own source files:
g++ -std=c++11 include/*.cpp your_program.cpp -o your_program
This lets you version your project independently and keep Fazen2d as a vendored dependency.

Build docs developers (and LLMs) love