1997Q1/
<!-- MHonArc v2.4.4 -->
<!--X-Subject: Re: Just a bit of musing -->
<!--X-From-R13: pbqreNvoz.arg -->
<!--X-Date: from babe.globecomm.net [207.51.48.8] by mx3.ibm.net id 857328464.67544&#45;1 Sun Mar  2 18:47:44 1997 -->
<!--X-Message-Id: 199703021852.SAA149513#out1,ibm.net -->
<!--X-Content-Type: text/plain -->
<!--X-Reference: 199702271506.PAA145886#out1,ibm.net -->
<!--X-Head-End-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>MUD-Dev message, Re: Just a bit of musing</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>
[&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="msg00036.html">Previous</a>
&nbsp;|&nbsp;<a href="msg00038.html">Next</a>
&nbsp;]
&nbsp;&nbsp;&nbsp;&nbsp;
Thread:&nbsp;
[&nbsp;<a href="msg00036.html">Previous</a>
&nbsp;|&nbsp;<a href="msg00038.html">Next</a>
&nbsp;]
&nbsp;&nbsp;&nbsp;&nbsp;
Index:&nbsp;
[&nbsp;<A HREF="author.html#00037">Author</A>
&nbsp;|&nbsp;<A HREF="#00037">Date</A>
&nbsp;|&nbsp;<A HREF="thread.html#00037">Thread</A>
&nbsp;]

<!--X-TopPNI-End-->
<!--X-MsgBody-->
<!--X-Subject-Header-Begin-->
<H1>Re: Just a bit of musing</H1>
<HR>
<!--X-Subject-Header-End-->
<!--X-Head-of-Message-->
<UL>
<LI><em>To</em>: &lt;<A HREF="mailto:mud-dev#null,net">mud-dev#null,net</A>&gt;</LI>
<LI><em>Subject</em>: Re: Just a bit of musing</LI>
<LI><em>From</em>: <A HREF="mailto:coder#ibm,net">coder#ibm,net</A></LI>
<LI><em>Date</em>: Sun, 02 Mar 97 10:32:05 -0800</LI>
</UL>
<!--X-Head-of-Message-End-->
<!--X-Head-Body-Sep-Begin-->
<HR>
<!--X-Head-Body-Sep-End-->
<!--X-Body-of-Message-->
<PRE>

On 27/02/97 at 08:17 AM, "Carter T Shock" &lt;ctso#umiacs,umd.edu&gt; said:
&gt;I'll never understand why mud-folk have an overwhelming need to
&gt;explicitly grid the world. That is, determine a minimum feature size (a
&gt;room, a grid square, etc.) and then index one description for each cell
&gt;in the grid.

Its simple and brain-cheap and thus attractive.  The problem I think is
not in "gridding the world", but in defining the world as a 2D/3D array,
as versus a sparse coordinate space.

&gt;It seems to me that
&gt;what you really have is a small-scale GIS, so why not use the techniques
&gt;found in other GIS implementations?

For me, a major concern with literally taking a GIS approach (I used to
write 3rd party CAD applications for the MIcrostation market, so I have
some feel for the area) is that it enforces geometric consistancy. 
Realising I'm a rebel here, I think this is a Bad Thing.  I specifically
want to be able to easily represent mobius strips, Dr Who TARDIS'es
(bigger inside than out), and other such spatial violations.  To me they
make a bit part of the fun of designing/discovering the map of a world or
area.

What I've been playing with instead is a idea where there is a base
coodinate system, but where new (child/grandchild/etc) fully fledged
coodinate systems of equal or smaller resolution to the parent system can
be defined as occupying a given space withing its parent system.  

Transition from that point to a pure classic room based system shouldn't
be TOO hard.

&gt;The digital nature of things means that there has to be at least an
&gt;implicit gridding to the system. All that means is that there is some
&gt;finite number of locations that any object may occupy. So we'll give
&gt;everything a pair of coordinates. To keep it easy we'll go 2-D and use a
&gt;pair of 16 bit values for about 4 billion distinct locations. Since we
&gt;don't want to explicitly code descriptions for each of the 4 billion
&gt;locations, we'll use some spatial data structure (point quadtrees come to
&gt;mind) to index objects, critters, and players. It's small, relatively
&gt;compact and let's you do neato things like determine the distance to
&gt;another object, find the closest object etc.

I'd be much more tempted to use an R*-tree.  Most MUD calculations are
based on proximity, avilable reference, and similar.  Additionally noes
tend to very unevely distributed over the spatial matrix (busy city /empty
desert).  This makes a Quadtree comparitively expensive where large
sections would wastefully recurse down to define empty deserty, and others
would recurse very efficiently to define a highly detailed city.  At least
an R*-Tree allows a little more intelligent balancing.  

&gt;Implement terrain features as thematic layers. Something simple like a
&gt;region quadtree for each terrain type would do nicely. Again, they're
&gt;small and efficient. ("one entry" in the region quadtree is the whole
&gt;forest, rather than having to mark each individual location as
&gt;forest/non-forest). No reason some terrain types can't overlap. Now when
&gt;a person moves, you intersect their new location with the various themes.
&gt;For each one that qualifies, you send a description. (i.e. if the
&gt;player's location is coincident on a region in your forest theme, and the
&gt;person is "outside", you add a line to any other descriptions sent that
&gt;says "Yer in a forest". If they are "inside" skip the step.
&gt;Interestingly, you can use this same kind of trick to let them look out a
&gt;window)

Ignoring the logic problems of incompatable terrain types, apparently
inconsistant terrain (forests inside an aboreatum, lakes etc inside a
RAMA-style colony ship (or screw it, localised gravity distortions)) etc. 


&gt;The idea extends to 3 dimensions as well, but computational overhead goes
&gt;_way_ up. But, if you host your mud on a bruiser machine, no reason not
&gt;to.

Yeah.  This is the one I want to minimise.

&gt;Sorry for the long post,

Hehn.  Nahh, its great.  It helps keep the signal ration high.

-- 
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="msg00036.html">Re: Just a bit of musing</A></STRONG>
</LI>
<LI>Next by Date:
<STRONG><A HREF="msg00038.html">Re: Just a bit of musing</A></STRONG>
</LI>
<LI>Prev by thread:
<STRONG><A HREF="msg00036.html">Re: Just a bit of musing</A></STRONG>
</LI>
<LI>Next by thread:
<STRONG><A HREF="msg00038.html">Re: Just a bit of musing</A></STRONG>
</LI>
<LI>Index(es):
<UL>
<LI><A HREF="index.html#00037"><STRONG>Date</STRONG></A></LI>
<LI><A HREF="thread.html#00037"><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: Just a bit of musing</STRONG>, <EM>(continued)</EM>
<ul compact>
<LI><strong><A NAME="00031" HREF="msg00031.html">Re: Just a bit of musing</A></strong>, 
Chris Gray <a href="mailto:cg#ami-cg,GraySage.Edmonton.AB.CA">cg#ami-cg,GraySage.Edmonton.AB.CA</a>, Sun 02 Mar 1997, 02:19 GMT
</LI>
<LI><strong><A NAME="00032" HREF="msg00032.html">Re: Just a bit of musing</A></strong>, 
Chris Gray <a href="mailto:cg#ami-cg,GraySage.Edmonton.AB.CA">cg#ami-cg,GraySage.Edmonton.AB.CA</a>, Sun 02 Mar 1997, 02:19 GMT
</LI>
<LI><strong><A NAME="00035" HREF="msg00035.html">Re: Just a bit of musing</A></strong>, 
GnomesHome <a href="mailto:GnomesHome#aol,com">GnomesHome#aol,com</a>, Mon 03 Mar 1997, 00:15 GMT
</LI>
<LI><strong><A NAME="00036" HREF="msg00036.html">Re: Just a bit of musing</A></strong>, 
coder <a href="mailto:coder#ibm,net">coder#ibm,net</a>, Mon 03 Mar 1997, 02:35 GMT
</LI>
<LI><strong><A NAME="00037" HREF="msg00037.html">Re: Just a bit of musing</A></strong>, 
coder <a href="mailto:coder#ibm,net">coder#ibm,net</a>, Mon 03 Mar 1997, 02:47 GMT
</LI>
<LI><strong><A NAME="00038" HREF="msg00038.html">Re: Just a bit of musing</A></strong>, 
coder <a href="mailto:coder#ibm,net">coder#ibm,net</a>, Mon 03 Mar 1997, 03:05 GMT
</LI>
<LI><strong><A NAME="00039" HREF="msg00039.html">Re: Just a bit of musing</A></strong>, 
coder <a href="mailto:coder#ibm,net">coder#ibm,net</a>, Mon 03 Mar 1997, 03:13 GMT
</LI>
<LI><strong><A NAME="00042" HREF="msg00042.html">Re: Just a bit of musing</A></strong>, 
Dmitri Kondratiev <a href="mailto:dima#paragraph,com">dima#paragraph,com</a>, Mon 03 Mar 1997, 09:36 GMT
</LI>
<LI><strong><A NAME="00045" HREF="msg00045.html">Re: Just a bit of musing</A></strong>, 
Carter T Shock <a href="mailto:ctso#umiacs,umd.edu">ctso#umiacs,umd.edu</a>, Mon 03 Mar 1997, 21:22 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>