| 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. | |
Xet Storage Details
- Size:
- 19.8 kB
- Xet hash:
- 2b6d42478d361bb06325ec7a5ef52e6e60a138e45dd9cfe6875bf92584e97f0f
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.