Current Projects

After graduating from DigiPen in 2024, I wanted to continue making games while looking for work. I started a longer form project as both a means to keep my skills sharp and show potential employers what I could do! All I needed was a proper muse, and I ultimately chose The Amazing Digital Circus after a pan-out of the environment in episode 2.

What was initially poised to be a short technical demo quickly grew into something much more as I continued pouring myself into it, and now I have a unique, rich, and full-featured demo complete with ~45 minutes of content, with systems built to scale!


The Amazing Digital Circus - Tribute Game

DigiPen’s objective for this 2nd year gaming project was to build an understanding of how games work from the bottom up by building our own engine. Since the entire project was about building these lower level capabilities, it gave me the chance to learn C++, implement base engine features, and connect them with other programmers.  While other members of the team contributed design, I was 100% focused on developing my coding skills during this project. It is the only project in my portfolio where I did not have any design input. 

My focus on this project was to learn as much about lower-level programming as I could through the creation of a custom engine. The engine utilized C++ and OpenGL for rendering graphics. As a programmer, it was my job to: 

  • Create and implement the base physics system to handle movement for all objects. 

  • Use JSON files to manage serialization & designer integration. 

  • Implement a collision algorithm which calculated and then tracked the results for every object. 

  • Utilize manual memory allocation for dynamic lists and objects. 

As the engine was in its infancy, I was responsible for creating and maintaining the physics system that managed the behavior of all objects in the game. Later, I worked with our graphics programmer to link this system with his rendering system to get objects moving on screen. To accomplish this, I: 

  • Implemented and maintained the system used to move all objects within the game world. 

  • Set up objects in a way to store coordinates and prepare for outside input. 

  • Linked with the rendering pipeline, input system, and base GameObjects to get things moving on-screen. 

  • Made the system serializable for use with JSON files, allowing for designer input. 

Later in the project, my task was to implement the collision algorithm SAT (Separating Axis Theorem). This included the calculations, collision handling, and any physics interaction. Work included: 

  • Adding a rudimentary bounds check using AABB (Axis-Aligned Bounding Box) for performance and speed optimization. 

  • (Note: implementing both algorithms gave us the speed of AABB + the precision and features of SAT when these were needed.)

  • Implementing the Separating Axis Theorem, which offered optimization and the ability to rotate objects. 

  • Developing a velocity system to manage knockback and improve the quality of movement for all objects in the game.

Another one of my contributions was to create a UI system that was flexible enough to be used throughout the game. The system supported all of the menu types we needed - handling the main menu, pausing, and the end-of-game screen which tallied the player’s points. This deliverable included:

  • Creating the system to house buttons, picture elements, and their arrangements which could be used for any menu in the game. 

  • Storing the menus in serializable vectors to easily make changes later. 

  • Implementing unique behaviors for each menu, such as pausing or dynamically adjusting element size.