Newsgroups: rec.arts.int-fiction
Path: news.duke.edu!newsgate.duke.edu!nntp-out.monmouth.com!newspeer.monmouth.com!news.maxwell.syr.edu!howland.erols.net!newsfeed.fast.net!uunet!dca.uu.net!ash.uu.net!world!buzzard
From: buzzard@world.std.com (Sean T Barrett)
Subject: Re: [Inform] "Unrealistic ceiling" commentary
Message-ID: <GED8vs.HHI@world.std.com>
Date: Sun, 3 Jun 2001 18:04:40 GMT
References: <B73F0828.6F8E%amerenbach@mac.com> <GECDwz.4Ct@world.std.com> <ant0316200b0PRqZ@alant.demon.co.uk>
Organization: The World Public Access UNIX, Brookline, MA
Lines: 69
Xref: news.duke.edu rec.arts.int-fiction:87976

Joe Mason wrote:
>Sean T Barrett <URL:mailto:buzzard@world.std.com> wrote:
>> Andrew Merenbach  <amerenbach@mac.com> wrote:
>> >Hm.  Strange.  Shouldn't the ceiling object, by default, be "unreachable"?
>> There is no default notion of "out of reach". There is a default notion of
>> "untouchable" (e.g. inside a closed container), but since the library isn't
>> really OO, there's no way to override it for a particular object.
>As an aside, if you want to add the notion "out of reach", check out Marnie
>Parker's outofrch.h at
>ftp://ftp.gmd.de/if-archive/infocom/compilers/inform6/library/contributions
>    /outofrch.h

Actually, outofrch.h appears to do something a bit different: it
only affects reachability of the player when the player is in an
enterable supporter/container--dedicated primarily to the idea
that a seated player can't reach things. Which is neat and useful,
but still assumes a player not-in-anything can reach everything.

Alan Trewartha  <alant@alant.demon.co.uk> wrote:
>The ObjectIsUntouchable routine is available to be replaced, and is used
>throughout Graham's library as a validation on various actions (including
>Touch). Have a quick loot at it -- it's only 60 lines, 10 or so of which are
>comments! You could easily add an extra few lines to test an extra condition,
>e.g. before the final rfalse what about adding:
>
>  if (item provides check_reach) return item.check_reach();

outofrch.h doesn't actually do this; it uses a react_before on
the enterables/supporters.

But you're correct, the above isn't that hard to do. In fact, I have
an unreleased library mod which implements attribute-based unreachability,
and the above line is something like what appears in it. Since it's
unreleased, I didn't mention it in the previous post; and since my
experience with it is that it's not quite that easy, I didn't mention
this possibility either.
(Tentative info: http://world.std.com/~buzzard/games/if/relnote.stb
but I still have to figure out how best to revise it to not do the
nested-include thing.)

The problem with rolling it yourself with your technique (besides the
fact that if you want to publish something which replaces several big
routines like ObjectIsUntouchable, you're violating Graham's restriction
against reproducing the source in significantly altered form, although I
doubt that was his intent) is that "Group 3" verbs like "Rub" don't
check ObjectIsUntouchable, so you either have to use a class with
a 'before' for the missing verbs, or you have to replace 5-10 verbs.
(Mine replaces 10, because my concept of "can't reach" is "that
is way off towards the horizon", which wants to take priority
over even generic dismissals like "That would achieve nothing.")

In general, I think the whole design of "Group 3" actions is not a
very good one, and the presence of so many default unimplemented verbs
is harmful for small games (e.g. comp games), which shouldn't have to
worry about the nonsensical responses they might get from them--far
better for the game to admit it doesn't know the verb than to pretend
it does with a single message which doesn't really fit every context,
including contexts created by the objects included in the library, like
the ceiling. (My apologies for the length of sentences in this post.)
Large games can better justify the effort spent coping with the large
default vocabulary. (For example, why did I go to all the effort to write
the above mod? Because a playtester complained about being able to rub
and taste a distantly visible star in a *one-room game*.)

Clearly, this is personal opinion, but the above is only one of my
complaints about Group 3. On the other hand, I am a notorious
curmudgeon, and I am still using Inform anyway.

SeanB
