My Code

Personal Projects and Games


Random From Distributions                                                                MAR 2014
    : Statistical Distributions Random Number Generator

This is my first Unity Asset Package, which provides a series of functions for generating random numbers from various statistical distributions. Unity's built-in Random.Range() provides random numbers from the Uniform Distribution, but this package gives the programmer more choices. This provides the ability to get a random number from:

- Normal Distribution

- Linear Distribution

  1. -Curved Distribution (sec^2 distribution).

For each distribution there are multiple options that describe the shape of the distribution the random numbers are pulled from.

Here is a link to the package in Unity’s Asset Store:

Bachelor’s Honors Thesis                                                                    DEC 2013
    : “Dynamically Registering C++ Exception Handlers:
             Centralized Handling of C++ Exceptions in Application Framework Libraries”

Under Professors David Kieras and David Paoletti, I wrote an undergraduate Honors Thesis before graduating from the University of Michigan. The paper addresses the difficulties involved for an application framework library to provide developers a robust, exception safe interface. It includes a survey of the best solutions to this problem currently provided by such frameworks, and then proposes a new solution to the problem: a method for allowing an application to register exception-handler operations templated by exception type.

Here is a link to the thesis in the University of Michigan’s Deep Blue archives:

MHacks Hackathon                                                                                JAN 2014
    : F U Alarm Clock

At the University of Michigan’s MHacks Hackathon, my team of 4 University of Michigan students created an Android alarm clock app. The app links with a user’s Evernote accounts to access flash cards made through Evernote or a linked StudyBlue account. When the alarm goes off in the morning, the user must answer three multiple choice questions correctly drawn from the flash cards before the alarm will stop ringing! None of us had previous experience with Android or Java, so it was a great learning experience!

Here is a link to our submission:

Hijack!                                                                                                    DEC 2013
    : EECS 494 Computer Game Design/Development Class Project

Hijack! is a 2D top-down space-western shooter, pitting spaceship-rodeoing cowboys against each other in a four player, timed gun match. The game sees cowboy players “hijacking” the various ships in the arena, be they empty ships or ships controlled by other players, in order to blast the other cowboys. To hijack a ship, the players must race to enter a button sequence that appears above the ship, with the winner gaining control and the loser being ejected. Only once ejected is a cowboy vulnerable to damage! This fast-paced, arcade-style gameplay is fun and exciting, and was very well received by the audience at the Computer Games Showcase.

Here is a link to a slightly out-of-date gameplay video:

The game can be downloaded on the right. It requires Xbox controllers to play!

The Iterator                                                                                            NOV 2013
    : EECS 494 Computer Game Design/Development Class Project

The Iterator is a 3D puzzle platformer that requires the player to think ahead: each puzzle can only be solved through multiple iterations. Each new iteration, players must interact with their past-selves in order to complete the puzzle. Yuma Uesaka and I created this game together in 3 weeks as a class project. It was developed entirely in C++, using the Zenilib game engine. We implemented a fixed-frame-rate to allow each iteration to behave identically and implemented Separating Axis Theorem collision detection from scratch based on the tutorial from Metanet Software Inc. We also created an XML-based parameters-loader so that we could modify the game on the fly during testing. The game is very efficient: it continues to run smoothly even after the player has created over 200 iterations.

PennApps Hackathon                                                                           SEP 2013
    : Wulu Podify

At the University of Pennsylvania PennApps Hackathon, my team of 4 University of Michigan students created the Wulu Podify web application. Podify is a mobile web service that converts serial, text-based news websites into a regularly updating audio podcast. It utilizes text-to-speech tools to convert articles into audio episodes and compiles them into a podcast format.

A link to our submission, as well as the GitHub Repository:

Unnamed C++ GUI Widget Library                                  DEC 2013 - PRESENT

A cross-platform C++ GUI Widget Library I have written using the SDL media library framework.

While I know that there are many C++ GUI libraries out there already, I found it an interesting and informative challenge to try and build one myself. This library does have some distinguishing features. It is completely platform-independent, thanks to the SDL framework. The feature I am most proud of is the excellent support for user-specified exception-handling. This is actually the topic of the undergraduate honors thesis I wrote at UofM with Professor David Kieras.

Some example programs that use this library can be seen here:




    - Naval Ship Simulator

        (EECS 381 Project 6 -- used model-view-controller pattern to create two different products, one with text-based-views and one with GUI-based-views. [Mac binaries only])

Sid Meier Game Design Boot Camp                                                    MAY 2012
    : In Control

Sid Meier’s Game Design Boot Camp was a two-week intensive game design camp organized by Sid Meier and University of Michigan professor John Laird. My partner, Derrick Fu, and I created this proof of concept game, In Control. The game is a side-scrolling platformer/strategy game requiring team-work to traverse the levels. There are two roles to play: either a platformer player, or ‘Game Master,’ whose job it is to build platforms, place objects, and otherwise manipulate the level to help the players traverse puzzles. During the two week camp we implemented one level -- a boss level -- to showcase the custom physics engine that we programmed ourselves entirely, along with the graphics engine (which uses the SDL media library, also mentioned below). We utilized the Model-View-Controller pattern and Object-Oriented programming techniques to organize the code.

Older Game Projects:

Both of the games below were implemented using the SDL media library, an open source framework to allow for 2D graphics display and mouse/keyboard input. Without this awesome package, it would have been a lot tougher to get to this point!

Both packages are available to download as stand-alone Mac (sorry everyone else) applications, and as the complete, build-able project code!

  1. Maze Race - This is the first complete game that I have ever created using C++, and as such, it holds a special place in my heart.

  2. The player’s job is to stop the little red dot enemy in the bottom right from finding his way to the red dot target in the top left by cutting off his path with lines. The dot uses a breadth-first search maze-solving algorithm adapted from a project in school to find the fastest route to the target. When you draw a new line onto the map, the “mouse” recalculates the new fastest path and starts heading down this path instead.

  3. Try to cut him off, but be warned -- he’s quick! The longer you can let the little guy last before blocking his victory, the more points you get. But be careful, you can carefully play a whole game only to blow it in the last few seconds!!

  4. Space Fights - A simple acceleration-based space shooter. The goal here was to explore a little bit of physics simulation with acceleration and momentum, as well as fully dynamic object creation for bullets and asteroids.

  5. This one is very heavily based off of Space Wars, with it’s two dueling space-ships orbiting around a sun. The sun was very exciting, because I didn’t have to change anything! Simply apply a constant acceleration towards the sun and BOOM! Gravity! Physics is very cool.



  1. Live Display - A simple utility that loops on an input file, displaying any changes as soon as they are made to the file. Utilizes sleep() to make the loop efficient.
        (Update: I have since learned about the identical unix command: “tail -f <filename>”)