Projects

General Mediation Engine

The General Mediation Engine (GME) is a procedural strong story interactive narrative generator. The system models its world state and action dynamics using planning problems specified in PDDL. From the planning problem, GME builds a tree of world states connected by actions characters can take. One of these characters is controlled by a human client and the rest are automatically guided by GME's symbolic planner. World states and action updates are exposed to the client through a procedurally generated interface and gameplay arises through an online expansion of the underlying tree data structure. See Gameplay as On-Line Mediation Search and The General Mediation Engine.

Base Case

Base Case is a sneaking game built using the Unity General Mediation Engine (UGME). UGME is a prototype 2D visual interface for the General Mediation Engine (GME) built with Unity. For a technical description, see Automated Gameplay Generation from Declarative World Representations and the report on Playable Experiences at AIIDE 2015.

Tetris player

An AI driven by a utility maximizer and PageRank that plays Tetris by stacking up blocks on the left side of the screen and scoring only with I blocks. This strategy is called Tetris Stacking. This AI learns a Markov chain from playing against non-random Tetris generators like TGM and uses the learned transition information to guess the probability of future pieces in order to stochastically spoof look ahead. Continuation of idea by Ryan Heise and uses a Unity Tetris implementation created by Laurens Rodriguez.

Unity arcade games

A series of classic arcade games in Unity, created in 2013 as teaching aides for an Introduction to Team Programming for Video Games class. The code for each game is hosted on GitHub.

Pong

The classic Atari game from 1972 implemented with Unity game objects. This version mimics the original game's layout but includes a slice mechanic that allows players to change the ball's speed and direction.

Breakout

Another classic Atari game implemented with Unity game objects. Breakout is influenced by Pong but designed for one player. In this version, the ball's speed and direction changes based on the side and distance from the center of the paddle it hits.

Space Invaders

The first fixed shooter arcade game implemented with Unity game objects and 2D sprites. In this version, you can shoot down enemy missiles in addition to the invaders themselves.

Pac-Man

The classic arcade game implemented with Unity game objects and 2D sprites. In this version, you can navigate the maze, eat pellets, eat super pellets, be eaten by ghosts, and turn invincible. You can also press E to see paths the ghosts calculate as they navigate the maze.

LitWiki

LitWiki is a TiddlyWiki and set of tools meant for creating and storing a linked set of notes and facts on a body of academic literature. LitWiki is for exploring, summarizing, and linking together different academic papers. To ease the authorship burden, I have created an automated pipeline for importing paper entries into LitWiki and exporting paper entries out to a BibTex file, which is commonly used for linking references in academic publications.