Giter VIP home page Giter VIP logo

mikoto's Introduction

Mikoto Engine

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.

Mikoto Engine

Features

  • Blinn-Phong lighting
  • Entity component system
  • Model loading
  • Image loading
  • Game object serialization (WIP)

Supported platforms

  • Linux
  • Windows (WIP)

Requirements

  • 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.

Folder structure

  • 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.

Building

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

Dependencies

This project is done thanks to various third-party libraries:

  1. FMT (Modern formatting library)
  2. GLEW (Open GL extension Wrangler)
  3. GLFW (Multiplatform Library for Window, Event handling, etc.)
  4. GLM (Open GL Mathematics Library for C++)
  5. ImGui (Graphical User interface Library for C++)
  6. 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.

Goals

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.

Special thanks and mentions to

mikoto's People

Contributors

katebea avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.