Skip to content
/ Mikoto Public

Mikoto is a cross-platform game engine built on top of the Vulkan API and written using modern C++

License

Notifications You must be signed in to change notification settings

kateBea/Mikoto

Repository files navigation

Mikoto Engine

Mikoto is an open-source, Vulkan-based game engine written in modern C++. Developed as an educational project, the engine aims to provide hands-on learning experiences in graphics programming while helping me explore the capabilities of the Vulkan API.


Mikoto Engine


Mikoto Engine


Mikoto Engine


Supported Features

Feature Name Feature Description Supported
Model Loading Ability to load 3D models from various file types
Image Loading Support for loading and using textures/images
Blinn-Phong Lighting Basic lighting model implementation
Entity Component System Management of scene game objects through ECS
Game Object Serialization Save and load objects to/from disk ⚠️
Particle System Visual particle effects like smoke, fire, etc.
Vulkan Ray Tracing Support for Vulkan RayTracing
Physics Integration Basic collision detection and response
UI Integration (ImGui) Immediate mode GUI for runtime/editor UI
Animation System Skeletal animation and keyframe interpolation
Audio Support Load and play sound effects and background music

Supported Platforms

Platform Status
Linux Supported
Windows Work-in-Progress (WIP)

Requirements

Software Requirements

  • CMake 3.18 or higher.
  • The Vulkan SDK: Available from Vulkan.
  • C++20 Compiler: Tested with GCC 12.3.0.
  • GLSL-C: Optional, as precompiled shader binaries are included.

Folder Structure

  • Resources/: Extra utilities like screenshots, some models to play around with, etc.
  • Mikoto-Engine/: The core engine that powers the Mikoto Game Engine.
  • Mikoto-Editor/: The editor project for creating and managing game scenes.
  • Mikoto-Runtime/: A sample project that demonstrates the engine's features.

Building Mikoto Engine

Follow the steps below to build Mikoto Engine. Currently, the building process has been tested on Linux and Windows.

Steps:

  1. Clone the repository:

    git clone --recursive https://github.com/kateBea/Mikoto.git
  2. Navigate to the project directory:

    cd Mikoto
  3. Create a build directory:

    mkdir build && cd build
  4. Run CMake:

    cmake -S .. -B .
  5. Build the project:

    cmake --build . --config Release
  6. Run the executable:

    ./Mikoto-Editor/Mikoto-Editor

For Visual Studio users, CMake will generate .sln files by default. Simply open the solution in Visual Studio and build from there. CLion users can open the project directly and build it without extra steps.


Dependencies

The development of Mikoto Engine is made possible thanks to these fantastic third-party libraries:

Library Description Link
FMT Modern C++ formatting library fmtlib/fmt
GLEW OpenGL Extension Wrangler Library GLEW
GLFW Multi-platform library for window management glfw/glfw
GLM OpenGL Mathematics library g-truc/glm
ImGui Immediate Mode GUI library ocornut/imgui
Spdlog Fast C++ logging library gabime/spdlog
EnTT Fast and efficient Entity-Component System skypjack/entt
Volk Meta-loader for Vulkan API zeux/volk
Assimp Asset importer library assimp/assimp
VulkanMemoryAllocator Memory allocation for Vulkan resources GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator
ImGuizmo Gizmo manipulator for ImGui CedricGuillemet/ImGuizmo
yaml-cpp YAML parser and emitter for C++ jbeder/yaml-cpp
nativefiledialog-extended File dialog library for native UIs btzy/nativefiledialog-extended
JoltPhysics Physics engine library jrouwe/JoltPhysics
tomlplusplus TOML configuration file parser for C++ marzer/tomlplusplus

Note: The required libraries are included as a submodules in the project and do not require separate installation, just need to clone the repository with --recursive flag.

Goals

The primary goal of Mikoto Engine is to serve as a learning platform for exploring modern graphics programming techniques. Features are implemented progressively as new concepts and ideas are explored.


Special Thanks

The development of Mikoto has been inspired by the work of the following:


Future Development

Mikoto Engine is still in its early stages, and additional features and optimizations will be added over time. Feedback is always welcome!


License

This project is licensed under the Apache License 2.0.

You are free to use, modify, and distribute this software under the terms of the Apache License 2.0. A copy of the license is included in the repository.

For the full license text, see the LICENSE file in the repository.

About

Mikoto is a cross-platform game engine built on top of the Vulkan API and written using modern C++

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published