Programming

Procedurally Generated "Rose"

Created using Processing, Java

Given a radius, generates points along a spiral. Those points are then used as input to draw distorted "tears" at those locations. Spirals can be overlaid in varying colors.

View the source code here


Rite of Rune

2-player Android game, C#, Unity

You and a friend have opened a cursed book, so you both must “prick” your finger and trace over the runes in blood. If you spell out 23 runes before your partner, you will escape unscathed, while the other player is cursed.

Runes are randomly generated within the play area and disappear if successfully traced over; runes can only be traced for a limited time after a finger “prick”, so the player must periodically touch the nail on the screen.

Created for the 2-day Asylum Game Jam with Matthew Everhart, who was responsible for the game idea and art


Being

1-2 player Kinect game, C#, XNA

Being is a dance game that teaches Dabke, a traditional Lebanese folk dance. Like many Kinect dance games, players must match the moves of the dancers, whose moves are also illustrated in scrolling sprites at the bottom of the screen.

Being is currently on display at the NC Museum of History as part of their Cedars in the Pines exhibit commemorating Lebanese immigrants in NC.

Developed with teammate Stephen Schroeder.


Adaptive Dominion AI

1-4 player GUI-less game, Python

Python implementation of the card game Dominion for a Game AI course with partner Markus Eger. We developed various AIs for the buy and play phases of the game. In trial runs of 1,000 games, these AIs proved superior to basic AIs.

View the source code here

(Note: images are from the card game)


Firefly Flocking System

C++, OpenGL

This flocking system is a physics simulation; flock movement is dictated with rules for collision avoidance, flock centering, velocity matching. I used a Runge-Kutta integration method.

The user can navigate the 3D space using a mouse while the flocking sim is running.

View the source code here


Ahmiran Game

C++, SDL, XML

Features: Player selection, projectiles, XP/HP and leveling system, per-pixel collision detection, particle explosions, regional enemy regeneration, basic AI.

Ahmiran is a 2D game prototype developed over two weeks in C++ and was the final project for a 2D Game Engine Design course. It was a group project with my teammate, Matthew Stratton.

There are 3 classes the player can choose from: a warrior, a wizard and an archer. There is one map with groups of different enemies scattered throughout. The player can kill enemies and level up. The game uses SDL for graphics and sound, and Expat XML as the base for xml parsing.

View the source code here


MILLI-Hamilton: Lemmings & Hamiltonian Cycles

NP-Hard reduction proof, Python

Generalized Lemmings is NP-hard, as shown by reduction. We picked the directed Hamiltonian cycle problem, i.e. given a directed graph we can construct Lemmings levels that are solvable if & only if the graph has a directed Hamiltonian cycle. Since the original Lemmings is proprietary software and has severe restrictions on the level size, we used the free and open source clone Pingus to demonstrate our reduction.

The Python script takes an arbitrary graph as input, and outputs a playable Pingus level using pre-created gadget “tiles” to represent the graph structure. (Image above illustrates the underlying gadget structure of a sample graph)

Created with teammate Markus Eger as an interactive proof; view the source code here


Obj Viewer

C++, OpenGl

Reads in .obj files and materials and displays the resulting model. User can rotate, pan, and zoom around the model.