This is a simple engine written in modern C++. For now and quite some time it will use OpenGL as its main rendering API, but the end goal is to integrate Vulkan.
- Blinn-Phong lighting
- Entity component system
- Model loading
- Image loading
- Game object serialization (WIP)
- Linux
- Windows (WIP)
- Software Requirements
- CMake 3.21 (This is what the project uses, but an earlier version is most likely to work)
- A compiler capable of C++20 (G++ 12.3.0 was used for the tests)
- The Vulkan SDK
- OpenGL library
- 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
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 integrate the things 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.