Hello! This is the solution to "Everybody Loves a Parade" -- my first work of interactive fiction. After the solution is a self-indulgent commentary on the genesis and development of "Parade". (Later on, I'll get even more self-indulgent when I leave off the quotation marks.) I've also included some hints for future TADS programmers which may or may not come in handy. I apologize ahead of time for any unhandy hints. Cody Sandifer (sandifer@crmse.sdsu.edu) THE SOLUTION: In general, studies in museums have shown that people are more likely to turn right than left, so the order of the solutions might be backwards. No, I am not kidding about the studies. The "endgame" puzzles are two or three pages down the line. You can't find your way across the puddle in the laundromat... I suppose that you already tried to jump the darn thing. It won't work, but it's fun to try anyway. I included mop as a verb only because a playtester suggested it -- there isn't a mop anywhere. Perhaps you could cover the puddle with something? The something would have to be large in an absorbent kind of way, making the puddle safe to walk upon. It's on the floor somewhere. In the pub. If you can't find a container, you should do some serious searching -- especially in the tank area. You can probably figure out the next step yourself. What kind of machine hangs out in a laundromat? The date on the receptacle is a clue, albeit a lame one. Put the dollar coin in the vertical slot. You're in the money! You can't get the valuable rock in the rock museum... Citizens of Chewton installed an alarm, but they're rather, ahhh......stupid. The key isn't difficult to find once you take this fact into account. I can't use invisiclues, so I'll just type in the answer backwards: (.elbat eht rednu si yek ehT) Don't bother holding the clue up to a mirror -- you'll just get confused. The letters are forwards even though the words are backwards. You can't get the bikers to leave the bar... You could act on your violent desires, but that'll just get you poetically smacked around. They seem to be intent on completing their ritual -- remember the perfect note? I bet you could find one. If you're looking for a tape recorder, don't bother. I decided that there was way too much random noise to allow players to tape everything audible. Plus, you'd probably get sick of hearing "Why would you want to tape that?" a million times. Oh yeah -- the note is in a lofty place. Those choruses really know their stuff. You haven't been to heaven, you say? Take a good look at the pebbles on the tank. Then throw something at them -- but make sure you haven't stolen the smock first. You can't get the mechanic to pay any attention to you... Even with the hints I programmed into the game? Really? Kick 'em twice. If you don't, your thoughts will nag you 50 turns later. You can't find anything to give the mechanic... Take a good look at the objects in the pub. Specifically, the (elbat loop). Is this backwards thing annoying you? I hate reading clues before I'm ready, so I figured that this is a fair compromise. If you're dyslexic, I'm probably destroying whatever letter sense you've developed through years of hard work. Sorry. You can't get the money from the juggler's hat... This one is pretty tough, actually. To get the cash, you'll need to distract the juggler. If you haven't already thrown something at the juggler, you should try it out. If you're still stuck, take a good look at what she's juggling. The balls are round. Sound familiar? Specifically, throw another round item at the juggler. If I haven't screwed up, there's only one other round item in the game. It's the (kcor elbaulav). If you *still* can't get it to work, it's because the rock (darn, I just ruined it) doesn't look enough like the balls. What's special about the balls? You got it: (egnaro er'yeht). You can turn the rock (egnaro) by painting it twice. I'm not sure that this would work in real life, which is why I added the bit about the paint "doing funny things sometimes" if you ask the salesman about the paint. You can't figure out what to do with the corn dogs... Whatever you do, don't eat them. I left the obnoxious hunger daemon out of the game. If you chow down, the game will be unwinnable. So, what to do? As any good American will tell you, it's nice to have money. ($8 worth, in this game) I provided a heavy-handed hint in the description of the cart. Try selling them. If that doesn't work, it's because you're not dressed appropriately. Would you buy a corn dog from a weirdo on the street? Even one as good-looking as you are? A salesperson should at least *look* official. You'll need the smock in the uniform shop. The corn dogs should be in the cart before you try selling them. You can't find a way to get the smock... Did you read the description carefully when you tried to get the smock? (You'll never get the tailor's attention, so don't bother. Not even by dancing.) There are a number of actions in the game that your conscience won't allow you to do. This is one of them. Is there a way around your conscience? Maybe if you (knurd tog). You can't figure out what to do with the whiskey... Try drinking the whiskey again. Be sure to read the reaction carefully. (I really did try to hint at most of the solutions in the game.) "Straight" implies that you might be able to drink the whiskey with something else. A (ados) will do the trick, although you'll need money to buy one first. Once you get drunk, try acting slightly immoral. You know -- steal some stuff. At one point, I considered running a "guilt" daemon late in the game to make the player feel bad. I never got around to it, though. You can't get the goddam (or goddamn, according to my progressive spellchecker) apple without the old man checking out your action... You can try to take, kick, and throw stuff at the apple. You can try to hassle the old man. None of it will work. The only way to get rid of the old man is to satisfy his craving. Buy him a little boy! (Just kidding. The dirty old man isn't Michael Jackson.) You'll have to scrounge up 8 bucks first. Once you get the (nig), let him have it. I've satisfied the mechanic's requirement. What do I do now? Did you tell him about the parade? He's in need of a good convincing. At this point, you should be painfully aware of your (redneg). Use it to your advantage. (It's probably too late to warn you, but I disallowed [kcuf] as an option. Aside from 40 goddams and 20 hells, I decided to keep the game relatively clean.) HOW PARADE GOT ITSELF MADE Before I start, I want to apologize if you find this overly self-indulgent. Personally, I enjoy behind-the-scenes analyses of movies, books, and other kinds of arty things. I thought others might feel the same way, so I put my thoughts to paper. If anything else, I'll be glad to have this record for whenever I get motivated to write another game. Here goes! After a long break, I got back into playing interactive fiction games late in 1996. Flames of Perdition was a whole mess of fun, but I was impressed that games such as Wedding and Uncle Zebulon's Will were playable, entertaining, and (most importantly of all) SHORT! I didn't want to spend an entire year on a game (or two, or three -- you know who you are). I figured that I could bust out a game in three weeks. And -- you know what -- I *did* bust out a game in three weeks. Version 1, anyway. Before I began programming, I read the manual, drew a map, and penciled in objects and puzzles. (Not that the outline was in its the final form, mind you. Looking over my notes, I originally included a golf course at the eastern end of the parade and a couple of additional puzzles: (1) stealing money from an organ grinder monkey, and (2) escaping from the van (initially) by popping a balloon with the lighter. In case you were wondering, I got sick of programming and canned the extra puzzles.) The introduction was the very first thing I wrote, which is probably why it's so damn long. One playtester complained about its length, but I decided to leave it as-is. Up next was the daily typing ritual. Over Christmas break, I programmed for three weeks straight -- sometimes, up to 10 hours/day. (I'm a college student, which was how I found the time. I originally had four or five college references in the game, although I've since deleted most of them. There's probably some truth to the advice about "writing what you know", but i-f games with collegiate themes bug the hell out of me. Kissing the Buddha's Feet is a prominent exception.) As a TADS beginner, I spent most of the original 3 weeks figuring out how to implement the puzzles in TADS. I averaged about a puzzle a day. Although most experienced programmers advise against it, my working room descriptions were short lists of objects and actors (you know, like the old Scott Adams type of games). I wrote most of the room descriptions the day before I shipped out Version 1 to playtesters. Since Parade was a relatively small game, it worked out OK. I would advise against it for larger games. Here are some concerns I had early on: Since Parade takes place in the real world (sorta), I had to restrict the player's movement with something other than cave-ins and giant Balrogs. That's how I thought of the train. Eventually, I walled the player in with the parade itself. The whole money thing was a real pain. I'm just now learning how to program indistinguishable objects, so an entire inventory of droppable money (both coins *and* bills) was out of the question. That's how I came up with an undroppable wad of cash that incremented only in whole dollar amounts. Due the lack of female leads in i-f, I knew from the start that I wanted the player to be a woman. Also, I thought it would be tremendously funny to provoke a gender re- evaluation halfway through the game. Before initial playtesting: Heaven and hell didn't exist. (If you didn't find hell, you can get there by trying some of the "fun stuff" that I outlined.) The bikers (arbitrarily, I now realize) left the pub after 4 visits. This mystified most playtesters, since there was no sign of their departure other than a brief "The table's free!" comment when the player re-entered the pub. The apple could be found by searching the pool table -- it had fallen into one of the pockets. Also, in contrast to the rest of the characters, the bikers had no personality to speak of. "Rocks" was how one playtester described them. I didn't nudge the player with thoughts about getting the mechanic's attention. After initial playtesting: I gave the bikers personalities and made it obvious when they left the pub. After exiting a second time, the bikers pushed the player aside and wandered into the crowd. To find the apple, you still had to search the pool table. I added a ton of inspectable objects, new verbs, and minor bug fixes. Some major bug fixes, too. If you dropped the apple in the initial version, you could never pick it back up. "But you already have the apple!" Oops. Also, you could get the old man wasted with the gin without ever trying to pick up the apple. Since the player has to be aware of his/her sex before confronting the apple-munching mechanic, this made the game impossible to win. I still didn't include the nudging "thoughts" about getting the mechanic's attention. As a result, some players (still) had no idea why the hell getting the apple was so damn important. Since getting the apple is the motivation for the whole plot, I thought it best to pound the player with hints if s/he didn't smack the mechanic a few times. (In retrospect, I now see the dangers in programming a highly linear game where leaving a single puzzle unsolved can screw up everything.) I wrote a bunch more atmospheric texts. (e.g. "The paint salesman rolls his eyes.") Originally, there were 5-7 per noisy room. I ended up with 10-15 per room. Somewhere around final playtesting: (some modifications just before, some just after) I included plurals. ("The clowns doesn't appear appetizing" really started to annoy me.) I changed the bikers into a puzzle. Getting them to leave was no longer arbitrary. (At this point, the afterlife already existed -- but purely for fun. Only those players who threw something at the tank could find it. Finally, I realized that I could tie heaven to the bikers by giving them musical tendencies.) I made the apple fall to the floor. At first, I left the apple on the table when the bikers left -- until someone pointed out that you don't need to bend over to pick up an apple off the surface of a pool table. So, I made the apple fall off the table and wedge itself. No complaints about apples rolling on sawdust, please. I modified the smock slightly. Many playtesters pointed out that wearing the (originally tight) smock was a valid solution to the wedged apple puzzle. I got around this by (1) making the smock loose and (2) generating an appropriate message when the player goes for the apple while wearing the smock. Unfair? Maybe so. I added in a few other comedy bits (esp. the Giant Sack). I downsized the Mound of Quartz room description. The original Mound of Quartz room description included the information that now pops up when you inspect the upper class. It was overwhelming (still is, maybe), which is why I backgrounded the unnecessary detail. Also, I moved the ATM machine from the Mound of Quartz to the Minimall Entrance to make the Quartz room description more manageable. Likewise, because I was unhappy with my writing, I erased or relocated most of the original Uniform Shop room description. The wind, ghost, and ominously looming objects are brand new. (Not even seen by the final playtesters, actually. I bet that's how typos creep in.) On one playtester's suggestion, I disallowed the use of "all" with nearly every verb: all but 'get', 'put', 'take', and 'drop'. The playtester had used "smell all" as a way to get a quick list of every inspectable object. He had even solved the perfect note puzzle this way. (Note, however, that the use of "examine all" allowed early playtesters to figure out which items I accidentally omitted from room descriptions. In Version 1, I had forgotten to include the bulletin board (Rock Museum) and desk (Garage).) Most playtesters still didn't like the late revelation of the player's sex. (Which can come *really* late now that getting the bikers to leave is a puzzle.) After wavering back and forth for a couple of weeks, I decided not to give in to peer pressure. On the suggestion of playtesters, I added in a few more things for the player to do when drunk (jumping over the puddle and reading the porno mag, in particular). I included standard TADS instructions (with a few minor changes to interactions with characters) just because I could. Hell was created for my own amusement. Since there's a heaven, why not? Changes for v2.2: I corrected a major bug in the pub. Before the bug fix, TADS allowed players to "show" every visible item. Thus, it was possible for the offended biker to grind the bartender, the old man, and the pool table beneath his boot. Man, that's one powerful boot. I made it easier to get to hell. Rather than solve the puzzles in a particular order, the player can now get to hell by throwing an object at the tank *after* stealing the smock. Jumping over the puddle while drunk now transports the player to limbo. You can also get to limbo by riding the train. Thanks to Admiral Jota for the smock-stealing suggestion. The player can now become a hobo by climbing on the train. I did this mainly as a programming exercise to see if I could get the train to start and stop like the elephant in Graham Nelson's "The Meteor, the Stone, and the Tall Glass of Sherbet." (Sorry if I remembered the title incorrectly.) Thanks to Stephen Granade for the train-hopping suggestion. Closing comments: The playtesting and revising of games takes a *lot* of time. Version 1 (130k) came out in January. The first public version of Parade (Version 2.1 @ 264k) came out in March 1997. Before the final release, I must have played my own game 30 damn times. At least. Finally, writing this game was a lot of fun! Give it a try! To this end, here are a few hints for those who want to give TADS a try. I highly recommend it. (To help persuade you, keep in mind that, before TADS, my last bout with programming was a beginning Pascal course in 1986.) TADS ADVICE FOR FUTURE PROGRAMMERS: If you think it'll help, I'd be glad to share code with anyone interested in programming. Otherwise, here are some helpful hints for hopeful programmers: 1. The Synonym and -> shortcuts save a lot of typing. Use 'em whenever possible. 2. Programming doVerbPrep(actor,iobj) stuff is a real pain (as in "cover puddle with sawdust", where "puddle" is the important object for the verb). Redirect the ioVerbPrep action to the doVerbPrep like it says in the Book of the Parser. Otherwise, the doVerbPrep never gets accessed. (Can you say 2 wasted hours? I can.) 3. Take care of important details as you stumble across them. Don't wait until later! For example, I programmed the responses to the improper use of the paint machine (while the safety door was open, etc.) because I knew that I would forget later on. Your playtesters will get cranky if you don't anticipate these details. Speaking of which... 4. Use playtesters. They're nuts, but they're a big help. Like I said, Version 1 was only 130k. 5. Use the plurals.t module on ftp.gmd.de if you want to incorporate plurals. (Don't forget bugs.t, too!) This module may become pronouns.t in the future. 6. Be sure that you don't modify a class property (the container class verDoLookin property, e.g.) more than once. Unfortunately, the compiler doesn't warn you when this happens; it just keeps the latest modification. 7. In a related topic, be sure to check ADV.T before you modify a class property. You might wipe out something important. (By the way, both ADV.T and STD.T are worth a good look before you start.) 8. Unless you modify ADV.T, TADS allows players to "put" things that they aren't carrying. This can lead to serious bugs if you forget to block the "put" verb for inaccessible items (a wedged apple, for instance). If you don't believe me, put the bush from Unnkulian I in the bucket. Or, put the gold bar, anchor, or bookmark from Unnkulian II on the went board. My solution was to forbid the player from "putting" anything that he or she isn't carrying; Inform does the same thing. (I should know, since I stole Inform's default "put" response.) 9. If you replace the default ldesc (long description) of a surface or container object, any attempt to look in or search the container/surface will call up the response "There's nothing on/in the surface/container." Silly, I know. Bugs.t repairs this oversight. 10. If you want to trigger a daemon more than once, don't forget to reset its counter to zero. 11. Watch James Cagney movies. Public Enemy, Strawberry Blonde, and White Heat are good places to start. 12. If you replace one object with another (a live monkey with a dead one, for example), don't forget to setit(new_object). This way, the pronoun "it" will refer to the new object. 13. Create separate files (verbs.t, modifications.t, actors.t, paint_shop.t, etc.) from the very beginning. This makes it *much* easier to locate code for future revisions. 14. It's your own damn game. Do whatever the hell you want. 15. Read the manual and download lots of source code. If that doesn't work, don't be afraid to look like an idiot on rec.arts.i-f. I'll be glad to keep you company.