Sometimes You Just Gotta Ship
by Josh Marinacci
A while ago I decided to write a game. An old game. A classic 8bit NES style, Final Fantasy-esqe RPG. The kind of game I loved to play as a kid. (I’m rather old, you see). The initial development was fun and easy. I had a functioning demo in a few days and sketched out a rough plot with graphics in a week. I’d say it was about 10% done. That was three years ago! Since then I’ve switched jobs. I’ve traveled more. My kid finished pre-school and started kindergarten. Everything in my life has changed. The one thing that hasn’t changed the game. It’s still at 10 percent completion. Despite working on it for three years the game feels further away from completion than when I started. This unfinished project was haunting me. So last week I did the only thing I could do. I shipped something.
What I wanted To Do
Let me back up a bit. The game is meant to be called Christmas Fantasy IV. There have never been numbers one through three. I started with IV as a nod to the fact that Final Fantasy IV was the best (or possibly VI, it’s hard to say). The plot involves a kid who wants to save Christmas, but Christmas is just fine until he shows up uninvited at the North Pole. Did I mention this is a comedy? And full of jokes about 1980s Christmas movies? And it started as a short story that grew into 12 full chapters (for the 12 days of Christmas, you see), complete with a cast of 20 odd characters, 12 villains, and endless enemies to battle. And therein lies the problem. The game kept growing and growing in ambition. Despite my twenty years of software engineering experience I couldn’t restrain myself. Each idea led to another, and another. So many cool ideas to build. So many bad jokes to be told.
For a while the situation was manageable. I tackled the first chapter; scripting dialog and interaction between all characters. I also stubbed out the maps. There aren’t any great map tile editors, so of course I had to build my own. I also had the idea to build my own pixel art editor (why?!!). Building my own game engine is fairly reasonable for a task like this, but why did I need to keep reinventing the wheel? Especially when the game itself was far more ambitious than I realized. Thank goodness I didn’t try to write my own music. At least I’m not *that* crazy. Right?! How did I get here?
How did I get here?
The original Final Fantasy games were pretty simple. While they were a technical tour-de-force on the hardware of the day, the game mechanics aren’t complicated. That’s why I was able to get a demo up and running so quickly. What I didn’t realize, probably because I’ve never done any sort of art for a living, is that nearly all of my time would be consumed with content. The plot. The script. Pixel art and maps and monsters and sound effects. I had to write it all from scratch myself. The original game was written by a team of people working full time. I’m just a hobbyist working in my (increasingly slim) free time. Now I realize I should never have tried to build such an ambitious game. Everything would take far longer than I originally planned, and since it’s not my day job I can easily let the release slip week by week, month by month into the future.
This past autumn the game was weighing on my mind heavily. Three years of work resulted in a beta of the first two chapters. At this rate I’d be writing the final chapter when I retire on Mars in a few decades! Work progressed slower and slower, which made me more disheartened, which slowed work even more. I had trouble being creative. I never wanted to draw. The jokes didn’t come. I was stuck.
Through sheer brute force of will I managed to get the tools working enough to build playable levels with extremely limited interaction. It was a start, but I knew brute force wouldn’t get me through an entire game. I needed a new mental attitude. I needed the project to be… well, not necessarily finished, but at least to a milestone where I wouldn’t feel like a failure. I needed to show something to the world. I needed to get unstuck.
So I made a decision: this Christmas I would ship something. Anything! Rather than working towards the full game I kept scaling it back until I had something completable by Christmas. A mini-game which would show the concept and, hopefully, give me some good feedback that I could apply to the full game. I wrote a new game around a single pun: The Ghost of Christmas Pheasant. This was enough of a core to build a simple plot of a new angel performing his first job: melting Scrooge’s heart, while being accidentally transformed into a chicken. From there I could use the original source material to write a short script (maybe 15 minutes of play time), lots of bad jokes, and draw a few characters. To further speed up development I reused graphics and file-formats from the original game. Things started to finally move.
Each day I set a goal: make this feature in the tools work just enough to complete the next part of the mini-game. I was forced to build only the things that furthered the goal of actually shipping. It also forced me to scrap features that were consuming lots of time for little benefit. One example is the visual action editor.
My original design contained a tool to visually write actions with conditions and state throughout the entire game. Things like: door X opens if you have key Y and have already talked to character Z. The constraint of shipping forced me scrap that editor and focus on the two most common actions: dialog with an item/character and going from one map to another via doors. Anything else is done with a general purpose script action.
In retrospect stripping out the visual tool was the best thing I could do. The script actions are far more powerful, as well as faster to implement, than the original concept. It also made it easier to build features that originally were going to wait for version 2, like having different a dialog the second time you talk to a character. Things were looking up.
Down to the Wire
A few days before Christmas I finished it, sent a link to beta testers, and waited. After some positive comments and a few quick bug fixes I posted the link to the world. A sigh of relief escaped my lips. Even if no one ever plays the game, at least I shipped it. I could finally rest my heavy shoulders. I was unstuck.
The next day was magical. I felt better. My creative juices started flowing again. New characters and jokes would pop into my brain. I enjoyed drawing pixel art again. I wanted to make stuff again. Since then I’ve made rapid progress on the next few chapters. Perhaps I won’t have to wait fifty years to ship the big game. Or maybe I’ll make some more mini-games. Either way I’m happy again and moving forward.
Just Ship Something
The next time you are stuck, my advice to you is simple: ship something. Anything. It will make you proud of your work, bring in feedback, and give you energy again to keep at it. They say building games is a labor of love, heavy on the labor. It’s exhausting. Sometimes you need the small wins to keep going. Just ship something.(source:gamasutra)