I am a gameplay programmer and graduate of RPI with a dual major in Computer Science and Game Design. My specialty is Unity 3D programming and Python, but I’m comfortable in many languages. I am one of the two programmers on DANG!, an indie studio created by RPI students, and below are some of the games I’ve worked on.

Your New Face

In Your New Face, you own a boutique where instead of styling customers’ hair, you style their face with a character creator. This game has been dear to our hearts at DANG! and it’s been a joy to work on and bring the vision to fruition.

My role in the project included the full pipeline of putting dialogue into the game. This involved writing and updating custom Unity Editors for our writer to put the dialogue into, choosing dialogue nodes based on the player’s actions, and writing co-routines for the dialogue to be read.

I’m comfortable and confident in personalizing Unity to suit whatever the specific needs may be.

Vector Racer

Vector Racer is my passion project and inspired by the music of 438-550-8290 composed by Peter Rice. I wanted to make it clear the music was the inspiration rather than an afterthought, and set out to design an environment that responds to the different instruments.

Animated GIF - Find & Share on GIPHY

I faced two major hurdles: the first, efficiently managing and updating thousands of individual objects and the second, maintaining a tight, precise timing on each beat.

I overcame the management challenge through meticulous data storage and careful class inheritance. However, the second required more than thorough design. The Unity monobehavior Update() loop did not offer enough precision — even at 60 frames per second there’s almost 17 milliseconds between checks.

This may seem insignificant, but it is noticeable to the human eye and becomes even less accurate if the frame rate decreases. Thus I had to design a metronome that operated outside Update() and separate from the main thread.

Ultimately, I used the OnAudioFilterRead() function for Unity AudioSources, which is called about every 3ms when Unity loads audio into its buffer. Using calculations involving the sample rate, I was able to relay beat events with a comfortable amount of accuracy.

This project has driven me to dive deep under Unity’s hood and constantly seek alternate solutions to unique and unexpected challenges.


Radon is a stealth racing game about dodging the police while racing through the city. After an initial 2D release in Fall 2014 at the start of our freshman year, we revamped it into the 3D game above during the Spring.

After about 4-5 months of work, a team of myself (game design and code), Sam Suite (code & art direction), Ben Caulkins (sound design & music), and Kelly Shultz (3D modeling) brought the game to 2015 RPI GameFest, which is an annual showcase of student and indie games from the area.

The official trailer:

That Bird Stole My Gameboy

That Bird Stole My Gameboy was an ambitious project undertaken by Ben Caulkins (3D modeling, music & sound), Sam Suite (art & general coding),  and myself (technical coding, generation, & design) over the course of about 2 months. In our co-op driving & kite flying game, two players work together as one player drives a truck after a thieving bird and receives texts of bird sightings, while the other flies a kite in VR using the HTC Vive and references a held map to direct the driver.

It was a rush to get it ready for GameFest 2016 after we were one of three student groups chosen to represent RPI in the competition segment against eight other schools.

Official trailer: (used to present and ultimately be chosen)

After consecutive all-nighters, we brought it to GameFest only to have it fail for the first two or three hours. We have since been hesitant to come back to the project (even though we now actually have our own Vive to develop on instead of having to schedule small windows with Dr. Marc, our professor).