Post-mortem: Space Fortress
In no particular order, I’m going to start with Space Fortress. This one I got really excited about, because I decided I would do it properly! I was high on usability engineering, figured I wouldn’t code anything without thinking it through first. I drew all kinds of sketches in my delightful chubby notebook. It failed when I was overtaken by scope despite my best efforts. After the jump, I’ll describe the idea further then I’ll discuss how it went badly, and my take-home lesson.
So, first, an overview of Space Fortress. The title (like all the titles) is just a placeholder to remind me of its Dwarf Fortressian roots. The stuff I liked about Dwarf Fortress was the freedom to build just about anything, setting up a little system, hoping for the best. It’s a great toy and I follow its development religiously. I just thought it would be fun to make a much more light-weight, arcadey version of it. It would have a better UI, and allow shorter games.
The concept is that a you have a little spaceship containing an industrious spaceperson and maybe a few little ro-bots lands on a barren planetoid. It is your job to turn the rock into a profit! Maybe you mine out all the gold and sell it. Or maybe it’s full of precious irontanium, you can build a refinery or some factories and produce widgets! Perhaps you can set up a little terraforming operation, and then turn it into a luxury resort planet. It all depends on what resources are on the planet or what your assigned goals are. Of course, the imagination runs wild, thinking about setting up star systems, figuring out supply/demand, pirates, political stuff, etc… which would affect goals and events. Oy! What I liked about this game was that if I built a solid little kernel, I could always pick away at it SOMEHOW, or when I learned a new trick, somehow integrate it.
I decided to make a proper design document. But, I couldn’t find any templates I agreed with (possibly due to no experience with them), so I tried some kind of ‘user stories’. Each little story would be an isolated little interaction. After sketching them out, I would implement them. And it worked! My design documents are in the produce section. I managed to hammer out the ‘mine stuff’ story, and implement it. It was glorious! Since the game plays like an RTS, but side-view, its easier to use some of the ideas coming from the productivity software world, where widgets are similar.
My problems started when I forgot what I told myself. Make a solid little kernel that is fun, then start adding stuff. The exact moment of my downfall was when I made the mistake of looking at an anthill. I realized to my horror that dirt had to come out of the hole! All of a sudden my precious mining system had to have a ‘pull dirt out of the ground’ mechanism. I should have just said ’space vapourizers turned dirt into air’, but I got really tied up and angry at making dirt fall, clumping it together into piles, figuring out how to build piles of dirt on the surface.
I want to come back to this one, I still have the repository, but before I think I need to adjust my trajectory. DF is great and sprawling, but if you look at his development site, you see that he dumped out all his thoughts years ago into enormous bullet lists. Then (get this) he considers the best way to do them in little clumps. He realizes that wishlist items 22,53,144 all involve such-and-such, so he’s logical about it. Maybe if I had sat on ‘rock collection’ a little longer, I would have realized that it could have waited, and maybe I could have taken out many rocks with one stone!
So, my lessons seem to be “keep it simple until you have something cool and working”, “give fancy new features proper cool-down time”, and “clump fancy features together”.

Leave a Reply