BattleBeyz is the first 3D Beyblade game with accurate spinning top physics.
I also wanted to learn from the process of creating a game from scratch, so everything is written in C++ (OpenGL / ImGui) with no physics libraries. Any collaboration or feedback is welcome!
- Centralized Game Engine and States
- Realistic Beyblade Physics
- JSON-style saving and loading
- Profile and Input Manager
- 3D Camera Control and Rendering
- Texture, Mesh, Lighting/Shading
- Logging and Debug Mode
- Mesh import
- Pre-match selection screen and reset
git clone https://github.com/TheRickyZhang/BattleBeyz
cd BattleBeyzMost dependencies are automatically downloaded by CMake. You only need to install a few system libraries:
No additional system dependencies required. CMake will fetch everything automatically.
sudo apt install build-essential cmake libfreetype-dev zlib1g-dev \
libwayland-dev libxkbcommon-dev libx11-dev libxrandr-dev \
libxinerama-dev libxcursor-dev libxi-devsudo pacman -S base-devel cmake freetype2 zlib wayland libxkbcommon \
libx11 libxrandr libxinerama libxcursor libxibrew install cmake freetypecmake -S . -B build
cmake --build build -j$(nproc)The first build will take longer as CMake downloads dependencies (GLFW, GLEW, GLM, ImGui, etc.).
./build/BattleBeyz- Open
build/BattleBeyz.slnin Visual Studio 2022 - Choose Debug or Release configuration
- Run with
Ctrl+F5or debug withF5
.\build\Debug\BattleBeyz.exe
# or
.\build\Release\BattleBeyz.exeBattleBeyz/
├── src/ # Source files
├── assets/ # Game assets (textures, models, etc.)
├── build/ # Build files (generated by CMake)
└── CMakeLists.txt # CMake build configuration
To generate API documentation using Doxygen:
# Install doxygen if needed (Arch: pacman -S doxygen, Ubuntu: apt install doxygen)
doxygen Doxyfile
# Open docs/html/index.html in your browserThe following libraries are automatically fetched by CMake during configuration:
- GLFW - Window and input handling
- GLEW - OpenGL extension loading
- GLM - Mathematics library
- Dear ImGui - Immediate mode GUI
- ImGuiFileDialog - File dialog for ImGui
- nlohmann/json - JSON parsing
- stb - Image loading
- tinyobjloader - OBJ model loading
