kliffy/timemachine.xml

157 lines
7.1 KiB
XML

<story title="Richard and Larry Build A Time Machine" author="Jeremy Penner">
<loadmodule url="retrochronal.js" />
<section name="start">
<nev name="start">
<p>"I still can't believe you actually used a [DeLorean]," says Larry.</p>
<p>"Hey, if you're going to do a thing, you ought to do it right," says [Richard].</p>
</nev>
<word name="DeLorean">
<verb name="Examine">
Larry looks at the [DeLorean] with astonishment. [Richard] has done it up to look <i>exactly</i> like the car from
<i>Back to the Future</i>.
</verb>
<verb name="Drive">
<p>Larry eyes the [DeLorean car]. "Give me the keys," he says. "I want to take this baby to 88."</p>
<p>"Oh, it doesn't drive anymore," says [Richard]. "I had to use the engine to power the time machine."</p>
</verb>
</word>
<word name="Richard">
<verb name="how" display='Ask to explain'>
<p>"So, run it by me again," says Larry.</p>
<p>"I modified this [DeLorean] to send information backwards through time," says [Richard].</p>
<p>"Just information. Not matter."</p>
<p>"Right."</p>
<p>Larry ponders this for a moment. "How... how does that even work?"</p>
<p>[Richard] waves his hands around. "Spooky action at a distance," he says.</p>
<p>"No, I mean, augh. I mean, what can you practically change about the past with this machine?" says Larry.</p>
<p>
"Well, so far I've gotten my computer to crash five minutes before I push this [button]," says [Richard],
gesturing at one of the controls inside the [DeLorean].
</p>
</verb>
</word>
<word name="button">
<verb name="Push" nextsection="next">
<p>Larry reaches for the button and gives it a push.</p>
<p>"Nothing happened", says Larry, looking at the [computer].</p>
<p>"I <i>told</i> you you were going to push it," says [Richard].</p>
<p>Larry opens his mouth to say something, then seems to think better of it.</p>
</verb>
</word>
<pastresponse after="start" future_cause="button.Push" name="crash">
<p>There is a beep as [Richard Richard's] [computer] spontaneously and inexplicably reboots.</p>
<p>"Aw, geez, you're going to push the button, aren't you?", whines [Richard].</p>
<p>"What? What button?" asks Larry, puzzled.</p>
<p>"Never mind," says [Richard].</p>
</pastresponse>
</section>
<section name="next">
<nev name="start">
<set var="number">null</set>
<set var="fInRoom">false</set>
<set var="fBeenInRoom">false</set>
<donext nev="realstart"/>
</nev>
<nev name="realstart">
<p>"So I just write down the number I see on the screen?" says Larry.</p>
<p>"Yep," says Richard.</p>
<p>"And what does this tell us, exactly?" says Larry.</p>
<p>"Well, when you come out of the [room], I'm going to type the number you give me into the computer, which
will make it show up on the screen before you wrote it down," says Richard.</p>
<p>"And what does this tell us, exactly?" says Larry again, exasperated.</p>
<p>"A number that neither of us picked," says Richard.</p>
</nev>
<word name="room">
<verb name="Enter">
<cond>!fInRoom</cond>
<cond>!fBeenInRoom</cond>
<set var="fInRoom">true</set>
<set var="fBeenInRoom">true</set>
<p>Larry sighs and opens the door. Inside the [room] is a computer [screen].</p>
</verb>
<verb name="Leave">
<cond>fInRoom</cond>
<set var="fInRoom">false</set>
Larry goes back into the lab. [Richard] looks at him expectantly. "Well?" he asks.
</verb>
</word>
<word name="screen">
<verb name="Read">
<cond>fInRoom</cond>
$[if (number === null) {]
<p>
Larry looks at the screen. It's blank. "Well, hell," he says, feebly scanning the [room]
for another, hidden screen that might have a number on it. He doesn't find one.
</p>
$[} else {]
<p>
Larry looks at the screen. The number $(number) is displayed on it.
</p>
$[}]
<p>He looks down at his piece of [paper] for a moment.</p>
</verb>
</word>
<pastresponse after="start" future_cause="paper.write">
<set var="number">6</set>
</pastresponse>
<word name="paper">
<verb name="write" display="Write down number">
<cond>fInRoom</cond>
$[if (false) {]
<p>
Larry is at a loss for a moment, but then decides that the thing to do is to just write down a number.
He chooses six.
</p>
$[} else {]
<p>"Huh," says Larry, scrawling down a large number $(number) on his paper. "Wonder what that means."</p>
$[}]
<donext nev="room.Leave"/>
</verb>
</word>
<word name="Richard">
<verb name="give" display="Give paper" nextsection="notes">
<cond>fBeenInRoom</cond>
$[if (number === null) {]
<p>Larry shows Richard the blank piece of paper. "Nothing on the screen," he says.</p>
<p>
Richard slaps himself on the forehead. "Of course! I can't believe I didn't think of that. If you
don't show me a number, I won't type it in, which means you won't see a number, which means no paradox.
Duh. How stupid of me. Forget I even asked."
</p>
$[} else {]
<p>Larry holds up the piece of paper. "It said $(number)".</p>
<p>Richard looks quizzically at the paper. "$(number)? Are you sure?"</p>
<p>A look of alarm crosses Larry's face. "Is... is $(number) bad?"</p>
<p>"No, no, it's just I would have expected something, I don't know, more random, or meaningful, I guess,"
says Richard. "You didn't just make up some number?"</p>
<p>"Of course not!" says Larry, offended. "Go ahead and look for yourself. The screen says $(number)."</p>
<p>"No, no, I believe you," says Richard, and types a $(number) into his computer.</p>
$[}]
</verb>
</word>
</section>
<section name="notes">
<nev name="start">
<h2>Author's Notes</h2>
<p>
Hi there. That's all I've got for now. Thanks for trying my silly game.
</p>
<p>
There are two UI ideas at play in this prototype. The first is that it might be interesting to see what
happens when we get rid of the parser, and simply give the player the ability to know what she is capable of
doing at any particular moment in the game. I don't believe that every game should follow this path, but
I don't see any reason why we can't create rich and interesting worlds by doing so. What appeals to me about
this idea is not just the simpler interaction from the user's perspective, but the ability to have greater
control of what you have to model. If something is not important to your game, you simply don't present the
option to the player, and she is not frustrated because she no longer has any way of trying it. Conversely,
if an interaction is subtle or non-standard, you don't need to worry about the user not being able to guess
the verb -- the verb is there; you just need to make it interesting.
</p>
<p>
The second is that
</p>
<b><a href="javascript:location.reload()">Restart game</a></b>
</nev>
</section>
</story>