Custom Game Engine

An Overview

This project is an OpenGL-based game engine that I have been working on in my freetime. I recently expanded the scope of this project to encompass a game engine, since I liked working on it so much. I'm looking forward to developing a couple of simple 3d games using this engine.

When I began working on this project, I mostly followed an online graphics programming course (LearnOpenGL) to get started. Now I am adding features as I see fit; Some recent additions include a terrain renderer and height sampler for collision. I recently completed my second semester of physics, and am looking forward to apply that knowledge when I implement the physics system. In particular, I plan on implementing force fields for modeling things like gravitational and magnetic fields (Similar to what's done in Super Mario Galaxy).

What can it do?

Since I recently decided to convert this project to a game engine, it only supports a humble set of features outside of graphics. I am actively working on improving the terrain that is currently implemented, and plan on adding a physics simulation once I like the terrain implementation. This project currently supports loading models, rendering terrain from a heightmap, rendering simple lighting (phong lighting), and sampling terrain height for collision. I am currently working on implementing a terrain chunking system. This will allow me to implement a LOD system that can dynamically swap lower and higher resolution terrain meshes in the future to improve performance. I intend to implement the LOD using chunk mipmapping.

Demo


How was it made?

This project is written in C++. It uses a couple of libraries for small tasks and multi platform support. It uses GLFW and GLAD to simplify using OpenGL on different platforms, and GLM for matrix and vector math. It also uses stb_image to load raw image data. ASSIMP is used to load raw model data into custom model classes.