About This Project
The Super Bongo Engine is a custom OpenGL graphics engine that I have been developing with peers from my college program. Built from scratch, it incorporates a variety of libraries, including audio support through FMOD, asset importing via Assimp, networking using ENet, and user interface functionality with ImGui. The primary goal of this engine is to create a comprehensive set of development tools that facilitate the game-creation process.

My Contributions
During my work on the Super Bongo Engine, I was responsible for implementing several core systems, including the complete user interface, GJK collision detection and response, mouse-picking functionality, and a custom reflection system. The reflection system I developed allowed objects to dynamically appear in the editor as soon as a new class was created, streamlining the workflow and enhancing the editor's usability.​​​​​​​
Editor Preview
Here is the current state of our engine. We drew visual inspiration from both Unity and Unreal Engine 4 when designing the interface layout. By using IMGUI, we have successfully docked all our windows together to create a cleaner and sleeker appearance. Below, I list a few of our important interface panels.
Content Browser 
Automatically scans our engine directories to spawn objects in scenes without specifically defining them in an array and allows model replacement via drag-and-drop.
Properties
Examines all components in the selected object and shows any specified information.
Debug
Enables us to display and search for specific debug print statements, such as loading or rendering errors.
Alternate Rendering Modes
Our editor allows users to select their preferred rendering mode. The four most important render modes available can be switched in the viewport at runtime, as shown on the left.
External Libraries
We have integrated several key libraries to enhance our development process: 
1. FMOD: Manages our in-engine audio systems. 
2. TinyXML2: Saves the current scene during runtime and ensures proper loading on restart. 
3. ImGUI: Facilitates object interaction in a scene without navigating classes. 
4. Assimp: Improves model loading and rendering efficiency. 
These libraries streamline development and enhance our application's functionality.
Albedo Texture
Albedo Texture
Lighting/GBuffer Texture
Lighting/GBuffer Texture
Normals Texture
Normals Texture
Position Texture
Position Texture
ASSIMP
ASSIMP
Video Preview
Back to Top