A lightweight and easy-to-use 3D game engine.
Developed with the software and tools below.
Doodle Engine (WIP) is a lightweight 3D game engine crafted in C++ and OpenGL, designed to allow developers to create captivating 3D scenes and games as easily and freely as doodling. The engine is divided into two primary components:
-
Doodle Engine: This core component manages rendering, input handling, resource management, and more, enabling developers to focus on creativity without getting bogged down by technical complexities.
-
Doodle Editor: A user-friendly editor that facilitates scene and resource management, complete with preview and debugging capabilities. This tool empowers creators to visualize their ideas in real-time.
To enhance flexibility and ease of development, Python is employed as the scripting language, leveraging its robust ecosystem and simplicity. Doodle Engine embodies the spirit of creativity and exploration, allowing developers to experiment freely and bring their imaginative concepts to life.
Doodle/
├── .clang-format
├── .clang-tidy
├── .clangd
├── .gitattributes
├── .gitignore
├── Doodle/
│ ├── pybind11/
│ │ ├── Bindings.cpp
│ │ ├── ...
│ ├── src/
│ │ ├── Application/
│ │ │ ├── Application.cpp
│ │ │ ├── ...
│ │ ├── ...
│ └── ...
├── Sandbox/
│ ├── src/
│ │ ├── main.cpp
│ │ ├── ...
│ └── ...
└── assets/
├── fonts/
├── icons/
├── models/
├── shaders/
├── textures/
└── ...
Ensure you have the following dependencies installed:
- C++ Compiler (e.g., MSVC for Windows)
- Xmake (C++ build system and package manager)
- Clone the repository:
git clone https://github.com/Candlend/Doodle
cd Doodle
-
Install Xmake if you haven't already. You can find installation instructions here.
-
Build the project:
xmake
After building, you can run the engine with:
xmake run
- Component-Based Architecture
- Entity Conponent System
- Implement basic rendering pipeline
- OpenGL backend
- ImGui-based Interface System
- Python scripting (WIP)
- Animation System
- Advanced rendering techniques
- Cross-platform support
This project is licensed under the Apache License v2.0 - see the LICENSE file for details.
Special thanks to the following projects for their invaluable references and inspiration for Doodle Engine:
- fmt: A fast and safe formatting library.
- Assimp: A library for importing various 3D model formats.
- Boost: A collection of libraries that provide support for tasks and structures such as smart pointers, threading, and file systems.
- stb: A collection of single-header libraries for image loading and other functionalities.
- spdlog: A fast C++ logging library.
- nlohmann_json: An easy-to-use C++ JSON library.
- GLFW: A library for creating windows and handling input.
- Glad: An OpenGL loader library that simplifies the use of OpenGL functions.
- GLM: A mathematics library designed for graphics programming.
- EnTT: A high-performance entity-component-system (ECS) library.
- ImGui: An immediate mode graphical user interface library.
- ImNodes: A library for creating node-based graphical interfaces.
- ImGuizmo: A tool for providing transformation controls within ImGui.
- pybind11: A library for binding C++ code to Python.