/
t-a-10-attributes.html
174 lines (163 loc) · 43.4 KB
/
t-a-10-attributes.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Storytron Tutorials - Attributes</title>
<meta name="GENERATOR" content="Virtual Mechanics SiteSpinner V2 270f ">
<meta http-equiv="imagetoolbar" content="false">
<style type="text/css"><!--
.fsx01 {font-size: 11px;}
.fsx02 {font-size: 12px;}
.fsx03 {font-size: 13px;}
.fsx04 {font-size: 15px;}
.fsx05 {font-size: 16px;}
.fsx06 {font-size: 19px;}
.fsx07 {font-size: 21px;}
.fsx08 {font-size: 24px;}
.fsx09 {font-size: 27px;}
.fsx10 {font-size: 29px;}
.fsx11 {font-size: 32px;}
.fsx12 {font-size: 35px;}
.fsx13 {font-size: 37px;}
.fsx14 {font-size: 48px;}
.fsx15 {font-size: 64px;}
.fsx16 {font-size: 96px;}
.txdec {text-decoration: none;}
#centered{position:relative;width:984px;height:100%;margin:0px auto 0 auto;text-align:left;padding-left:1px;cursor:default}
#Oobj7 {position:absolute;z-index:1;visibility:visible;text-align:left;left:395px;top:66px;width:400px;height:71px;}
#Oobj9 {position:absolute;z-index:2;visibility:visible;text-align:left;left:207px;top:122px;width:766px;height:4353px;background-color:#ffffff;border-width:6px;border-style:solid;border-color:#ffffff;}
#Oobj446 {position:absolute;z-index:3;visibility:visible;left:0px;top:2px;width:200px;height:147px;}
#Oobj456 {position:absolute;z-index:4;visibility:visible;left:208px;top:-1px;width:775px;height:28px;}
#Oobj457 {position:absolute;z-index:5;visibility:visible;text-align:left;left:220px;top:0px;width:741px;height:27px;}
#Oobj459 {position:absolute;z-index:6;visibility:visible;left:208px;top:27px;width:775px;height:28px;}
#Oobj49 {position:absolute;z-index:7;visibility:visible;text-align:left;left:222px;top:4412px;width:740px;height:185px;}
input,textarea,select {color:#000000;font-family:'Times New Roman';font-size:16px;font-weight:normal;font-style:normal;text-decoration:none;}
.dfltt {font-family:'Times New Roman';font-size:16px;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;color:#000000;}
.dfltc {font-family:'Times New Roman';font-size:16px;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;color:#000000;}
body {margin:0px;text-align:center;height:100%;width:100%;}
-->
</style>
</head>
<body bgcolor="#dec4a6" alink="#ff0000" link="#8c6756" vlink="#747474" >
<div id="centered">
<div id="Oobj7">
<div id="Ggeo5" class="dfltt">
<div align="center"><font face="Bookman Old Style" class="fsx06"><B>SWAT TUTORIAL<br>
Attributes<br></B></font></div>
</div>
</div>
<div id="Oobj9">
<div id="Ggeo59" class="dfltt">
<font face="Bookman Old Style" class="fsx04">An </font><font face="Bookman Old Style" class="fsx04" color="#008080">Attribute</font><font face="Bookman Old Style" class="fsx04"> describes </font><font face="Bookman Old Style" class="fsx04">a trait, quality, or property of </font><font face="Bookman Old Style" class="fsx04">an </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Actor</font><font face="Bookman Old Style" class="fsx04">, </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">Prop</font><font face="Bookman Old Style" class="fsx04">, or </font><font face="Bookman Old Style" class="fsx04" color="#ff8000">Stage</font><font face="Bookman Old Style" class="fsx04">. You can create as many </font><font face="Bookman Old Style" class="fsx04" color="#008080">Attributes</font><font face="Bookman Old Style" class="fsx04"> as you want, but we advise you to be careful and not run hog-wild here, lest you create a confusing mess of </font><font face="Bookman Old Style" class="fsx04" color="#008080">Attributes</font><font face="Bookman Old Style" class="fsx04">. Our experience has been that authors create too many </font><font face="Bookman Old Style" class="fsx04" color="#008080">Attributes</font><font face="Bookman Old Style" class="fsx04"> at first, and then have to pare down their list, which can be very tedious and time-consuming.<br>
<br>
You can create </font><font face="Bookman Old Style" class="fsx04" color="#008080">Attributes</font><font face="Bookman Old Style" class="fsx04"> to represent anything that you think is important to your dramatic needs. For example, if you want to build a storyworld about romance, you'll certainly want to have an </font><font face="Bookman Old Style" class="fsx04" color="#008080">Attributes</font><font face="Bookman Old Style" class="fsx04"> for how attractive an </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Actor</font><font face="Bookman Old Style" class="fsx04"> is. If it's a macho storyworld for guys, you'll probably want an </font><font face="Bookman Old Style" class="fsx04" color="#008080">Attribute</font><font face="Bookman Old Style" class="fsx04"> for how strong each male </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Actor</font><font face="Bookman Old Style" class="fsx04"> is. If it's a Western-type storyworld, then maybe you'll want an </font><font face="Bookman Old Style" class="fsx04" color="#008080">Attribute</font><font face="Bookman Old Style" class="fsx04"> for how quick on the draw an </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Actor</font><font face="Bookman Old Style" class="fsx04"> is. You don't want </font><font face="Bookman Old Style" class="fsx04" color="#008080">Attributes</font><font face="Bookman Old Style" class="fsx04"> for everything and anything</font><font face="MS Sans Serif" class="fsx02">—</font><font face="Bookman Old Style" class="fsx04">you want </font><font face="Bookman Old Style" class="fsx04" color="#008080">Attributes</font><font face="Bookman Old Style" class="fsx04"> that will directly influence the decisions that </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Actors</font><font face="Bookman Old Style" class="fsx04"> make.</font><br>
<br>
<font face="Bookman Old Style" class="fsx04" color="#008080">Attributes</font><font face="Bookman Old Style" class="fsx04"> are created in the appropriate Editor depending on whether you're describing an </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Actor</font><font face="Bookman Old Style" class="fsx04">, </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">Prop</font><font face="Bookman Old Style" class="fsx04">, or </font><font face="Bookman Old Style" class="fsx04" color="#ff8000">Stage</font><font face="Bookman Old Style" class="fsx04">. We have a convention that we have found is very helpful when it comes to naming an </font><font face="Bookman Old Style" class="fsx04" color="#008080">Attribute</font><font face="Bookman Old Style" class="fsx04">: we give it two names connected by an underscore, with the two names representing the meanings of the two opposite senses of the </font><font face="Bookman Old Style" class="fsx04" color="#008080">Attribute</font><font face="Bookman Old Style" class="fsx04">. <br>
<br>
For example, if we have an </font><font face="Bookman Old Style" class="fsx04" color="#008080">Attribute</font><font face="Bookman Old Style" class="fsx04"> for how attractive an </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Actor</font><font face="Bookman Old Style" class="fsx04"> is, we don't call it "</font><font face="Bookman Old Style" class="fsx04" color="#008080">Attractive</font><font face="Bookman Old Style" class="fsx04">"</font><font face="Bookman Old Style" class="fsx04">—</font><font face="Bookman Old Style" class="fsx04">we call it "</font><font face="Bookman Old Style" class="fsx04" color="#008080">Ugly_Attractive</font><font face="Bookman Old Style" class="fsx04">." If we want an </font><font face="Bookman Old Style" class="fsx04" color="#008080">Attribute</font><font face="Bookman Old Style" class="fsx04"> for how strong an </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Actor</font><font face="Bookman Old Style" class="fsx04"> is, we don't call it "Strong"</font><font face="Bookman Old Style" class="fsx04">&#mdash;</font><font face="Bookman Old Style" class="fsx04">we call it "</font><font face="Bookman Old Style" class="fsx04" color="#008080">Weak_Strong</font><font face="Bookman Old Style" class="fsx04">." Years of experience have taught us that this <I>bipolar labeling convention </I>makes it easier to work with </font><font face="Bookman Old Style" class="fsx04" color="#008080">Attributes</font><font face="Bookman Old Style" class="fsx04">. In fact, we've built this convention into the Storyteller, so that it's easier for the player to understand. The Storyteller takes advantage of the labeling convention to make its presentation to the player a bit easier to understand. But you don't have to follow this convention. If you want to give your </font><font face="Bookman Old Style" class="fsx04" color="#008080">Attributes</font><font face="Bookman Old Style" class="fsx04"> other labels, be our guest. (In fact, there are a few special situations in which it's best <I>not</I> to follow the convention—but recognizing those special situations is an advanced topic.)<br>
<br>
Each </font><font face="Bookman Old Style" class="fsx04" color="#008080">Attribute</font><font face="Bookman Old Style" class="fsx04"> has a different value for each </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Actor</font><font face="Bookman Old Style" class="fsx04"> (or </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">Prop</font><font face="Bookman Old Style" class="fsx04"> or </font><font face="Bookman Old Style" class="fsx04" color="#ff8000">Stage</font><font face="Bookman Old Style" class="fsx04">). You set the different values of the </font><font face="Bookman Old Style" class="fsx04" color="#008080">Attribute</font><font face="Bookman Old Style" class="fsx04"> using the sliders for that </font><font face="Bookman Old Style" class="fsx04" color="#008080">Attribute</font><font face="Bookman Old Style" class="fsx04">.<br>
<br>
But the weirdest, most confusing thing about </font><font face="Bookman Old Style" class="fsx04" color="#008080">Attributes</font><font face="Bookman Old Style" class="fsx04"> is the number system we use for them. </font><font face="Bookman Old Style" class="fsx04" color="#008080">Attributes</font><font face="Bookman Old Style" class="fsx04"> are always measured with a strange kind of number that we call a </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">Bounded Number</font><font face="Bookman Old Style" class="fsx04">.</font><br>
<br>
<font face="Bookman Old Style"><U>Bounded Numbers</U></font><br>
<br>
<font face="Bookman Old Style" class="fsx04">Storytronics is a kind of simulation: it models dramatic behavior with numbers. Designing such models is always a tricky business, and one of the trickiest, nastiest, dirtiest problems in modeling comes from dealing with the numbers themselves. What, exactly, do we mean when we try to put a number on a dramatic personality trait? <br>
<br>
For example, suppose we want to take into account how gullible </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Actors</font><font face="Bookman Old Style" class="fsx04"> are. We want gullible </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Actors</font><font face="Bookman Old Style" class="fsx04"> to have </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">Inclinations</font><font face="Bookman Old Style" class="fsx04"> that incline them towards trusting-type </font><font face="Bookman Old Style" class="fsx04" color="#008000">Options</font><font face="Bookman Old Style" class="fsx04">, while we want other </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Actors</font><font face="Bookman Old Style" class="fsx04"> to have </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">Inclinations</font><font face="Bookman Old Style" class="fsx04"> that incline them away from trusting-type </font><font face="Bookman Old Style" class="fsx04" color="#008000">Options</font><font face="Bookman Old Style" class="fsx04">. Obviously, we'll want to create an </font><font face="Bookman Old Style" class="fsx04" color="#008080">Attribute</font><font face="Bookman Old Style" class="fsx04"> called "</font><font face="Bookman Old Style" class="fsx04" color="#008080">Suspicious_Gullible</font><font face="Bookman Old Style" class="fsx04">." But what would any such numbers mean? Does a </font><font face="Bookman Old Style" class="fsx04" color="#008080">Suspicious_Gullible</font><font face="Bookman Old Style" class="fsx04"> value of 100 mean that an </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Actor</font><font face="Bookman Old Style" class="fsx04"> is really gullible? Does 5 mean that he's really suspicious? What does 3,157,287 mean? Or -37.2? <br>
<br>
We all recognize that there are degrees of gullibility and suspiciousness. We can readily understand that </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Actor X</font><font face="Bookman Old Style" class="fsx04"> is more gullible than </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Actor Y</font><font face="Bookman Old Style" class="fsx04">, or that </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Actor Z </font><font face="Bookman Old Style" class="fsx04">is just slightly suspicious. So we already know instinctively that gullibility and suspiciousness are concepts that, at least theoretically, could be measured with numbers. But <I>what</I> numbers are right for the job?<br>
<br>
We have invented, just for Storytron, our very own kind of number that is designed especially for this problem. We call it a </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">Bounded Number</font><font face="Bookman Old Style" class="fsx04">, or </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">BNumber</font><font face="Bookman Old Style" class="fsx04">. We've designed it from the inside out to make perfect sense and to be easy to use.<br>
<br>
Whenever you use a </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">BNumber</font><font face="Bookman Old Style" class="fsx04">, you think in terms of the average, not the absolute. You don't think "How many units of gullibility should I assign to Fred?" Instead, you think in terms of a bell curve of suspiciousness and gullibility, like this:<br>
<br>
<center><img src="images/t10-a.jpg" width="383" height="229"></center><br>
<br>
Most people are close to the average in overall suspiciousness versus gullibility. Some people are more suspicious and some are more gullible. And very few are extremely suspicious or extremely gullible. So you use a value of 0.0 to indicate average or normal values, a value of 1.0 to indicate the maximum possible degree of gullibility, and -1.0 to indicate the maximum possible degree of suspiciousness. (In practice, we never use the values of +1.0 or -1.0, because they're supposed to represent "the impossible extreme." So we normally just use +0.99 to mean "really really really big one way" and -0.99 to mean "really really really big the other way.")<br>
<br>
This reliance on thinking in terms of bell curves makes a lot of problems go away, because now you don't have to worry about the units of measurement. Suppose you want an </font><font face="Bookman Old Style" class="fsx04" color="#008080">Attribute</font><font face="Bookman Old Style" class="fsx04"> for how short or tall an </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Actor</font><font face="Bookman Old Style" class="fsx04"> is. You don't have to worry about whether an </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Actor</font><font face="Bookman Old Style" class="fsx04"> is 5 foot 4 inches tall or 162 cm tall. You just decide that average height is, say, 5 foot 6 inches, and really really really short is 4 feet 0 inches and really really really tall is 7 feet 6 inches. Then you can estimate that 5 feet 4 inches corresponds to a </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">BNumber</font><font face="Bookman Old Style" class="fsx04"> of about -0.05. <br>
<br>
Nor do you have to worry about weird scaling problems, like multiplying 6,487,265 "Joy thingies" by 0.125 "Honest thingies." </font><font face="Bookman Old Style" class="fsx04" color="#008080">Sad_Joyful</font><font face="Bookman Old Style" class="fsx04"> runs from -1.0 to +1.0, and so does </font><font face="Bookman Old Style" class="fsx04" color="#008080">False_Honest</font><font face="Bookman Old Style" class="fsx04">. Everything is always measured on the same scale</font><font face="Bookman Old Style" class="fsx04">—</font><font face="Bookman Old Style" class="fsx04">no matter what you're using!<br>
<br>
In </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">BNumber </font><font face="Bookman Old Style" class="fsx04">Arithmetic, everything always works out right. You can add, subtract, and do whatever you want with </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">BNumbers</font><font face="Bookman Old Style" class="fsx04">, and they <I>never</I> go outside of their legal range from -1.0 to +1.0. No matter what you do to them, they always stay legal. (More about Bounded Numbers in <a href="t-d-06-bnumbers-unumbers-numbers.html">BNumbers, Unumbers, and Numbers</a>)<br>
<br>
Let's use an </font><font face="Bookman Old Style" class="fsx04" color="#008080">Attribute</font><font face="Bookman Old Style" class="fsx04"> in our growing storyworld. Go to the </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">Prop</font><font face="Bookman Old Style" class="fsx04"> Editor and use the green "+" box in the top center to add a new </font><font face="Bookman Old Style" class="fsx04" color="#008080">Attribute </font><font face="Bookman Old Style" class="fsx04">under "Core Prop Traits." Call that </font><font face="Bookman Old Style" class="fsx04" color="#008080">Attribute </font><font face="Bookman Old Style" class="fsx04">"</font><font face="Bookman Old Style" class="fsx04" color="#008080">Harmless_Lethal</font><font face="Bookman Old Style" class="fsx04">." This will represent how injurious a </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">Prop</font><font face="Bookman Old Style" class="fsx04"> is when used in a fight. Now add three more </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">Props</font><font face="Bookman Old Style" class="fsx04">: </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">pillow, cane,</font><font face="Bookman Old Style" class="fsx04"> and </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">club</font><font face="Bookman Old Style" class="fsx04">. Be sure to set their locations to "</font><font face="Bookman Old Style" class="fsx04" color="#ff8000">Joe's Bar</font><font face="Bookman Old Style" class="fsx04">." Use the sliders to assign </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">Harmless_Lethal </font><font face="Bookman Old Style" class="fsx04">values to the </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">Props</font><font face="Bookman Old Style" class="fsx04"> as follows:<br>
<br>
<br>
</font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">pillow </font><font face="Bookman Old Style" class="fsx04">- leftmost tick (low)</font><br>
<font face="Bookman Old Style" class="fsx04" color="#ff00ff"> cane </font><font face="Bookman Old Style" class="fsx04">- next tick to right (medium-low)</font><br>
<font face="Bookman Old Style" class="fsx04" color="#ff00ff"> whiskey bottle </font><font face="Bookman Old Style" class="fsx04">- center tick (average)</font><br>
<font face="Bookman Old Style" class="fsx04" color="#ff00ff"> chair </font><font face="Bookman Old Style" class="fsx04">- next tick to right (medium-high)</font><br>
<font face="Bookman Old Style" class="fsx04" color="#ff00ff"> club </font><font face="Bookman Old Style" class="fsx04">- rightmost tick (high)<br>
<br>
Let's use this new </font><font face="Bookman Old Style" class="fsx04" color="#008080">Attribute</font><font face="Bookman Old Style" class="fsx04"> to make the decision-making for the </font><font face="Bookman Old Style" class="fsx04" color="#008000">Option</font><font face="Bookman Old Style" class="fsx04"> "</font><font face="Bookman Old Style" class="fsx04" color="#008000">hit with</font><font face="Bookman Old Style" class="fsx04">" more interesting. Let's say that, when you hit somebody with something, you choose the <I>least</I> lethal weapon that's still <I>more</I> lethal than the one you were hit with. In other words, if somebody hits you with something, you up the ante, but you don't immediately jump all the way to the most lethal weapon. So let's change the Acceptable and </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">Desirable</font><font face="Bookman Old Style" class="fsx04"> scripts for the </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">4Prop</font><font face="Bookman Old Style" class="fsx04"> </font><font face="Bookman Old Style" class="fsx04" color="#0080a0">WordSocket</font><font face="Bookman Old Style" class="fsx04"> for the </font><font face="Bookman Old Style" class="fsx04" color="#008000">Option</font><font face="Bookman Old Style" class="fsx04"> "</font><font face="Bookman Old Style" class="fsx04" color="#008000">hit with</font><font face="Bookman Old Style" class="fsx04">" for the </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Role</font><font face="Bookman Old Style" class="fsx04"> "</font><font face="Bookman Old Style" class="fsx04" color="#0000ff">hittee</font><font face="Bookman Old Style" class="fsx04">" for the </font><font face="Bookman Old Style" class="fsx04" color="#008000">Verb</font><font face="Bookman Old Style" class="fsx04"> "</font><font face="Bookman Old Style" class="fsx04" color="#008000">hit with</font><font face="Bookman Old Style" class="fsx04">."<br>
<br>
But first, a little digression: did you notice how clumsy the previous sentence is? We had to use a long string of prepositional phrases to specify exactly what script we're talking about. After having written too many of these long, tedious sentences, we came up with a shorthand that's much easier to use and understand. The form is as follows:</font><br>
<br>
<font face="Bookman Old Style" class="fsx04" color="#008000">Verb</font><font face="Bookman Old Style" class="fsx04">: </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Role</font><font face="Bookman Old Style" class="fsx04">: </font><font face="Bookman Old Style" class="fsx04" color="#008000">Option</font><font face="Bookman Old Style" class="fsx04">: </font><font face="Bookman Old Style" class="fsx04" color="#0080a0">WordSocket</font><font face="Bookman Old Style" class="fsx04">: {Acceptable or </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">Desirable</font><font face="Bookman Old Style" class="fsx04">}<br>
<br>
So in this case, that entire sentence could have been reduced to:</font><br>
<br>
<font face="Bookman Old Style" class="fsx04" color="#008000">hit with</font><font face="Bookman Old Style" class="fsx04">: </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">hittee</font><font face="Bookman Old Style" class="fsx04">: </font><font face="Bookman Old Style" class="fsx04" color="#008000">hit with</font><font face="Bookman Old Style" class="fsx04">: </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">4Prop</font><font face="Bookman Old Style" class="fsx04">: Acceptable<br>
<br>
Back to work. We need to write an Acceptable Script and a </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">Desirable</font><font face="Bookman Old Style" class="fsx04"> Script. Go to the </font><font face="Bookman Old Style" class="fsx04" color="#008000">Verb</font><font face="Bookman Old Style" class="fsx04"> Editor and make sure the </font><font face="Bookman Old Style" class="fsx04" color="#008000">Verb</font><font face="Bookman Old Style" class="fsx04"> selected is </font><font face="Bookman Old Style" class="fsx04" color="#008000">hit with</font><font face="Bookman Old Style" class="fsx04">. The </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Role</font><font face="Bookman Old Style" class="fsx04"> should be </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">hittee</font><font face="Bookman Old Style" class="fsx04"> and the </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Option</font><font face="Bookman Old Style" class="fsx04"> should be </font><font face="Bookman Old Style" class="fsx04" color="#008000">hit with</font><font face="Bookman Old Style" class="fsx04">, just as in the shorthand sentence above. <br>
<br>
Do you recall that the </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">Inclination</font><font face="Bookman Old Style" class="fsx04"> Script never affects the player? The computer uses the </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">Inclination</font><font face="Bookman Old Style" class="fsx04"> Script to make decisions for the other </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Actors</font><font face="Bookman Old Style" class="fsx04">, but the human player always gets the full choice of </font><font face="Bookman Old Style" class="fsx04" color="#008000">Options</font><font face="Bookman Old Style" class="fsx04">. Well, the same principle applies to Acceptable and </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">Desirable</font><font face="Bookman Old Style" class="fsx04">. We want the human player to be able to choose from <I>any</I> of the possible </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">Props</font><font face="Bookman Old Style" class="fsx04">, but we want the computer-controlled </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Actors</font><font face="Bookman Old Style" class="fsx04"> to choose based on the escalatory algorithm we described above. <br>
<br>
The </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">4Prop </font><font face="Bookman Old Style" class="fsx04">Acceptable Script determines what choices the human player sees on the menu, while the </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">Desirable</font><font face="Bookman Old Style" class="fsx04"> Script decides which of those menu items the computer </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Actor</font><font face="Bookman Old Style" class="fsx04"> will choose. This, it turns out, makes some of our Scripting work easier</font><font face="MS Sans Serif" class="fsx02">—</font><font face="Bookman Old Style" class="fsx04">and some harder.<br>
<br>
The Acceptable Script is ridiculously easy. We want the human player to be able to choose whatever </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">Prop</font><font face="Bookman Old Style" class="fsx04"> he wants. Hence, the Acceptable Script looks like this:<br>
<br>
Acceptable<br>
true<br>
<br>
This means that, whenever the Engine asks, "Is this </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">Prop</font><font face="Bookman Old Style" class="fsx04"> acceptable?" the answer is always "Yes." Every </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">Prop</font><font face="Bookman Old Style" class="fsx04"> will be Acceptable! So the human player can choose any </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">Prop</font><font face="Bookman Old Style" class="fsx04"> he wants.<br>
<br>
Click on Acceptable under </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">4Prop </font><font face="Bookman Old Style" class="fsx04">and erase the old Acceptable Script by clicking on the highest Operator ("OR") and hitting the delete key. Then press on the "true" button just above the Scripting box. Done.<br>
<br>
For the computer </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Actors</font><font face="Bookman Old Style" class="fsx04">, we need to use the Desirable Script to implement the escalatory idea sketched above. We want the </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">Desirability</font><font face="Bookman Old Style" class="fsx04"> to be negative when the </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">Prop</font><font face="Bookman Old Style" class="fsx04"> in question has lethality lower than the lethality of the </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">Prop</font><font face="Bookman Old Style" class="fsx04"> that was just used on the </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Actor</font><font face="Bookman Old Style" class="fsx04">, and maximum for the </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">Prop</font><font face="Bookman Old Style" class="fsx04"> that has the lowest lethality of the remaining </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">Props</font><font face="Bookman Old Style" class="fsx04">. Here's a Script that does this:<br>
<br>
Desirable<br>
</font><font face="Bookman Old Style" class="fsx04" color="#ff0000">PickUpperIf</font><font face="Bookman Old Style" class="fsx04"> </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">of:</font><br>
<font face="Bookman Old Style" class="fsx04"> TopGreaterThanBottom(BNumber) of:<br>
</font><font face="Bookman Old Style" class="fsx04" color="#ff0000">Harmless_Lethal of:</font><br>
<font face="Bookman Old Style" class="fsx04"> </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">CandidateProp</font><br>
<font face="Bookman Old Style" class="fsx04"> </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">Harmless_Lethal of:</font><br>
<font face="Bookman Old Style" class="fsx04"> </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">This4Prop</font><br>
<font face="Bookman Old Style" class="fsx04" color="#ff0000"> BInverse of:<br>
Harmless_Lethal of:</font><br>
<font face="Bookman Old Style" class="fsx04"> </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">CandidateProp</font><br>
<font face="Bookman Old Style" class="fsx04"> </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">-0.99</font><br>
<br>
<font face="Bookman Old Style" class="fsx04">The </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">TopGreaterThanBottom(BNumber) </font><font face="Bookman Old Style" class="fsx04">Operator is in the "Logical" menu; and the </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">Harmless_Lethal </font><font face="Bookman Old Style" class="fsx04">Operator is in the "Prop" menu. </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">This4Prop </font><font face="Bookman Old Style" class="fsx04">is in the "ThisEvent" menu.<br>
<br>
Let's take this Script apart and explain it piece by piece. The </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">PickUpperIf </font><font face="Bookman Old Style" class="fsx04">Operator will pick the upper term (the </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">BInverse</font><font face="Bookman Old Style" class="fsx04"> term) if the condition is true; if the condition is false, then it will return the lower value:</font><font face="Bookman Old Style" class="fsx04" color="#ff0000"> -0.99</font><font face="Bookman Old Style" class="fsx04">. Obviously, a </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">Desirable</font><font face="Bookman Old Style" class="fsx04"> of </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">-0.99</font><font face="Bookman Old Style" class="fsx04"> is very undesirable and the </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">CandidateProp</font><font face="Bookman Old Style" class="fsx04"> with that value won't be selected.<br>
<br>
Let's suppose that the logical condition turns out to be true. Then the upper term (the </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">BInverse</font><font face="Bookman Old Style" class="fsx04"> one) will be chosen. What does that mean? </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">BInverse</font><font face="Bookman Old Style" class="fsx04"> is a really simple Operator: it simply reverses the sign of its argument. Thus, </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">BInverse</font><font face="Bookman Old Style" class="fsx04"> of </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">-0.5</font><font face="Bookman Old Style" class="fsx04"> is </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">+0.5</font><font face="Bookman Old Style" class="fsx04">; </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">BInverse </font><font face="Bookman Old Style" class="fsx04">of </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">+0.25</font><font face="Bookman Old Style" class="fsx04"> is </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">-0.25</font><font face="Bookman Old Style" class="fsx04">, and so forth. So the </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">CandidateProp</font><font face="Bookman Old Style" class="fsx04"> with the highest value of </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">Harmless_Lethal</font><font face="Bookman Old Style" class="fsx04"> will have the lowest </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">BInverse</font><font face="Bookman Old Style" class="fsx04"> result, and the </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">CandidateProp</font><font face="Bookman Old Style" class="fsx04"> with the lowest value of </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">Harmless_Lethal </font><font face="Bookman Old Style" class="fsx04">will end up with the highest </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">BInverse</font><font face="Bookman Old Style" class="fsx04"> result. <br>
<br>
But now we have to consider the biggest term in this Script, the logical term TopGreaterThanBottom(BNumber). This yields true if the top number of its two arguments is bigger than the bottom number, and false otherwise. In other words, it asks, Is the </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">Harmless_Lethal </font><font face="Bookman Old Style" class="fsx04">of the </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">CandidateProp</font><font face="Bookman Old Style" class="fsx04"> bigger than the </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">Harmless_Lethal </font><font face="Bookman Old Style" class="fsx04">of </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">This4Prop</font><font face="Bookman Old Style" class="fsx04">, the </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">Prop</font><font face="Bookman Old Style" class="fsx04"> that I was hit with? If so, then we pick the </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">BInverse</font><font face="Bookman Old Style" class="fsx04"> term. If not, we pick the </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">-0.99 </font><font face="Bookman Old Style" class="fsx04">term. <br>
<br>
Let's suppose that </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Joe</font><font face="Bookman Old Style" class="fsx04"> has just </font><font face="Bookman Old Style" class="fsx04" color="#008000">hit</font><font face="Bookman Old Style" class="fsx04"> </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Fred</font><font face="Bookman Old Style" class="fsx04"> with the </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">cane</font><font face="Bookman Old Style" class="fsx04">, and </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Fred</font><font face="Bookman Old Style" class="fsx04"> is running the </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">Desirable</font><font face="Bookman Old Style" class="fsx04"> Script for the </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">Prop</font><font face="Bookman Old Style" class="fsx04"> he's going to "</font><font face="Bookman Old Style" class="fsx04" color="#008000">hit with</font><font face="Bookman Old Style" class="fsx04">" back. The </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">CandidateProp</font><font face="Bookman Old Style" class="fsx04"> with the highest </font><font face="Bookman Old Style" class="fsx04" color="#ff0000">Desirable</font><font face="Bookman Old Style" class="fsx04"> value is the </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">whiskey bottle</font><font face="Bookman Old Style" class="fsx04">, which is exactly what we wanted. <br>
Let's try it in Storyteller Lizard to watch the algorithm at work. There's one more thing we need to adjust first: we changed the </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">4Prop</font><font face="Bookman Old Style" class="fsx04"> Acceptable script to "true" in the </font><font face="Bookman Old Style" class="fsx04" color="#008000">hit with Option</font><font face="Bookman Old Style" class="fsx04"> under </font><font face="Bookman Old Style" class="fsx04" color="#008000">hit with</font><font face="Bookman Old Style" class="fsx04">, but the old script (the one that forces </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Fred</font><font face="Bookman Old Style" class="fsx04"> to use the </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">chair</font><font face="Bookman Old Style" class="fsx04"> and </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Tom</font><font face="Bookman Old Style" class="fsx04"> to use the </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">whiskey bottle</font><font face="Bookman Old Style" class="fsx04">) is still in the </font><font face="Bookman Old Style" class="fsx04" color="#008000">hit with Option </font><font face="Bookman Old Style" class="fsx04">under </font><font face="Bookman Old Style" class="fsx04" color="#008000">punch</font><font face="Bookman Old Style" class="fsx04">. If we don't change it, the first time the player (</font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Tom</font><font face="Bookman Old Style" class="fsx04">) has the choice of using </font><font face="Bookman Old Style" class="fsx04" color="#008000">hit with</font><font face="Bookman Old Style" class="fsx04">, the only </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">Prop</font><font face="Bookman Old Style" class="fsx04"> he can use is the </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">whiskey bottle</font><font face="Bookman Old Style" class="fsx04">. <br>
<br>
Welcome to the nit-picky world of scripting. <br>
<br>
If you want to see this problem happening, try it out in Storyteller Lizard. To fix it, use the </font><font face="Bookman Old Style" class="fsx04" color="#008000">Verb</font><font face="Bookman Old Style" class="fsx04"> Editor to edit </font><font face="Bookman Old Style" class="fsx04" color="#008000">punch</font><font face="Bookman Old Style" class="fsx04">, and in the </font><font face="Bookman Old Style" class="fsx04" color="#008000">hit with Option</font><font face="Bookman Old Style" class="fsx04">, change the </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">4Prop</font><font face="Bookman Old Style" class="fsx04"> Acceptable script to "true." Now the first time </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Tom</font><font face="Bookman Old Style" class="fsx04"> has the choice of using </font><font face="Bookman Old Style" class="fsx04" color="#008000">hit with</font><font face="Bookman Old Style" class="fsx04">, he has all the </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">Props</font><font face="Bookman Old Style" class="fsx04"> to choose from. <br>
<br>
Try </font><font face="Bookman Old Style" class="fsx04" color="#008000">hitting</font><font face="Bookman Old Style" class="fsx04"> </font><font face="Bookman Old Style" class="fsx04" color="#0000ff">Fred</font><font face="Bookman Old Style" class="fsx04"> with various </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">Props</font><font face="Bookman Old Style" class="fsx04">, and watch how he responds. The escalation algorithm guides his choices of what </font><font face="Bookman Old Style" class="fsx04" color="#ff00ff">Prop</font><font face="Bookman Old Style" class="fsx04"> to </font><font face="Bookman Old Style" class="fsx04" color="#008000">hit with</font><font face="Bookman Old Style" class="fsx04">. Have fun!<br>
<br>
<hr></font><br>
<font face="Bookman Old Style" class="fsx03">Previous tutorial: <a href="t-a-09-enriching-storyworld.html">Enriching the Storyworld</a> Next tutorial: <a href="t-a-11-emotional-reactions.html">Emotional Reactions</a></font><br>
<font face="Bookman Old Style" class="fsx04"><hr><br></font></div>
</div>
<div id="Oobj456">
<img name="Ggeo288" src="http://www.storytron.com/Tutorial/geometry/obj456geo288shd7p407.jpg" alt="" border = "0" width="775" height="28"></div>
<div id="Oobj457">
<div id="Ggeo289" class="dfltt">
<div align="center"><font face="Bookman Old Style" color="#ffffff"><a href="index.html" class="txdec"><font class="txdec" color="#f9f3ee">Home</font></a> <a href="http://www.storytron.com/Tutorial/sitemap.html" class="txdec"><font class="txdec" color="#f9f3ee">SiteMap</font></a> <a href="http://www.storytron.com/Tutorial/feedback.html" class="txdec"><font class="txdec" color="#f9f3ee">Feedback</font></a> <a href="http://www.storytron.com/Tutorial/faq.html" class="txdec"><font class="txdec" color="#f9f3ee">FAQ</font></a> <a href="http://www.storytron.com/Tutorial/pressroom.html" class="txdec"><font class="txdec" color="#ffffff">Press Room</font></a> <a href="http://www.storytron.com/Tutorial/privacy-policy.html" class="txdec"><font class="txdec" color="#ffffff">Privacy Policy</font></a> <a href="http://www.storytron.com/Tutorial/ipb/index-54403.html" target="_blank" class="txdec"><font class="txdec" color="#ffffff">Login</font></a><br></font></div>
</div>
</div>
</body>
</html>
<!-- Localized -->