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.
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 isÂ my passion project and inspired by the music ofÂ unmockedÂ 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.
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 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).