<!-- MHonArc v2.4.4 --> <!--X-Subject: Re: MUD Design Digest V1 #55 --> <!--X-From-R13: pbqreNvoz.arg --> <!--X-Date: from babe.globecomm.net [207.51.48.8] by mx4.ibm.net id 862165941.70216-1 Sun Apr 27 18:32:21 1997 --> <!--X-Message-Id: 199704271838.SAA28063#out2,ibm.net --> <!--X-Content-Type: text/plain --> <!--X-Head-End--> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <html> <head> <title>MUD-Dev message, Re: MUD Design Digest V1 #55</title> <!-- meta name="robots" content="noindex,nofollow" --> <link rev="made" href="mailto:coder#ibm,net"> </head> <body background="/backgrounds/paperback.gif" bgcolor="#ffffff" text="#000000" link="#0000FF" alink="#FF0000" vlink="#006000"> <font size="+4" color="#804040"> <strong><em>MUD-Dev<br>mailing list archive</em></strong> </font> <br> [ <a href="../">Other Periods</a> | <a href="../../">Other mailing lists</a> | <a href="/search.php3">Search</a> ] <br clear=all><hr> <!--X-Body-Begin--> <!--X-User-Header--> <!--X-User-Header-End--> <!--X-TopPNI--> Date: [ <a href="msg00258.html">Previous</a> | <a href="msg00260.html">Next</a> ] Thread: [ <a href="msg00363.html">Previous</a> | <a href="msg00256.html">Next</a> ] Index: [ <A HREF="author.html#00259">Author</A> | <A HREF="#00259">Date</A> | <A HREF="thread.html#00259">Thread</A> ] <!--X-TopPNI-End--> <!--X-MsgBody--> <!--X-Subject-Header-Begin--> <H1>Re: MUD Design Digest V1 #55</H1> <HR> <!--X-Subject-Header-End--> <!--X-Head-of-Message--> <UL> <LI><em>To</em>: <A HREF="mailto:mud-dev#null,net">mud-dev#null,net</A></LI> <LI><em>Subject</em>: Re: MUD Design Digest V1 #55</LI> <LI><em>From</em>: <A HREF="mailto:coder#ibm,net">coder#ibm,net</A></LI> <LI><em>Date</em>: Sun, 27 Apr 97 11:35:05 -0700</LI> </UL> <!--X-Head-of-Message-End--> <!--X-Head-Body-Sep-Begin--> <HR> <!--X-Head-Body-Sep-End--> <!--X-Body-of-Message--> <PRE> This is an old post which somehow never made it out to the list: The "grid-based mudlib?" thread in r.g.m.lp is turning into one of the more interesting discussions on parsers, space, and memory: --<cut>-- Subject: Re: grid-based mudlib? From: mmcg#yoyo,cc.monash.edu.au (Mike McGaughey) Date: 1996/11/30 Newsgroups: rec.games.mud.lp borg#visi,com (George Reese) writes: >Mike McGaughey (mmcg#yoyo,cc.monash.edu.au) wrote: >: Sorting out how to do [command propogation] sensibly is considerably more >: difficult than working out how light or sound should propogate. >Not at all. MudOS as used in Lima and Nightmare does not use the >antiquated add_action() system, and it thus does not tie what commands >you can execute to where you are. >Instead, an object responds to user input when that user identifies >the object as a target of the user's action. Which objects may >respond is determined in EXACTLY the same manner as light propogation. This is quite wrong; you can propogate *nouns* in the same way as you propogate light, which provides an additional collection of objects which may be mentioned by a player, but command propogation is a different thing: > walk to tree You start walking south east, towards a tree. > look at tree There is a nest in the branches. > climb tree You are walking south east towards the tree, but you are not close enough to climb it. It's certainly not enough to obtain *all* verb/noun combinations: > tell george hi. Told him. This last example shows where an earlier idea - associating an hypersphere (what, you have a 7-dimensional mud?) with each object/verb combination runs into trouble. Now, I'm sure you're thinking: "`Tell' is just a special case". But it's not. Verbs don't have a `radius', or a `line of sight' - they have conditions under which they can be invoked (object known to subject, known location, visible, in range, flammable, etc), and *that* is what determines the verbs available to a player at any given time. Furthermore, many verbs exist only to change the condition of the player; these are exactly the conditions which one would use to give sensible error messages (and that's how one designs them - and/or stumbles across new ideas for additions to players): > climb You are near the base of a mountain (which you could climb now, using `climb mountain'), and there is a tree to the south east (which you could climb if you were close enough, using `climb tree'). You could also `climb' if you were flying or already climbing on something - which you aren't. What did you want to climb? Notice that dealing with this sensibly using the naive scheme you have suggested would require every wizard to check every condition which might affect any action. In an evolving mudlib, this is a recipie for disaster (or for looking pretty unprofessional every so often, which is essentially the same thing). Examples: adding the ability to refer to objects recently brought to your attention, or adding simple anaphora to your parser (both of which are solved by the same mechanism, a short term memory): George shouts: Hi > look at george You heard George recently, but could not determine where he was. Earlier, you saw him on a mountain to the north west of here. Would you like to walk there? > run there You are running north west, towards a mountain. So, `command propogation' is intimately tied to what the player can refer to; visibility is just an aspect of this. Just because a player moves around, or loses sight of an object, doesn't mean he `loses' verbs he has aquired earlier on; they persist for all sorts of reasons - especially for failure messages. The limitations of the more usual sort of LP command dispatch mechanism are particularly noticeable in a mud which implements other sorts of propogation. But relying on distances or line-of-sight for commands is definitely *not* the answer. The word for the day, children, is con-tin-u-i-ty. It's hard to create an immersive experience without it. Cheers, Mike. --<cut>-- To address some of his examples specifically: > walk to tree You start walking south east, towards a tree. > look at tree There is a nest in the branches. > climb tree You are walking south east towards the tree, but you are not close enough to climb it. Presumably the presumption is that the last response should be: > climb tree You are walking south east towards the tree, but you are not close enough to climb it. You continue walking towards the tree to the south east. As you reach the tree, you start climb it. I _can_ do this, but it gets into quite a bit of intelligent coding. "Walk to tree" would start a chain of events which gradually translate the character to the tree. This is fairly standard. "Look at tree" operates pretty standardly, doing standard line-of-sight and distance calculations to determine what you can or cannot see about or in the tree. It would get really cute if a little later on: > l at tree It looks like someone is trying to hide behind the tree. There is a nest in the tree with squalling chicks looking out. This gets messy because non-tree objects are being reported for a verb invoked on the tree. Potentially I can support this however if I ever figure out a way to do position preposistions ("put the book under the rug on the table", "hide behind the bush") -- but not having prepositions done, I'm not sure how...<kof> Now "climb tree" gets nasty. If you are too far from the tree to start climing, _should_ the climb action be postponed so that you /do/ start climbing the tree when you reach it? Pushing actions like this out into the future can get nasty. Consider the more extreme case: > let there be light You create the universe. > create world > create birds'n'bees''n'green'n'crawly things You begin creating the world. Oops. Humanity happened. Cancer is malignant. > Kill the putz on the corner of 18'th and Sansome. Sorry, he hasn't been born yet. Waiting. Okay, the putz has been born, grown up, and now knows too much about tootsie rolls. A putz is approaching you from the souch. The putz whacks you with a tootsie roll. Oops. You are dead. The real nasties happen when pending actions start conflicting: You are on a large grassy plain with a single large tree to the north. > walk to tree. Okay. > climb tree. You're not there yet, but will climb it when you are. ... You are attacked by a troll! You kill the troll. You are bleeding badly. You must get help or you will die. > walk to healer You start walking to the healer. The healer is sitting under a (different) tree. You start climbing the tree. You die. or: > walk to tree. Okay. > climb tree. You're not there yet, but will climb it when you are. ... You are attacked by a troll! You kill the troll. You are bleeding badly. You must get help or you will die. > walk to healer You start walking to the healer. You reach the healer. The healer heals you. ...many moves later.... You are on a large grassy plain, with a single tree to the north. There are some angry trolls to the south. > Hide in grass You hide. > crawl behind tree You crawl silently thru the grass. You are behind the tree. You start climbing the tree. The trolls see you and attack! Whoops. Additionally, his point on making verbs available per the personal history and configuration of the character is a good one, especially the example with "George". This has a lot of applicability for me with my user-assigned names as has been raised here before. I just don't have a solution. - J C Lawrence Internet: claw#null,net ----------(*) Internet: coder#ibm,net ...Honourary Member of Clan McFud -- Teamer's Avenging Monolith... </PRE> <!--X-Body-of-Message-End--> <!--X-MsgBody-End--> <!--X-Follow-Ups--> <HR> <!--X-Follow-Ups-End--> <!--X-References--> <!--X-References-End--> <!--X-BotPNI--> <UL> <LI>Prev by Date: <STRONG><A HREF="msg00258.html">Me</A></STRONG> </LI> <LI>Next by Date: <STRONG><A HREF="msg00260.html">Re: [MUD-Dev] (fwd) Re: Issues from the digests and Wout's list</A></STRONG> </LI> <LI>Prev by thread: <STRONG><A HREF="msg00363.html">Re: [MUD-Dev] (fwd) Re: Issues from the digests and Wout's list</A></STRONG> </LI> <LI>Next by thread: <STRONG><A HREF="msg00256.html">Re: Combat</A></STRONG> </LI> <LI>Index(es): <UL> <LI><A HREF="index.html#00259"><STRONG>Date</STRONG></A></LI> <LI><A HREF="thread.html#00259"><STRONG>Thread</STRONG></A></LI> </UL> </LI> </UL> <!--X-BotPNI-End--> <!--X-User-Footer--> <!--X-User-Footer-End--> <ul><li>Thread context: <BLOCKQUOTE><UL> <LI><STRONG>Re: [MUD-Dev] (fwd) Re: Issues from the digests and Wout's list</STRONG>, <EM>(continued)</EM> <ul compact> <ul compact> <ul compact> <ul compact> <ul compact> <LI><strong><A NAME="00654" HREF="msg00654.html">Re: [MUD-Dev] (fwd) Re: Issues from the digests and Wout's list</A></strong>, Miroslav Silovic <a href="mailto:silovic#srce,hr">silovic#srce,hr</a>, Wed 21 May 1997, 15:55 GMT <UL> <LI><strong><A NAME="00684" HREF="msg00684.html">Re: [MUD-Dev] (fwd) Re: Issues from the digests and Wout's list</A></strong>, clawrenc <a href="mailto:clawrenc#cup,hp.com">clawrenc#cup,hp.com</a>, Thu 22 May 1997, 05:34 GMT </LI> </UL> </LI> </ul> <LI><strong><A NAME="00689" HREF="msg00689.html">Re: [MUD-Dev] (fwd) Re: Issues from the digests and Wout's list</A></strong>, Raz <a href="mailto:muddyraz#mushroom,demon.co.uk">muddyraz#mushroom,demon.co.uk</a>, Thu 22 May 1997, 08:51 GMT </LI> </ul> </ul> </ul> <LI><strong><A NAME="00363" HREF="msg00363.html">Re: [MUD-Dev] (fwd) Re: Issues from the digests and Wout's list</A></strong>, Chris Gray <a href="mailto:cg#ami-cg,GraySage.Edmonton.AB.CA">cg#ami-cg,GraySage.Edmonton.AB.CA</a>, Sat 10 May 1997, 23:26 GMT </LI> </ul> </LI> <LI><strong><A NAME="00259" HREF="msg00259.html">Re: MUD Design Digest V1 #55</A></strong>, coder <a href="mailto:coder#ibm,net">coder#ibm,net</a>, Mon 28 Apr 1997, 01:32 GMT <LI><strong><A NAME="00256" HREF="msg00256.html">Re: Combat</A></strong>, Chris Gray <a href="mailto:cg#ami-cg,GraySage.Edmonton.AB.CA">cg#ami-cg,GraySage.Edmonton.AB.CA</a>, Mon 28 Apr 1997, 00:10 GMT <LI><strong><A NAME="00253" HREF="msg00253.html">Re: [MUD-Dev] Re: Reposts</A></strong>, Jon A. Lambert <a href="mailto:jlsysinc#ix,netcom.com">jlsysinc#ix,netcom.com</a>, Sun 27 Apr 1997, 11:39 GMT <UL> <LI><strong><A NAME="00271" HREF="msg00271.html">Re: [MUD-Dev] Re: Reposts</A></strong>, clawrenc <a href="mailto:clawrenc#cup,hp.com">clawrenc#cup,hp.com</a>, Tue 29 Apr 1997, 06:15 GMT </LI> </UL> <UL> <li><Possible follow-up(s)><br> <LI><strong><A NAME="00276" HREF="msg00276.html">Re: [MUD-Dev] Re: Reposts</A></strong>, Jeff Kesselman <a href="mailto:jeffk#tenetwork,com">jeffk#tenetwork,com</a>, Tue 29 Apr 1997, 15:52 GMT </LI> </UL> </LI> </UL></BLOCKQUOTE> </ul> <hr> <center> [ <a href="../">Other Periods</a> | <a href="../../">Other mailing lists</a> | <a href="/search.php3">Search</a> ] </center> <hr> </body> </html>