Mikoto is an open-source Vulkan-based C++ engine developed by me for educational purposes. It is designed to provide a hands-on learning experience in graphics programming, focusing on the Vulkan API.
- Model loading
- Image loading
- Blinn-Phong lighting
- Entity component system
- Game object serialization (WIP)
- Linux
- Windows (WIP)
- Software Requirements
- CMake 3.18
- The Vulkan SDK
- A compiler capable of C++20 (G++ 12.3.0 was used for the tests)
- GLSL-C (The glsl compiler). This one is optional as there's precompiled binaries.
- Assets: Contains core engine/editor utilities, prefabs, and essential assets such as shaders.
- Common: Common development utilities, definitions of structures, data types, etc.
- Mikoto-Engine: The core engine project which powers Mikoto Game Engine.
- Mikoto-Editor: The editor project featuring the game scenes' editor.
- Mikoto-Runtime: A sample game showcasing the capabilities of Mikoto Game Engine.
Clone the repository. The project already comes with a CMake file ready to use. At the moment I only tested building on Linux, the process should be similar on Windows. If you have Visual Studio installed, CMake will generate VS project files by default, open the solution file and build the project from there. In case you have CLion, you could also just the CMake as a project and build just fine. The following steps just show how to build from a terminal.
# Clone the repository to your desired directory
git clone --recursive https://github.com/kateBea/Mikoto-Engine.git
# Change directory to the repo folder
cd Mikoto
# Make a build directory (preferable)
mkdir build
# and open the build directory
cd build
# Run CMake on the CMake file from the repo root directory
cmake -S .. -B .
# Finally build the project
cmake --build . --config Release
# and run the executable (on Linux, the executable should be in build folder)
./Mikoto-Editor/Mikoto-Editor
This project is done thanks to various third-party libraries:
- FMT (Modern formatting library)
- GLEW (Open GL extension Wrangler)
- GLFW (Multiplatform Library for Window, Event handling, etc.)
- GLM (Open GL Mathematics Library for C++)
- ImGui (Graphical User interface Library for C++)
- Spdlog (Fast C++ Logging Library)
The GLFW library is not necessary to be installed on the system since it is included as a submodule and build along with the project.
This project serves as a way for me to learn 3D graphics programming with modern rendering techniques, as such I intend to implement the features I learn along the way.
- Joey De Vries for the LearnOpenGL articles.
- Yan Chernikov for his YouTube videos and live streams.
- Cem Yuksel for his YouTube videos about graphics programing.
- Jason Gregory for the Game Engine Architecture book.
- Matt Pharr, Wenzel Jakob, Greg Humphreys for the Physically Based Rendering: From Theory to Implementation.
- Sascha Willems for the Vulkan examples.