DigiPen Projects

These are projects made during my graduate degree at DigiPen Institute of Technology. Here, I learned to build custom game engines and features to make game creation easier for my team projects.

I did my concentration in physics because I knew that my teams would need a solid physics engine built for our custom game engines. Most DigiPen master’s students concentrate in graphics or AI, so I chose to challenge myself with one of the harder and less-travelled roads. I did still take some graphics classes and one AI class to learn some of these skills.

Square Invaders

Square Invaders is a game based off of Space Invaders that was created in a custom game engine that I built in my first semester at DigiPen. This engine has GameObject creation with the ability to add render and transform components to them. AABB collision checks determine when enemies or the player are defeated. This engine was built in C++ and uses OpenGL for graphics.

Duration: August 2022 - December 2022

Game Engine: Custom-Built C++/OpenGL

Physics Simulation

I pursued the physics track at DigiPen, where I created my own physics simulation in a custom-built C++ engine. Broad phase collision detection is done with axis aligned bounding boxes (AABBs). Narrow phase collision detection is done with the Gilbert-Johnson-Keerthi distance algorithm (GJK) and expanding polytope algorithm (EPA). Collision resolution uses impulses and can be further modified with collision events. Debug drawing includes translucent wireframes which turn from blue to red during a collision, AABBs in thicker blue lines, and arrows depicting each object's force in red and velocity in blue.

I started working with physics while working on the engine for Kartaclysm, which used the separating axis theorem (SAT) for narrow phase collision detection instead of GJK, but I continued to improve the simulation in the engine my team used for Monsoon.

Duration: January 2023 - December 2023

Game Engine: Custom-Built C++/Vulkan

Artificial Intelligence

For my Artificial Intelligence in Games class, I created behavior trees, A* pathfinding, and terrain analysis. I based my behavior trees project on Five Nights at Freddy’s, and I included player controls, as well as win and lose conditions (the professor said students rarely include player controls, but as a gameplay programmer, it didn’t feel complete without that!). The A* pathfinding project used an algorithm that is a combination of Dijkstra and Greedy Best First with multiple heuristic cost options. I also implemented rubberbanding and smoothing for nicer-looking paths. The terrain analysis project involved creating multiple layers to use in hide-and-seek with an enemy and a controllable player.

The final project was a group research project where we could chose what do make. My partners, Brandon L’Abbe and Lane Thompson, and I created a sparse voxel octree for navigating in an obstacle-filled 3D environment. We generated the SVO by breaking down layers that contained obstacles, and we modified the A* pathfinding algorithm to navigate through these layers.

Duration: May 2024 - July 2024

Game Engines: Custom-Built C++, Unity 3D

Graphics Engine

For my Advanced Computer Graphics classes, I created a scene with BRDF lighting, texturing, procedural textures, extra detail to surfaces with normal maps, a skydome, shadow mapping with two passes: one from the lighting perspective and one from the eye’s perspective, and reflection maps using a dual paraboloid algorithm. I also created two new scenes for different lighting calculations with deferred lighting and image-based lighting. Controls include rotating about the center of the scene, or switching to a first-person walking mode. Objects, reflections, and shadows can be toggled with a menu created using ImGui.

Duration: August 2023 - April 2024

Game Engine: Custom-Built C++/OpenGL

Curves and Surfaces Projects

For my math class on Curves and Surfaces, I created projects in Unity to show various kinds of curve generation algorithms. The first two projects create a curve that is affected by points, but is not guaranteed to pass through them. These curves can be calculated with various methods, such as with the Bernstein basis or nested linear interpolation. The third project creates a curve that passes through all points. This algorithm uses a divided difference table and the Newton form equation to achieve this. I also created this third project in 3D to showcase what it looks like with a third axis.

Duration: January 2024 - April 2024

Game Engine: Unity 2D/3D

Ray Tracing

For my Ray Tracing class, I rendered realistic-looking images with BRDF lighting containing spheres with solid colors, reflections, and refractions. For the final project where I could make whatever scene I wanted, I made a procedural texture to make the table look like a checker board, and I made unique shapes out of cubes and spheres using constructive solid geometry with intersections, unions, and differences. I combined the final shapes with reflection to create interesting objects in this little scene.

Duration: January 2024 - April 2024

Game Engine: Custom-Built C++/OpenGL

Previous
Previous

Kartaclysm (Custom-Built 3D Game Engine) - PC - Shipped

Next
Next

Unannounced Projects (Unreal 4, Unity 3D) - PC