[Inform] Perspective based coding of objects

2 views
Skip to first unread message

Don Rae

unread,
Dec 7, 1999, 3:00:00 AM12/7/99
to
Once I'm finished with my current project, I want to try something a bit
unusual.....I've toying with the idea of building an Inform based game with
an interface that is similar to "Suspended" in some respects - the game
would likely have different characters that would be ordered around, and
they would all have different "perspectives" on the things they see in front
of them....(and yes, I am anticipating a coding nightmare!)

Here's an exagerrated example of the type of situation I have in mind:

A regular Joe, a space alien, and a "slightly high beatnik" are all in the
same area, viewing and interacting within the same scene. Each character is
likely to have a different viewpoint and interaction based upon on what they
see and understand, and are able to have similar, yet different experiences
with the same objects....

----------------------------------------------------------------------------
-------


>JOE, LOOK.

Joe's Corn Field
The corn crop looks pretty good this year, and it waves slightly back and
forth in the breeze. A well-worn truck path leads to the north from here.

Your pickup truck is silent, having been shut off unexpectedly.

You look in amazement at the enormous saucer-shaped spacecraft, which landed
directly in front of your truck. Unfortunately, it looks as though it's
completely crushing a dense section of your crop.

You see a green colored, four legged creature standing in front of the
flying saucer.

There is a bearded middle-aged fellow standing among the corn stalks, his
wide eyes looking directly at the spacecraft in a glazed expression.

You see an ear of corn that has been knocked off one of your prized plants.

>JOE, TAKE THE EAR OF CORN.
Taken.

>JOE, EXAMINE THE CORN.
It was not ready for picking, and this one is spoiled for sure.

>SPACE ALIEN, LOOK.

Terra 3-Sector 348724
The abandoned area you selected for your landing has several fromit-colored
stalks that are moving back in forth, due to the gravitational and
atmospheric pressures that have swept across the area. There is a worn out
trail to the joonast.

A metallic object is here, perhaps a primitive offering by the humans.

Your Omnilord Mark 7 battlecruiser is resting on the landing zone, anxiously
awaiting your remote attack command.

There are two humans here, both staring at your magnificent presence in
apparent awe.

There is a category zarfa class 7623 seedling lying on the ground here.

>SPACE ALIEN, TAKE THE SEEDLING.
Taken.

>SPACE ALIEN, EXAMINE THE SEEDLING.
You wave your portable nutrient analyzer over the seedling, but you discover
it to be highly toxic.

>BEATNIK, LOOK

Wavy Plants
Communing with the plants leads to some wild times, man. The gentle caress
of the far out greens around you is exactly what you needed to set your
karma straight, but now you're standing in a clearing of some sort that
extends to the east, or is it the south? It's hard to tell right now.

Check out the blue truck - it's sinking into the ground! Woah! It's coming
back out again! Now that's wild, man.

And that is the biggest looking frying pan you've ever seen! And it has legs
to boot! This is one of the best trips you've ever been on, for sure.

There is a green dude here. He appears to have eight legs.

There is a bearded dude here. He appears to have four legs.

Hey, that looks like a big yellow joint lying on the ground!

>BEATNIK, TAKE THE YELLOW JOINT.
Taken.

>BEATNIK, EXAMINE THE YELLOW JOINT.
Wow....this is the biggest joint you've ever seen! Maybe that green dude
over there has a light?

----------------------------------------------------------------------------
-------

Some of the problems I'm anticipating with this type of game model include:

1) Inform's known synonyms for all the game objects. (ie - Joe should not
be able to refer to the ear of corn as a "seedling" or a "joint". Is it
then easier to implement multiple objects that refer to the same object, or
can this basic problem be overcome easily somehow in Inform?)

2) Multiple "descriptions" for each object, in all areas. (Through causing
the object's description fields - initial, short_name, description,
inventory description, etc - to change dependant upon "who" is looking or
referring to it Can this kind of thing be easily implemented from the
viewed object? Any comments?)

3) And, of course, the headache of dealing with slightly altered commands
for each person, essentially resulting in the same "type" of result. (ie.
Joe should be able to go north, the space alien should be able to go
joonast, and the beatnik should be able to stumble in a direction he thinks
is south, but is really north. I've done this type of thing before, but
this is likely to turn into a headache....Joe should not be able to "go
joonast", for example.)

If anyone has any coding samples of each kind of coding situation as
described here, I'd greatly appreciate it. Do any of the current animate
object libraries have this kind of support? I'm starting to appreciate, in
my own mind, some of the coding effort Mike Berlyn must have went through
when he wrote Suspended. Hats off to you, Mike.

- Don


Joe Mason

unread,
Dec 7, 1999, 3:00:00 AM12/7/99
to
Don Rae <don...@telusplanet.net> wrote:
>Once I'm finished with my current project, I want to try something a bit
>unusual.....I've toying with the idea of building an Inform based game with
>an interface that is similar to "Suspended" in some respects - the game
>would likely have different characters that would be ordered around, and
>they would all have different "perspectives" on the things they see in front
>of them....(and yes, I am anticipating a coding nightmare!)

More of an amount-of-work nightmare: if you have three characters, you need
to write three times as much text.

<several examples snipped>

Mu first thought was that it would be better to put all the info in one
object, but actually it might be better to make several for each. You could
use variables instead of objects in most code, and use a GamePreRoutine to
swap the appropriate objects into the variables before each turn:

switch(actor)
{
Joe:
corn = joe_corn;
pants = joe_pants;
Monkey:
corn = monkey_corn;
pants = monkey_pants;
};

<...>

description [;
"You are standing in a field of ", (name) corn, ".";
];

That type of thing.

Joe

Ross Presser

unread,
Dec 7, 1999, 3:00:00 AM12/7/99
to
alt.distingu...@uwaterloo.ca (Joe Mason).wrote.posted.offered:

>Don Rae <don...@telusplanet.net> wrote:
>>Once I'm finished with my current project, I want to try something a bit
>>unusual.....I've toying with the idea of building an Inform based game
with
>>an interface that is similar to "Suspended" in some respects - the game
>>would likely have different characters that would be ordered around, and
>>they would all have different "perspectives" on the things they see in
front
>>of them....(and yes, I am anticipating a coding nightmare!)
>

>More of an amount-of-work nightmare: if you have three characters, you
need
>to write three times as much text.
>
><several examples snipped>
>
>Mu first thought was that it would be better to put all the info in one
>object, but actually it might be better to make several for each. You
could
>use variables instead of objects in most code, and use a GamePreRoutine to
>swap the appropriate objects into the variables before each turn:
>
> switch(actor)
> {
> Joe:
> corn = joe_corn;
> pants = joe_pants;
> Monkey:
> corn = monkey_corn;
> pants = monkey_pants;
> };
>
> <...>
>
> description [;
> "You are standing in a field of ", (name) corn, ".";
> ];

You might have to actually move objects in and out of the room so the Joe
can't pick up the joint. (non-Inform pseudocode follows)

SetRoomObjs(room)
{
joe_obs = { corn, north, truck, saucer };
alien_objs = { seedling, joonst, metal_object, battle_cruiser };
beatnik_objs = { joint, notSouth, trip_truck, frying_pan };
};

selectActor(actor)
{
Joe:
set_vars(joe_objs);
move_objs(joe_objs,here);
move_objs(alien_objs,limbo);
move_objs(beatnik_objs,limbo);
alien:
set_vars(alien_objs);
move_objs(joe_objs,limbo);
move_objs(alien_objs,here);
...
};


Setroomobjs would of course have to take the objects specific to that room
... oh no, what about movable objects? Gaah....

Maybe you could set objects visible/invisible instead of moving them?

--
Ross Presser
ross_p...@imtek.com
"And if you're the kind of person who parties with a bathtub full of
pasta, I suspect you don't care much about cholesterol anyway."

Andrew Plotkin

unread,
Dec 7, 1999, 3:00:00 AM12/7/99
to
Joe Mason <jcm...@uwaterloo.ca> wrote:

> Don Rae <don...@telusplanet.net> wrote:
>>Once I'm finished with my current project, I want to try something a bit
>>unusual.....I've toying with the idea of building an Inform based game with
>>an interface that is similar to "Suspended" in some respects - the game
>>would likely have different characters that would be ordered around, and
>>they would all have different "perspectives" on the things they see in front
>>of them....(and yes, I am anticipating a coding nightmare!)
>
> More of an amount-of-work nightmare: if you have three characters, you need
> to write three times as much text.

No getting around that.



> Mu first thought was that it would be better to put all the info in one
> object, but actually it might be better to make several for each. You could
> use variables instead of objects in most code, and use a GamePreRoutine to
> swap the appropriate objects into the variables before each turn:

I hate this kind of approach, because it's One More Thing To Go Wrong. A
bunch of variables that can become inconsistent will become inconsistent,
someday, and annoy you. (Or a player.)

But it can be done.

--Z

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

jim crawford

unread,
Dec 7, 1999, 3:00:00 AM12/7/99
to
On Tue, 07 Dec 1999 05:47:41 GMT, "Don Rae" <don...@telusplanet.net>
wrote:

>Once I'm finished with my current project, I want to try something a bit
>unusual.....I've toying with the idea of building an Inform based game with
>an interface that is similar to "Suspended" in some respects - the game
>would likely have different characters that would be ordered around, and
>they would all have different "perspectives" on the things they see in front
>of them....(and yes, I am anticipating a coding nightmare!)

It really seems to me like the easiest way to handle this sort of
thing would be something like:

object corn ...

And here we run into the first problem. No, I didn't think this
through :) This'll require a library hack, at least. But let's
plow on anyways.

object corn "ear of corn" cornfield
with
describe
[;switch(player)
{ joe: "You see an ear of corn ...";
space_alien: "There is a category zarfa class ...";
beatnik: "Hey, that looks like a big yellow joint ...";
}
],
description
[;switch(player)
{ joe: "Joe's desc...";
space_alien: "Etc..";
beatnik: "Etc...";
}
],
parse_name
[; //whatever godawful construct is required here
]
;

What would be better would be to get the Inform library to deal with
something like:

object corn cornfield
with
joes_title "ear of corn",
space_aliens_title "class 7623 seedling",
beatniks_title "big yellow joint",
joes_name 'ear' 'of' 'corn',
space_aliens_name 'zarfa' 'class' '7623' 'seedling',
beatniks_name 'big' 'yellow' 'joint'
;

I'm sure this is possible (but maybe I shouldn't be), and it's
probably worthwhile to do it since the game is clearly going to
require some significant library changes anyways.

Then again, it might just require rewriting the whole damn thing.

What I would do, if the library hacks became too difficult, is write
a preprocessor to take code of the second format and convert it to
code of the first.

Jim

Lucian Paul Smith

unread,
Dec 7, 1999, 3:00:00 AM12/7/99
to
jim crawford (pfis...@hotmail.com) wrote:
: On Tue, 07 Dec 1999 05:47:41 GMT, "Don Rae" <don...@telusplanet.net>
: wrote:
: >Once I'm finished with my current project, I want to try something a bit

: >unusual.....I've toying with the idea of building an Inform based game with
: >an interface that is similar to "Suspended" in some respects - the game
: >would likely have different characters that would be ordered around, and
: >they would all have different "perspectives" on the things they see in front
: >of them....(and yes, I am anticipating a coding nightmare!)

: What would be better would be to get the Inform library to deal with
: something like:

: object corn cornfield
: with
: joes_title "ear of corn",
: space_aliens_title "class 7623 seedling",
: beatniks_title "big yellow joint",
: joes_name 'ear' 'of' 'corn',
: space_aliens_name 'zarfa' 'class' '7623' 'seedling',
: beatniks_name 'big' 'yellow' 'joint'

: ;

Classes, classes, classes.

Class Perspective
with short_name [;
switch(player) {
joe: return self.joes_title;
alien: return self.alien_title;
beatnik: return self.beatnik_title;
}
],
joes_title self.generic_title,
alien_title self.generic_title,
beatnik_title self.generic_title,
generic_title "BUG: This object has no unique short name.";

Same thing with...well, anything. Even before routines. A class
parse_name could even handle the individual name properties.

I suppose I should get off my duff and write the game like this I've been
thinking of for a year now, shouldn't I?

-Lucian

Don Rae

unread,
Dec 7, 1999, 3:00:00 AM12/7/99
to
Wups, I forgot....you can use parse_name if you have to, please nevermind
that comment.

- Don


Don Rae

unread,
Dec 7, 1999, 3:00:00 AM12/7/99
to

>
> Classes, classes, classes.
>
> Class Perspective
> with short_name [;
> switch(player) {
> joe: return self.joes_title;
> alien: return self.alien_title;
> beatnik: return self.beatnik_title;
> }
> ],
> joes_title self.generic_title,
> alien_title self.generic_title,
> beatnik_title self.generic_title,
> generic_title "BUG: This object has no unique short name.";
>

It's a good idea, but how would you deal with the "name" identifier part of
the ear of corn, ie:

Perspective corn with
name "ear" "of" "corn" "yellow" "joint" "seedling"
etc etc

In this case, Joe, the alien, and the beatnik can all refer to the same
object via the same names, which is wrong for these purposes.

Does inform actually parse the short_name (I can't remember for sure, but I
don't think so)? (I'm starting to think that parsing changes are required
to make this whole approach work properly.)

The other problem I think I see with your approach, unless I'm wrong, is
that it looks like you're assuming that the "player object" is Joe, the
beatnik, or the alien - which is incorrect here.

The player, in this example, is meant to be a "godlike being" which is
ordering the various "puppets" around.

(I'm trying to describe how "Suspended" actually worked.....where the
characters in question were your eyes, ears, etc for you

POET, GO TO THE CONTROL ROOM THEN REPORT
WALDO, TAKE THE THICK OBJECT
AUDA, GO TO THE CONTROL ROOM THEN LISTEN

etc etc.)

Joe, the beatnik, and the alien should be merely "animate objects in scope"
of the player, and you're simply ordering them around, like any other
character - no matter where they are on the object map.

- Don


Alan Trewartha

unread,
Dec 7, 1999, 3:00:00 AM12/7/99
to
In article <384d462c....@207.69.128.120>, jim crawford
<URL:mailto:pfis...@hotmail.com> wrote:

> On Tue, 07 Dec 1999 , "Don Rae" <don...@telusplanet.net> wrote:
> >Once I'm finished with my current project, I want to try something a bit
> >unusual.....I've toying with the idea of building an Inform based game with
> >an interface that is similar to "Suspended" in some respects - the game

> It really seems to me like the easiest way to handle this sort of


> thing would be something like:
>

> object corn "ear of corn" cornfield
> with
> describe
> [;switch(player)

> { joe: "You see an ear of corn ...";
> space_alien: "There is a category zarfa class ...";
> beatnik: "Hey, that looks like a big yellow joint ...";
> }
> ],
> ;
>

If you can intercept the switch of character (which at its easiest could
be by forcing a character change by a special meta verb) then you could
do all the switches globally by looping over the objects and writing the
properties...

objectloop (o)
{ switch(player)
{ joe:
if (o provides describe && o provides describe_j)
o.describe=o.describe_j;
if (o provides short_name && o provides short_name_j)
0.short_name=o.short_name_j;

! and so on

space_alien:
if (o provides describe && o provides describe_s)
o.describe=o.describe_s;
if (o provides short_name && o provides short_name_s)
0.short_name=o.short_name_s;

! and so on

! and so on
}
}

Or at least, I think this would work. What about attributes like moved?

--
Mail to alant instead of no.spam


Jim Aikin

unread,
Dec 7, 1999, 3:00:00 AM12/7/99
to
Ambitious plan. I would have no idea how to solve the programming
problems -- nor am I sure why one would want to do this sort of thing. I
can foresee complications. Like, what happens when the three characters
go off in different directions? What happens to the location variable?

There is one teeny little literary problem as well. I almost hate to
bring it up, but...

> >BEATNIK, LOOK
>
> Wavy Plants
> Communing with the plants leads to some wild times, man. The gentle caress
> of the far out greens around you is exactly what you needed to set your
> karma straight, but now you're standing in a clearing of some sort that
> extends to the east, or is it the south? It's hard to tell right now.
>
> Check out the blue truck - it's sinking into the ground! Woah! It's coming
> back out again! Now that's wild, man.
>
> And that is the biggest looking frying pan you've ever seen! And it has legs
> to boot! This is one of the best trips you've ever been on, for sure.
>
> There is a green dude here. He appears to have eight legs.
>
> There is a bearded dude here. He appears to have four legs.

This is not a beatnik. It's a hippie. Or maybe a surfer. That "dude"
worries me a little, but I suppose you can get away with a hippie saying
"dude." Not a beatnik, though, daddy-o.

--Jim (yes, I lived through the '60s) Aikin

Don Rae

unread,
Dec 8, 1999, 3:00:00 AM12/8/99
to

> Ambitious plan. I would have no idea how to solve the programming
> problems -- nor am I sure why one would want to do this sort of thing. I
> can foresee complications. Like, what happens when the three characters
> go off in different directions? What happens to the location variable?

"location" doesn't change at all, with the respect to the player! The
player, who is simply "ordering these animates around" is simply fixed in
place, shut off from his/her own senses - ie. "nowhere in particular".
(People have been misinterpreting my intent here: all the other characters
are simply placed in scope of the player, who has a scope definition set to
be specifically able to address the animate characters only, no matter where
they are in the game map.)

The player object, for arguments sake - could be considered "a central brain
with no senses of its own", who simply "orders around a series of puppets".
(Has anyone else here actually played "Suspended"? I enjoyed this game
immensely, and it implemented characters EXACTLY in this manner.)

Because of this, the "characters you're ordering around" need to have their
own sense of perspective on their surroundings, which is all I've been
trying to illustrate here.

- Don


Don Rae

unread,
Dec 8, 1999, 3:00:00 AM12/8/99
to

> This is not a beatnik. It's a hippie. Or maybe a surfer. That "dude"
> worries me a little, but I suppose you can get away with a hippie saying
> "dude." Not a beatnik, though, daddy-o.
>
> --Jim (yes, I lived through the '60s) Aikin

Well after looking at it again, I guess I must've considered them to be
fairly close relatives in spirit (I wrote the description on the spot
without thinking about it too much). But then again, I was born in 1969, so
I probably don't have the right perspective on it.....

So heeeeyyyyyy, sorry man! I'll try not to flunk out when I trip out,
daddy-o, and I'll turn the jazz lower the next time my brain starts to
drain!

:)

- Don


Daniel Barkalow

unread,
Dec 8, 1999, 3:00:00 AM12/8/99
to
On Tue, 7 Dec 1999, Don Rae wrote:

> It's a good idea, but how would you deal with the "name" identifier part of
> the ear of corn, ie:
>
> Perspective corn with
> name "ear" "of" "corn" "yellow" "joint" "seedling"
> etc etc
>
> In this case, Joe, the alien, and the beatnik can all refer to the same
> object via the same names, which is wrong for these purposes.

Actually, in Suspended you can have any of the robots refer to a object
by any name than any of them understand. E.g., "SENSA, GET W1" works just
as well as "SENSA, GET WEDGE".

-Iabervon
*This .sig unintentionally changed*


David Glasser

unread,
Dec 8, 1999, 3:00:00 AM12/8/99
to
Don Rae <don...@telusplanet.net> wrote:

> Once I'm finished with my current project, I want to try something a bit
> unusual.....I've toying with the idea of building an Inform based game with
> an interface that is similar to "Suspended" in some respects - the game
> would likely have different characters that would be ordered around, and
> they would all have different "perspectives" on the things they see in front
> of them....(and yes, I am anticipating a coding nightmare!)
>
> Here's an exagerrated example of the type of situation I have in mind:
>
> A regular Joe, a space alien, and a "slightly high beatnik" are all in the
> same area, viewing and interacting within the same scene. Each character is
> likely to have a different viewpoint and interaction based upon on what they
> see and understand, and are able to have similar, yet different experiences
> with the same objects....

[etc]

I really don't want to start an authoring systems flamewar. Inform is
great for many things and I like it a lot and have used it and it has
advantages over TADS in some areas.

However, handling of multiple actors happens to be one of the things
that TADS has an undeniable lead over Inform in. *Every* function call
made by the parser that might need the current actor has it. It has
'format strings' that let you automatically format text using escape
sequences based on the current actor. I'm pretty sure there is a parser
hook called after the actor is disambiguated where you can put your
calls to the vocab-adjusting routines.

When people say "there are some ways Inform is better than TADS and vice
versa", multiple-actor handling is one of the main ways, especially
considering the additions made over the past two years or so. I really
think that it would be an order of magnitude less hassle to use TADS for
an application that calls on its strengths.

--
David Glasser | gla...@iname.com | http://www.davidglasser.net/
rec.arts.int-fiction FAQ: http://www.davidglasser.net/raiffaq/
"So, is that superior artistry, or the easy way out?"
--TenthStone on white canvases as art, on rec.arts.int-fiction

Jim Aikin

unread,
Dec 8, 1999, 3:00:00 AM12/8/99
to
Don Rae wrote:
>
> > This is not a beatnik. It's a hippie. Or maybe a surfer. That "dude"
> > worries me a little, but I suppose you can get away with a hippie saying
> > "dude." Not a beatnik, though, daddy-o.
> >
> > --Jim (yes, I lived through the '60s) Aikin
>
> Well after looking at it again, I guess I must've considered them to be
> fairly close relatives in spirit <snip>

They were, in some ways. Both smoked marijuana and sported facial hair.
But the beat generation was maybe a little more ironic in outlook. The
hippies had a kind of naive idealism that the beats, who lived through
the '50s, would have found suspect. The beats listened to bongo drums;
the hippies listened to electric guitars. Tripping was a '60s thing. I
have no idea what the '50s equivalent was; I was in grade school at the
time.

> So heeeeyyyyyy, sorry man! I'll try not to flunk out when I trip out,
> daddy-o, and I'll turn the jazz lower the next time my brain starts to
> drain!

Groovy. Hope you don't think I was on your case. I'm just offering
friendly input, where appropriate, to other game authors.

--Jim Aikin

Jim Aikin

unread,
Dec 8, 1999, 3:00:00 AM12/8/99
to
Don Rae wrote:
>
> "location" doesn't change at all, with the respect to the player! The
> player, who is simply "ordering these animates around" is simply fixed in
> place, shut off from his/her own senses - ie. "nowhere in particular".
> (People have been misinterpreting my intent here: all the other characters
> are simply placed in scope of the player, who has a scope definition set to
> be specifically able to address the animate characters only, no matter where
> they are in the game map.)

Okay, but each animate character has a location, and some things are in
scope for that character while others aren't. I'm not enough of an
Inform spelunker to know what's going on down there in the parser, but I
have a sneaking suspicion that if you've got three "locations" running
at once, you're going to handle a lot of stuff by hand that Inform
normally does for you, in the background.

That being the case, you might find it more practical to create a
mechanism by which the "player" object (that is, selfobj) is set to be
one or another of the NPCs at a time. When you do this, the player
doesn't need to repeatedly type

>beatnik, n
>beatnik, take the key
>beatnik, eat the muffin
>etc.

Instead, the player types

>become beatnik

followed by

>n
>take the key
>eat the muffin
>etc.

My impression is that that would be simpler from a coding standpoint,
since Inform already allows this, and would also save the player a few
keystrokes (an advantage that us over-50s are always eager to promote).
But there may be literary side effects that you don't care for.

--Jim Aikin

Don Rae

unread,
Dec 9, 1999, 3:00:00 AM12/9/99
to

> When people say "there are some ways Inform is better than TADS and vice
> versa", multiple-actor handling is one of the main ways, especially
> considering the additions made over the past two years or so. I really
> think that it would be an order of magnitude less hassle to use TADS for
> an application that calls on its strengths.
>

You're probably right in this case, just from what I've peripherally seen in
the TADS specs. The more and more I look into this, the more and more I'm
building hacks and workarounds to achieve results in Inform. I suppose I
can write a dedicated Inform library to handle this stuff, but I'm still
thinking this over - there isn't much practical experience in hacking a
result, other than the satisfaction of proving it can be done....(but then
again....??)

:)

And I'm not overly keen on familiarizing myself with another "text adventure
language" right now.....at least, not at the moment - so I guess I'll have
to see just how bad I want to try this project.

- Don


Don Rae

unread,
Dec 9, 1999, 3:00:00 AM12/9/99
to

> > So heeeeyyyyyy, sorry man! I'll try not to flunk out when I trip out,
> > daddy-o, and I'll turn the jazz lower the next time my brain starts to
> > drain!
>
> Groovy. Hope you don't think I was on your case. I'm just offering
> friendly input, where appropriate, to other game authors.
>

Nah. I know a friendly rebuke when I see one.

Cheers,
- Don


Don Rae

unread,
Dec 9, 1999, 3:00:00 AM12/9/99
to
> >become beatnik
>
> followed by
>
> >n
> >take the key
> >eat the muffin
> >etc.
>
> My impression is that that would be simpler from a coding standpoint,
> since Inform already allows this, and would also save the player a few
> keystrokes (an advantage that us over-50s are always eager to promote).
> But there may be literary side effects that you don't care for.

I hadn't thought of this specifically, but I think it might be a good
workaround....especially when considering that the player is supposed to be
"an all-powerful controlling influence". And, it can be tooled
appropriately, since Inform can test the object you are currently
"inhabiting", if you will. You're right - it's easier to code for sure.

Your suggestion has several interesting applications from a storywriting
standpoint. eg. If the player is considered to be an "evil influence", much
like the mythical demons of many faiths....

----------------------------------------------------------------------------
----------------------------------------------

>POSSESS BEATNIK
You push on the beatnik's spirit, until it leaves his body. His spirit
enters the receptacle in your place.

>LOOK
Temple Shrine (in the beatnik's body)
The floor of this ancient shrine is covered with dried up blood, a chilling
reminder of the legacy your followers left for you in your past life. The
golden sacrificial table still endures after all these centuries of absence
from this plane of existence. You notice the writing on the walls, which
contain the inscriptions that once enchanted and imprisoned you in your
receptacle - now that they no longer imprison you, you are delighted to be
free at last!

You can see a jewel receptacle sitting on the table, which is currently
glowing a dark, evil red.

Strangely, you have an almost uncontrollable craving for a cafe du chocolat,
and you really want to read some poetry right now. You flinch in disgust.

>INVENTORY
You are carrying:
a thermos (filled with cafe du chocolat, mixed with irish cream)
an illegal substance
a book of poetry

>READ BOOK
You thumb through the pages, and then you realize that the spoken
phoneticisms of the poetry are, in actuality, the reversal of the spell
which once imprisoned you in your soul receptacle! No wonder you escaped so
easily.

A girl walks into the room. "Ohhhhh Phileas! Why don't you come and join
the party out here...unless you'd rather hang out with me!?"

>POSSESS GIRL
You push on the girl's spirit, until it leaves her body. The beatnik's
spirit leaves the receptacle as the girl's spirit enters it.

>LOOK
Temple Shrine (in the girl's body)
The floor of this ancient shrine is covered with dried up blood, a chilling
reminder of the legacy your followers left for you in your past life. The
golden sacrifical table still endures after all these centuries of absence
from this plane of existence. You notice the writing on the walls, which
contain the inscriptions that once enchanted and imprisoned you in your
receptacle - now that they no longer imprison you, you are delighted to be
free at last!

You can see a jewel receptacle sitting on the table, which is currently
glowing a dark, evil red.

You see a bearded beatnik, who is currently rubbing his head in confusion.

Strangely, you have an almost uncontrollable desire to make a pass at the
beatnik, who seems incredibly attractive to you at the moment. You flinch in
disgust.

The beatnik asks you, "Marlene, did I pass out for a second?"

>PHILEAS, YES.
"Man oh man, I don't think I can handle any more of this stuff tonight.
Here, take this!"

The beatnik gives you the illegal substance.

----------------------------------------------------------------------------
----------------------------------------

I admit, this kind of approach may have more advantages. Maybe I'll see if
I can tool my storyline idea a bit more in this kind of direction.

Thanks,
- Don


Jim Aikin

unread,
Dec 9, 1999, 3:00:00 AM12/9/99
to
Don Rae wrote:
>
> Your suggestion has several interesting applications from a storywriting
> standpoint. eg. If the player is considered to be an "evil influence", much
> like the mythical demons of many faiths....

<<storyline snipped>>

I like your approach to this. You might also want to consider whether
the other characters have daemon properties that will cause them to act
autonomously when not "possessed" by the player. It could be an
interesting puzzle -- the player becomes the beatnik and does something
(perhaps something nefarious), but the minute she leaves the beatnik's
body, he looks at what he's done, is aghast, and tries -- successfully
or not -- to undo it.

Have fun!

--Jim Aikin

Nicholas Holmes

unread,
Dec 10, 1999, 3:00:00 AM12/10/99
to
In article <Pine.LNX.3.91.991208...@iabervon.mit.edu>,
Daniel Barkalow <iabe...@iabervon.mit.edu> wrote:

[snip]

>Actually, in Suspended you can have any of the robots refer to a object
>by any name than any of them understand. E.g., "SENSA, GET W1" works just
>as well as "SENSA, GET WEDGE".

And this shades toward cheating, since you never actually have to figure out
what the hell poet is talking about.

-nh

TenthStone

unread,
Dec 11, 1999, 3:00:00 AM12/11/99
to

You could also try setting it up where the posession simply switches
spirits -- so, possessing the neatnik and then the girl would leave
the beatnik's spirit in the container and the girl's spirit in the
beatnik's body.

Probably prohibitively hard to write, though.

----------------
The Imperturbable TenthStone
mcc...@erols.com tenth...@hotmail.com mcc...@gsgis.k12.va.us

RiffRaff

unread,
Dec 12, 1999, 3:00:00 AM12/12/99
to

Don Rae wrote:

> > >become beatnik
> >
> > followed by
> >
> > >n
> > >take the key
> > >eat the muffin
> > >etc.
> >
> > My impression is that that would be simpler from a coding standpoint,
> > since Inform already allows this, and would also save the player a few
> > keystrokes (an advantage that us over-50s are always eager to promote).
> > But there may be literary side effects that you don't care for.
>
> I hadn't thought of this specifically, but I think it might be a good
> workaround....especially when considering that the player is supposed to be
> "an all-powerful controlling influence". And, it can be tooled
> appropriately, since Inform can test the object you are currently
> "inhabiting", if you will. You're right - it's easier to code for sure.
>

> Your suggestion has several interesting applications from a storywriting
> standpoint. eg. If the player is considered to be an "evil influence", much
> like the mythical demons of many faiths....
>

> ----------------------------------------------------------------------------
> ----------------------------------------------
>
> >POSSESS BEATNIK
> You push on the beatnik's spirit, until it leaves his body. His spirit
> enters the receptacle in your place.
>
> >LOOK
> Temple Shrine (in the beatnik's body)

I love a creepy synchronicity - I'm new to Inform, and for my first project I
was thinking of a game containing several soldier-types, each with different
skills, whom you would switch perspectives between to solve the various
puzzles. Pretty much exactly as you describe here. This is my first time
reading rec.arts.int-fiction, and I loaded it up specifically to find out if
this idea was possible, and if so, how to implement it. And look what I find!
Thanks! :)

--Riff


RiffRaff

unread,
Dec 12, 1999, 3:00:00 AM12/12/99
to
I wrote:

>
> I love a creepy synchronicity - I'm new to Inform, and for my first project I
> was thinking of a game containing several soldier-types, each with different
> skills, whom you would switch perspectives between to solve the various
> puzzles. Pretty much exactly as you describe here. This is my first time
> reading rec.arts.int-fiction, and I loaded it up specifically to find out if
> this idea was possible, and if so, how to implement it. And look what I find!
> Thanks! :)

Actually, I should clarify: I haven't actually made a choice between Inform and
TADS yet. A previous poster commented that TADS would be better for this sort of
situation - why? Could someone explain the differences in character-handling
between Inform and TADS that would make one better than the other for me?

Let me give an example of what I'd like to be able to do. Say two characters,
Rigger and Tia, are in a room. The player (Rigger) is carrying a wrench, and
wants Tia to have it. *Both* of the following should be possible, ideally:

>LOOK

You are in a featureless white room.
Tia is here.

>GIVE WRENCH TO TIA

"Thanks!"
Tia takes the wrench.

-------
>LOOK

You are in a featureless white room.
Tia is here.

>BECOME TIA. LOOK

You are now Tia.

You are in a featureless white room.
Rigger is here.

>RIGGER, GIVE ME THE WRENCH

"No prob."
Rigger gives you the wrench.

---------
So?

Suppose instead of "BECOME TIA", I wanted to send the order to the other
character: "TIA, ASSUME COMMAND". Would this be equally possible? In both
Inform and TADS?

On another note, suppose I wanted to send commands to a character not in the same
room as the player, thus:

>TUNE COM TO RIGGER

You set your com-unit to Rigger's frequency.

>RIGGER, GO WEST

You hear Rigger's voice over your com-unit:
"Okay."

>EXAMINE RIGGER

He isn't here!

>RIGGER, GO WEST

You hear Rigger's voice over your com-unit:
"Okay."

The door opens, and Rigger strolls in.

>EXAMINE RIGGER

He looks insufferably smug.

--------

Possible? And again, easier in Inform or TADS?

Thanks!

--Riff


David Glasser

unread,
Dec 13, 1999, 3:00:00 AM12/13/99
to
Jim Aikin <nikiaj.b...@pacbell.net> wrote:

> Instead, the player types


>
> >become beatnik
>
> followed by
>
> >n
> >take the key
> >eat the muffin
> >etc.

For what it's worth, *this* sort of game should be equally possible in
TADS and Inform; they both have good systems for changing the *PC*.
It's having total commands over NPCs that TADS is better at: this simple
line in a character's definition:
actorAction(iForgetTheArgs) = {}
allows all commands to be done by the character, no questions asked, in
the exact same way that the PC would.

"So what's the story with Tetris? Block meets block, block loses block,
block meets another block?" --Russ Williams

Reply all
Reply to author
Forward
0 new messages