1 ==========================
2 \*\*\* You have won \*\*\*
3 ==========================
7 | *I might just as well have saved the labor and sweat I had put into*
8 | *trying to make my reports harmless. They didn't fool the Old Man.*
9 | *He gave me merry hell.*
11 -- The Continental Op in Dashiell Hammett's *Red Harvest*.
16 .. image:: /images/picJ.png
23 ust a few final words to round things off. All that remains are the
24 appendices, with terse but comprehensive summaries of the Inform
25 language and its IF library, plus the source code and run-time
26 transcripts of the games we have developed here. Our "labor and sweat"
27 have been oriented towards making your introduction to Inform as
28 harmless as possible, but this probably won't fool you for long.
29 Although we believe we have covered the system's basic functionality and
30 given you enough grounding to feel comfortably sure-footed as you roam
31 the designing wilderness, there are still many techniques to be mastered
32 and additional aspects to be learnt, including medium and advanced
33 features at which we have not even hinted.
35 Before you give us merry hell, however, be reassured that the remaining
36 lore, which may at times feel obscure and enigmatic, is fundamentally
37 constructed around the principles that you have already seen. You should
38 now be ready to browse through other documentation and resources without
39 them seeming full of inscrutable hieroglyphs; on the contrary, you'll be
40 able to focus on those bits you don’t know about (which now, we hope,
41 will be rather less abundant). Inform, like other powerful and flexible
42 IF design tools, is prepared to cope with the needs of demanding
43 authors: "I don't like the way it handles the TAKE ALL command; I wanna
44 change it." And so you can. "I'd prefer the listings of objects
45 organised in a prettier way." Go right ahead. "I want to have a better
46 social life thanks to Inform." No problem, but you'll have to be one
47 damn charming designer. Oh, well.
49 Inform has been designed to let you do simple things intuitively and
50 quickly. Left to its own devices, it offers a wide range of default
51 functionality, and we’ve seen that it’s also easy to alter some of its
52 standard behaviour. The desirable goal is for you to reach a state of
53 such familiarity with the system that you can concentrate on designing
54 your games. By "such familiarity" we are not implying that you should
55 know the innards of the library inside out; such people exist, but
56 they're few and far between. However, once you become reasonably
57 proficient at typing in code, with a knowledge level similar to the one
58 provided by this guide, a careful look at the appropriate section of the
59 *Inform Designer's Manual* should help you through most difficulties.
60 Admittedly, there are problems and *problems*, from the slap-on-the-head
61 trifle to the teeth-gnashing nightmare. We advise you to put the
62 nightmares on hold for the time being. It may be that one day you
63 discover that their fangs were not as sharp as they seemed.
65 There are many interesting topics that you could pursue next. Here are a
68 * **Score:** we have seen two ways of scoring a game, but you may decide
69 that scores have no meaning in your game. And there is yet a third
70 built-in system for defining "tasks" worthy of reward, from "wearing
71 the ridiculous bonnet at the Ambassador's party" to "convincing the
72 unfriendly monkey to play the upright piano". This technique requires
73 a bit of knowledge about...
75 * **Arrays:** these are enumerated lists of variables. Instead of having
76 just one variable to play with, you can have a collection of them,
79 * **Lists and inventories:** there are many functions to let you arrange
80 the way objects are grouped and presented to the player at run-time.
82 * **Vehicles:** cars, elevators, hot-air balloons, magic carpets,
83 spaceships -- or any other device in which the player may travel
86 * **Create verbs and vocabulary:** although we have already nibbled at
87 this concept, you can fine-tune the parser to allow for all sorts of
88 amazing commands (from magical utterances that trigger unfathomable
89 spells, to special actions that affect many objects at once).
91 * **Changing the player:** who says that the player character must be a
92 boring human being? Metamorphose the unsuspecting mortal into a
93 virtual-reality proxy, a fantastic animal, an untouchable ghost, a
94 powerful telepath or a telekinetic vampire. Undecided about which one?
95 Make your game with multiple starring characters and switch between
98 * **Passing of time, timed machines and events:** set a timer that ticks
99 away, unbeknown to the player and attach it to a bomb; a door which
100 opens only once every ten turns; a dragon with short fuse and little
101 patience; a marching patrol of soldiers; a clock that ominously chimes
102 the arrival of sunset and doom. Change the "turns" count on the status
103 line into minutes, or days.
105 * **Mutable directions:** north is north? Not necessarily. Change the
106 direction objects of the game to "forward", "back", and so on. You are
107 on a ship? "fore" and "aft", "port" and "starboard" may be the thing
108 for you. Enter a mirror and have the map and all the directions reflected.
110 * **Complex NPCs:** how unpredictable can the behaviour of that
111 impertinent butler be? Can he talk, move, steal your possessions,
112 poison your tea? Does he react coherently to the player's actions?
113 Does he have a hidden agenda of his own? Although NPC creation is
114 indeed a knotty craft, it’s one worth mastering. "Living" NPCs
115 increase immensely the reality of your games.
117 * **Techie features:** change the status line, or the command prompt.
118 Clear the screen, or alter its colour; centre text upon it, and colour
119 the text as well. Wait for the player to press a key and then trigger
120 some action. Display a message one letter at a time. Add a tiny
121 compass showing available exits at all times.
123 Interactive fiction mixes creativity and narrative skills with coding
124 expertise. Usually, those games which make the biggest impact have a
125 fair amount of both. If you feel yourself lacking one of these qualities
126 at present, contemplate a little teamwork: there are IF collaboration
127 lists on the Internet, where people offer to lend a hand with ideas or
128 programming (and some very good games have come from the mixed efforts
129 of a well-tuned collaboration). Above all, don't forget the importance
130 of beta-testing, which may produce the feedback inspiring you to turn
131 your decent attempt into a killing machine. There's little as obnoxious
132 to players as a game which is obviously under-tested. Getting those bugs
133 out is your responsibility; be sure to clean it as best you can, but
134 never *ever* release a game until it has been kicked around by others.
135 And remember that beta-testers are (almost certainly) experienced
136 players, so their advice beyond the call of bug-hunting is as priceless
137 counsel as you are likely to get. Encourage them to comment on your
138 achievements in both programming *and* design.
140 Now: where to go, what to do? Allow us to insist one last time on the
141 importance of reading the *Inform Designer's Manual*, an excellent book
142 in all respects. While you are at it, write small games, training
143 exercises; we don't advise you to try an epic saga for your first
144 scenario, but if nothing else will work for you -- the Think Big
145 approach -- don't let us deter you. It's a good idea to play other
146 people's games, because you'll know the average level that players may
147 expect; check the newsgroups for comments on good titles. Be sure around
148 September to keep an eye open for the Interactive Fiction Competition
149 (http://www.ifcomp.org/), an annual showcase for short(ish) works.
151 And, who knows? It might be that next year we’ll all be smashed by
155 .. todo:: This signoff should be aligned to the right side.