This is a sample of the work that I’ve done over the past few years. Click the section name to show projects in that category.
I was the Lead Gameplay Programmer for Hack ‘n’ Slash, which meant that I implemented the logic for many of the levels and mechanics of the game. I also worked on some level editing tools that used both our engine and Photoshop scripting. The highlight of the project for me was working on procedurally generated rooms based on decompiled Lua, that lets the player modify the game’s code in real-time.
At Double Fine, my first project has been working on the Wii U version of The Cave. It was an amazing learning experience to dive head-first into a new engine and rewire the deepest moving parts to run on a brand new, still-evolving system. I also got to do some scratch voice work for the narrator! I also helped with the PC and iOS ports of the game.
During the summer of 2011, I interned at Electronic Arts as a Gameplay Engineer on The Sims team. I worked on The Sims 3: Pets, the largest expansion pack in the series, during production and alpha phases of development. I scoped new features for the pack, and used C# to write interactions and update old behaviors. I also fixed critical bugs through millions of lines of code in time for the alpha release, and worked with other teams to create downloadable bonus material for the special pre-order edition.
During the summer of 2010, I interned at Zynga as a Software Engineer on Café World, a Facebook game with 22 million monthly active users at the time. I worked on the back-end, using PHP, Memcached, and MySQL to develop the infrastructure for new features and promotions. I also worked on the front-end with primarily ActionScript 3.0 and AMFPHP to create the interface for new content.
My Life is Yours is a game that I and four other friends made in 48 hours for Global Game Jam 2012. The game is a puzzle platformer loosely based on the myth of Eurydice, where the player uses two avatars in order to travel to the end of the underworld. Only one avatar is alive at a time, but when one of them dies, the other is resurrected with a special ability based on how the other one died.
The theme for the competition was the symbol of The Ouroboros, which we interpreted to mean the cycle of death and rebirth. As we were brainstorming ideas based around resurrection and life cycles, I helped come up with the idea of a cursed couple whose lives are bound together with a resurrection mechanic. We decided that the story of travelling through the underworld would not only establish a good atmosphere for the theme, but it would also provide a good excuse to make difficult puzzles that involved a lot of intertwining mechanics.
Val Reznitskaya made the extensive sprite animations and tileset, Connor Fallon took charge of level design, Katie Chironis made the backgrounds and helped design levels, and Dan Dwire did the music and sound effects. I used Flixel to program the game, and worked the whole jam in order to add all of the minor polish features we wanted and fix some bugs in Flixel. We all contributed to brainstorming the game concept and administrating player testing.
The first major lesson we learned during the game jam was the importance of prototyping as fast as humanly possible, in any form available. Our first idea for a puzzle mechanic was for the death of one avatar to change the properties of the world, rather than the abilities of the other avatar. Although the two ideas didn’t seem very different, our mechanics happened to make designing levels for the former nearly impossible. After about an hour of strenuous brainstorming, our lead level designer accepted that we needed to reverse gears before it was too late.
The next important lesson we learned was that although player testing is one of the most valuable tools for designing and refining games, it must be used very carefully. Throughout the 48 hours we had about 10 people play our game, but unfortunately almost all of them came after the halfway mark. By this time, it was too late to make any large changes, and many of them had contradictory and/or unrealistic advice. Although we had all heard how to properly conduct player testing, after going through an unhelpful experience firsthand, we all knew that the most important thing is to get unbiased, unfiltered, isolated first impressions from many testers, and carefully evaluate what to refine based on the target audience.
The Global Game Jam was a great experience for learning how to prioritize the most important aspects of game development, and in the end we ended up with a pretty focused interesting game – it was tied for 2nd place for Audience Choice among 22 games.
This is another semester-long GCS project, which took place during Spring ’10. The goal is to rescue as many civilians as possible, while running away from an overwhelming invasion of aliens. You can manipulate the buildings and physics puzzles in order to defend yourself from aliens and evacuate the humans. It was made in C++ using SFML, Boost, and Box2D.
Requires Visual Studio 2010 redistributable.
This is a semester-long team project for Game Creation Society that took place during Fall ’09. It was my first full game project, and the final result is mostly a prototype. The goal is to build a castle of cute, gelatinous blocks as high as possible through combining and attaching them together. The game was made in C# using XNA and the JelloPhysics soft body engine.
Made with Visual Studio 2008 and XNA 3.0; if the redistributables don’t download automatically, you can get them here.
This is a fluid simulation I made for a class in Fall ’10 (15-467: The Animation of Natural Phenomena). It was about a week-long assignment, but it was one of the more fun projects from the class. It follows mostly from Jos Stam’s Stable Fluids paper.
Requires Visual Studio 2010 redistributable.
This is a raytracer I made for a class in Spring ’10 (15-462: Computer Graphics). It also took about a week, and it was the culminating project of the class. The model, scene, and image loading functionality, as well as the assets, were provided by the teaching assistants.
Requires Visual Studio 2010 redistributable.
Sleep is a data visualization project that I made for Golan Levin’s class Interactive Art and Computational Design. It is a virtual diorama that shows sleep activity (REM cycles) and the mental effects of cumulative sleep debt. The ragdoll’s movements correspond to my level of sleep activity, at the time shown on the background clock. The text in the frame displays the cumulative sleep debt, which causes the scene to become distorted.
This project is one of my more aesthetically interesting works, since most of my programming has been directed toward technical or mechanical goals. Due to a general lack of sleep this semester, I wanted to make a sleep visualization that could be either entertaining or disturbing, depending on the input data. I had been tracking my REM cycles with my phone’s accelerometer on my bed for about a month, which could track how restful my sleep was throughout the nights. At first, I wanted to make the project interactive; the player would try to perform some task that became more difficult or random as the sleep debt increased, evoking a feeling of helplessness and insanity. As I began to prototype the visuals, however, I realized that I needed to keep the project simple, so I just stuck with a visual representation.
I programmed the visualization using Unity3D, since it allowed me to easily prototype a ragdoll bouncing around to represent the restfulness of my sleep. Since I’m using the educational version, I was also able to take advantage of a great combination of shaders to create a more intricate illusion of insanity. I acquired the ragdoll model from a free human character pack, and the background music is a short sample from Godspeed You! Black Emperor, but everything else was my work.
I tend to overthink and overcomplicate my creative ambitious, and this project has been very helpful to control the urge to work on overambitious projects. Accepting early on that the project didn’t need to be interactive allowed me to focus completely on recreating the disturbing effects of sleep deprivation. Also, if I ever wanted to use interactivity to enhance the emotional impact of a similar project, I now know how audiences react to the audiovisual elements I’ve already used.
Although I felt an understandable mix of fascination and discomfort from the audience, I also learned that some of my design decisions created a confusing visualization. With the project’s artistic nature, showing a graph and numbers takes away from the emotional impact, but having the ragdoll become so visibly injured also takes away from the inherent humor of seeing a ragdoll bounce around. Making this project by myself forced me to mature as a visual artist, and even though the project was received well, I look forward to improving with my future artistic endeavors.
This is a webcam-based experiment I made for a short game competition, where I was trying to be inventive with the word “pixel”. Instead of thinking about pixels as display elements, I decided to try to create a world out of the pixels of a webcam. It also highlights edges, and any strong occurrence of red, green, or blue in the picture. I used OpenCV and SFML to create the demo, and I might turn it into a more interesting prototype if a no-button game competition shows up.
Requires Visual Studio 2010 redistributable, as well as a webcam connected to your computer.
This is a combination of a microphone-based FFT and a physics engine, written in Java using Processing, Ess r2, and pbox2d. Most of the effort involved linking the right libraries together, but it’s a fun demonstration that might serve as the basis for a short game in the future.
Requires a microphone attached to your computer, as well as the latest Java Plugin. If the demo doesn’t respond to a microphone, then the plugin doesn’t have the correct permissions.