Geoff's Side-Project Emporium

Highlighted Projects

Just 5 Minutes

Picture this: dynamically-generated Super Mario Bros. with rogue-like RPG elements and a panic-inducing time limit, running on the Ouya or other Android devices. Just 5 Minutes started as an exercise in learning 2D game programming for the Android, building off of Notch's (in)famous "Infinite Mario" codebase.

This has been waiting on getting decent commercially-usable artwork for roughly forever, though recently some usable sprites became available over at Open Game Art, so who knows?


A twin-stick shooter with its heart firmly planted in Robotron and its tongue firmly planted in cheek. The key feature on this game is that the weapon has more than 10 different attributes, each of which can be tweaked individually. This means that the guns in the game behave in all sorts of surprising and amusing ways, such as strange squiggly paths or even just a cloud of bullets that surrounds and protects the player.

This began as two experiments in one: how does a 2d game engine really work, and how does the HTML 5 canvas work. A more ambitious Android version suitable for playing on the Ouya is in the works, but in the meantime the original on the site is still fun to play.

Sprite Magic

When writing the enhanced version of All NPCs MUST DIE!, I quickly realized that I needed something to help with pre-rendered animated sprite compositing and pallette-swapping. I also realized that no sprite animation tool out there did exactly what I wanted. So, I built this small tool in Python to help with those needs. Even without needing the "export to spritesheet" function, it's kind of fun just to play with as an animated paper-doll generator.

Paperdoll-type sprites can be easily added from a variety of source formats by specifying which frames are located where within the source sheet. The tool even permits licensing and attribution information to be added to the definition files, so that when art is exported all one has to do to cover attribution requirements is to copy/paste that into the final product's credits.

Included with the tool is a small library of artwork, courtesy of Open Game Art.

Dead Projects

Any of these might come back to life at some point in the future, but don't hold your breath.

PQ Dojo

One of the more interesting features in PseudoQuest was the ability to do real-time PvP in a traditional RPG turn-based style. The players loved this feature so much that I created a copy of the game that existed only to facilitate PvP fights.

Dough Nuts!

My first self-published card game! Players work together to save a bus full of children from being plunged head-first off a cliff, by baking a giant pile of doughnuts underneath the bus. If they succeed, the player who made the most money in the meantime wins. If they fail, the children die and everyone loses.

I've still got a couple thousand of these cluttering up my house, if you want a copy or 25. (This was published before the existence of print-on-demand games publishers).


"How hard could it be to make a Minecraft clone?" Well, the answer is: for the basics, not very. It had been a very long time since I'd written anything using OpenGL (3d math tends to make my head spin), but I thought I'd take another stab at it. It took me 2 days to get a single cube rendered on-screen the way I wanted, and another 2 or 3 hours to get a full world rendered using them. Cubist is written in Python, and is where I learned all about the GIL's limitations: when I decided that generating the meshes was too slow and tried to use threads to parallelize things, I discovered that I'd have to resort to multiprocessing to get the job done.

I got as far as dynamically generating "infinite" terrain using a variety of noise maps, some semi-fancy GL shaders (esp. for a non-3d programmer, I think), basic physics / collision, a day/night cycle for lighting, and acceptable performance for adding / removing blocks. I started in on a big refactor to make this network-playable, but then paused to pursue other projects and haven't returned to this in a long while.

I keep thinking that maybe I'll come back to this, adding features such as the aforementioned networking support and an easy-to-use mod library and management system. It sure was pretty.