Terrian Builder

A terrain editor built into my C++ game engine. Allows terrain assets to be manipulated with a collection of GPU-based brushes. Utilizes compute shaders to create a responsive system for designing a large, detailed game world. A terrain window in the GUI allows the user to switch between brushes and adjust settings quickly. Terrain assets are functional in-game with various queries and a quad-tree for fast collision detection.

Full Code Demo | Engine Source | Paper


Game Engine World Editor

A desktop world editor for my C++ game engine that can be used to design a game world without the user needing to write code or recompile. Includes a GUI, transform gizmos for manipulating objects, scene saving and loading, undo and redo from a history, copy and paste, and an in-editor game launcher for fast iteration.

Editor Code Demo | Engine Source | Paper


Skinned Animation System

A GPU-accelerated animation system. Converts animation data embedded in GLTF models into a runtime format, which is loaded as an animation clip in the engine. Compute shaders implement the skinning algorithm and bone data is piped into the character vertex shaders. The engine provides an Animator component which can be attached to a skinned mesh object to control the current clip and playback speed.


Space Truck Simulator

I led a team of students to develop ‘Space Truck Simulator’, a virtual reality experience. I implemented a system to simulate a large area of outer space within the limits of the engine and I learned the fundamentals of virtual reality development and its layers of abstraction in Unity (C#).


Overcast

A minimalist city simulator built in Rust. Utilizes the parallelism of Bevy by allowing systems to run in parallel. In addition, vehicle AI behaviors execute with parallel ECS queries to maximize performance.

Source


Space Invaders - Design Patterns Analysis

An analysis of object-oriented design patterns with a full recreation of Space Invaders in C#.

Systems Design Doc


Global Game Dev Analysis

How the unique challenges of game development impact global engineering techniques. I discuss practices in source control, testing, and software architecture.

Paper


Multithreaded Audio Engine

A low-level audio player in multithreaded C++ using XAudio2. Includes async loading for large audio clips, seamless clip streaming with callback threads, and a priority system for managing multiple sounds. The library provides an object-oriented programming interface for loading, playing, pausing, modifying, and combining sounds.


This Portfolio Website

This website was made by me, using Jekyll, and deployed with Github pages.

Source


Undergrad Work

Software Development