Game Design and Programming

Game Prototyping in Phaser

Game Prototyping in Phaser is a collection of game prototypes created in the HTML5 game engine, Phaser. Each prototype was designed and implemented in one to two weeks and features an original gameplay mechanic.



TopOpt is a python library for topology optimization. Topology optimization is a form of structural optimization where the design variable is the topology of the structure. Topological changes are achieved by optimizing the material distribution within a given design space. TopOpt contains common design problems (e.g. minimum compliance) solved using advanced methods (e.g. Method of Moving Asymptotes (MMA)). The goal is to provide an easy to use interface for various common boundary conditions and problems while also being extendable to new physics and applications.

Programming Languages


MiniOOL is a mini object-oriented language. Written in OCaml, this mini programming language features integer arithmetic, boolean operations, control structures, recursive procedures, parallelism, and basic objects with fields.

Computer Vision

Face Preserving Style Transfer

Face Preserving Style Transfer extends image style transfer by introducing facial feature preservation. Image style transfer is the process of stylizing an image based on the style of another image [Gatys et al. 2015]. We extend the Fast Style Transfer network created by Johnson et al. [2016] to include an extra perceptual loss term for facial details. The face loss is calculated by using Multi-task Cascaded Convolutional Networks [Zhang et al. 2016] to find faces and OpenFace [Amos et al. 2016] to compute a 128-dimension face descriptor.

Computer Graphics

Heightfield Modeler

Heightfield Modeler is a 3D modeling software for creating heightfields. It features tools for editing vertex positions and color, fractalization, Catmull-Clark subdivision, and the ability to export Wavefront OBJ files.

Robotics and Electronics

Trinket SNES Controller

Trinket SNES Controller is an Arduino sketch for Adafruit's Trinket 5V that converts a Super Nintendo controller to act as a USB keyboard. This allows the modified SNES controller to control emulators and other games on a computer. This single file sketch communicates with the controller using the standard protocol and uses Adafruit's Trinket human interface device (HID) library to send key presses.


GMUHexBot is a hexapod robot controlled by an Arduino Uno micro-controller board. Each of the six legs have two servomotors controlling the pitch and yaw of the leg.

This project was created as part of George Mason University's Robotics Club.