CODE AND GAMES

Obscura (Unreal)

Obscura is a 3D, third person, puzzle exploration game in which the player is a shadow being searching for its caster. The character can only walk in the shadows. The way that the player interacts with the world is by changing the position of the sun in the sky, such that shadows are cast at different angles, thus exposing different parts of the terrain and level architecture for traversal.

Angry Beard (Unity VR)

Angry Beard is a VR game designed for the HTC Vive where the player is a wizard defending a lone tower from a hoard of incoming enemies. The player has access to several different types of spells with different properties, each activated by a specific motion gesture tracked on the Vive controllers. Each level of this game has a set number of procedurally generated enemies that are out to get your single tower. These enemies have different strengths and weaknesses, so the player must choose their spells strategically when attacking. Later levels will produce larger hoards and more resilient enemies; mastering the motion controls and spell match-ups is key!

GPU Path Tracer

A CUDA Path Tracer implemented for the University of Pennsylvania's GPU Programming course


  • Naive Path Tracing ("BRDF" sampled lambert and perfect specular)
  • Main Feature: BVH (Bounding Volume Hierarchy) Acceleration
  • OBJ loading
  • Stream compaction for terminating rays and free-ing up threads
  • Depth of Field
  • Naive Anti-Aliasing
  • Material Sorting (to avoid divergence)

  • Learn more about my implementation in my README on Github.

    Propuga

    Propuga is an online puzzle game where each puzzle is procedurally generated. This means that rather than designing every playable puzzle, I’ve designed a program that will generate an infinite number of challenging puzzles. I find that puzzle games are a fun quick source of entertainment, but a limited number of puzzle designs tends to result in limited replay value. Ideally, I wanted to create a puzzle game with as much emergent gameplay as possible.


    Check it out on Github.