Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

MIRROR: the Game that Plays You

My 2010 BFA thesis project from the Cleveland Institute of Art.

What is MIRROR?

An excerpt from my thesis paper:

Mirror is a simple 2D physics game in which the player controls an avatar, trying to climb, swing, and roll to the goal. The interactions aim to find new and unique meaningful inputs that expand our perceptions to include the input device and game into an holistic experience. This unique input data can be translated into smooth, pleasurable control over a virtual avatar that sympathizes with the player as the player sympathizes with it. This experience will hopefully evolve into something greater than the sum of its parts, enticing its users to think about, create, and perhaps expect games that exhibit a greater depth of seamless interaction with the devices they manipulate.

My thesis paper can be found at my website. I made it into a book for the presentation, which is available at, free to read and download. You can even purchase a hard-bound copy if you feel inclined.

All that aside, MIRROR is a game that involves controling an avatar's hands with 2 computer mice. Move a mouse to move the corresponding hand, then press the mouse button (with your index finger) in order to grab hold of a block. Other features include webcam face recognition and placement on the avatar, an auto-reset during idle time (it was developed to run as a kiosk for a full week), and a sense of unrestrained glee at scaling walls in leaps and bounds.

Check out for screenshots, a teaser vid, and photos of the installation.

How do I play MIRROR?

In three words: I'm not sure.

I set this code down after I graduated in May 2010 to move on to new projects (and a new job). It's frankly a mess, as it was one of my first attempts to code a playable game.

If you are familiar with Processing, you may be able to get this up and running if you have:

  • The Processing IDE
  • Various communty-provided libraries (included with source)
  • A webcam or iSight
  • An Arduino with Firmata installed (I was using an Arduino Diecimila and an Arduino Mini (v04?) at the time)
  • 2 USB computer mice custom-rigged with vibrating motors
  • A Mac*

*Though Java, and by extension Processing, is cross-platform, the library I used to handle input from 2 USB mice did not work on Windows at the time.

MIRROR will run without the custom mice (but 2 USB mice are required), will not run without an Arduino (with Firmata installed) plugged in, and will probably break without a webcam. Even if you have all of the above it may still not work, considering the Processing IDE has been updated since 2010 and Mac OS X Lion+ compatibility nightmares. This repository is mostly for archival and sharing purposes and is not under active development, so it is possible that these problems may not get fixed. When I eventually get to building a real game out of this concept, I won't be using this source code anyways. But I've open-source'd it because everything I used to make this game is open source, and it's only fair. I hope that at least some of this code is helpful or inspirational to others.

If you somehow do get this working, please let me know!

The Details

MIRROR was made with Processing and the Arduino.

These open-source libraries were used to make MIRROR:

Special thanks to Daniel Shiffman for his PBox2D helper library for JBox2D in Processing.


My 2010 BFA thesis project from the Cleveland Institute of Art.







No releases published


No packages published