The Moonlit Tower
"No matter how small an Adventure you write, it will take far, far more time and effort than you thought it would."--Peter Killworth
About the Game
No, not a prison, though stone stands around you, as expressionless as a mirror awaiting face and form; and in the silence you hear no plaint of flute or roar of gong, but instead the crash of porcelain shattering.
- Download the game (136k) - You may have to right-click (control-click if you're a one-button Mac user) to download. If you have problems, please email me and I'll do my best to figure out what's going on. This is the v.1.1 post-Comp 2002 release, mainly for minor fixes and details. (Yes, I did fix TAKE ALL. Thanks to the many who wrote in with suggestions and "here's where to find coding help," though there undoubtedly remain things to fix, including the dratted tassel disambiguation problem.)
- View the source code (176k) - This is an ordinary text file, but due to its length you may want to save it to your hard drive (right-click again) and view it in your text editor of choice. I'm afraid that, code-wise, there's nothing spectacular, but you're welcome to borrow any details of the implementation (as opposed to the prose) in your own Inform programming.
The sensible way to learn Inform would have been, of course, go through each of the three examples given by The Inform Beginner's Guide by Roger Firth & Sonja Kesserich. What happened was that, inspired by my sister's own experiments and her adaptation of one of her stories into the form, I went through the first, half-heartedly went through the second, and skipped the third entirely in favor of coding up an idea of my own. (Nevertheless, the Guide does its job well, and I found it a handy reference. Prior programming experience allowed me to skim some of the examples.)
To add to the folly, I decided that I would enter it in IFComp 2002, as the timing was about right. But having spent all those hours planning, coding, and debugging, I thought it might be a good way to get some feedback after beta-testing (which turned up many shortcomings).
Currently the game features an ABOUT/HELP menu, including an introduction to Interactive Fiction for the beginner (I suspect it's more well-meaning than helpful, but you never know) and a HINT submenu. I've also endeavored to keep the quality of the prose high, as I've discovered that I enjoy creating puzzles, but I don't claim any great talent for doing so. Might as well play to my one strength.
Reviews (links)
These are all links to other websites, and I have no compunctions about linking to negative reviews. If you have one that I missed, by all means, let me know and I'll add it. Generally, people who enjoyed the mood and setting liked it; people who dislike elaborate prose found the game less congenial (the excerpt is a typical example); opinions varied on the puzzles; and the game seemed to take no more than a couple hours to play.
- J. Robinson Wheeler's review - Includes a lovely fan/kite drawing; in fact, all his comp reviews are accompanied by whimsical and appropriate line drawings. Go look.
- Emily Short's review
- Dan Shiovitz's review
- Andrew Plotkin's review
- David Welbourn's review
- Paul O'Brian's review
- Demian Katz's review (fastest if you go to the end and then scroll up)
- Jess Knoch's review
- SPAG32 (a brief mention in the XYZZY awards section)
Stages of Development
NOTE: This is more humorous than exact.
Phase 1: My sister Yune starts spending large amounts of time working on this strange thing called "Interactive Fiction," which necessitates printing out the Inform Beginner's Guide (Roger Firth & Sonja Kesserich) and Inform Designer's Manual, 4th ed. (Graham Nelson), which we take to Cornell's Olin Library in search of an industrial-strength hole-puncher.
Phase 2: Yune hooks me on the genre with Andrew Plotkin's Shade and Emily Short's Pytho's Mask (I remember that feeling of panic looking at the command prompt and wondering what to do). I get interested and borrow her printout of Inform Beginner's Guide and start working through the simpler examples.
Phase 3: Feeling overconfident in my (rusty) programming background, I stop partway through the examples and begin coding my own example. I rapidly realize that I don't actually have something to code. Depression and many midnight-snack visits to Ithaca's Collegetown Bagels (the one actually in Collegetown) set in while I try to figure out what to do for an IF.
Phase 4: I consider having an undead character wake up in a tomb, then decide that's too old and reeks of Poe's "Cask of Amontillado." However, the tower occurs to me as an extensible/collapsible, newbie-friendly setting, and the first words of the opening, "No, not a prison..." dance through my head. Soon I have my first room (the Moonlit Chamber), first object (the porcelain mask), and first proto-easter egg (yes, easter egg).
Phase 5: I sketch out the first two levels (one on the top level, plus the next four). I discover that in coding I keep screwing up print vs. print_ret and that it's really easy to put semicolons and/or commas in the wrong places, syntax-wise. Yune suffers through my ebullience as I drag her out on more midnight snack sessions.
Phase 6: I discover that coding the seasonal changes in the Undying Garden really, really sucks. In desperation, I attempt to do some Dylan (Scheme)-like metafunction stuff that doesn't work (at least, not with my limited command of Inform). I blame CS 212 (now CS 312 and taught in SML/NJ, not Dylan). Yune helps dig me out of some of the stupid programming holes I fell into.
Phase 7: The basic tower and puzzles exist, but everything gets put on hold so I can go get married and then go to GenCon 2002 at Milwaukee with Joe (husband) and Greg (friend). Not long after that, Yune goes back to Korea for the rest of the summer and I leave for Boston.
Phase 8: Midway through coding, I decide that I want to have an ABOUT/HELP/HINT menu system. I experiment with various libraries that, for whatever reason, fail to work with my version of Inform and/or frotz, and tear my hair out over an array-out-of-bounds error until I finally get a system working. Then I lose lots of time devising overly talkative menu entries.
Phase 9: After lots of headaches, countless run-throughs, and debugging sessions (the maple leaf and its, er, antecedents gave me no end of trouble for no good reason), the game exists in a nominally complete form. I pack it off to the beta-testers, who immediately start finding lots of areas for improvement, and began working like mad on making adjustments.
Phase 10: Beta-testing failed to find any major bugs, though a few quirks and glitches show up. As I'm running out of time, I put on the final touches and, with a gulp of trepidation, submit the thing to IFComp 2002. Out of my hands now. I pray that no fatal errors of major bugs persist, and take a well-earned break before starting another IF project, this time properly planned (one hopes).
Phase 11: The voting period is over, so now I can actually post this page. Sorry about the coding errors...I tried to read the DM4 straight through, honest, and referred to it much, but I have much to learn.
Phase 12: Amazingly, the game takes Best Writing in the 2002 XYZZY Awards. There is a transcript of the awards ceremony on ifMUD on Brass Lantern, courtesy of Stephen Granade.
Phase 13: Thanks again to the many people who wrote in with feedback and encouragement.
* * *
Copyright © 1996-2008 Yoon Ha Lee <requiescat@cityofveils.com>
Last updated on 26 June 2007.