I designed this game as part of an elaborate series of puzzles for my girlfriend's birthday, which culminated in our engagement. Read the full story here.
The game was conceived just a few days earlier, after a quick web search reintroduced me to Processing, a Java-like language for developing simple interactive graphical applications. I had seen Processing applications before, but had never written one myself (I don't even know Java). Hopefully this game stands as a testament to the language, as it was implemented absolutely from scratch in about 3 hours. You can download the source code if you're curious, but it's kind of a mess.
In its original form, the game was presented with absolutely no instructions. It was my intent that part of the puzzle involve simply experimenting with the application and figuring out what effect your input has. If you're not interested in having the "secret" spoiled, please stop reading now!
On the left side of the screen are a number of large red and green dots. By clicking and dragging the mouse, the player can draw lines across the game board. When the mouse is released, all the dots on one side of the line change color (from red to green or vice versa). The goal of the game is simply to make all the dots on the board the same color before the timer bar runs out. If the timer runs out, the dots are scrambled and reset. Completing a level takes you to a new game board, with smaller and more numerous dots.
On the right side of the board, large randomly-colored dots are constantly being splattered on top of each other. As the player progresses through the game on the left (working with ever-smaller dots), the dots on the right also become smaller. Eventually (usually around level 3 or 4) the dots are small enough that the player recognizes that they're forming a picture, and that further advancement in the game will cause the picture to be drawn in increasingly sharp detail. As an optional aside, players may also discover that by moving the mouse over the dots on the right, they can focus the updating of the image on specific regions.
For the curious, the image on the right is drawn using the well-known "pointillist" non-photorealistic rendering algorithm, which goes something like this:
So, now that you know what's going on, I urge you to go play the game again and see if you can figure out the answer to the puzzle (bearing in mind that the unspoken "question" of the puzzle is "where/what is my birthday present?"). If you find the game to be too difficult (which is entirely possible, given the limited amount of time I had in which to balance it), you may also try a version with cheats enabled.