1999Q1/
<!-- MHonArc v2.4.4 -->
<!--X-Subject: [MUD&#45;Dev] Re: MUD Design doc (long) -->
<!--X-From-R13: Szvy Svserz <rzvyNcebcurpl.yh> -->
<!--X-Date: Fri, 1 Jan 1999 18:21:06 &#45;0800 -->
<!--X-Message-Id: Version.32.19990101231603.00f31a50#sendar,prophecy.lu -->
<!--X-Content-Type: text/plain -->
<!--X-Reference: emil#prophecy,lu -->
<!--X-Reference: Version.32.19981217101607.00e6b600#sendar,prophecy.lu -->
<!--X-Reference: 199812240121.RAA12387#under,engr.sgi.com -->
<!--X-Head-End-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>MUD-Dev message, [MUD-Dev] Re: MUD Design doc (long)</title>
<!-- meta name="robots" content="noindex,nofollow" -->
<link rev="made" href="mailto:emil#prophecy,lu">
</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>
[&nbsp;<a href="../">Other Periods</a>
&nbsp;|&nbsp;<a href="../../">Other mailing lists</a>
&nbsp;|&nbsp;<a href="/search.php3">Search</a>
&nbsp;]
<br clear=all><hr>
<!--X-Body-Begin-->
<!--X-User-Header-->
<!--X-User-Header-End-->
<!--X-TopPNI-->

Date:&nbsp;
[&nbsp;<a href="msg00002.html">Previous</a>
&nbsp;|&nbsp;<a href="msg00003.html">Next</a>
&nbsp;]
&nbsp;&nbsp;&nbsp;&nbsp;
Thread:&nbsp;
[&nbsp;<a href="msg00008.html">Previous</a>
&nbsp;|&nbsp;<a href="msg00006.html">Next</a>
&nbsp;]
&nbsp;&nbsp;&nbsp;&nbsp;
Index:&nbsp;
[&nbsp;<A HREF="author.html#00004">Author</A>
&nbsp;|&nbsp;<A HREF="#00004">Date</A>
&nbsp;|&nbsp;<A HREF="thread.html#00004">Thread</A>
&nbsp;]

<!--X-TopPNI-End-->
<!--X-MsgBody-->
<!--X-Subject-Header-Begin-->
<H1>[MUD-Dev] Re: MUD Design doc (long)</H1>
<HR>
<!--X-Subject-Header-End-->
<!--X-Head-of-Message-->
<UL>
<LI><em>To</em>: <A HREF="mailto:mud-dev#kanga,nu">mud-dev#kanga,nu</A></LI>
<LI><em>Subject</em>: [MUD-Dev] Re: MUD Design doc (long) </LI>
<LI><em>From</em>: Emil Eifrem &lt;<A HREF="mailto:emil#prophecy,lu">emil#prophecy,lu</A>&gt;</LI>
<LI><em>Date</em>: Sat, 02 Jan 1999 01:16:53 +0100</LI>
<LI><em>Reply-To</em>: <A HREF="mailto:mud-dev#kanga,nu">mud-dev#kanga,nu</A></LI>
</UL>
<!--X-Head-of-Message-End-->
<!--X-Head-Body-Sep-Begin-->
<HR>
<!--X-Head-Body-Sep-End-->
<!--X-Body-of-Message-->
<PRE>
Sorry for the delayed comments. Holidays kept me out of touch with
computers for a good week and a half.


At 02:21 AM 12/24/98 , J C Lawrence wrote:
&gt;[Emil Eifrem:]
&gt;&gt; What good reasons are there for separating NPCs and PCs?
&gt;
&gt;The usual argument is simplicity and performance.  By making them
&gt;the same you remove the possibility of using short-circuit logic in
&gt;your NPC's or their AI's, thus imposing extra logic which is really
&gt;only needed for players and their typoes, command goofs,
&gt;guess-the-verb-games etc.  By devolving NPC's to a simpler form you
&gt;can bypass that and present a much simpler and in many ways more
&gt;elegant API to the NPC AI's.
&gt;
&gt;George Reese IIRC has written articulately on this in
&gt;rec.games.mud.*, but I'm unable to find the reference right now.

K, I'll be sure to look it up on dejanews. I decided to not separate PCs
and NPCs early on in my design and didn't pay it much mind -- I never quite
managed to find any major advantages to having them separated.

I have a distinction between player and character that I think helps; where
player is an actual rl person connecting to the mud, while a character is
one of possibly many in-game entities that that player may control.


&gt;&gt; I'm pretty ambivalent on this issue. It's a 'flexibility vs
&gt;&gt; consistency' matter for me: I want the flexibility of letting a
&gt;&gt; builder add the verb "smell" to a mob's (or character or any
&gt;&gt; Living) vocabulary when the mob picks up a flower. But I strongly
&gt;&gt; dislike the fact that if I drop the flower and walk into another
&gt;&gt; room, "smell" would give a "Huh!?".
&gt;
&gt;Ditto.  My current approach is a global vocabulary and grammar, and
&gt;local overloaded definitions.

I use single inheritance for my world object hierarchy so multiple base
objects and other issues associated with multiple inheritance (I didn't
include the multiple-inheritance quote from your mail) won't be any
problem. The only immediate drawback I see about a global grammar is the
requirement to recompile your server in order to add a verb or command
instead of shoving that responsibility to the world scripting language.

That inflexibility may end up being tedious and restraining on the
builders, such as when JoeBuilder wants 8 new small commands for his new
cool area, but will have to wait for lazy coders and the next code update
instead of just adding it dynamically by script. It may or may not be a
problem, depending on the length of one's code-update cycle and how
soft-coded one's server is.

Keeping with my initial terms, I guess this boils down to trading
flexibility for consistency.


&gt;&gt; One could also have a head builder that walks through all areas to
&gt;&gt; check the dynamic vocabulary but that does tend to hamper
&gt;&gt; productivity.  
&gt;
&gt;And such administration scales wonderfully.

Aye, as I believe all administrative tasks tend to do. After some admin
restructuring and a series of (ehum) masterly crafted code-updates, our avg
playerbase increased with around 25%. With the result that our admin work
almost doubled. 

In fact, in my experience, the amount of admin work increases exponentially
to the growth of your player base. Hmmm.. that may even qualify as one of
Raph's laws. "The amount of administrative work increases exponentially to
the growth of your player base." I think player-driven rule enforcement may
help flatten the curve. On the other hand, maybe it won't -- it may only
serve to redistribute the effort to the players, which in the end will give
the problems to the admin staff anyway.



&gt;&gt; I'm not even sure how, and why, having dynamic grammar attached to
&gt;&gt; objects would work. Pros and cons, anyone? And how?
&gt;
&gt;I'll bow out here to the various Cold people on the list.

Seems like they're not listening. ;)


&gt;&gt; Ack. Haven't your players heard of tintin?
&gt;
&gt;Yes.  Its not necessarily a problem with untimed combat.  One of my
&gt;pet criteria is that any game which can be usefully automated has
&gt;demonstrated the failure of its design.

That counts out most of today's muds. Mine certainly. I am positive that
all muds I've played can be successfully automated, at least to a certain
extent. Wasn't there a Raph-law about that? Something like, "whatever
design decision you do, people *will* find ways to automate playing." I'll
have to look that up.

In role-playing environments, it's probably a very good goal though.


&gt;&gt; Surely you must have some way to delay a player's queing commands
&gt;&gt; while they're busy doing something else. For example, say you have
&gt;&gt; a spell that causes damage. According to the above, a fight
&gt;&gt; between two people with this spell would basically be a fight
&gt;&gt; between their clients and connections -- whomever gets through
&gt;&gt; most "cast my damagespell" messages would win.
&gt;
&gt;Not quite.  Wiggins has already given simple cases where this is not
&gt;the case.

Yes. "cast my damagespell" was an ill-chosen example since it's normally
limited by both time and mana. Now, with the reservation that I don't know
anything about your combat system except for what I read in your post, it
seems to me that if two people were fighting with non-resource-limited
skills (such as 'kick'), *without* any player-command-lag the person with
the fastest client/connection would win. 

So I would assume that you've made sure that all your (combat-)commands are
limited by something other than time. Or am I thinking too narrow here?
-shrug-


&gt;Aside: One of the reasons I'm not concerned about
&gt;inter-client/lag_balance wars is that I actively encourage and
&gt;support free user programming.  As such, players are free to program
&gt;their own combat code/scripts/packages to automate whatever they may
&gt;wish.  The result?  Yes, many combats will derive to who has the
&gt;better/faster/luckier combat automation. I don't see this as a
&gt;problem.

Interesting. I can agree with you on the better part ('better' combat
automation can be translated into 'doing the right decisions at the right
time,' which in my dark-player-killing-youth used to be what I claimed
separated the true pkiller (me) from the wussies (everyone else)), but must
admit that I find the faster/luckier approach very peculiar.

I guess it's just that with my square diku-derivative background, I lack a
basic understand of your fighting system. Will have to try it out some day.

&gt;Further,
&gt;while a player's commands normally execure serially, they can
&gt;execute in parallel (player character doing multiple things at the
&gt;same time).  I do very little to restrict this other than factoring
&gt;it into the luck and sloppiness fields (a parallelly executed
&gt;command suffers runtime penalties).

   &gt; cast windshield
   You start weaving flows of Air.
   931 orcs come in through the northern door, wondering what the heck
you're doing in their temple and near their holy, stolen and oh-so-magic
stones.

   &gt; get the gotdamn stones from the floor
   You pick up the three Stones.
   The 931 orcs all draw bows and nock arrows.
   &gt; put the rotten stones in my bag
   You put the three Stones in your bag.
   A thin, translucent shield of Air surrounds you.
   The 931 orcs all fire at ya, but their arrows are caught in your
windshield. You run through the southern door with the stones in your bag
all thanx to the parallell command execution.

I like it!
   

&gt;The result?  Yes, from one viewpoint the question is who can enter
&gt;the most commands most rapidly.  However that's a false viewpoint as
&gt;the combat structure is heavily predisposed to tactical reactions
&gt;(ie very interactive and supportive of prior preparation) as versus
&gt;a simple pile-on-the-hp's.

Aye. Probably too much DIKU, pile-on-the-hps thinking on my part. Sorry.

-EE [emil#prophecy,lu]



</PRE>

<!--X-Body-of-Message-End-->
<!--X-MsgBody-End-->
<!--X-Follow-Ups-->
<HR>
<ul compact><li><strong>Follow-Ups</strong>:
<ul>
<li><strong><A NAME="00006" HREF="msg00006.html">[MUD-Dev] Re: MUD Design doc (long)</A></strong>
<ul compact><li><em>From:</em> Travis Casey &lt;efindel#io,com&gt;</li></ul>
</UL></LI></UL>
<!--X-Follow-Ups-End-->
<!--X-References-->
<UL><LI><STRONG>References</STRONG>:
<UL>
<LI><STRONG><A NAME="00008" HREF="msg00008.html">[MUD-Dev] Re: MUD Design doc (long)</A></STRONG>
<UL><LI><EM>From:</EM> J C Lawrence &lt;claw#under,engr.sgi.com&gt;</LI></UL></LI>
</UL></LI></UL>
<!--X-References-End-->
<!--X-BotPNI-->
<UL>
<LI>Prev by Date:
<STRONG><A HREF="msg00002.html">[MUD-Dev] Re: AFAP: As fast as possible, non linear...</A></STRONG>
</LI>
<LI>Next by Date:
<STRONG><A HREF="msg00003.html">[MUD-Dev] Info about different skill systems</A></STRONG>
</LI>
<LI>Prev by thread:
<STRONG><A HREF="msg00008.html">[MUD-Dev] Re: MUD Design doc (long)</A></STRONG>
</LI>
<LI>Next by thread:
<STRONG><A HREF="msg00006.html">[MUD-Dev] Re: MUD Design doc (long)</A></STRONG>
</LI>
<LI>Index(es):
<UL>
<LI><A HREF="index.html#00004"><STRONG>Date</STRONG></A></LI>
<LI><A HREF="thread.html#00004"><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><A NAME="00012" HREF="msg00012.html">[MUD-Dev] ADMIN: New text formatting rule for MUD-Dev</A></strong>, 
J C Lawrence <a href="mailto:claw#kanga,nu">claw#kanga,nu</a>, Sun 27 Dec 1998, 21:15 GMT
<LI><strong><A NAME="00011" HREF="msg00011.html">[MUD-Dev] META: 1998 Topic Summary</A></strong>, 
Jon A. Lambert <a href="mailto:jlsysinc#ix,netcom.com">jlsysinc#ix,netcom.com</a>, Sun 27 Dec 1998, 09:49 GMT
<LI><strong><A NAME="00010" HREF="msg00010.html">[MUD-Dev] Terragen</A></strong>, 
Vadim Tkachenko <a href="mailto:vt#freehold,crocodile.org">vt#freehold,crocodile.org</a>, Fri 25 Dec 1998, 07:49 GMT
<LI><strong><A NAME="00008" HREF="msg00008.html">[MUD-Dev] Re: MUD Design doc (long)</A></strong>, 
J C Lawrence <a href="mailto:claw#under,engr.sgi.com">claw#under,engr.sgi.com</a>, Thu 24 Dec 1998, 07:57 GMT
<UL>
<LI><strong><A NAME="00004" HREF="msg00004.html">[MUD-Dev] Re: MUD Design doc (long)</A></strong>, 
Emil Eifrem <a href="mailto:emil#prophecy,lu">emil#prophecy,lu</a>, Sat 02 Jan 1999, 02:21 GMT
<UL>
<LI><strong><A NAME="00006" HREF="msg00006.html">[MUD-Dev] Re: MUD Design doc (long)</A></strong>, 
Travis Casey <a href="mailto:efindel#io,com">efindel#io,com</a>, Sat 02 Jan 1999, 05:08 GMT
<UL>
<LI><strong><A NAME="00018" HREF="msg00018.html">[MUD-Dev] Re: MUD Design doc (long)</A></strong>, 
Emil Eifrem <a href="mailto:emil#prophecy,lu">emil#prophecy,lu</a>, Sat 02 Jan 1999, 11:26 GMT
<UL>
<LI><strong><A NAME="00020" HREF="msg00020.html">[MUD-Dev] Re: MUD Design doc (long)</A></strong>, 
Travis Casey <a href="mailto:efindel#io,com">efindel#io,com</a>, Sat 02 Jan 1999, 19:49 GMT
<UL>
<LI><strong><A NAME="00022" HREF="msg00022.html">[MUD-Dev] Re: MUD Design doc (long)</A></strong>, 
Emil Eifrem <a href="mailto:emil#prophecy,lu">emil#prophecy,lu</a>, Sat 02 Jan 1999, 21:16 GMT
</LI>
</UL>
</LI>
</UL>
</LI>
</UL>
</LI>
</UL>
</LI>
</UL>
</LI>
</UL></BLOCKQUOTE>

</ul>
<hr>
<center>
[&nbsp;<a href="../">Other Periods</a>
&nbsp;|&nbsp;<a href="../../">Other mailing lists</a>
&nbsp;|&nbsp;<a href="/search.php3">Search</a>
&nbsp;]
</center>
<hr>
</body>
</html>