Michael Moffitt's Website

I like projects!

Ghost in the Machine

Written 12/30/14

Ghost in the Machine is now on Steam! Click to check it out.

Ghost in the Machine is a challenging platforming game where the player must escape the decrepit remains of a factory without getting killed! Along the way the player slowly reveals what happened to put the abandoned factory in such a state.

You can download a free demo of the game below. It lets you play the game for a few minutes. Just click the button below for your operating system.

The new year has brought great things - Ghost in the Machine has been successfully greenlit on Steam! We look forward to publishing the game as soon as possible.

About the game
Ghost in the Machine is independently developed by two RIT students - myself and my former roommate Julian Hammerstein. It is written in C++ and runs on Windows, Mac OS X, and Linux computers. It features many difficult levels, low-resolution 8-bit graphics, and an all original soundtrack created on old Nintendo hardware. It supports both keyboard and USB Gamepad input.
It's got pistons! It's got conveyor belts! It's got spikes! There are no water levels! We put a lot of time testing and tweaking each level so the gameplay is very rewarding, with plenty of "a-ha" moments for when a solution is found to a tough puzzle.
An interesting feature of the game is the level unlock system. The levels are all arranged on the grid, and the player begins in the center. As a level is completed, all of the adjacent levels become available to play. This lets you play the levels in any order, working around tough levels to return later.

The Development
My old roommate and I made a local 24-hour Game Jam entry called Ghost in the Machine. The theme of the Jam was "unforeseen consequences". At the time, the grungy Virtual-Boy aesthetic was on my mind a lot, so on the way home from work I thought it would be neat to have a game with a strongly restricted field of view, where the edges of the screen get very dark. With a relatively clear idea in mind, we made the first version of the game in Multimedia Fusion 2. The engine was pretty good for something made this way, but it didn't leave a lot of room for expansion. The game was one large level with checkpoints. Those who were able to clear it often took about thirty tries or so. We intended for the game to be challenging.

The game won the Game Jam, and since the game turned out pretty well we expanded it further. The engine was rebuilt (again in MMF2), this time supporting external level structures and substantially cleaned up. My biggest gripe with MMF2 (aside from the goofy concept of "code" it has) is how hard it is to re-factor anything. The game ran much better, and had a lot of room to grow. However, after we made a lot of levels for it and added much else like the title screen and options, the limitations of MMF2 started to become clearer. Adding new features to the game was a pain, and the level editor and its structures were slow to parse. Around this time I was learning C++ so I set out to recreate the game in C++. The bonus to this is that the game gained portability to other platforms besides Windows.

I chose the Allegro library as it had the features I wanted and had pretty good documentation. It hasn't really been a setback and continues to do a good job. The code for the game, two years later, is a bit messy, as some of it resides from when I was first starting C++, but it's not too bad and can be cleaned up. The game runs pretty well and on all three major platforms.

During development of the game, the Oculus Rift dev kit arrived, but the SDK hadn't come out, so I hacked together some rift support manually. It works pretty well. The resolution of the rift DK1 is perfect for this game to have double-sized pixels, so the scaling didn't make any of the art unevenly scaled. Unfortunately the official SDK isn't going to be used for this because the pixel art would become distorted from the scaling, and I don't think it supports Allegro. The game doesn't "offially" support the rift, but there are command-line flags to put the game into Rift mode.

We ran a successful Kickstarter campaign to fund development of the game, which helped get some computer equipment and pay for (some) of our time put into the game.

Recently I have started to port the game to the Sega Genesis / Megadrive. We'll see where that goes. It's a lot of fun, but there are a lot of tradeoffs between performance and features. Some things, like the far backdrop gears, simply have to be removed, which is unfortunate. I hope to post more about it as progress is made.

Back to main index

This website was generated using MicroLog.