Newsgroups: rec.arts.int-fiction
Path: nntp.gmd.de!news.ruhr-uni-bochum.de!news.rhrz.uni-bonn.de!RRZ.Uni-Koeln.DE!news.gtn.com!osn.de!noris.net!blackbush.xlink.net!tank.news.pipex.net!pipex!arclight.uoregon.edu!nntp.primenet.com!netcom.com!erkyrath
From: erkyrath@netcom.com (Andrew Plotkin)
Subject: Re: AGT Compiler
Message-ID: <erkyrathDz5FqE.Dqw@netcom.com>
Organization: NETCOM On-line Communication Services (408 261-4700 guest)
X-Newsreader: TIN [version 1.2 PL1]
References: <52414b$lo2@netnews.upenn.edu> <52i58v$qt9@newsbf02.news.aol.com> <52kbi4$nn7@netnews.upenn.edu> <53bkjk$amq@camel1.mindspring.com> <Pine.SGI.3.95L.961011152208.4996A-100000@tower.york.ac.uk> <53n8an$cqp@camel0.mindspring.com>
Date: Sat, 12 Oct 1996 06:08:37 GMT
Lines: 77
Sender: erkyrath@netcom5.netcom.com

Kevin P. Soucy (steelfist@mindspring.com) wrote:
> Hmmm.....useful, but not altogether relevant.  I'm not really
> interested in creating libraries and enabling programmers to change
> the software into something it isn't.  Mine is Text Adventure
> software, plain and simple, so if you want to make a tetris sequel
> stick with Inform.  Now, a while ago we had a small debate on what AGT
> could and couldn't do as opposed to the other languages.  I don't
> remember all of the examples, but what I do remember are that many of
> the problems people had with AGT had to do with the way the parser
> worked with ambiguity. This will be fixed in Text AGATE.  What I'm
> really looking for are puzzle examples from games that I can't easily
> replicate with plain old AGT, not parser problems.  

You're standing on a large grid, surrounded by monsters. You can see
objects in your own room (grid space) *and* all immediately adjacent
rooms; you can hear anything within *three* rooms of you. The names of
objects are dynamic, so that if there's a monster to the north of you, it
appears as "the monster to the north" and you can refer to it as "north
monster". (There may be identical monsters in several different directions
from you, so this is necessary for disambiguation.) Monsters chase after
you, but there are two different kinds of monsters that move at different
speeds, and make different noises. In addition, each space of the grid is
a particular type of terrain; you can see adjacent terrains, and they're
printed in a nice English list like "You see grassy meadows to the north
and west, deadly boiling lava to the northwest and northeast, and desert
to the east, southeast, south, and southwest." The boiling lava is of
course deadly to both you and monsters. Besides monsters, there are large
objects in some of the grid spaces; some are deadly for you to run into,
some break and vanish when you run into them, some break and vanish only
when *monsters* run into them. Then there's the gun you have, but I won't 
get into that.

Really, this should be coded in an object-oriented fashion, so that 
monsters can be added simply by adding a one-line object definition, and 
the terrain can be rearranged by changing constants in a square array. 
All the terrain descriptions and so on should be generated on the fly.

I programmed this in a couple of days in Inform. 

(Inform 5.5, even -- I didn't have the heavy-duty object-orientation which
came along in Inform 6.)

Unfortunately, Magnet owns the copyrights and Magnet laid me off back in
July, so I can't give out the game file or the source code. (But it's on
the Mac and PC CDs of this arcade game called Icebreaker. :-) That's why 
the example sounds like an arcade game; it's a deliberate imitation of 
one. But it's not outside the range of text games either. That what I was 
demonstrating; the example *is* a text game, if a silly one.

Want more examples? Recall the grid in Spellbreaker (with the brown-eyed
rock and the green-eyed rock);  recall the Royal Puzzle, the ballroom in
Suspect, the marble maze (with compass rose) in Spellbreaker, the glass
maze in Sorcerer, the hedge mazes in Curses and Hollywood Hijinx, flying
the windy skies in Beyond Zork, navigating the submarine in Seastalker. 
How about, let me count, three different sections in So Far?

Those are all complex areas where descriptions, exits, and options are
being synthesized from a grid, by some game-specific set of rules. You
need a full-scale programming language to do that. The author must be able
to get into the parser, the scope rules, the object lister, *everywhere*,
and adjust the game's behavior to suit his needs. 

So what's it going to be? Is your "plain and simple Text Adventure" system
going to be so limited that it can't implement half the games in the 
ouvre? 

(God, I love to use the word "ouvre". I could use it over and ouvre and
over...)

--Z



-- 

"And Aholibamah bare Jeush, and Jaalam, and Korah: these were the
borogoves..."
