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