GGJ - 5Alive


5Alive is a browser game that was developed by myself and a small group of programmers and artists for the 2014 Global Game Jam, a 48-hour game development challenge. 5Alive was implemented in JavaScript using the enchant.js framework. My contribution included a large part of the core game code as well as some of the enemy behavior patterns and player ability balancing.


  • James Aldag
  • Nick Alareza
  • Ethan Nakashima
  • Marty Loewenthal
  • Mittsu (music)

Source code on GitHub

View full game description.

Play the game! (controller required)

Personal Picture Index

Personal Picture Index is an Android app intended to assist speech therapy for sufferers of Broca's aphasia.

Recently, a close family member of mine sufferred a severe stroke that resulted in what's referred to as Broca's aphasia, which causes a person to have difficulty translating thoughts into words. For example, a patient might be trying to talk about an apple, but not be able to recall that the word "apple" describes that object. This app aims to help people with aphasia to rebuild and strengthen those mental connections.

Personal Picture Index is available for free on the Google Play store.

View Google Play store page.

Penguin Puzzler


Penguin Puzzler is a puzzle game for Android. It takes a simple puzzle mechanic and elaborates on it with a variety of unique obstacles. It supports most screen sizes and most Android OS versions.

View Google Play store page.


  • Derek Lokker
  • Diego Escudero
  • Amanda Yam

CUDA Ray Tracer

This project sought to compare two different methods of global illumination by implementing a GPU-accelerated ray tracer using C++ and CUDA, NVidia's parallel programming platform.

Photon Mapping

The first global illumination method is photon mapping, which involves casting "photons" into the scene and then gathering their light at each point on the screen. I was only able to implement the photon-casting step. The first image shows a visualization of photons cast into a scene using a simplified algorithm.

Monte Carlo Path Tracing

Monte Carlo path tracing is a parallel-friendly variation of the Monte Carlo method, which is often implemented recursively. Any number of passes can be run to make the image clearer and smooth out the randomness of the ray-casting algorithm. The image on the left was generated using 25k passes.

View the full project page here.

Brawl: It's Garden Time!


Brawl is a real-time card game created by James Ernest. Working as a team over two quarters, myself and six other programmers planned, implemented, and documented the process of building a software version of the game. We chose to give it a gardening theme (instead of fighting) to make it stand out more amongst the other projects in the class. We took on various roles throughout the project; I was in charge of designing the class structure and organization and overseeing implementation.

View the full project wiki here.

Download the finished game here.


  • Megan Arnez
  • Ray Go
  • Stephen Hill
  • Zander Mitchell
  • Minh Nguyen
  • Ebele Okonkwo

Cogstav's Merry Adventure


Cogstav's Merry Adventure was a project for a class on real-time 3D graphics. It is a platforming game that showcases a variety of graphics technologies (including shadow mapping, bump mapping, particle effects, and cell shading) while following the lovable robot Cogstav on his harrowing journey full of shooting, jumping, gliding, and grappling.


  • James Aldag
  • Zach Behnke
  • Raymond Ching
  • Jack Henderson

View the full project page here.

Spooky Dungeon Crawler

As the last project of my Introduction to Computer Graphics class, I was given the opportunity to create anything I wanted with the techniques we had been taught.

I built a dungeon/maze exploration engine that used a flashlight, point lights, multi-texturing, and a first-person shooter control style. It also includes collisions detection and a toggle for a spooky perspective-warping feature.

I had originally intended it to be an actual game with a goal, but I did not have enough time to implement the necessary narrative components.

View the full project page here.