1998Q4/
<!-- MHonArc v2.4.4 -->
<!--X-Subject: [MUD&#45;Dev] Re: Graphic design, client questions -->
<!--X-From-R13: X Q Znjerapr <pynjNhaqre.rate.ftv.pbz> -->
<!--X-Date: Mon, 21 Dec 1998 14:47:23 &#45;0800 -->
<!--X-Message-Id: 199812212246.OAA20702#under,engr.sgi.com -->
<!--X-Content-Type: text/plain -->
<!--X-Reference: 367A1A80.D0F1B391#bigfoot,com -->
<!--X-Head-End-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>MUD-Dev message, [MUD-Dev] Re: Graphic design, client questions</title>
<!-- meta name="robots" content="noindex,nofollow" -->
<link rev="made" href="mailto:claw#under,engr.sgi.com">
</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="msg01026.html">Previous</a>
&nbsp;|&nbsp;<a href="msg01028.html">Next</a>
&nbsp;]
&nbsp;&nbsp;&nbsp;&nbsp;
Thread:&nbsp;
[&nbsp;<a href="msg01028.html">Previous</a>
&nbsp;|&nbsp;<a href="msg01050.html">Next</a>
&nbsp;]
&nbsp;&nbsp;&nbsp;&nbsp;
Index:&nbsp;
[&nbsp;<A HREF="author.html#01027">Author</A>
&nbsp;|&nbsp;<A HREF="#01027">Date</A>
&nbsp;|&nbsp;<A HREF="thread.html#01027">Thread</A>
&nbsp;]

<!--X-TopPNI-End-->
<!--X-MsgBody-->
<!--X-Subject-Header-Begin-->
<H1>[MUD-Dev] Re: Graphic design, client questions</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: Graphic design, client questions </LI>
<LI><em>From</em>: J C Lawrence &lt;<A HREF="mailto:claw#under,engr.sgi.com">claw#under,engr.sgi.com</A>&gt;</LI>
<LI><em>Date</em>: Mon, 21 Dec 1998 14:46:37 -0800</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>
On Fri, 18 Dec 1998 11:04:00 +0200 
Thinus Barnard&lt;thinus_barnard#bigfoot,com&gt; wrote:

&gt; Caliban Tiresias Darklock wrote:

&gt; As for text mode I see a few problems.  1. I can send the text
&gt; description of the room and append the string needed for the
&gt; graphics protocol. This seems like a waste if the player has got
&gt; the graphics. Instead of sending 1 line of text for the graphics
&gt; protocol I now have to send 5 lines of description plus the 1 line
&gt; for the graphics.

&gt; 2. Text/Graphics mode. Define two methods for displaying messages
&gt; to the player.  One method sends just text and the other sends
&gt; just the graphics. Maybe define 2 different player objects, one
&gt; that handles graphics and one that handles text.  When the mode is
&gt; switched the old object is copied to the new one and the old one
&gt; destroyed, otherwise you will have to check everytime a message is
&gt; sent whether the player is in text or graphics mode. A problem
&gt; when the player is in graphics mode and a picture is not
&gt; available.

&gt; 3. Always run in graphics mode. When the client cannot find a
&gt; picture request the text from the server.

&gt; A combination of 2 and 3 is probably the best way to go.

This differentiation has been previously discussed on MUD-Dev, tho
not in huge detail

Another approach is to operate in only in grpahics mode, and for all
objects to have a defined graphic representation as a mapping from
their object inheritance heirarchy.  An advantage of this system is
that it allows the client cache to operate intelligently and present
what it has, even if it is known to be inaccurate.

Thus the base object chair would have a graphic which representes
it, of a very simple, unfeatured, and rather ignorable chair.
Children of this base object would inherit their parent's default
chair graphic until they defined their own.  From the client
perspective, upon encountering a new object (ie one the client does not
have a defined graphic in-cache), the client will instead display
the nearest (per the object's inheritance tree) registered graphic,
and will request a more correct graphic from the server for
subsequent use.

The result is that the client user will enter a room and initally,
for instance, see a dull gray room full of dull gray barely
differentiated objects.  However, as he waits, the objects will
gradually refine themeselves. and redraw to appear "correctly",
finally resulting in a "correct" rendering of the scene.

A side effect of course is that a player surrounded by familiar
objects will be able to operate more quickly than one to whom
everything is new.  Cache population then becomes a valuable
client-side player skill.  This has questionable play-style and
world-view effects with easy arguments on both sides.  A good
partial solution may be to implement a client-side configurations to
control graphic requests; perhaps detailing a max bandwidth consumed
by graphic downloads, and a minimum average even rate (rate of state
change for the player) to initiate new graphic downloads.

&gt;&gt;&gt;The client can force the user to only enter valid commands.
&gt;&gt; 
&gt;&gt; MUD and client versions would have to match... exactly. BAD idea.

&gt; Not true. The server can tell the client what commands are
&gt; available. The standard command set can be imbedded into the
&gt; standard graphics resource. When a player enters a room the server
&gt; tells the client what extra commands are available. When the
&gt; player exits the room the client can remove the commands again. At
&gt; least you can do some checking on the client and don't have to
&gt; send everything to the server. You will need a very flexible
&gt; client to really get good results through scripting. The client
&gt; will have to display an inventory, display a body graph with the
&gt; inventory for using items, define some buttons on the main form to
&gt; easily get to the inventory, skills, spells, combat options,
&gt; etc. Should be an interesting scripting challenge.

There are two approaches to this; guaranteeing command correctness
(which is doomed from the outset), and one which attempts only
sanity checking (and has a chance of working).

You don't want the client refusing commands because it "knows" that
they won't work in the current state due to missing objects.  It is
too ripe for abuse and is almost impossible to guarantee
correctness.

  Ahh!  We'll just ensure that the requisite objects are present!
That way you can't "get cup" when the cup isn't there.

  Right, that works all the way until, "summon bubba", or "forge
sword", "make bread", or any other variant command that operates on
non-present objects.

  Well fine -- we'll allow specific exceptions.

  And what happens when you "make bread" when no bread making
materials are present?

A simpler approach is define a grammar; to state that commands must
follow a certain set of patterns of verbs, nouns, etc, and to check
against that.  Further, you abstract final authority to the server
(the one with all the data), and only use the client for light
weight pre-checking to exclude only the most obvious errors.  In
this way you catch the majority of the typos (90+% of fluffed
commands) at the client, and allow the server to do the real work it
was designed for.

-- 
J C Lawrence                              Internet: claw#kanga,nu
(Contractor)                             Internet: coder#kanga,nu
---------(*)                    Internet: claw#under,engr.sgi.com
...Honorary 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-->
<UL><LI><STRONG>References</STRONG>:
<UL>
<LI><STRONG><A NAME="00990" HREF="msg00990.html">[MUD-Dev] Re: Graphic design, client questions</A></STRONG>
<UL><LI><EM>From:</EM> Thinus Barnard &lt;thinus_barnard#bigfoot,com&gt;</LI></UL></LI>
</UL></LI></UL>
<!--X-References-End-->
<!--X-BotPNI-->
<UL>
<LI>Prev by Date:
<STRONG><A HREF="msg01026.html">[MUD-Dev] Re: Re[2]:[MUD-Dev] Re: MUD Design doc (long)</A></STRONG>
</LI>
<LI>Next by Date:
<STRONG><A HREF="msg01028.html">[MUD-Dev] Re: Graphic design, client questions</A></STRONG>
</LI>
<LI>Prev by thread:
<STRONG><A HREF="msg01028.html">[MUD-Dev] Re: Graphic design, client questions</A></STRONG>
</LI>
<LI>Next by thread:
<STRONG><A HREF="msg01050.html">[MUD-Dev] Re: Graphic design, client questions</A></STRONG>
</LI>
<LI>Index(es):
<UL>
<LI><A HREF="index.html#01027"><STRONG>Date</STRONG></A></LI>
<LI><A HREF="thread.html#01027"><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>[MUD-Dev] Re: Graphic design, client questions</STRONG>, <EM>(continued)</EM>
<ul compact>
<LI><strong><A NAME="00982" HREF="msg00982.html">[MUD-Dev] Re: Graphic design, client questions</A></strong>, 
Jo Dillon <a href="mailto:emily#thelonious,new.ox.ac.uk">emily#thelonious,new.ox.ac.uk</a>, Thu 17 Dec 1998, 17:56 GMT
</LI>
<LI><strong><A NAME="00990" HREF="msg00990.html">[MUD-Dev] Re: Graphic design, client questions</A></strong>, 
Thinus Barnard <a href="mailto:thinus_barnard#bigfoot,com">thinus_barnard#bigfoot,com</a>, Fri 18 Dec 1998, 10:51 GMT
<UL>
<LI><strong><A NAME="00997" HREF="msg00997.html">[MUD-Dev] Re: Graphic design, client questions</A></strong>, 
Sunny Gulati <a href="mailto:sunnywiz#radiks,net">sunnywiz#radiks,net</a>, Fri 18 Dec 1998, 18:46 GMT
<UL>
<LI><strong><A NAME="01028" HREF="msg01028.html">[MUD-Dev] Re: Graphic design, client questions</A></strong>, 
J C Lawrence <a href="mailto:claw#under,engr.sgi.com">claw#under,engr.sgi.com</a>, Mon 21 Dec 1998, 22:53 GMT
</LI>
</UL>
</LI>
<LI><strong><A NAME="01027" HREF="msg01027.html">[MUD-Dev] Re: Graphic design, client questions</A></strong>, 
J C Lawrence <a href="mailto:claw#under,engr.sgi.com">claw#under,engr.sgi.com</a>, Mon 21 Dec 1998, 22:47 GMT
</LI>
</UL>
</LI>
<LI><strong><A NAME="01050" HREF="msg01050.html">[MUD-Dev] Re: Graphic design, client questions</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
</LI>
<LI><strong><A NAME="00983" HREF="msg00983.html">[MUD-Dev] Re: Graphic design, client questions</A></strong>, 
Caliban Tiresias Darklock <a href="mailto:caliban#darklock,com">caliban#darklock,com</a>, Thu 17 Dec 1998, 19:05 GMT
<UL>
<LI><strong><A NAME="00995" HREF="msg00995.html">[MUD-Dev] Re: Graphic design, client questions</A></strong>, 
Jo Dillon <a href="mailto:emily#thelonious,new.ox.ac.uk">emily#thelonious,new.ox.ac.uk</a>, Fri 18 Dec 1998, 13:02 GMT
</LI>
</UL>
</LI>
<LI><strong><A NAME="01000" HREF="msg01000.html">[MUD-Dev] Re: Graphic design, client questions</A></strong>, 
Caliban Tiresias Darklock <a href="mailto:caliban#darklock,com">caliban#darklock,com</a>, Fri 18 Dec 1998, 21:21 GMT
</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>