drudgery in IF creation?

9 views
Skip to first unread message

Brandon Van Every

unread,
Sep 5, 1997, 3:00:00 AM9/5/97
to

What do you feel are the tasks in creating a piece of IF that are sheer
drudgery? Or else maybe they're not sheer drudgery, but time-consuming and
you wish there was a better/faster way to get it done? Is there anything
you think *has* to be done? I'm looking at this from a tools perspective,
i.e. how to decrease both the tedium and the quantity of necessary manual
labor. I'm not overly familar with the capabilities of Inform, TADS, or
other systems just yet. I'd like to prevent flame war on "which system is
better," as that's not really the question. The question is what ways are
all IF systems inadequate, and what can we do about it?


Cheers,
--
Brandon J. Van Every <vane...@blarg.net> DEC Commodity Graphics
http://www.blarg.net/~vanevery Windows NT Alpha OpenGL
------------------------------------------------------------------------
The anvil upon which you hammer another's words is as hard or as soft
as you care to make it. Wherein lies insight?

Mary K. Kuhner

unread,
Sep 5, 1997, 3:00:00 AM9/5/97
to

In article <01bcba19$41219580$aa9f...@hammurabi.blarg.net> "Brandon Van Every" <vane...@blarg.net> writes:
>What do you feel are the tasks in creating a piece of IF that are sheer
>drudgery? Or else maybe they're not sheer drudgery, but time-consuming and
>you wish there was a better/faster way to get it done?

Inform has pre-packaged solutions to some very common problems: for
example, making an area light or dark, deciding if something can be
eaten, putting something inside something else.

I'd like to see more of these; there are some excruciatingly common
problems that everyone seems to code up on their own. For example,
defining liquids: the verb Drink and concept drinkable, the need for
a container, pouring, spilling and so forth. NPCs who move on their
own. Days and nights. Weight of objects. I'm slowly accumulating a
little library of solutions to these problems, but it's a lot of work
and the results don't impresss anyone, since everybody tackles these
same problems.

Yes, you'd have to modify the results to customize your game, but not
having to start from scratch would sure help.

The thing I would *really* love is a better system for writing NPCs.
Coding up all the things they say and do will always be work, but
some kind of framework (to make sure all the parts are there, provide
intelligent defaults for things you don't code, and so forth) would
really help. This is the one place I find Inform frustrating.
Does an NPC's set of responses go in a before or after rule, in an
Ask, in a life routine, in an Orders routine? If you're not careful
it gets spread all over and becomes a mess. Even worse if the NPC
changes states (i.e. from happy Mary to angry Mary). You end up having
to check the NPC's state repeatedly, or else have separate NPCs (with
redundant code--classes help here but not enough) for each state.

Inform (I can't comment on the others) has more support for rooms and
objects than it does for people, or at least it feels that way.

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

Dan Shiovitz

unread,
Sep 6, 1997, 3:00:00 AM9/6/97
to

In article <01bcba19$41219580$aa9f...@hammurabi.blarg.net>,

Brandon Van Every <vane...@blarg.net> wrote:
>What do you feel are the tasks in creating a piece of IF that are sheer
>drudgery? Or else maybe they're not sheer drudgery, but time-consuming and
>you wish there was a better/faster way to get it done? Is there anything

The writing, mostly. Oh, and the coding,too.
Seriously, the only thing that would be nice is, as someone else
suggested, mori intelligent NPC behavior, and I don't think you can
write a GUI front-end to help with that.Now, you could probably write
a library to help with that, but I'm not sure what it would be like or
I'd do it myself.

>Cheers,
>--
>Brandon J. Van Every <vane...@blarg.net> DEC Commodity Graphics
>http://www.blarg.net/~vanevery Windows NT Alpha OpenGL
--

Dan Shiovitz :: scy...@u.washington.edu :: sh...@cs.washington.edu
..................................................................
"Alas, I do not rule the world and that, I am afraid, is the story
of my life: always a godmother, never a God." -- Fran Lebowitz
...http://weber.u.washington.edu/~scythe/home.html................

Brandon Van Every

unread,
Sep 6, 1997, 3:00:00 AM9/6/97
to

Dan Shiovitz <scy...@u.washington.edu> wrote in article
<5uqi24$h...@nntp5.u.washington.edu>...
>
> [re drudgery]

>
> The writing, mostly. Oh, and the coding,too.
> Seriously, the only thing that would be nice is, as someone else
> suggested, mori intelligent NPC behavior, and I don't think you can
> write a GUI front-end to help with that.Now, you could probably write
> a library to help with that, but I'm not sure what it would be like or
> I'd do it myself.

Intelligent NPC behavior is tantamount to a well-defined simulation
environment, I think. The NPC's must be able to analyze "standard
features" of the universe if they are to act on auto-pilot. "What should
the NPC library look like" is really a question about what the universe's
physical characteristics should look like, and how one interfaces to them.

Although, it is possible for NPC's to simply relate to players and each
other, rather than the physical environment per se. "It's not where you
are, it's who you know." NPC<->NPC interaction seems to be what the
Erasmatron is built to do. Details at
http://www.erasmatazz.com/index.shtml. Pity they've only got a Macintosh
version right now. PC stuff isn't coming until March 1998 at the earliest,
according to their web page.


Cheers,
--
Brandon J. Van Every <vane...@blarg.net> DEC Commodity Graphics
http://www.blarg.net/~vanevery Windows NT Alpha OpenGL

Graham Nelson

unread,
Sep 8, 1997, 3:00:00 AM9/8/97
to

In article <5upie2$9...@nntp5.u.washington.edu>, Mary K. Kuhner

<URL:mailto:mkku...@phylo.genetics.washington.edu> wrote:
>
> Inform (I can't comment on the others) has more support for rooms and
> objects than it does for people, or at least it feels that way.

I think this is a fair criticism, yes, but in mitigation I might
say that the Inform library uses a world model which is based on
an accepted idea of the state of the art -- that is, its basic
concepts are those which are understood as "basic" in the corpus
of existing adventure games of the 70s and 80s: containment,
supportability, enterability, vehicularity (oh dear: is there such
a word?), openability, etc. There was and is much less common
ground on how NPCs "should" behave. So crude is the standard
idea about NPCs that in Inform the same basic model handles animals
and people more or less equally. That basic model -- which
appreciates that some actions make more sense in the case of
people, such as ordering about, kissing, giving or waking up --
is essentially a codification of how Infocom's games behaved.

It's difficult to decide how a next-level model would work. The
various ideas about giving NPCs some kind of pseudo-random autonomy
(or even rudimentary abilities to plan ahead) are dangerous in an
IF authorship system such as Inform, because they need to be very
tightly under the designer's control, and because they would need
to "understand" the rest of the design in a quite sophisticated
way. It's not easy to write a foolproof algorithm even for moving
a Zork I-style thief around a relatively uncluttered map, for
instance (see the Inform manual for example code).

An alternative which some people believe in, and which I think may
indeed have some merit, is to reassign one's way of thinking so
that the basic unit is not the actor but the script. That is, to
provide facilities for running through sequences of events: we've
all played games where an NPC appears to exist in order to tell
us something, one paragraph per turn, and then to go away again.
If we interrupt the story, we're hissed at to keep quiet, or told
that the teller is inexplicably deaf, too caught up in his own
story, etc., etc. Scripting can be made to be more sophisticated
than this, but whenever I've considered moving such facilities into
the Inform library, I've concluded that it's better to let
designers work such things out for themselves. I may yet provide
an optional-extra library file, perhaps.

What should an NPC do? It's not an easy question. I think the
best NPC-led scene in the IF canon may be the prologue to
"Christminster", and this works well because the various NPCs are
interestingly different and interact with each other, not just with
the player. It's the designer that makes all this happen, though.
A souped-up library wouldn't do it for you.

--
Graham Nelson | gra...@gnelson.demon.co.uk | Oxford, United Kingdom


Andrew Plotkin

unread,
Sep 8, 1997, 3:00:00 AM9/8/97
to

Brandon Van Every (vane...@blarg.net) wrote:
> What do you feel are the tasks in creating a piece of IF that are sheer
> drudgery?

Writing the prose.

Maybe "drudgery" isn't the right word; but it does take most of my time
when I'm creating IF, and it causes most of the pain and suffering.

--Z

--

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

Mordacai

unread,
Sep 8, 1997, 3:00:00 AM9/8/97
to

This is an idea I've been toying with for a while now, and it might have
merit, tell me what you think:
Adding to the regular "Ask NPC about x" and "Tell NPC about x," the
command "REACT." This command could only be used after a NPC had done
something, and I think could add a lot of depth to the characters. For
example, look at this exchange:

>ASK WIFE ABOUT WEDDING

"Oh, I don't know, I think the cream dresses are lovely."

>TELL WIFE ABOUT DRESSES

"You don't like them?"

>NO

"Really, what ever you want, it's fine for me."


Not overly realistic is it? Now, think about this:

>ASK WIFE ABOUT WEDDING

"Oh, I don't know, I think the cream dresses are lovely."

>ACT DISSAPOINTED

"You don't like them?"

>ACT ENCOURAGING

"Really, whatever you want, it's fine with me."

This obviously isn't the best example, but this system would allow players
to communicate feelings to the NPCs in conversation. We'll never be able
to just type "Look, honey, cream just isn't the best color on you..." but
this might be a step in the right direction. Of course, it would require
a huge amount of programming, perhaps some fundamental changes in the way
NPCs are programmed, and therefor wouldn't be practical in most games, but
if you have a small, highly character driven game (Tapestry comes to mind)
it might prove worth the effort. Any suggestions?

Ian

Dragonslayer

unread,
Sep 9, 1997, 3:00:00 AM9/9/97
to

NPC's are a real pain to create. Just getting them to act normal is hard enough, let alone
intelligent. A lot of that problem would be solved if an NPC's actions could be processed in
the same routines as the player's. However, this is made exceedingly difficult by the library's
widespread use of the loathsome location and real_location variables. If those were
replaced by some less player-specific variables, sending actions to an NPC could be as
easy as, for instance:
actor=Bob;
<<Go n_obj>>;
I've been writing a partial replacement for verblibm.h which should do that, but I don't know
how far into it I'll get before I get bored and drop it. Is anyone else working on something
like this?
-Dragonslayer


/------------------------------------------------------\
| Dragonslayer dragon...@mad.scientist.com |
| |
| "Gentlemen, we can rebuild him. We have the masonry." |
| -Feet of Clay |
\------------------------------------------------------/

FemaleDeer

unread,
Sep 9, 1997, 3:00:00 AM9/9/97
to

>Writing the prose.
>
>Maybe "drudgery" isn't the right word; but it does take most of my time
>when I'm creating IF, and it causes most of the pain and suffering.
>
>--Z

Agreed. Room descriptions are a pain. I feel like I need to study architecture.

Back to NPC's - I would like a way to have the player be able to respond
to a question. I have not figured yet how to do this in Inform. Answer
doesn't really work. What if the player walks away and comes back and hour
later and then answers a question the NPC asked an hour ago. In that
context he would still get the same reaction (reply), although some things
may have changed (and in real life a person probably would not remember a
question they asked you that long ago.) I really haven't figured this one
out, which means my characters don't ask questions of the player. That's my
solution. Or I use a form of the YesNo routine, which looks and acts
"kludgey". So there is no REAL dialogue.

I would also like kiss and hug split as actions (they ARE two separate
ones), search to be different for NPCs, such as the Touch library response,
and Attack to be modified to be AttackWith, cut to be modified to be
CutWith (the last, of course, has nothing to do with NPCs).

As regards act disappointed, etc. Not a bad idea, but I would change that
to definitive actions for the player like:
Pout, Shrug, Frown, etc.

>pout

>"What's the matter?"

>71 people entered the contest

>shrug

>"Yes, I guess you just have to live with that."

FD :-)
------------------------------------------------------------------------------
Femal...@aol.com The Tame Computer
"Loyalty to petrified opinion never yet broke a chain or
freed a human soul." Mark Twain (or won a game)

Magnus Olsson

unread,
Sep 9, 1997, 3:00:00 AM9/9/97
to

In article <19970909021...@ladder01.news.aol.com>,

FemaleDeer <femal...@aol.com> wrote:
>Back to NPC's - I would like a way to have the player be able to respond
>to a question. I have not figured yet how to do this in Inform. Answer
>doesn't really work. What if the player walks away and comes back and hour
>later and then answers a question the NPC asked an hour ago. In that
>context he would still get the same reaction (reply), although some things
>may have changed (and in real life a person probably would not remember a
>question they asked you that long ago.)

This is really quite hard, if you want to do it in a realistic way.

The simplest solution is to give the NPC some notion of the time that's
elapsed since the question was asked. For example, once the NPC asks you
"By the way, have you seen my cat?", a clock starts ticking (this could
be handled by some daemon), and if too much time has elapsed when an
answer is received, the NPC reacts differently.

Of course, this depends on the question. If the NPC is asking because
her cat has disappeared and she's looking for it everywhere, then
she'll probably remember that she asked you for quite a long time. If
she's just making small talk, she'll probably react to a "tell npc
about cat" with a "Huh?" rather soon.

And, of course, it depends on how specific you are when answering.
There'sa big difference between "tell NPC about her cat" (which could
be shorthand for "Remember that you asked me about your cat? Well, I
think I saw it five turns ago in the dragon's lair") and "NPC, yes".

The NPC should also have some notion of what's going on in the
world. What if the cat has been found in the meantime?

>I would also like kiss and hug split as actions (they ARE two separate
>ones),

That one's simple:

[ HugSub ;
! whatever appropriate default action you like
];

extend 'hug' only
* animate -> Hug;

(I may misremember the syntax, but that's the idea).

> search to be different for NPCs, such as the Touch library response,

You mean "search NPC" should generate a different action than "search
bag"? (If not, I suppose you could just use a before routine in each
NPC)? Well, why not try

[ SearchPersonSub ;
];

extend 'search' first
* animate -> SearchPerson;

> and Attack to be modified to be AttackWith, cut to be modified to be
>CutWith (the last, of course, has nothing to do with NPCs).

extend 'attack' first
* animate 'with' held -> AttackWith;

--
Magnus Olsson (m...@df.lth.se, zeb...@pobox.com)
------ http://www.pobox.com/~zebulon ------
Not officially connected to LU or LTH.

Julian Arnold

unread,
Sep 11, 1997, 3:00:00 AM9/11/97
to

In article <19970908230...@ladder02.news.aol.com>, Mordacai


<URL:mailto:mord...@aol.com> wrote:
> This is an idea I've been toying with for a while now, and it might have
> merit, tell me what you think:
> Adding to the regular "Ask NPC about x" and "Tell NPC about x," the
> command "REACT." This command could only be used after a NPC had done
> something, and I think could add a lot of depth to the characters. For
> example, look at this exchange:

The general answer to enhanced conversation suggestions applies here:
the greatest merit of our current system is simplicity. I can imagine
using such a system as you propose, but one problem is that it
encourages players to think they have more freedom than they actually
have. It adds too much to the illusion of freedom, and thus makes the
illusion all the more fragile. You'd have to ensure the list of
acceptable adverbs was very comprehensive or you'd just get a big "guess
the adverb" problem--for example, I might try "act ebulliently," which
would fail, so I wouldn't try "act enthusiastically," even though that
would work.

> This obviously isn't the best example, but this system would allow players
> to communicate feelings to the NPCs in conversation. We'll never be able
> to just type "Look, honey, cream just isn't the best color on you..." but
> this might be a step in the right direction. Of course, it would require
> a huge amount of programming, perhaps some fundamental changes in the way
> NPCs are programmed, and therefor wouldn't be practical in most games, but
> if you have a small, highly character driven game (Tapestry comes to mind)
> it might prove worth the effort. Any suggestions?

I'm not so sure it'd be that hard to program. In Hugo (for simplicity
I've altered the syntax to "act <adverb> to <object>"):
!\=========================================================================
Grammar
=========================================================================\!

verb "act", "react"
* adverb "to" living DoReactTo


!\=========================================================================
Adverb class & objects
=========================================================================\!

attribute adverb

class adverb_class
{
type adverb_class
is adverb
}

adverb_class enthusisastic
{
nouns "enthusiastically", "encouragingly", "ebulliently"
long_desc
print CThe(xobject); " looks bewildered but pleased by your display of
enthusiasm."
}


!\=========================================================================
DoReactTo routine
=========================================================================\!

routine DoReactTo
{
if not xobject.after
run object.long_desc

return true
}


!\=========================================================================
Sample NPC
=========================================================================\!

global questioner
global questionee
global question

character npc
{
before {
xobject DoShow {
if object = dresses {
"Oh yes, I spent hours choosing those. Do you like them?"
questioner=self
questionee=player
question =dresses
}
}
}
after {
xobject DoReactTo {
select object
case enthusiastic {
if questioner = self and questionee = player and question = dresses
"That's good, because I had to borrow your credit card to pay for
them."
else
return false
}
case else
return false
}
}
}

(That's a basic, flawed implementation, mind. You'd then need to
arrange for the three questioning globals to be reset at appropriate
times so you wouldn't end up inadvertently answering very old or already
answered questions. Also, the questioning globals aren't very good, as
they only allow for one question to be open at a time--arrays might be
better. It would be better to allow commands of the form "react
<adverb> to <npc> about <topic>" (which would partly solve the problem
of answering multiple questions), but this isn't so easily doable in
Hugo.)

I don't think it's really worth the extra complexity and quantity of
code though.

Another problem: is "enthusiastically" synonymous to "encouragingly?"
In some circumstances, to some people, yes. In others, to others, no.
Again, the system seems too vague.

Jools
--
"For small erections may be finished by their first architects; grand
ones, true ones, ever leave the copestone to posterity. God keep me
from ever completing anything." -- Herman Melville, "Moby Dick"
[ Please reply to jo...@arnod.demon.co.uk ]


Reply all
Reply to author
Forward
0 new messages