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 ([email protected])



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.