This will probably be the last I’ll talk about IFComp until after the judging period is over. Rule 5 will be in effect, and although I’ll be writing up a more detailed postmortem of my development experiences, I won’t publish until after the cone of silence is lifted on November 15. Thank goodness there will be an authors’ area set up at the intfiction forums. I’m really looking forward to playing a bunch of fresh new games this year and seeing what everyone came up with. It will be nice to see whether any of the folks I met last year in the forums will be returning with new games, and it will be fun to talk with the new authors and get their impressions of writing their first games.
In previous posts, I’ve tried to distill down to a single aphorism, but I don’t think I can sum up the rest of what I’ve learned with just one statement in this last post. Here is a list of the major things I learned:
- Quantity leads to quality. No, I’m not talking about lines of code. Or am I? Granted, we should strive for efficiency in coding, and you can’t just shovel out a huge mass of boilerplate IF and expect to have created a masterpiece. But there’s simply no substitute for sweating the details and writing the myriads of special-case rules required to make objects distinctive under the world model, and that does mean lines of code. As another facet of this, there’s also no substitute for poring over as many transcripts as you can get from beta testers. Every new tester has a new approach and will shake out new bugs and weaknesses. It’s a very parallelizable process, too. More beta testers means more bugs found faster, and that’s a winning formula.
- Organization is very important. It’s not really important which methodology you use, but you should have a plan for organizing your source code and stick to it. Having a good organizational structure means you can navigate easily with the Index, of course, but most of the time you won’t need to use it, because the structure itself will prompt you to the correct location in the code. There may come a time near the end of the project when you’re under the gun, when you might have to hack in some quick fixes or make some changes to mechanics with a short turnaround time, and the structure may degrade (it certainly did for me in places). But at least if you have it in the first place you’ll be able to make those hacks faster and more accurately and you’ll put things in approximately the right place.
- Programming maxims apply to Interactive Fiction. In particular, the major ones that affected me on this go-around were:
- Second System Syndrome: I wanted to fix absolutely everything that was deficient in my earlier title, plus add everything that was cool in the best current games — keyword support a la Blue Lacuna, a conversation engine (integrated with the keyword engine, naturally), integrated tutorial, nameable animals, a status line exit lister like Eric Eve had for Snowquest (but improved for Glulx, of course!), etc. I seriously thought about adding an achievement feature at one point, but luckily came to my senses.
- The Ninety-Ninety Rule: In particular, the variant that states, “The first 90% of the code takes 90% of development time. The other 90% of code takes the other 90% of time.” The project took much longer than I expected, and when I thought I was done, I was really only half done. Seriously. In June I thought my project would top out at 60,000 lines. At this point it’s at over 100,000 lines. Finishing and polishing takes much more time and effort than you might think, particularly if your project is larger or you’ve gone crazy with features. Budget for it.
- Stay flexible. Unless you have been doing design review and testing from the early stages (and you should), you will probably find that a paraphrase of Helmuth von Moltke‘s famous statement applies to your IF title: “No game survives contact with the testers.” Give yourself time and allow yourself to admit that you have made some suboptimal decisions. If you’ve built your code solidly and got feedback early enough, you’ll have time to adapt. I ended up adding two new systems to my game with two weeks left before the Comp deadline. Neither were huge, and I think both came off without serious problems, but I still would have liked more time to integrate them, just to lower the stress level.
- It’s never over ’til it’s over. After a year of working on this game, it would be very easy to not look at the source code any more — to just put it aside, say “good enough”, and drive on. But a hard deadline can be very focusing, and I still have a few days left. I’m [well] past the point where I’m making major changes in structure, but I can still get things done. I’ve done a couple of the following already, and may not get to them all, but they’re all on the table:
- Fix remaining minor bugs
- Add sensory descriptions
- Double-check for unimplemented nouns and needed synonyms
- Go over the writing again for weak phrasings
- Make feelies
- Look at optimizing performance for Quixe
- Remember why you did this. You wanted to make a cool game or a moving story or a challenging brainteaser. Sure, you spent more time than you thought you’d have to spend, and coding that one puzzle gave you fits. But did you succeed? Did you have fun doing it? Interactive Fiction is one of the very few areas of computer gaming where the one-person project is still the norm. You’ve taken a game from concept through design and implementation to polish and release, handling the writing, coding, documentation and packaging yourself. Do you feel satisfied and proud now that you’re about to release your game to the wide world? You should!
So there’s the last of the notes from my personal journey. I’ll wrap up with a visual thank-you to my beta testers. So I could easily highlight problems for collation, I printed off the transcripts I got back from people in 7-point type with no margins. Some transcripts were double-sided, others not, and I didn’t print them all. Stacked up, they’re a pile about 2 1/2 inches tall. Beta testers, I can’t thank you guys enough for the priceless help you gave in this project. Your testing, feedback, and suggestions have fueled a huge improvement in the quality of Aotearoa.
Enjoy the Comp, everyone!