Skip to content

qualeus/engine

Repository files navigation

Qualeus engine banner

Version Language Roadmap License Build

Table of Contents
  1. About The Project
    1. Topics
    2. Modularity
  2. Getting Started
    1. Prerequisites
    2. Installation
  3. Contributing
  4. License
  5. Authors

1. About The Project

This project started from a personal challenge: recreate physical principles in a simulation running in real time. I also wanted this project to easily convey some understanding of how it works, as well as analysis and debugging tools.

1.1. Topics

The objective was to learn more about such topics as:

  • Gravity (Classical mecanics one, he goal was not to model objects at the molecular level)
  • Collisions (With Newton's 3rd law)
  • Friction (Approximation with dissipation in heat)
  • Electromagnetic fields (IN WORK, see https://github.com/mlhoutel/Fields)
  • Fluids (IN WORK)

This project also allows me to familiarize myself with several areas of programming, such as:

  • Graph Theory and advanced Data structures like Quadtrees
  • C++ programs/libraries compilation (Mingw batch/ CMake)
  • Memory allocation and Classes Inheritances
  • Optimisation and Algoritmics
  • Threads and Graphical acceleration with CUDA (?)

As this program is oriented towards testing and comparison, a modular structure has been set up.

1.2. Modularity

  • Precision (at build time):
    • Integers
    • Float
    • Double
  • Dimension (at build time):
    • 2D
    • 3D
  • Broad phase structure (at run time):
    • Spacial grid
    • Quad-tree
    • kD-tree
  • Integration method (at run time):
    • Euler
    • Verlet
    • RK4

(back to top)

2. Getting Started

2.1. Prerequisites

The project is developed according to c++17 standards.

To build the engine, you will need the CMake build tool v3.8+

You will also need a compiler for c++17, make sure yours is compatible (gcc v8+, see support)

The program has been tested with the following compilers:

2.2. Installation

  1. Download the project source or clone it with git: git clone https://github.com/qualeus/engine.git
  2. Create a build directory: cd engine && mkdir build
  3. Build the project with Cmake: cd build && cmake -G "YOUR_COMPILER" -DBUILD_TESTS=ON ..
  4. Build the targets and run tests: cmake --build . && make CTEST_OUTPUT_ON_FAILURE=TRUE test

example with mingw64:

cd build && cmake -G "MinGW Makefiles" -DBUILD_TESTS=ON ..
cmake --build . && mingw32-make CTEST_OUTPUT_ON_FAILURE=TRUE test

(back to top)

3. Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

4. License

Distributed under the MIT License. See LICENSE.txt for more information.

5. Authors

  • LHOUTELLIER Maël - Initial work - mlhoutel

(back to top)