Bizarre New Technology

18 views
Skip to first unread message

Larry Smith

unread,
May 18, 1998, 3:00:00 AM5/18/98
to

One of the ideas I've been noodling around is to use some of
the more esoteric technologies in creating games. For example,
it would be very interesting to develop NPC personalities using
some soft of genetic algorithm, so that each time you play the
game, NPC's tend to be different - perhaps even different names
and other information - and react to you and to each other dif-
ferently each time the game is played. Anyone ever have any
thoughts along these lines?

Also, has anyone toyed with building a graphical interface sim-
ilar to Ultima? I've been thinking about a web-based multi-
player game similar in concept and looking for blue-sky input
on the subject.

--
.-. .-. .---. .---. .-..-. |Politics is the art of looking for
| |__ / | \| |-< | |-< > / |trouble, finding it, misdiagnosing
`----'`-^-'`-'`-'`-'`-' `-' |it and then misapplying the wrong
My opinions only. |remedies. Groucho Marx

okbl...@usa.net

unread,
May 20, 1998, 3:00:00 AM5/20/98
to

In article <356085...@zk3.dec.com>,

Larry Smith <l...@zk3.dec.com> wrote:
>
> One of the ideas I've been noodling around is to use some of
> the more esoteric technologies in creating games. For example,
> it would be very interesting to develop NPC personalities using
> some soft of genetic algorithm, so that each time you play the
> game, NPC's tend to be different - perhaps even different names
> and other information - and react to you and to each other dif-
> ferently each time the game is played. Anyone ever have any
> thoughts along these lines?

Yes. The issue of how to achieve a coherent game arises. If it's a
puzzle-based situation, and the NPCs are just window dressing, then it could
certainly add something to have them be random. If it's character-based then,
obviously, randomity would interfere with any kind of tightly constructed
character drama. In other words, if you switch Hamelt and Othello, you get a
guy who kills his Uncle without a second thought and another guy who is calm
enough to figure out his wife isn't cheating on him.

Then there's the trivial issue of natural language generation, so that the
characters can speak according to their newfound freedom. :-)

> Also, has anyone toyed with building a graphical interface sim-
> ilar to Ultima? I've been thinking about a web-based multi-
> player game similar in concept and looking for blue-sky input
> on the subject.

The only Ultima I've ever played was the first one. So, no. :-)

[ok]

-----== Posted via Deja News, The Leader in Internet Discussion ==-----
http://www.dejanews.com/ Now offering spam-free web-based newsreading

Mike DeSanto

unread,
May 20, 1998, 3:00:00 AM5/20/98
to

Larry Smith wrote:

> Also, has anyone toyed with building a graphical interface sim-
> ilar to Ultima? I've been thinking about a web-based multi-
> player game similar in concept and looking for blue-sky input
> on the subject.

I have toyed with the idea. It would be a matter of taking a tile
based movement/combat system (you don't have to USE combat if you don't
want to, but the option should be there) and giving it some more if-like
flexibility. Allow the objects to have multiple verbs. A
Rexx-Adventure or Avarice (for those OS/2 users out there) interface
would be cool, but I'm biased. (Right click on object to get a list of
verbs. Then click on direct object if necessary)

Also, the power of IF is in prose. If the native dance is "So Far"
is replaced with an NPC icon which disappears after 3 turns, the effect
is totally lost. So, you need popup windows giving prose for all sorts
of things. Daemon actions, Examines, results of any actions taken.
Without the text, it's not IF. (IMO, of course)

With those two changes, it could work. Unfortunately, I don't feel
like putting that much effort into a game again, and since I'm
programing for a living, I don't want to go home and code! So, if
anyone wants to give it a shot, go for it!

I would suggest that, in the tradition of IF, you use JAVA or
something else portable. If you make it a PC only thing, you will get
yelled at. Apart from that, I'd love to see it.

Mike DeSanto
desa...@io.com


l...@zk3.dec.com

unread,
May 22, 1998, 3:00:00 AM5/22/98
to

In article <6juvct$os1$1...@nnrp1.dejanews.com>,
okbl...@usa.net wrote:

> In article <356085...@zk3.dec.com>,
> Larry Smith <l...@zk3.dec.com> wrote:

> > One of the ideas I've been noodling around is to use some of
> > the more esoteric technologies in creating games. For example,
> > it would be very interesting to develop NPC personalities using
> > some soft of genetic algorithm, so that each time you play the
> > game, NPC's tend to be different

> Yes. The issue of how to achieve a coherent game arises. If it's a


> puzzle-based situation, and the NPCs are just window dressing, then it could
> certainly add something to have them be random. If it's character-based
then,
> obviously, randomity would interfere with any kind of tightly constructed
> character drama. In other words, if you switch Hamelt and Othello, you get a
> guy who kills his Uncle without a second thought and another guy who is calm
> enough to figure out his wife isn't cheating on him.

Yes and no. It depends on what you mean by a "coherent game". I
like puzzle games and character-driven plots, but that is not the
whole of games. I see the potential for something less directive,
more a simulation of some environment, with unpredicatable char-
acter personalities driving events in unpredictable directions.
Such games have "plots" - but they are not predetermined nor
built in.

> Then there's the trivial issue of natural language generation, so that the
> characters can speak according to their newfound freedom. :-)

Again, yes and no. A genetic algorithm could generate conversational
trees like the ones now being discussed in another thread. There are
way of generating the illusion of more intelligence than truly exists.
After all, Floyd did it in a few k of z-instructions. We need not
solve the Turing Test.

> > Also, has anyone toyed with building a graphical interface sim-
> > ilar to Ultima? I've been thinking about a web-based multi-
> > player game similar in concept and looking for blue-sky input
> > on the subject.
>

> The only Ultima I've ever played was the first one. So, no. :-)

The first one used a straight-down perspective and looked rather
odd. The character was in profile, like he was lying down, the
castle was an overhead view, the ship was port or starboard view.
Later Ultimas used an elevated perspective rather like SimCity
2000.

The reason I ask is because there are a number of classes of
problems that cannot be easily implemented in text-style
adventures with the current state of the art. Products like
Inform or Tads have a very hard time with the player doing
something very unexpected. If the author of the game didn't
_anticipate_ you tying a rope to a crenellation and climbing
down the side of the castle, then you just can't do it, no
matter how plausible or logical the action. A tile-based
game, on the other hand, has a great deal of positional
information that would let it infer the results of such
actions - all it need know is that ropes dangle and can
be climbed upon. With nothing more than that and the pos-
ition of the crenellation in question it can determine how
far you have to climb to reach a window or the ground. You
could even handle a swinging rope. But the paradigm is a
very different one from traditional text adventures. I'm
kind of looking for ways of getting the best of both worlds.

--
.-. .-. .---. .---. .-..-. |Politics is the art of looking for
| |__ / | \| |-< | |-< > / |trouble, finding it, misdiagnosing
`----'`-^-'`-'`-'`-'`-' `-' |it and then misapplying the wrong
My opinions only. |remedies. Groucho Marx

-----== Posted via Deja News, The Leader in Internet Discussion ==-----

Matt Kimball

unread,
May 22, 1998, 3:00:00 AM5/22/98
to

l...@zk3.dec.com wrote:
:> Then there's the trivial issue of natural language generation, so that the

:> characters can speak according to their newfound freedom. :-)

: Again, yes and no. A genetic algorithm could generate conversational
: trees like the ones now being discussed in another thread. There are
: way of generating the illusion of more intelligence than truly exists.
: After all, Floyd did it in a few k of z-instructions. We need not
: solve the Turing Test.

This is interesting, but according to my limited understanding of
genetic algorithms, there must be some evaluation function used to
determing the fitness of a particular organism. How would you propose
a fitness function to determine in a conversation tree is resonable or
dramatic or in-character or whatever you are shooting for?

It seems that the author would need to babysit the program and give
thousands of evaulations without being biased by boredom or previous
events. Is there a better way?

(In other words, you wouldn't necessarily need to create a program
that passed the Turing Test, but you'd need to administer it to the
point of tedium).

--
Matt Kimball
mkim...@xmission.com

Jonadab

unread,
May 22, 1998, 3:00:00 AM5/22/98
to

> Yes and no. It depends on what you mean by a "coherent game". I
> like puzzle games and character-driven plots, but that is not the
> whole of games. I see the potential for something less directive,
> more a simulation of some environment, with unpredicatable char-
> acter personalities driving events in unpredictable directions.
> Such games have "plots" - but they are not predetermined nor
> built in.

Some elements could be built in, with others left to the turn of events,
no? At a much simpler level, multiple endings to games HAVE been
implemented, and that is what would result from unpredictable characters, I
imagine.

> The reason I ask is because there are a number of classes of
> problems that cannot be easily implemented in text-style
> adventures with the current state of the art. Products like
> Inform or Tads have a very hard time with the player doing
> something very unexpected. If the author of the game didn't
> _anticipate_ you tying a rope to a crenellation and climbing
> down the side of the castle, then you just can't do it, no
> matter how plausible or logical the action.

That is why a game need more than one designer. To anticipate a wider
range of actions. The question is, how wide a range is it worthwhile to
anticipate? Taking things too far could result in 4MB z-code modules, but
that would require anticipating an *immense* variety of possible user
input, and is certainly unnecessary (if even humanly possible).

On the other hand, anticipating too little leads to embarassing situations
where, for example, POUR THE LIQUID NITROGEN ON THE PADLOCK causes some
generic message and doesn't let you break the lock, or, worse, doing so and
then breaking the lock leaves the gate still "locked". Complicated objects
(ropes, liquid nitrogen, microwave ovens, a portable "hole in the wall",
magic spells -- anything that adds new possibilities to a fair percentage
of the other objects in the game) make the programmer's job a lot harder,
but they also make the game more interesting.

> ... A tile-based


> game, on the other hand, has a great deal of positional
> information that would let it infer the results of such
> actions - all it need know is that ropes dangle and can
> be climbed upon. With nothing more than that and the pos-
> ition of the crenellation in question it can determine how
> far you have to climb to reach a window or the ground. You
> could even handle a swinging rope. But the paradigm is a
> very different one from traditional text adventures. I'm
> kind of looking for ways of getting the best of both worlds.

But what does it do with holding a lighted match to an object or immersing
it in water? Either type of game, in order to be fully realistic, needs
quite a bit of information about the objects in the game.

--
From 501 uses for peanut butter:
7. Make sure you have some stuck in your
fingernails whenever you go on a blind date.

My Current Quote: "Say, look who has email again!"

"I" /\ \I /\ I\ /\ I) /\ I) I) 1 /_ II "I" \I [" "I"
\I \/ I\ II I/ II I) \a I) I\ 1 \/ TT I o I\ [_ I

okbl...@usa.net

unread,
May 23, 1998, 3:00:00 AM5/23/98
to

In article <6k4jsl$e91$1...@nnrp1.dejanews.com>,

l...@zk3.dec.com wrote:
>
> Yes and no. It depends on what you mean by a "coherent game". I
> like puzzle games and character-driven plots, but that is not the
> whole of games. I see the potential for something less directive,
> more a simulation of some environment, with unpredicatable char-
> acter personalities driving events in unpredictable directions.
> Such games have "plots" - but they are not predetermined nor
> built in.
>

My belief is that the further you move away from the directed, the further
you get from IF, and the closer you get to RPG. Not to say that this would be
bad, but that it raises a different set of problems and issues. Hybrids
would still be possible, but the greater the randomity, the less like fiction
it becomes and the more like simulation.

> Again, yes and no. A genetic algorithm could generate conversational
> trees like the ones now being discussed in another thread. There are
> way of generating the illusion of more intelligence than truly exists.
> After all, Floyd did it in a few k of z-instructions. We need not
> solve the Turing Test.

Oh, I didn't mean to imply that it was impossible, though I, like another
poster, are not sure how you would evolve the genetic algorithms. And I
don't quite see why, after obtaining them, you would want to limit the
characters to conversation trees. Or how, for that matter.

> The first one used a straight-down perspective and looked rather
> odd. The character was in profile, like he was lying down, the
> castle was an overhead view, the ship was port or starboard view.
> Later Ultimas used an elevated perspective rather like SimCity
> 2000.

Hmmm. Yeah, I remember the lying down look of Ultima (I).

>
> The reason I ask is because there are a number of classes of
> problems that cannot be easily implemented in text-style
> adventures with the current state of the art. Products like
> Inform or Tads have a very hard time with the player doing
> something very unexpected. If the author of the game didn't
> _anticipate_ you tying a rope to a crenellation and climbing
> down the side of the castle, then you just can't do it, no

> matter how plausible or logical the action. A tile-based


> game, on the other hand, has a great deal of positional
> information that would let it infer the results of such
> actions - all it need know is that ropes dangle and can
> be climbed upon. With nothing more than that and the pos-
> ition of the crenellation in question it can determine how
> far you have to climb to reach a window or the ground. You
> could even handle a swinging rope. But the paradigm is a
> very different one from traditional text adventures. I'm
> kind of looking for ways of getting the best of both worlds.
>

I've been thinking of hybrids, myself, though for *design* purposes rather
than actual display. From *my* examination of it, it appears that your basic
premise may be questionable. In order for a player to tie a rope around
anything, text or graphical, the game has to know about ropes, know all the
objects they can be tied around, and know all the locations that may be
gotten to via rope. It *can't* be unexpected.

In a graphical game, you'd place a tile representing a crenellation (? gonna
hafta look dat word up!) and the game would know that a rope could be tied
around it, taking the player to the next level down.

In a text game, you could (to map it exactly) give the room a "crenellation"
property and "byrope" property that led to the location a player could get to
by rope.

Either way, there's nearly no way around exact specification. The only way I
can think of around exact specification is to describe a set of properties
(e.g. shape, flexibility, strength) which objects would possess in various
degrees, and a set of functions that require certain sets of properties (use
for rope-style climbing = long thin shape, high flexibility, strength >=
weight of objects being supported) and allow any object that met those
criteria to be used for that purpose.

This could be done for a TAG, too. The only difference is the level of
detail. Rather than moving to location X,Y,Z in the castle and tying a rope
around the gargoyle at location X-1, Y, to move to location X-1,Y,Z-1, you
just say:

> tie rope around gargoyle
You fasten the rope around the gargoyle's waist. You start for a moment as
the gargoyle appears to wobble, but realize that it's just a trick of the
light.
The rope is securely tied around the gargoyle.
> climb down

Same thing on a macro level. The danger with making a TAG semi-graphical is
that you may end up with the tedium of forcing the player to move through
rooms square-by-square combined with the tedium of reading the same hackneyed
prose (like the above) over and over again. :-)

Not to discourage you, of course, just to point out that while hybrids can
bring the good of two genres together, they also raise all the problems of
both genres (compounded by having to mix them).

[ok]

Den of Iniquity

unread,
May 24, 1998, 3:00:00 AM5/24/98
to

On 22 May 1998, Jonadab wrote:

>On the other hand, anticipating too little leads to embarassing situations
>where, for example, POUR THE LIQUID NITROGEN ON THE PADLOCK causes some

>generic message and doesn't let you break the lock [...]

I dunno. Nitrogen's got a pretty low enthalpy of vaporisation, so you'd
have to pour a heck of a lot of it over a lock to really freeze it up,
y'know. Immersion's a good idea if you've got a suitably proportioned
container.

Sorry, couldn't resist. :)

--
Den


Larry Smith

unread,
May 27, 1998, 3:00:00 AM5/27/98
to

Lots of very good and thoughtful responses to my initial post.
I've taken the liberty of combining my responses to several
folks to cut down on bandwidth

Jonadab wrote:

> > Yes and no. It depends on what you mean by a "coherent game". I
> > like puzzle games and character-driven plots, but that is not the
> > whole of games. I see the potential for something less directive,
> > more a simulation of some environment, with unpredicatable char-
> > acter personalities driving events in unpredictable directions.
> > Such games have "plots" - but they are not predetermined nor
> > built in.
>

> Some elements could be built in, with others left to the turn of events,
> no? At a much simpler level, multiple endings to games HAVE been
> implemented, and that is what would result from unpredictable characters, I
> imagine.

I think there is a range of possibilities along this line. At
one end is Zork or Colossal Cave, where there is but one (or at
least a very small number) of "solutions" after which the game
is solved and essentially unplayable. At the other end are non-
directive games. I can't think of a good IF/RPG example since
I don't know of any that have been written, but outside the genre
SimCity is one of the best examples - it is completely non-direc-
tive in the sense that it simply provides a rich environment for
manipulation and lets you set your own goals. As okblack points
out, this is less "traditional" IF and more toward RPGs - more
of a simulation than a "game". Perhaps we are getting hung up
on the word "game" and the implication it carries of solution
and ending. Maxis calls programs like SimCity "toys". Maybe
that would be a better way to think of this kind of thing. A
paradigm shift.

> > The reason I ask is because there are a number of classes of
> > problems that cannot be easily implemented in text-style
> > adventures with the current state of the art. Products like
> > Inform or Tads have a very hard time with the player doing
> > something very unexpected. If the author of the game didn't
> > _anticipate_ you tying a rope to a crenellation and climbing
> > down the side of the castle, then you just can't do it, no
> > matter how plausible or logical the action.
>

> That is why a game need more than one designer. To anticipate a wider
> range of actions. The question is, how wide a range is it worthwhile to
> anticipate? Taking things too far could result in 4MB z-code modules, but
> that would require anticipating an *immense* variety of possible user
> input, and is certainly unnecessary (if even humanly possible).

Using a graphical representation (even if not displayed) lets
you design the system with more of this kind of intelligence
built-in. Hopefully that would allow a greater range of pos-
sible responses without a 4meg z-program.

> On the other hand, anticipating too little leads to embarassing situations
> where, for example, POUR THE LIQUID NITROGEN ON THE PADLOCK causes some

> generic message and doesn't let you break the lock, or, worse, doing so and
> then breaking the lock leaves the gate still "locked". Complicated objects
> (ropes, liquid nitrogen, microwave ovens, a portable "hole in the wall",
> magic spells -- anything that adds new possibilities to a fair percentage
> of the other objects in the game) make the programmer's job a lot harder,
> but they also make the game more interesting.

This kind of smarts must be coded no matter what the type
of game or its underlying representation, unless we can go
the whole hog and write a virtual world from initial prin-
ciples - but such a game would be necessarily limited to
Beowulf-class supercomputers, I suspect. Though I also
suspected that of the kind of 1st-person 3-D games we now
take for granted. There is always the possibility of the
same kind of breakthrough.

> > ... A tile-based


> > game, on the other hand, has a great deal of positional
> > information that would let it infer the results of such
> > actions - all it need know is that ropes dangle and can
> > be climbed upon. With nothing more than that and the pos-
> > ition of the crenellation in question it can determine how
> > far you have to climb to reach a window or the ground. You
> > could even handle a swinging rope. But the paradigm is a
> > very different one from traditional text adventures. I'm
> > kind of looking for ways of getting the best of both worlds.

> But what does it do with holding a lighted match to an object or immersing


> it in water? Either type of game, in order to be fully realistic, needs
> quite a bit of information about the objects in the game.

True.


Matt Kimball wrote:
>
> l...@zk3.dec.com wrote:
> :> Then there's the trivial issue of natural language generation, so that the
> :> characters can speak according to their newfound freedom. :-)
>

> : Again, yes and no. A genetic algorithm could generate conversational


> : trees like the ones now being discussed in another thread. There are
> : way of generating the illusion of more intelligence than truly exists.
> : After all, Floyd did it in a few k of z-instructions. We need not
> : solve the Turing Test.
>

> This is interesting, but according to my limited understanding of
> genetic algorithms, there must be some evaluation function used to
> determing the fitness of a particular organism. How would you propose
> a fitness function to determine in a conversation tree is resonable or
> dramatic or in-character or whatever you are shooting for?

That would depend on the type of character you are shooting
for, I would think. Any GA needs both basic encoding info
(what does a gene do) and a fitness function (what is the
actual effect of this combination of genes). The trick with
any GA is selecting these. It's highly non-trivial - probably
a larger problem than defining, say, Floyd. But the end result
would, we hope, be a less robotic, less predicatable, more
"real" character.

okbl...@usa.net wrote:

> In article <6k4jsl$e91$1...@nnrp1.dejanews.com>,
> l...@zk3.dec.com wrote:
> >
> > Yes and no. It depends on what you mean by a "coherent game". I
> > like puzzle games and character-driven plots, but that is not the
> > whole of games. I see the potential for something less directive,
> > more a simulation of some environment, with unpredicatable char-
> > acter personalities driving events in unpredictable directions.
> > Such games have "plots" - but they are not predetermined nor
> > built in.

> My belief is that the further you move away from the directed, the further
> you get from IF, and the closer you get to RPG. Not to say that this would be
> bad, but that it raises a different set of problems and issues. Hybrids
> would still be possible, but the greater the randomity, the less like fiction
> it becomes and the more like simulation.

I guess I never really drew that much distinction - IF is,
in my mind anyway, a limited, but implementable, role-playing
exercise. Other RPGs - Ultima, for example - make other
trade-offs to attain implementability. But I think they
are different views of the same critter.

> > Again, yes and no. A genetic algorithm could generate conversational
> > trees like the ones now being discussed in another thread. There are
> > way of generating the illusion of more intelligence than truly exists.
> > After all, Floyd did it in a few k of z-instructions. We need not
> > solve the Turing Test.
>
> Oh, I didn't mean to imply that it was impossible, though I, like another
> poster, are not sure how you would evolve the genetic algorithms. And I
> don't quite see why, after obtaining them, you would want to limit the
> characters to conversation trees. Or how, for that matter.

I doubt a reasonable GA approach could generate a "complete"
NPC from initial principles. That shades over into artificial
life, which is a fascinating topic and certainly germaine to
IF/RPGs in the long run, but too ambitious for the moment.
I suspect that GAs would be used to generate subsystems for
an NPC. Initial description is one GA. Responses to verbal
input another. Activity patterns a third, and so on.

As to how these things could be used, that's a design question.
We could, in theory, do these things at runtime, or at game
loading time, "breeding" up a set of NPCs for this run of the
game. But creating the initial stable is something that would
be done by the designer, who would start with undifferentiated
NPCs and interact with them until he was getting the kind of
personalities he liked - hopefully with less effort and more
flavor than simply coding them. I also figure this phase could
just create the "final" product - the NPC for the game - and
the game itself might not be a GA or try to make NPCs vary much.
It's a design decision.

> > The first one used a straight-down perspective and looked rather
> > odd. The character was in profile, like he was lying down, the
> > castle was an overhead view, the ship was port or starboard view.
> > Later Ultimas used an elevated perspective rather like SimCity
> > 2000.
>
> Hmmm. Yeah, I remember the lying down look of Ultima (I).

They sort of resembled a board game and were surely easier
to implement, but the overall effect missed, I think.

> > The reason I ask is because there are a number of classes of
> > problems that cannot be easily implemented in text-style
> > adventures with the current state of the art. Products like
> > Inform or Tads have a very hard time with the player doing
> > something very unexpected. If the author of the game didn't
> > _anticipate_ you tying a rope to a crenellation and climbing
> > down the side of the castle, then you just can't do it, no
> > matter how plausible or logical the action. A tile-based
> > game, on the other hand, has a great deal of positional
> > information that would let it infer the results of such
> > actions - all it need know is that ropes dangle and can
> > be climbed upon. With nothing more than that and the pos-
> > ition of the crenellation in question it can determine how
> > far you have to climb to reach a window or the ground. You
> > could even handle a swinging rope. But the paradigm is a
> > very different one from traditional text adventures. I'm
> > kind of looking for ways of getting the best of both worlds.

> I've been thinking of hybrids, myself, though for *design* purposes rather
> than actual display. From *my* examination of it, it appears that your basic
> premise may be questionable. In order for a player to tie a rope around
> anything, text or graphical, the game has to know about ropes, know all the
> objects they can be tied around, and know all the locations that may be
> gotten to via rope. It *can't* be unexpected.

You are correct to a certain extent. The program would, indeed,
have to be programmed to know that a crenallation could be a
place to tie a rope. But given that info, and the length of
the rope and the character's position on it, the program can
now determine what floors of the castle can be entered from
windows. True, this can be done with z-machine style IF games,
but the effect must be restricted - a castle might have hundreds
of crenallations, and every window a potential entry point. And
the information does not apply _just_ to the rope. It could
apply to a levitating mage, a man with rocket backpack, a guy
dangling from a balloon, a character polymorphed into a spider
scurrying up the wall. The z-machine rope code with its list
of _possible_ crenallations would not be able to generalize
this kind of thing.

> In a graphical game, you'd place a tile representing a crenellation (? gonna
> hafta look dat word up!)

Crenallations are those toothlike partial walls on the top
of a castle or curtain wall. Archers would be able to stay
behind a wall portion and shoot at an angle through the open
part next to him on either side. Sorry, didn't mean to be
opaque.

> and the game would know that a rope could be tied
> around it, taking the player to the next level down.
>
> In a text game, you could (to map it exactly) give the room a "crenellation"
> property and "byrope" property that led to the location a player could get to
> by rope.

But you see my point that, while you can solve this for the single
circumstance of the rope, it doesn't help with other circumstances.
With a grid layout, the system can deduce that, _however_the_char-
aracter_gets_to_a_window_ they can gain entry to the castle at that
point.

> Same thing on a macro level. The danger with making a TAG semi-graphical is
> that you may end up with the tedium of forcing the player to move through
> rooms square-by-square combined with the tedium of reading the same hackneyed
> prose (like the above) over and over again. :-)

There are surely drawbacks with every approach. The graphical
grid system provides more information about the environment,
but does so at a cost. It's not without reason that people
are finding traditional muds to be more reliable and less
annoying than Ultima On-Line. It is this precise problem
you outline here that causes problems with network bandwidth.

> Not to discourage you, of course, just to point out that while hybrids can
> bring the good of two genres together, they also raise all the problems of
> both genres (compounded by having to mix them).

I'm not discouraged - this is a "blue sky" thread to try to
spark some new ideas. Personally I see only two ways to
try to represent a world - a graphical grid system ala
Ultima, or a stick-and-ball approach ala Colossal Cave.
I'm very interested in clever new approaches that either
combine the best of these two, or come up with some new
method.

Mary K. Kuhner

unread,
May 28, 1998, 3:00:00 AM5/28/98
to

In article <356C31...@zk3.dec.com>, Larry Smith <l...@zk3.dec.com> wrote:

>You are correct to a certain extent. The program would, indeed,
>have to be programmed to know that a crenallation could be a
>place to tie a rope. But given that info, and the length of
>the rope and the character's position on it, the program can
>now determine what floors of the castle can be entered from
>windows. True, this can be done with z-machine style IF games,
>but the effect must be restricted - a castle might have hundreds
>of crenallations, and every window a potential entry point. And
>the information does not apply _just_ to the rope. It could
>apply to a levitating mage, a man with rocket backpack, a guy
>dangling from a balloon, a character polymorphed into a spider
>scurrying up the wall. The z-machine rope code with its list
>of _possible_ crenallations would not be able to generalize
>this kind of thing.

No reason you can't do this in Inform: one of my current
pieces-of-game implements a coordinate sytem underneath the
ball-and-stick rooms, just so that I can call a routine
and tell the player "You hear the wild boars to your north-
west", as the player and the boars move around the map.

Each room is assigned x and y coordinates (I realized later
that z would have been good too) and I call a small routine
to give the direction from player to pigs. I could easily
get the distance as well--well, okay, if you want *exact*
distances I'd need some real-number arithmetic, which can
be done but is too much work for me. (_Jigsaw_ has it, for
a proof-of-concept.) Integer distances by counting squares,
though, no problem. I suspect a lot of graphical grid games
fake things up by counting squares too, or hexes.

The advantage is that once you code the thing, you can, as you
say, solve an assortment of problems with it, not just the
pigs.

The disadvantage is that IF games are hard to write in a way
that leads to clear spatial visualization, so it seems to me
that many of the things you can do aren't really good ideas.
If your player *maps* ball-and-stick you don't want to rely
too heavily on the exact layout.

Mary Kuhner mkku...@genetics.washington.edu

David Rush

unread,
May 28, 1998, 3:00:00 AM5/28/98
to

Larry Smith <l...@zk3.dec.com> writes:
> One of the ideas I've been noodling around is to use some of
> the more esoteric technologies in creating games. For example,
> it would be very interesting to develop NPC personalities using
> some sort of genetic algorithm

Well, I've been wondering if anyone has built any text-adventures
around a RETE-engine (forward-chaining inference system). For that matter
I would be interested in any back-chainers (e.g. prolog), too,
although I imagine that would be harder to build.

If no-one has, I may just take that as my excuse for building my own
RETE package, and see about putting a game platform on it.

> Politics is the art of looking for trouble, finding it,
> misdiagnosing it and then misapplying the wrong remedies.
> Groucho Marx

Love the .sig!

david rush
--
And, yes, text-adventures are *the* main reason why I started on a
programming career path...

okbl...@usa.net

unread,
May 29, 1998, 3:00:00 AM5/29/98
to

In article <356C31...@zk3.dec.com>,
Larry Smith <l...@zk3.dec.com> wrote:
>
> on the word "game" and the implication it carries of solution
> and ending. Maxis calls programs like SimCity "toys". Maybe
> that would be a better way to think of this kind of thing. A
> paradigm shift.
>

I'd also like to see a move away from "game", but more toward fiction, rather
than "toy". However, it might be possible to achieve the desired effect with
an RPG/IF hybrid, where one had "limitless" freedom in the scope of what one
did, but several elements were hard-wired to create the author's story.

>
> Using a graphical representation (even if not displayed) lets
> you design the system with more of this kind of intelligence
> built-in. Hopefully that would allow a greater range of pos-
> sible responses without a 4meg z-program.
>

That I agreed with when you first wrote it, though just because the design
tool would be graphical doesn't mean the game itself would have to be. I came
to agree with it less when I realized that a graphical representation really
doesn't help. All the text adventure lacks is a "crenellation" object. Or, to
get even more general, a "jutting object" that allows things to be tied around
it. (TADS has an "attachable" class I believe.)

I've thought about that whilst dreaming of the perfect IF system: So much is a
matter of how detailed you want to get. This seems to me to be a problem very
much faced by traditional fiction authors: At the right moment, drawing the
reader's attention to a bug or a shirt stain is very important. Forcing it on
him constantly for the sake of verisimillitude will bore him.

The dialogue argument elsewhere in the group is a classic example. Sometimes
it's better to just TELL SUE ABOUT HER FATHER, with the presupposition that
you're going to be honest and appropriate. Other times, the player needs to be
able to SAY JOKINGLY "YOUR FATHER IS A TRANSVESTITE".

Part of the problem is that we're letting the reader/player get up close to
the technique, and we're having trouble not revealing what those techniques
are. These are the broken mimes. :-)

>
> That would depend on the type of character you are shooting
> for, I would think. Any GA needs both basic encoding info
> (what does a gene do) and a fitness function (what is the
> actual effect of this combination of genes). The trick with
> any GA is selecting these. It's highly non-trivial - probably
> a larger problem than defining, say, Floyd. But the end result
> would, we hope, be a less robotic, less predicatable, more
> "real" character.
>

Sure. I'm never quite sure what makes the programming ideas that come out of
the AI community better than any other standard techniques.

>
> I guess I never really drew that much distinction - IF is,
> in my mind anyway, a limited, but implementable, role-playing
> exercise. Other RPGs - Ultima, for example - make other
> trade-offs to attain implementability. But I think they
> are different views of the same critter.
>

I think in terms of the effect created by the work. I have never once thought
of the shopkeeper in, say, MORIA as a real person, nor any of the monsters as
real things. (And when I say "real", I refer to the literary "real", as in
"Iago was a very real character"--not that I believe literary figures exist
beyond the works in which they are presented.) Similarly, I don't care if
SimCity burns down or I lose my armies in "The Ancient Art of War". These are
number games--not emotionally affecting.

I'm using these genres more strictly than typicaly exist, of course. The
distinction between "Circuit's Edge" and "Wasteland" is that the former is
more IF than RPG and the latter is more RPG than IF.

I mean, a very realistic RPG game, non-externally-determined couldn't help but
be emotionally affecting. If you added the power for an author to shape a
story from the characters, I think you'd have an ideal canvas for whatever
fiction you wanted to create.

>
> I doubt a reasonable GA approach could generate a "complete"
> NPC from initial principles. That shades over into artificial
> life, which is a fascinating topic and certainly germaine to
> IF/RPGs in the long run, but too ambitious for the moment.
> I suspect that GAs would be used to generate subsystems for
> an NPC. Initial description is one GA. Responses to verbal
> input another. Activity patterns a third, and so on.
>

See my previous comment re AI technology.

> game. But creating the initial stable is something that would
> be done by the designer, who would start with undifferentiated
> NPCs and interact with them until he was getting the kind of
> personalities he liked - hopefully with less effort and more
> flavor than simply coding them.

Interesting.

>
> You are correct to a certain extent. The program would, indeed,
> have to be programmed to know that a crenallation could be a
> place to tie a rope. But given that info, and the length of
> the rope and the character's position on it, the program can
> now determine what floors of the castle can be entered from
> windows. True, this can be done with z-machine style IF games,
> but the effect must be restricted - a castle might have hundreds
> of crenallations, and every window a potential entry point. And
> the information does not apply _just_ to the rope. It could
> apply to a levitating mage, a man with rocket backpack, a guy
> dangling from a balloon, a character polymorphed into a spider
> scurrying up the wall. The z-machine rope code with its list
> of _possible_ crenallations would not be able to generalize
> this kind of thing.
>

My most favorable impression of the Z-machine is that it still exists and is
used. That amazes me. For creating a new standard, it's not my first choice.

As for what you're specifically talking about, it requires micro-definition
and an understanding of space. Again, I can see the advantages, but I don't
think it would be that hard to do at a macro level with existing technology.

Attributes can be coded: crenellations, second floor access point, rope,
flying, vertical movability--whatever. These can be object attributes that
require a lot less work--maybe with a little help from a graphical design
tool--but don't mandate a graphical approach for the player.

>
> Crenallations are those toothlike partial walls on the top
> of a castle or curtain wall. Archers would be able to stay
> behind a wall portion and shoot at an angle through the open
> part next to him on either side. Sorry, didn't mean to be
> opaque.
>

I'm fairly handy with a dictionary; no need to apologize.

>
> But you see my point that, while you can solve this for the single
> circumstance of the rope, it doesn't help with other circumstances.
> With a grid layout, the system can deduce that, _however_the_char-
> aracter_gets_to_a_window_ they can gain entry to the castle at that
> point.
>

I think you can still do this fairly easily: Create Room classes with the
various attributes you desire: floor, inner rooms or outer rooms
with window access, etc.

Initially, as I said, I saw your point, but it faded when I started thinking
of the reality of it. "The reality" being, "How would this help if I actually
wanted to design I story this way?"

>
> There are surely drawbacks with every approach. The graphical
> grid system provides more information about the environment,
> but does so at a cost. It's not without reason that people
> are finding traditional muds to be more reliable and less
> annoying than Ultima On-Line. It is this precise problem
> you outline here that causes problems with network bandwidth.
>

I think the ideal allows operation at various levels.

>
> I'm not discouraged - this is a "blue sky" thread to try to
> spark some new ideas. Personally I see only two ways to
> try to represent a world - a graphical grid system ala
> Ultima, or a stick-and-ball approach ala Colossal Cave.
> I'm very interested in clever new approaches that either
> combine the best of these two, or come up with some new
> method.
>

Stick-and-ball? It's more of a tinkertoy type setup.<g>

The only difference between the approach used by IF and that used by RPGs
for mapping space is that IF space is arranged around significances as opposed
to physical, uh, relativity. Any place on the grid that is empty or allows
objects can be entered, and has no particular significance. (Obviously there
are special squares but the norm is that every space is like every other in
its group.)

IF says this space exists as this entity with this significance. A computer
can generate (theoretically) infinite RPG space with a (theoretically)
infinite variety of attributes. Without an author to create significance,
however, you just have...an RPG. :-)

David Rush

unread,
Jun 1, 1998, 3:00:00 AM6/1/98
to

okbl...@usa.net writes:
> Sure. I'm never quite sure what makes the programming ideas that come out of
> the AI community better than any other standard techniques.

They work very well on ambiguously defined problems? Even if they are
rather resource-intensive (I don't think you'll run a very big GA on a
ZX81), they do actually work well in their problem domain.

But they're no silver bullet.

> I mean, a very realistic RPG game, non-externally-determined couldn't help but
> be emotionally affecting. If you added the power for an author to shape a
> story from the characters, I think you'd have an ideal canvas for whatever
> fiction you wanted to create.

Well, this crystallized an idea. It seems that IF currently forces the
player into a fairly active role in the plot. What I think I would
like to see is a plot that unfolds whether the player engages it or
not.

Say the player is a spy and gets an assination assignment. He decides
this action is morally repugnant and declines it, leaves the spy org,
or whatever. Well then the IF should progress and have the assaination
target come into world dominance and commit great evil (TM). Perhaps
there are several places for the player to enter the main story line,
so he can "undo" the result of his previous choices.

Anyway, so much for the lame plot-outline, but I hope you get my
point. The world should "work" and the story should progress whether
the player takes his role in it ot not. The fact that the story
progresses, IMHO, differentiates it from an fully-open RPG, but it
does allow quite a bit more room for a "personal" story.

> My most favorable impression of the Z-machine is that it still exists and is
> used. That amazes me. For creating a new standard, it's not my first choice.

I think so too. I don't think that doing "more of the same" justifies
a change in the Z-machine, either (like I'm qualified to have an
opinion :) But I do think that addressing some of the more "immersive
fiction" issues (eg multiple storylines, better NPCs and conversing
with them, open-endedness) quite possibly require an entirely new model.

> As for what you're (Larry) specifically talking about (using objects
> in unanticipated ways), it requires micro-definition


> and an understanding of space. Again, I can see the advantages, but I don't
> think it would be that hard to do at a macro level with existing technology.

Hard, no. Tedious, yes. But I basically agree with your point.

> Larry Smith <l...@zk3.dec.com> wrote:
> > I'm not discouraged - this is a "blue sky" thread to try to
> > spark some new ideas. Personally I see only two ways to
> > try to represent a world - a graphical grid system ala
> > Ultima, or a stick-and-ball approach ala Colossal Cave.
> > I'm very interested in clever new approaches that either
> > combine the best of these two, or come up with some new
> > method.
> Stick-and-ball? It's more of a tinkertoy type setup.<g>

:)

> The only difference between the approach used by IF and that used by RPGs
> for mapping space is that IF space is arranged around significances as opposed
> to physical, uh, relativity. Any place on the grid that is empty or allows
> objects can be entered, and has no particular significance. (Obviously there
> are special squares but the norm is that every space is like every other in
> its group.)

Good observation. This actually bears quite a bit more thinking about
(at least for me).

> IF says this space exists as this entity with this significance. A computer
> can generate (theoretically) infinite RPG space with a (theoretically)
> infinite variety of attributes. Without an author to create significance,
> however, you just have...an RPG. :-)

Which is the beauty of having generated bits in the IF "world". You
then need to learn to recognize significant oppurtunities. This is a
common problem in life. I think it might make for interesting games,
too.

david rush

Larry Smith

unread,
Jun 2, 1998, 3:00:00 AM6/2/98
to

David Rush wrote:

> okbl...@usa.net writes:
> > Sure. I'm never quite sure what makes the programming ideas that come out of
> > the AI community better than any other standard techniques.
>

> They work very well on ambiguously defined problems? Even if they are
> rather resource-intensive (I don't think you'll run a very big GA on a
> ZX81)

Perhaps the NPC is a microbe. =)

>, they do actually work well in their problem domain.
> But they're no silver bullet.

They aren't, no. They are, however, a very useful technology
for transforming an array of semi-random data into some sort
of useful form. One tool I picture is a fairly large data
base of NPC attributes and a GA that selects from the data
base and presents a precis of a character. The user selects
generated NPCs that have interesting features and "breeds"
them to get new NPC's that may combine these features in
interesting ways. The use of such a tool is to build up
a stable of NPC's that could be plugged into a game without
a lot of effort. It does presume that the game is built
around the NPC, rather than vice versa. Such a tool would
not be useful if you all you need is a mcguffin. In other
words, it wouldn't have been useful for building "Floyd"
but could've been useful for the kinds of characters in
Witness or Deadline.

> Well, this crystallized an idea. It seems that IF currently forces the
> player into a fairly active role in the plot. What I think I would
> like to see is a plot that unfolds whether the player engages it or
> not.

Infocom did something like this in Witness and Deadline -
events would occur when they occurred and where they occur-
red whether you are there or not. I frankly prefer this
paradigm over others because it makes the world "feel"
more real. By comparison, Zork and Colossal Cave, while
engaging, were very dead places - the world reacted to
you, you rarely could react to the world.

> > My most favorable impression of the Z-machine is that it still exists and is
> > used. That amazes me. For creating a new standard, it's not my first choice.
>

> I think so too. I don't think that doing "more of the same" justifies
> a change in the Z-machine, either (like I'm qualified to have an
> opinion :) But I do think that addressing some of the more "immersive
> fiction" issues (eg multiple storylines, better NPCs and conversing
> with them, open-endedness) quite possibly require an entirely new model.

I generally prefer to refine rather than build anew. Some
of the ideas I have for building games rely on things like
GA's or table-driven scenarios - the z-machine is uniquely
suited to these, except that it is limited in terms of how
it can react with z-code not already linked in. I'd like
to see it expanded to allow us more flexibility - chaining
to allow more modular scenarios, dynamic code movement to
allow motion of objects from one scenario to another, and
so on. All of these are analogous to functions in "real"
p-code systems that solve more generic problems.

It is possible that some one of these might break some
basic assumption built into the Z-machine - in that case,
I'd advocate a Z+ machine as a successor, retaining as
much of the original Z-machine as possible. After all,
we already have powerful, well-proven tools for it. If
we build a whole new architecture we'll have to build a
whole new suite of tools for it.

> > As for what you're (Larry) specifically talking about (using objects

> > in unanticipated ways), it requires micro-definition


> > and an understanding of space. Again, I can see the advantages, but I don't
> > think it would be that hard to do at a macro level with existing technology.
>

> Hard, no. Tedious, yes. But I basically agree with your point.

One _could_ solve it that way - but one could also solve
it by programming more of physical laws of the simulated
world and allowing the system to infer correct operation.
Graphical layouts are a step in this direction, but not,
perhaps, the best or only. We are already moving in this
direction in the library for the Z-machine - more and more
of the basic "smarts" of a scenario can be found there.

> > The only difference between the approach used by IF and that used by RPGs
> > for mapping space is that IF space is arranged around significances as opposed
> > to physical, uh, relativity. Any place on the grid that is empty or allows
> > objects can be entered, and has no particular significance. (Obviously there
> > are special squares but the norm is that every space is like every other in
> > its group.)
>

> Good observation. This actually bears quite a bit more thinking about
> (at least for me).

I agree. In a sense, you are distilling the scenario and re-
moving a lot of red herrings that are of limited utility and
detrimental to the enjoyable aspects. On the other hand, you
are also implicitly underlining the "important" things, elim-
inating side adventures that might be enjoyable and interesting
in themselves in ways that might not have occurred to the de-
signer. Ultima shows a number of these kinds of issues
(though the game has always been a wretched chore to play be-
cause of going to _excess_ on these issues. I don't play these
games so I can spend hours gathering flour and water and baking
bread to earn a few shekels.)

> > IF says this space exists as this entity with this significance. A computer
> > can generate (theoretically) infinite RPG space with a (theoretically)
> > infinite variety of attributes. Without an author to create significance,
> > however, you just have...an RPG. :-)

I still think this is an artificial distinction, though.

> Which is the beauty of having generated bits in the IF "world". You
> then need to learn to recognize significant oppurtunities. This is a
> common problem in life. I think it might make for interesting games,
> too.

Good stuff to think about coming out of this thread now.

okbl...@usa.net

unread,
Jun 3, 1998, 3:00:00 AM6/3/98
to

In article <gr81zt8...@nortel.ca>,

David Rush <ku...@intercenter.net> wrote:
>
> They work very well on ambiguously defined problems? Even if they are
> rather resource-intensive (I don't think you'll run a very big GA on a
> ZX81), they do actually work well in their problem domain.

>
> But they're no silver bullet.
>

I'll take your word for it. AI is right up there with "5th Generation
Languages" in my universe.

> Well, this crystallized an idea. It seems that IF currently forces the
> player into a fairly active role in the plot. What I think I would
> like to see is a plot that unfolds whether the player engages it or
> not.

<bell ringing> Exactly what I was thinking.

> Say the player is a spy and gets an assination assignment. He decides
> this action is morally repugnant and declines it, leaves the spy org,
> or whatever. Well then the IF should progress and have the assaination
> target come into world dominance and commit great evil (TM). Perhaps
> there are several places for the player to enter the main story line,
> so he can "undo" the result of his previous choices.

Again, what I had in mind, minus the UNDO part. I haven't figured out how a
world with the kind of freedom I had in mind could be meaningfully
UNDOne--without oodles of disk-space. Or, well, I guess a transaction DB
could be used, so that an UNDO actually allowed you to start over and REDO
everything up to a point. It would be an interesting examination of chaos
theory, too, since there would be considerable--well, I digress. :-)

> Anyway, so much for the lame plot-outline, but I hope you get my
> point. The world should "work" and the story should progress whether
> the player takes his role in it ot not. The fact that the story
> progresses, IMHO, differentiates it from an fully-open RPG, but it
> does allow quite a bit more room for a "personal" story.

Again, this is what I was thinking. The story is compelling and goes on
whether the player takes on the role or not. Most players will end up finding
everything pointing to this story, giving the author the chance to tell the
story and the player the chance to select the viewpoint through which he'll
view it. I mean, the player could be the spy, decide not to take the
mission--and then decide to work for the enemy!

> I think so too. I don't think that doing "more of the same" justifies
> a change in the Z-machine, either (like I'm qualified to have an
> opinion :) But I do think that addressing some of the more "immersive
> fiction" issues (eg multiple storylines, better NPCs and conversing
> with them, open-endedness) quite possibly require an entirely new model.

I think we're in synch on this.

Just so it's clear, I wrote this:

> > The only difference between the approach used by IF and that used by RPGs
> > for mapping space is that IF space is arranged around significances as
opposed
> > to physical, uh, relativity. Any place on the grid that is empty or allows
> > objects can be entered, and has no particular significance. (Obviously
there
> > are special squares but the norm is that every space is like every other
in
> > its group.)

Then you wrote:

> Good observation. This actually bears quite a bit more thinking about
> (at least for me).

To which I reply: Thanks. :-)

> Which is the beauty of having generated bits in the IF "world". You
> then need to learn to recognize significant oppurtunities. This is a
> common problem in life. I think it might make for interesting games,
> too.

So--get cracking! ;-)

Mike DeSanto

unread,
Jun 3, 1998, 3:00:00 AM6/3/98
to

OK, here is what I think I see happening here.

We want more flexibility, with a story that the player can affect
significantly but which, if not avvected by the player, will go on without her.
Plot is still paramount, because the goal is, like traditional IF, to tell a
story.

So, here is my 2 cents.

I think an Ultima style interface would work quite well. (remember, Ultima
style does not mean cheezy. Diablo uses an Ultima style interface, as does
Fallout! Tiles are tiles.) To make it more if-like, I think it is necessary to
add more than one action per object. For example, in Fallout, a crowbar is a
weapon. You can not use it to pry things open!

In order to open the breadth of the story, but still create it in a reasonable
amount of time, the complexity of interaction would need to decrease. I can see
having a limited number of set verbs. Objects then can use these verbs, but new
ones can not be defined.

The big leap, in my opinion, needs to be in creation tools. A story has
crisis points, and these are limited. Does Indiana Jones find the Ark first, or
do the Nazi's, etc. In order to have more branches, we need to decrease the time
necessary to detail each branch. A good creation tool could do this.

Prose is very important. Prose is how you convey emotion, and a sense of
things happening. It is essential to have descriptions, cut scenes if you will,
to reward the player for progressing down a path, and let her know what is going
on in the rest of the world.

The two examples I can give for games pushing the boundaries are "Betrayal at
Krondor" (an RPG pushing toward IF) and "The Pandora Directive" (an adventure game
pushing toward RPG). BaK the most. If you make a tile based system that lots of
people can use (ie a GNU language or Java) that can do everything that BaK does,
and has an efficient story generator that lets the author concentrate on writing A
story and not on syntax, and lets you define action points in time (by turn or by
player action) then you have acheived your goal.

Mike DeSanto
desa...@io.com


David Rush

unread,
Jun 7, 1998, 3:00:00 AM6/7/98
to

I reckon I'll drive this just a little further...

Larry Smith <l...@zk3.dec.com> writes:
> David Rush wrote:
> > okbl...@usa.net writes:
> In other words, it wouldn't have been useful for building "Floyd"
> but could've been useful for the kinds of characters in Witness or
> Deadline.

Yep. If the NPC was crucial to the story I don't see how you could
avoid putting a fair bit of effort into its behavior. On the other
hand there are a lot of irrelevant people in the world :)

> > > My most favorable impression of the Z-machine is that it still
> > > exists and is used. That amazes me. For creating a new standard,
> > > it's not my first choice.
> >
> > I think so too. I don't think that doing "more of the same"
> > justifies a change in the Z-machine, either (like I'm qualified to
> > have an opinion :) But I do think that addressing some of the more
> > "immersive fiction" issues (eg multiple storylines, better NPCs
> > and conversing with them, open-endedness) quite possibly require
> > an entirely new model.

> I generally prefer to refine rather than build anew.

That is generally a sound idea.

> [snip] It is possible that some one of these might break some


> basic assumption built into the Z-machine - in that case,
> I'd advocate a Z+ machine as a successor, retaining as
> much of the original Z-machine as possible.

This is the basic problem. What you have in the Z-machine is basically
a simple sequential processor. It is turing complete, so you *can*
implement anything in it, but there are many things you might not want
to implement. Since I'm thumping the inference engine tub, I'll just
mention that both main inference architectures have well-understood
abstract machine definitions (RETE[1] and WAM[2]) that look very
little like a sequential processor. To be fair, a RETE engine could
probably make use of Z-machine subroutines, but I don't see how a WAM
could possibly interact with the Z-machine.

So Z+ or something new? It will depend on the feature set.

In fact, this is maybe a good place to ask the question: What would be
in the feature set of a system that would justify a break from the
Z-machine to most people? Inquiring minds want to know!

> After all, we already have powerful, well-proven tools for it. If
> we build a whole new architecture we'll have to build a whole new
> suite of tools for it.

Yeah. This is why I haven't started yet. I'm still gathering ideas. I
wrote 2 IF engines 12 years ago, and I'm not in a big hurry to start
*that* again. There's a lot of work there, and the engine isn't the
biggest bit. The parser is the really tricky bit, and I want to see a
bit more of how things are being done before I take another go at it.

> > > The only difference between the approach used by IF and that
> > > used by RPGs for mapping space is that IF space is arranged
> > > around significances as opposed to physical, uh, relativity. Any
> > > place on the grid that is empty or allows objects can be
> > > entered, and has no particular significance. (Obviously there
> > > are special squares but the norm is that every space is like
> > > every other in its group.)

[snip Larry & david comments]

> > > IF says this space exists as this entity with this
> > > significance. A computer can generate (theoretically) infinite
> > > RPG space with a (theoretically) infinite variety of
> > > attributes. Without an author to create significance, however,
> > > you just have...an RPG. :-)

> I still think this is an artificial distinction, though.

Frankly, so do I, although I suppose that IF is more "meaningful", in
the same that that an RPG would be "nihilistic". I'm probably pushing
the limits on those word definitions, though...

david rush
--
[1] RETE - the CLIPS expert system engine
[2] WAM - the Prolog expert system engine

David Rush

unread,
Jun 7, 1998, 3:00:00 AM6/7/98
to

okbl...@usa.net writes:
> In article <gr81zt8...@nortel.ca>,
> David Rush <ku...@intercenter.net> wrote:
> > [AI works but is] no silver bullet.

> I'll take your word for it. AI is right up there with "5th Generation
> Languages" in my universe.

Which are right beside 4GLs in my universe :)

> > Well, this crystallized an idea. It seems that IF currently forces the
> > player into a fairly active role in the plot. What I think I would
> > like to see is a plot that unfolds whether the player engages it or
> > not.

> <bell ringing> Exactly what I was thinking.

> > Say the player is a spy and gets an assination assignment. He decides
> > this action is morally repugnant and declines it, leaves the spy org,
> > or whatever. Well then the IF should progress and have the assaination
> > target come into world dominance and commit great evil (TM). Perhaps
> > there are several places for the player to enter the main story line,
> > so he can "undo" the result of his previous choices.

> Again, what I had in mind, minus the UNDO part.

Sorry, I was trying to avoid confusion with "undo" instead of
UNDO. The only way I meant to undo a player action was the way we do
it in life -- by moving forward and correcting the consequences. If
only life actually *had* an UNDO command I'd...well if it had
multiple-UNDO... :)

> > Anyway, so much for the lame plot-outline, but I hope you get my
> > point. The world should "work" and the story should progress whether
> > the player takes his role in it ot not. The fact that the story
> > progresses, IMHO, differentiates it from an fully-open RPG, but it
> > does allow quite a bit more room for a "personal" story.
>
> Again, this is what I was thinking. The story is compelling and goes on
> whether the player takes on the role or not. Most players will end up
> finding everything pointing to this story, giving the author the
> chance to tell the story and the player the chance to select the
> viewpoint through which he'll view it. I mean, the player could be
> the spy, decide not to take the mission--and then decide to work for
> the enemy!

Yea verily! I have actually outlined a fairly complex thingy based
upon a shared reality found in another NG. I've got at least six
different major character paths that could be followed. Its intended
to reward this sort of thing (in limited ways, some consistency would
be required).

> So--get cracking! ;-)

Well, I'm a-looking for folks for brainstorming, and maybe in a month
or three getting started on a system (assuming the RL doesn't clobber me
in the interim). Care to sign up?

david rush
--
Uncle Sam wants You!

Matt Kimball

unread,
Jun 8, 1998, 3:00:00 AM6/8/98
to

David Rush <ku...@intercenter.net> wrote:
: In fact, this is maybe a good place to ask the question: What would be

: in the feature set of a system that would justify a break from the
: Z-machine to most people? Inquiring minds want to know!

Well, there isn't any one feature that would do it, but I'd be a fan
of a from-scratch redesign to clean things up and extend it. Stuff
that this would include would be:

* 32-bit pointers and routine addresses. This means no more 64K RAM
barrier and no 512K code barrier. (Assuming V8. I realize that
other versions have slightly bigger limits).
* The ability to dynamically request memory from the OS.
* General clean up of the I/O system so that it isn't quite so
much of a hack. This would make it easier for interpreters
to have a single resizable window.
* Unicode throught the I/O stuff. There is Unicode in the latest
specs, but it feels tacked on, and I don't know if any interpreters
support it.
* Clean up the file I/O stuff to have a more stdio-like interface.
* TCP/IP socket access would be nice.
* A standard cross-platform way to call C code would be nice. (One
would write C code to a particular API, and it would just need to
be recompiled for various platforms to be callable from Z-code).

That stuff and reference implementations for a few platforms would be
a good start.

--
Matt Kimball
mkim...@xmission.com

okbl...@usa.net

unread,
Jun 8, 1998, 3:00:00 AM6/8/98
to

In article <gr8ra10...@intercenter.net>,

David Rush <ku...@intercenter.net> wrote:
>
> Which are right beside 4GLs in my universe :)
>

I'm not a big 4GL fan either, but I must concede that much useful work has
been done in them. Unlike 5GLs. :-)

>
> Sorry, I was trying to avoid confusion with "undo" instead of
> UNDO. The only way I meant to undo a player action was the way we do
> it in life -- by moving forward and correcting the consequences. If
> only life actually *had* an UNDO command I'd...well if it had
> multiple-UNDO... :)
>

Gotcha. :-)

> Yea verily! I have actually outlined a fairly complex thingy based
> upon a shared reality found in another NG. I've got at least six
> different major character paths that could be followed. Its intended
> to reward this sort of thing (in limited ways, some consistency would
> be required).

What kind of tools does one use to outline a complex thingy?

>
> Well, I'm a-looking for folks for brainstorming, and maybe in a month
> or three getting started on a system (assuming the RL doesn't clobber me
> in the interim). Care to sign up?
>

Sure. What's an RL? Oh, yeah, I remember now. Nasty stuff.

okbl...@usa.net

unread,
Jun 8, 1998, 3:00:00 AM6/8/98
to

In article <gr8u35w...@intercenter.net>,

David Rush <ku...@intercenter.net> wrote:
>
> In fact, this is maybe a good place to ask the question: What would be
> in the feature set of a system that would justify a break from the
> Z-machine to most people? Inquiring minds want to know!
>

It probably wouldn't take *that* much. Well, for me, it wouldn't hardly take
anything. :-)

> > I still think this is an artificial distinction, though.
>

> Frankly, so do I, although I suppose that IF is more "meaningful", in
> the same that that an RPG would be "nihilistic". I'm probably pushing
> the limits on those word definitions, though...
>

Let me point out, as the one who made the distinction that *of course* it's
artificial. Genres are created to make discussion easier and to make
identification easier. There has been both grid-based IF and stick-and-ball
(is that what it's called around here?) RPGs.

But IF, in general, deals with significances: How many sharp weapons are
there in Zork? Each has particular characteristics that make it unique,
whereas in an RPG a sword is a sword is a sword, is the same as a knife or a
whip or a bow-and-arrow, in terms of what you can do with it. Only the
numbers change.

I know what you're getting at with "meaningful" and "nihilistic", though I'm
not sure if I'd phrase it quite that way.

Dan Shiovitz

unread,
Jun 8, 1998, 3:00:00 AM6/8/98
to

In article <6lhgmp$rf8$1...@nnrp1.dejanews.com>, <okbl...@usa.net> wrote:
>In article <gr8u35w...@intercenter.net>,
[..]

>Let me point out, as the one who made the distinction that *of course* it's
>artificial. Genres are created to make discussion easier and to make
>identification easier. There has been both grid-based IF and stick-and-ball
>(is that what it's called around here?) RPGs.
>
>But IF, in general, deals with significances: How many sharp weapons are
>there in Zork? Each has particular characteristics that make it unique,
>whereas in an RPG a sword is a sword is a sword, is the same as a knife or a
>whip or a bow-and-arrow, in terms of what you can do with it. Only the
>numbers change.

Mmhmm. I admit, though, I'm trying to think of IF not based on the
"every object is handcrafted" model and failing. There has been a
*little* move in this direction with identical objects and
inheritance, but really, most objects are still mostly written from
scratch. We could do it differently but it would mean a fairly serious
change of direction. Most convenentional puzzles are based on having a
small object set so there's only one or two possible solutions. If you
assume a number of objects more similar to what you have access to in
real-world locations, there's probably going to be more like dozens of
solutions to "puzzles". This, in turn, means you end up focusing more
on high-level puzzles like "How do I defeat the evil duke and regain
the throne?" rather than "How do I get into the locked room?". It
would be interesting to see, but I have no real idea how to get there
from here. Probably the mud-dev mailing list would be worth looking at
if you are interested in this. They are trying to (more or less) get
to the same 'there' but starting from a totally different 'here'.
http://www.kanga.nu/~petidomo/lists/mud-dev/index.html

>[ok]
--
(Dan Shiovitz) (d...@cs.wisc.edu) (look, I have a new e-mail address)
(http://www.cs.wisc.edu/~dbs) (and a new web page also)
(the content, of course, is the same)

okbl...@usa.net

unread,
Jun 9, 1998, 3:00:00 AM6/9/98
to

In article <6lhl0v$l...@spool.cs.wisc.edu>,

d...@mozzarella.cs.wisc.edu (Dan Shiovitz) wrote:
>
> Mmhmm. I admit, though, I'm trying to think of IF not based on the
> "every object is handcrafted" model and failing.

Well, think about it: That's part of the "fiction" aspect. When you read a
book, every item *is* handcrafted, although the writer gets a lot more help
from the reader in regular fiction than IF.

> solutions to "puzzles". This, in turn, means you end up focusing more
> on high-level puzzles like "How do I defeat the evil duke and regain
> the throne?" rather than "How do I get into the locked room?". It
> would be interesting to see, but I have no real idea how to get there
> from here.

I think that's where the push should be, myself.

Probably the mud-dev mailing list would be worth looking at
> if you are interested in this. They are trying to (more or less) get
> to the same 'there' but starting from a totally different 'here'.
> http://www.kanga.nu/~petidomo/lists/mud-dev/index.html

I've actually never been on a MUD. I'm not sure how it relates, exactly.

Dan Shiovitz

unread,
Jun 10, 1998, 3:00:00 AM6/10/98
to

In article <6lkdsh$vmm$1...@nnrp1.dejanews.com>, <okbl...@usa.net> wrote:
>In article <6lhl0v$l...@spool.cs.wisc.edu>,
> d...@mozzarella.cs.wisc.edu (Dan Shiovitz) wrote:
>>
>> Mmhmm. I admit, though, I'm trying to think of IF not based on the
>> "every object is handcrafted" model and failing.
>
>Well, think about it: That's part of the "fiction" aspect. When you read a
>book, every item *is* handcrafted, although the writer gets a lot more help
>from the reader in regular fiction than IF.

Yes, that's mostly the point. The set of objects interacted with and
the specific interactions with them is strictly controlled in books,
so it's possible to handcraft each one. In IF, though, players can (or
theoretically can) do stuff like take apart chairs and look at each
individual nail and so on. (Perhaps I'm a little unclear about what I
mean by "handcrafted". I mean that the author has taken the trouble to
write up a large number of special interactions just for this object,
including a description, and this object is rarely part of a class of
objects all of which are identical, but instead is generally the only
one of its kind in the entire world. Unique objects of this sort are
very rare in the real world.)

[..]


>Probably the mud-dev mailing list would be worth looking at
>> if you are interested in this. They are trying to (more or less) get
>> to the same 'there' but starting from a totally different 'here'.
>> http://www.kanga.nu/~petidomo/lists/mud-dev/index.html
>
>I've actually never been on a MUD. I'm not sure how it relates, exactly.

Ok, quick summary. For our purposes there are two kinds of muds,
exploration muds and combat muds. Exploration muds are generally
called AberMUDs. They're pretty similar to standard IF except that
they're multiplayer and the parser is not so good. Multiplayer adds
some interesting twists, including (ideally) multiplayer puzzles, but
aside from that there isn't much of interest. Every object & location
is usually handcrafted in the sense given above, puzzles are all coded
by hand, etc. Advancement in the game is given by increasing your
score, which is given by solving puzzles and (rarely) defeating
monsters, which means the typical player acts much like the player
does in one of the Zork games, which makes sense, since that was a
strong influence on AberMUDS.

The other kind of mud worth looking at are the combat muds. These are
either called DikuMUDs or lpMUDs, depending on type (but I'm going to
consider them as a class for now). These (especially the dikuMUDs)
often have a large number of identical objects. The reason for this
is, as the name suggests, advancement is through combat: the more
monsters you kill, the more powerful you become. To make the game
challenging, you need to kill large quantities of monsters, but the
game designers don't want to design so many, so they design a few and
clone them a bunch of times. Also, more recently, there's been the
move to make "big worlds" that take large amounts of real time as well
as game time to explore. One popular option has been to generate new
rooms on-the-fly, selecting descriptions and such randomly from a
premade set. Right now the large worlds (even the muds where
everything is handwritten tend to be in the hundreds or thousands of
rooms & objects & NPCs due to lack of handcrafted behavior; usually
the mud "builders" just provide descriptions and some simple behavior
settings -- this is less true on lpMUDs, which are like crosses
between dikus and abers in some ways, and have a size someplace in
between) tend to suffer from a lack of detail because they aren't
totally handcrafted, only sort of. There's also a lack of what we'd
call puzzles; the traditional emphasis has always been on killing
monsters so that's where the coding effort has gone in, to make combat
interesting.

Lately, though, there's been some recognition in the mud community
that killing monsters for points isn't all it's cracked up to be, and
there's efforts to provide a more detailed & interesting world that
can be explored more in-depth. Still, they've already got a
compartively huge world, so they're working on filling it in, rather
than what we're doing, which is basically taking a small detailed
world and expanding it and attempting to keep the same level of
detail. Anyway. The mud-dev list has a lot of this stuff. I think it's
worth looking at if you're interested in large worlds and more
realistic physics modelling (worlds that large can't usually afford to
hand-craft all the behavior, so they tend to lean towards more general
ways of handling things. sometimes for the better, sometimes not. NPCs
in these kind of worlds are almost always horrible. Make "I don't know
anything about that" look great.)

Thomas Galen Ault

unread,
Jun 10, 1998, 3:00:00 AM6/10/98
to

In article <6lfnkq$2au$2...@news.xmission.com>,

Matt Kimball <mkim...@xmission.com> wrote:
>David Rush <ku...@intercenter.net> wrote:
>: In fact, this is maybe a good place to ask the question: What would be
>: in the feature set of a system that would justify a break from the
>: Z-machine to most people? Inquiring minds want to know!
>
>Well, there isn't any one feature that would do it, but I'd be a fan
>of a from-scratch redesign to clean things up and extend it. Stuff
>that this would include would be:
>
[ List of features deleted ]

I've been working on something I call the "A-Machine" (it's name and mine
are a coindicence) which has all of the extnesions you mentioned execpt the
last (ability to call external C code from within the interpreter). It also
has a few other features as well. An overview of the "A-Machine" can be
found at "http://gs90.sp.cs.cmu.edu:5000/www/IF/AMachineOverview.txt", or
I can post it (it's pretty long) if people are interested.

Tom Ault

Larry Smith

unread,
Jun 10, 1998, 3:00:00 AM6/10/98
to

David Rush wrote:

> I reckon I'll drive this just a little further...

Hey, why not?

> Larry Smith <l...@zk3.dec.com> writes:
> > David Rush wrote:
> > > okbl...@usa.net writes:
> > In other words, it wouldn't have been useful for building "Floyd"
> > but could've been useful for the kinds of characters in Witness or
> > Deadline.

> Yep. If the NPC was crucial to the story I don't see how you could


> avoid putting a fair bit of effort into its behavior. On the other
> hand there are a lot of irrelevant people in the world :)

Gee, when you put it _that_ way it sounds so...cruel... ;)

> In fact, this is maybe a good place to ask the question: What would be
> in the feature set of a system that would justify a break from the
> Z-machine to most people? Inquiring minds want to know!

It depends a lot on how you think about setting up an
adventure.

I'm particularly interested in generating adventures -
that is, I'm keen to write a gamemaster. Now the trad-
itional ways - Ultima, Moria, Nethack - are massive C
programs. Okay once you're bootstrapped into some use-
ful set of tools, but bears to start with and very low-
level concepts. I mean, the first thing you need to do
is write Yet Another Parser. Or Yet Another Graphics
front-end. Or adapt someone else's.

Inform and the z-machine attract me because they serve
as very useful tools for documenting the output of a
gamemaster program - that is, I want to write a program
that will write an inform program. Now, the ball-and-
stick paradigm, being the way the z-machine works best,
is the obvious choice, but I don't think I can write a
gamemaster that can create something like, say, Sorceror.
These little games are highly refined gems. I would
suspect that I could, at best, produce a reasonable
_segment_ of a game - scenic, but less condensed than
typical of inform programs up 'til now.

To get around this, I need some way to be able to link
adventure scenarios, so my gamemaster can spit out a
chunk of adventure (the countryside) with a hook to
another part (the entrance to the castle) and then be
able to chain to another adventure (the castle) with
the character and possessions intact. Based on what
I understand of the z-machine, this shouldn't be hard
to add (I plan to tackle this myself, but I thought it
would be neat to get a discussion going to see what
other ideas might be worthwhile thinking about as long
as I'm hacking into things).

Something sort of similar to this has been done in the
form of Eamon - an old Apple adventure system. The
basic character and some subset of his possessions
could travel from scenario to scenario - there were
over a hundred written for it. (Another project I
will never get to: writing an Apple Basic interpreter
for Unix so these old adventures can be played without
an Apple ][ emulator).

> > After all, we already have powerful, well-proven tools for it. If
> > we build a whole new architecture we'll have to build a whole new
> > suite of tools for it.
>

> Yeah. This is why I haven't started yet. I'm still gathering ideas. I
> wrote 2 IF engines 12 years ago, and I'm not in a big hurry to start
> *that* again. There's a lot of work there, and the engine isn't the
> biggest bit. The parser is the really tricky bit, and I want to see a
> bit more of how things are being done before I take another go at it.

This is why I'd rather think in terms of segmenting
the z-machine to allow some sort of chaining rather
than starting with a "new" z-machine from scratch.
There are many issues already dealt with here -
parsing, compact code representation, and so on.

> Frankly, so do I, although I suppose that IF is more "meaningful", in
> the same that that an RPG would be "nihilistic". I'm probably pushing
> the limits on those word definitions, though...

There is meaningful and there is meaningful. Inform
adventures to date have all been directed - you had a
particular goal to reach. I am more interested in self-
directed adventures. These have a lot more replay value.

okbl...@usa.net

unread,
Jun 10, 1998, 3:00:00 AM6/10/98
to

In article <6ll9i1$3...@spool.cs.wisc.edu>,

d...@mozzarella.cs.wisc.edu (Dan Shiovitz) wrote:
>
> Yes, that's mostly the point. The set of objects interacted with and
> the specific interactions with them is strictly controlled in books,
> so it's possible to handcraft each one. In IF, though, players can (or
> theoretically can) do stuff like take apart chairs and look at each
> individual nail and so on. (Perhaps I'm a little unclear about what I
> mean by "handcrafted". I mean that the author has taken the trouble to
> write up a large number of special interactions just for this object,
> including a description, and this object is rarely part of a class of
> objects all of which are identical, but instead is generally the only
> one of its kind in the entire world. Unique objects of this sort are
> very rare in the real world.)
>

I have some thoughts about how this could be handled, though I'm not sure
which of them are feasible in the short-term, or which are even necessary,
for that matter. I think one of the highest measures of success in IF could
be considered the creation of a situation immersive enough to keep the user
from desiring to look at every bolt, nail, rivet, whatever in every chair.

> Ok, quick summary.

Thanks.

> worth looking at if you're interested in large worlds and more
> realistic physics modelling (worlds that large can't usually afford to
> hand-craft all the behavior, so they tend to lean towards more general
> ways of handling things. sometimes for the better, sometimes not.

Exactly. It may be possible to include all these details in a very
straightforward way, but also in such a way that "x chair" returns "It's a
standard wood chair, pieced together without nails, blah-blah-blah" in most
cases and "x chair" in other cases returns "As you look closer, you notice
electrical wires running from the chair to the socket."

And putting in the appropriate prompts so the user looks at the chair that
needs looking at, and not the ones that don't.

> NPCs
> in these kind of worlds are almost always horrible. Make "I don't know
> anything about that" look great.)

Well, these are all different problems. I think I've identified eight
different problem sets that are a part of IF....

Matt Ackeret

unread,
Jun 10, 1998, 3:00:00 AM6/10/98
to

In article <6lfnkq$2au$2...@news.xmission.com>,
Matt Kimball <mkim...@xmission.com> wrote:
>David Rush <ku...@intercenter.net> wrote:
>: In fact, this is maybe a good place to ask the question: What would be

>: in the feature set of a system that would justify a break from the
>: Z-machine to most people? Inquiring minds want to know!
>
>Well, there isn't any one feature that would do it, but I'd be a fan
>of a from-scratch redesign to clean things up and extend it. Stuff
>that this would include would be:
>
>* 32-bit pointers and routine addresses. This means no more 64K RAM
> barrier and no 512K code barrier. (Assuming V8. I realize that
> other versions have slightly bigger limits).

How about if this were an option that could be turned on at compile time?
(that is, if it would fit in 16 bit pointers, use them..)

Also, what about running in small memory -- the VM-ish system built into
the Zcode interpreters.

--
mat...@area.com

Matthew T. Russotto

unread,
Jun 11, 1998, 3:00:00 AM6/11/98
to

In article <6lmga0$ebi$1...@goldenapple.srv.cs.cmu.edu>,

Thomas Galen Ault <tom...@cs.cmu.edu> wrote:

}I've been working on something I call the "A-Machine" (it's name and mine
}are a coindicence) which has all of the extnesions you mentioned execpt the
}last (ability to call external C code from within the interpreter). It also
}has a few other features as well. An overview of the "A-Machine" can be
}found at "http://gs90.sp.cs.cmu.edu:5000/www/IF/AMachineOverview.txt", or
}I can post it (it's pretty long) if people are interested.

My first impression is "hey, cool". My second impression is that this
thing is bigger than the Motorola 68020+68881... is it too ambitious?

--
Matthew T. Russotto russ...@pond.com
"Extremism in defense of liberty is no vice, and moderation in pursuit
of justice is no virtue."

Thomas Galen Ault

unread,
Jun 11, 1998, 3:00:00 AM6/11/98
to

In article <6lnc7k$2...@netaxs.com>,

Matthew T. Russotto <russ...@wanda.pond.com> wrote:
>My first impression is "hey, cool". My second impression is that this
>thing is bigger than the Motorola 68020+68881... is it too ambitious?

Remeber that it's a virtual machine: implemented in software, not silicon.
Most of the algorithms aren't difficult, but there are lots of sections
of tedious code. The hard part is the platform independent I/O (which
is why most of the fonts, text windowing, etc. is optional), and
half of that is getting the spec right.

Tom Ault

L. Ross Raszewski

unread,
Jun 11, 1998, 3:00:00 AM6/11/98
to

In article <6lmpko$302u$1...@iris.area.com>,

EVILTHOUGHTEVILTHOUGHT


I'm seeing lots of code breaking if you go to 32-bit pointers...

Because a variable in inform is 2 bytes -- in 32 bit it would have to be 4
bytes

which means that obj.#prop would now return 4 times the size of an array, not
twice

And which means that print_to_array would break like all get out; Array-->0
would get the soze of the array as a word, whcih would occupy bytes 0 1 2 and
3, but writing of the arrya begins at Array->2

This is going to be a TOUGH transition.

And it almost certainly means that recompiling a v8 wip as a 32-bit v9 would
be nontrivial.

Dan Shiovitz

unread,
Jun 11, 1998, 3:00:00 AM6/11/98
to

In article <6lnfp3$h2b$1...@goldenapple.srv.cs.cmu.edu>,

Thomas Galen Ault <tom...@cs.cmu.edu> wrote:

Exactly. And if you want 8, 16, and 32 bit types, and all these
operations to work with all of them, and presumbably with combinations
of them (unless you've got typecasting or somesuch), that alone is
messy to get right. Not to mention floating point (single *and* double
precision!) vs integer, and all the rest. Simplify, simplify.

Disk space is cheap. You don't need any types besides the 32-bit
one. (Reading over the spec, I realize i'm not clear on the degree
that the A-machine actually supports the other types, beyond letting
you access the int registers in halves). If you must have
floating-point types (and they're hardly so common in games as to
suggest it), you don't really need both types. 8 double-precision
registers will be more than sufficient. You don't need two types of
strings, either. Pick one and go with it. Fixed-length seems easier so
do that. Dynamic allocation seems good. Encryption? Enh. Obviously the
interpreters have to be able to decrypt the files, so it's clearly
possible for someone to write a program to let you see what the A-code
looks like (and presumably possible to write at least a crude
decompiler). String compression, now, that might be worth talking
about. Hmm.. in general, it looks pretty good though.

<plug>
You might also want to think about using more of an
abstracted-user-interface model like I talk about here:
http://www.cs.wisc.edu/~dbs/abstracted-ui.html, and Zarf mentions in
the end of his glk stuff (linked from the previous url).
</plug>

>Tom Ault

David Rush

unread,
Jun 11, 1998, 3:00:00 AM6/11/98
to

okbl...@usa.net writes:
> > NPCs
> > in these kind of worlds are almost always horrible. Make "I don't know
> > anything about that" look great.)
>
> Well, these are all different problems. I think I've identified eight
> different problem sets that are a part of IF....

Could you post or mail me a list of those eight problems? I'm still
scoping the whole what is needed for a modern IF engine question.

david rush
--
The requirements *are* the program...

Thomas Galen Ault

unread,
Jun 11, 1998, 3:00:00 AM6/11/98
to

[ My news server is sort of screwed up right now, so I have to edit this
reply manually. I apologize in advance if I mess up the attributions - TA]

In article <6lnfp3$h2b$1...@goldenapple.srv.cs.cmu.edu>,
>Thomas Galen Ault <tom...@cs.cmu.edu> wrote:
>>Remeber that it's a virtual machine: implemented in software, not silicon.
>>Most of the algorithms aren't difficult, but there are lots of sections
>>of tedious code. The hard part is the platform independent I/O (which
>>is why most of the fonts, text windowing, etc. is optional), and
>>half of that is getting the spec right.

>Exactly. And if you want 8, 16, and 32 bit types, and all these
>operations to work with all of them, and presumbably with combinations
>of them (unless you've got typecasting or somesuch), that alone is
>messy to get right. Not to mention floating point (single *and* double
>precision!) vs integer, and all the rest. Simplify, simplify.

Actually, like the 80x86 family, all of the operands have to be of the
same size and type, so its not possible to add an 8-bit and 32-bit integer
or a floating point number and integer directly. This simplifies things
greatly. Naturally, there are operations to convert between the different
types.

Eight-bit ops are almost necessary for dealing with ASCII-encoded text,
since you need to be able to compare and manipulate 8-bit values (for
parsing player input, for example.) The same holds for 16-bit ops
and UNICODE. Limiting the A-Machine would force the application to
either deal with strings four ASCII (or two UNICODE) characters at a
time, or do all of the character comparisons in registers.

>Disk space is cheap. You don't need any types besides the 32-bit
>one. (Reading over the spec, I realize i'm not clear on the degree
>that the A-machine actually supports the other types, beyond letting
>you access the int registers in halves).

It's pretty much limited to arithmatic, logical and comparison ops and
moving them around in memory. This will all become more clear once I
get the instruction set written up (it's designed, but in my notes
right now).

>If you must have
>floating-point types (and they're hardly so common in games as to
>suggest it), you don't really need both types. 8 double-precision
>registers will be more than sufficient.

Floating-point is nice to have, and who knows what use someone will come
up with. However, your point got me thinking: it's not really necessary
to have separate floating-point and integer registers. Instead, the
A-Machine should just have fifteen general-purpose 32-bit registers (the
sixteenth is actually the stack pointer), and the instruction determines how
the value in that register (or pair of registers, in the case of double-
prec. floating point) is interpreted.

>You don't need two types of strings, either. Pick one and go with it.
>Fixed-length seems easier so do that.

Part of the A-Machine philosophy is that the VM should avoid telling the
compiler how to represent higher-level data types and more than is necessary.
Since both NULL-terminated and legnth-in-the-first-byte/word/whatever-
followed-by-text strings are commonly used by compilers, the A-Machine
provides support for both. It's not *too* much extra work, because most
high level languages provide support for one (e.g. NULL-terminated strings
in C) and the string operations are pretty simple, being limited to
copying, printing, comparing, length-of, and encrypting/decrypting.

>Dynamic allocation seems good. Encryption? Enh. Obviously the
>interpreters have to be able to decrypt the files, so it's clearly
>possible for someone to write a program to let you see what the A-code
>looks like (and presumably possible to write at least a crude
>decompiler).

Encryption was primarily intended to avoid people dumping the executable
file and looking at the text directly. The code itself wouldn't be
encrypted, just the text. Yes, its possible to find the key and decrypt the
text yourself, but that takes a little bit of effort. Encryption isn't
designed to ward off someone who really wants to look at the game's text,
but the person with the occasional moment of temptation when stuck on
a hard problem.

>String compression, now, that might be worth talking
about. Hmm..

I was thinking about that, but I don't know what would be a good compression
algorithm to put into the A-Machine standard. In my notes, I have something
about a "hook" in the HEADER section of the executable file, giving the
address of an A-code routine to call whenever a "print-string" instruction
is executed. This routine would be able to look at and modify the string
before printing, allowing for decompression to take place.

>in general, it looks pretty good though.

Thanks for your feedback. Keep it coming.

<plug>
You might also want to think about using more of an
abstracted-user-interface model like I talk about here:
http://www.cs.wisc.edu/~dbs/abstracted-ui.html, and Zarf mentions in
the end of his glk stuff (linked from the previous url).
</plug>

I'll have a look at it later. Right now, I need to get back to work.

Tom Ault

Matt Ackeret

unread,
Jun 13, 1998, 3:00:00 AM6/13/98
to

In article <6lp1bh$363$1...@goldenapple.srv.cs.cmu.edu>,

Thomas Galen Ault <tom...@cs.cmu.edu> wrote:
>Part of the A-Machine philosophy is that the VM should avoid telling the
>compiler how to represent higher-level data types and more than is necessary.
>Since both NULL-terminated and legnth-in-the-first-byte/word/whatever-
>followed-by-text strings are commonly used by compilers, the A-Machine
>provides support for both. It's not *too* much extra work, because most
>high level languages provide support for one (e.g. NULL-terminated strings
>in C) and the string operations are pretty simple, being limited to
>copying, printing, comparing, length-of, and encrypting/decrypting.

How does C "provide support" for null terminated strings?

The standard C _libraries_ use null-terminated strings for lots of stuff. But
that is not the language itself.

--
mat...@area.com

Erik Max Francis

unread,
Jun 13, 1998, 3:00:00 AM6/13/98
to

Matt Ackeret wrote:

> How does C "provide support" for null terminated strings?
>
> The standard C _libraries_ use null-terminated strings for lots of
> stuff. But
> that is not the language itself.

The libraries are certainly a part of ANSI, Matt. That's why section 7
of the standard is called "Library," and is roughly half of the content
of the standard.

--
Erik Max Francis, &tSftDotIotE / mailto:m...@alcyone.com
Alcyone Systems / http://www.alcyone.com/max/
San Jose, California, United States / icbm:+37.20.07/-121.53.38
\
She glanced at her watch / . . . It was 9:23.
/ James Clavell

Darin Johnson

unread,
Jun 14, 1998, 3:00:00 AM6/14/98
to

mat...@area.com (Matt Ackeret) writes:

> How does C "provide support" for null terminated strings?
>
> The standard C _libraries_ use null-terminated strings for lots of stuff. But
> that is not the language itself.

The C library is officially a part of the C language standard. C
without the library would pedantically be called a C-like language.

However, beyond this, C does support null terminated strings in that
any tring constant in C is a null terminated string.

--
Darin Johnson
da...@usa.net.delete_me

Jonadab

unread,
Jun 14, 1998, 3:00:00 AM6/14/98
to

Thomas Galen Ault wrote
> >Thomas Galen Ault wrote:
>
> >String compression, now, that might be worth talking
> about. Hmm..
>
> I was thinking about that, but I don't know what would be a good
compression
> algorithm to put into the A-Machine standard. In my notes, I have
something
> about a "hook" in the HEADER section of the executable file, giving the
> address of an A-code routine to call whenever a "print-string"
instruction
> is executed. This routine would be able to look at and modify the string
> before printing, allowing for decompression to take place.

If you really wanted to compress it significantly, you could use a Huffman
tree. However, as was said, disk space (and RAM, too) is pretty cheap
these days, and it might not be worth it. Doing something like the
z-machine does (five characters if four bytes IIRC) gains a *little*
compression, and it mangles the text better than a simple XOR.

Incidentally, I breifly perused the overview, and I think I noticed that
you specified support for 8-bit ASCII. In an ideal world everything would
support 8-bit ASCII, but I don't think it's even *possible* to display
8-bit ASCII under unix-based platforms, for example, without switching to a
GUI (X, presumably) and creating a font for it. Similar things could be
said for Mac and (horrifically) Windows '95. (My DOS programs always have
their higher characters mangled under '95.) In other words, it might not
be worth it. 7-bit ASCII, on the other hand, is basically universal.

Of course, you could make the 8-bit ASCII optional (same category as the
mouse support) and then let the game decide what to do if the terp says
"no" -- probably print a suitable substitute.

--
From 501 uses for peanut butter:
365. Tie-dye your underwear with it.

Send replies to username@isp, where username is jonadab
and isp is bright.net

"I" /\ \I /\ I\ /\ I) /\ I) I) 1 /_ II "I" \I [" "I"
\I \/ I\ II I/ II I) \a I) I\ 1 \/ TT I o I\ [_ I


David Glasser

unread,
Jun 15, 1998, 3:00:00 AM6/15/98
to

Matt Ackeret <mat...@area.com> wrote:

> In article <6lp1bh$363$1...@goldenapple.srv.cs.cmu.edu>,


> Thomas Galen Ault <tom...@cs.cmu.edu> wrote:
> >Part of the A-Machine philosophy is that the VM should avoid telling the
> >compiler how to represent higher-level data types and more than is necessary.
> >Since both NULL-terminated and legnth-in-the-first-byte/word/whatever-
> >followed-by-text strings are commonly used by compilers, the A-Machine
> >provides support for both. It's not *too* much extra work, because most
> >high level languages provide support for one (e.g. NULL-terminated strings
> >in C) and the string operations are pretty simple, being limited to
> >copying, printing, comparing, length-of, and encrypting/decrypting.
>

> How does C "provide support" for null terminated strings?

char foo[] = "This is an initializer string.";

There ya go. A null terminated string. No libraries there.

> The standard C _libraries_ use null-terminated strings for lots of stuff. But
> that is not the language itself.

Except that the libraries are part of the ANSI and ISO standards.

--David Glasser
gla...@NOSPAMuscom.com | dgla...@NOSPAMfcs.pvt.k12.pa.us
http://onramp.uscom.com/~glasser | http://www.geocities.com/SoHo/6028
DGlasser @ ifMUD : fovea.retina.net:4000 (webpage fovea.retina.net:4001)
Interactive Fiction! MST3K! David Eddings! Macintosh!

Reply all
Reply to author
Forward
0 new messages