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.