Skip to content

A random dude having fun creating a c++ OpenGl game engine

Notifications You must be signed in to change notification settings

yanis-fourel/CG-Engine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Brief

Simple 3d game engine written in c++ as part of a personnal project student done at Keimyung University.

Demos

Collisions between multiple sphere colliders, linked by springs :

Every ball are linked by springs to every other balls, and is influenced by the gravity. demo gif nº1

Multiple independant balls bouncing off the floor in a windy level :

Each individual ball is influenced by gravity and a wind pushing them to the side. The balls bounce off the floor and an invisible wall at the edge of the level demo gif nº2

Real-time interraction with mouse :

Each ball is drag-and-droppable with the mouse. demo gif nº2

Features

Rendering

Basic rendering system works with OpenGl. It supports :

  • basic shapes (sphere / cube / plane)
  • complex object which can be loaded from files like .obj using assimp library
  • 3d lines
  • Transparent objects
  • Textures

All the UI is done using ImGui

Physic

Basic non-deterministic hand-crafted physic engine. It supports :

  • Collisions between sphere and plane colliders
  • Custom user-defined constraint (such as the bridge ropes / sticks)

How it works

The entire project uses c++20.

I use entt as entity-component system.

The physic engine is a basic contrainst resolver between collision which iterates 50 times every tick. The only two type of collider supported are infinite planes and spheres.
Collisions only affect object's velocity, and leaves the rotation velocity untouched. The rotation velocity changes are still in progress, as well a box colliders.

All the rendering is done with OpenGl for the game, and ImGui for the UI.

Asset loading is done with assimp

About

A random dude having fun creating a c++ OpenGl game engine

Resources

Stars

Watchers

Forks

Packages

No packages published