PXG3D

Go Back
Github

In order to learn more about how game engines work under the hood, and increase my proficiency in C++, I decided to develop a 3D Game Engine with C++ and OpenGL. This project took 1.5 months to develop and has the following features, mentioned below:

1. A Custom 3D Physics Engine

The PXG3D uses a custom physics engine. Broadphase collision detection is done with an octree, For narrowphase collision detection it uses Seperating Axis Test with optimizations for edge checks. It uses the Sequential Impulse collision solver with feature-id warm starting. More information about this can be found here.

2. Lighting with the Phong Reflection Model

PXG3D uses the phong reflection model to light a scene. It supports all three types of lights (point,directional, and spotlight) and supports multiple lights in one scene.

3. GameObject-Component system for its runtime Game Object model.

A GameObject in PXG3D has a list of components. These components would have access to the GameObject its owned by and can modify its properties. Components can be easily added to modify its behaviour. I considered implementing ECS but i deemed this to be unecessary due to the fact that the target game only has a relatively low number of game Objects (less than 100). This means that the memory efficiency offered by ECS was not necessary.