<!-- MHonArc v2.4.4 --> <!--X-Subject: Re: Just a bit of musing --> <!--X-From-R13: "Qnegre F Eubpx" <pgfbNhzvnpf.hzq.rqh> --> <!--X-Date: from tacitus.globecomm.net [207.51.48.7] by mx4.ibm.net id 857049190.33130-1 Thu Feb 27 13:13:10 1997 --> <!--X-Message-Id: 199702271318.IAA21044#rosebud,umiacs.umd.edu --> <!--X-Content-Type: text/plain --> <!--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:ctso#umiacs,umd.edu"> </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="msg00012.html">Previous</a> | <a href="msg00014.html">Next</a> ] Thread: [ <a href="msg00012.html">Previous</a> | <a href="msg00014.html">Next</a> ] Index: [ <A HREF="author.html#00013">Author</A> | <A HREF="#00013">Date</A> | <A HREF="thread.html#00013">Thread</A> ] <!--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>: <<A HREF="mailto:mud-dev#null,net">mud-dev#null,net</A>></LI> <LI><em>Subject</em>: Re: Just a bit of musing</LI> <LI><em>From</em>: "Carter T Shock" <<A HREF="mailto:ctso#umiacs,umd.edu">ctso#umiacs,umd.edu</A>></LI> <LI><em>Date</em>: Thu, 27 Feb 1997 08:17:54 -0500</LI> </UL> <!--X-Head-of-Message-End--> <!--X-Head-Body-Sep-Begin--> <HR> <!--X-Head-Body-Sep-End--> <!--X-Body-of-Message--> <PRE> I'll never understand why mud-folk have an overwhelming need to explicitly grid the world. That is, determine a minimum feature size (a room, a grid square, etc.) and then index one description for each cell in the grid. A quick (I hope) counter-proposal... One of the major drawbacks to a grid based system is that everything has to occupy a(some) grid cell(s). An object has to be associated with the room it is in, and the room has to know about the object. Each room or location has an independent description, making for inconsistencies (the old bit where you step suddenly from forest to mountain, the difficulty of describing a location as a "forested mountain"). It seems to me that what you really have is a small-scale GIS, so why not use the techniques found in other GIS implementations? The digital nature of things means that there has to be at least an implicit gridding to the system. All that means is that there is some finite number of locations that any object may occupy. So we'll give everything a pair of coordinates. To keep it easy we'll go 2-D and use a pair of 16 bit values for about 4 billion distinct locations. Since we don't want to explicitly code descriptions for each of the 4 billion locations, we'll use some spatial data structure (point quadtrees come to mind) to index objects, critters, and players. It's small, relatively compact and let's you do neato things like determine the distance to another object, find the closest object etc. Implement terrain features as thematic layers. Something simple like a region quadtree for each terrain type would do nicely. Again, they're small and efficient. ("one entry" in the region quadtree is the whole forest, rather than having to mark each individual location as forest/non-forest). No reason some terrain types can't overlap. Now when a person moves, you intersect their new location with the various themes. For each one that qualifies, you send a description. (i.e. if the player's location is coincident on a region in your forest theme, and the person is "outside", you add a line to any other descriptions sent that says "Yer in a forest". If they are "inside" skip the step. Interestingly, you can use this same kind of trick to let them look out a window) Now we need rooms. Sticking with quadtrees for the moment, just implement one that holds rectangles. Each rectangle is a room and has a description associated with it. The nifty bits: You can encode a _lot_ of info in relatively small structures. The structures can preserve spatial relationships... i.e. if they throw or shoot something you know if it hits a wall just by extending a ray from the player's location and testing for intersections in your "room" structure. Use "windowing" operations in the spatial structures for area effects. No reason you can't have a thematic layer of non-magic areas, of lawful and chaotic areas. The idea extends to 3 dimensions as well, but computational overhead goes _way_ up. But, if you host your mud on a bruiser machine, no reason not to. Sorry for the long post, -Todd ---------- > From: Nathan Yospe <yospe#hawaii,edu> > To: Multiple Recipients of MUD Design Mailing List <mud-dev#null,net> > Subject: Just a bit of musing > Date: Wednesday, February 26, 1997 7:31 PM > > A thread on rec.games.mud.admin has recently turned to combat interaction. [snip] </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="msg00012.html">Re: Just a bit of musing</A></STRONG> </LI> <LI>Next by Date: <STRONG><A HREF="msg00014.html">Re: Just a bit of musing</A></STRONG> </LI> <LI>Prev by thread: <STRONG><A HREF="msg00012.html">Re: Just a bit of musing</A></STRONG> </LI> <LI>Next by thread: <STRONG><A HREF="msg00014.html">Re: Just a bit of musing</A></STRONG> </LI> <LI>Index(es): <UL> <LI><A HREF="index.html#00013"><STRONG>Date</STRONG></A></LI> <LI><A HREF="thread.html#00013"><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: Quadtrees?</STRONG>, <EM>(continued)</EM> <ul compact> <LI><strong><A NAME="00048" HREF="msg00048.html">Re: Quadtrees?</A></strong>, coder <a href="mailto:coder#ibm,net">coder#ibm,net</a>, Tue 04 Mar 1997, 14:53 GMT </LI> </ul> </LI> <LI><strong><A NAME="00009" HREF="msg00009.html">Just a bit of musing</A></strong>, Nathan Yospe <a href="mailto:yospe#hawaii,edu">yospe#hawaii,edu</a>, Thu 27 Feb 1997, 08:49 GMT <UL> <li><Possible follow-up(s)><br> <LI><strong><A NAME="00010" HREF="msg00010.html">Re: Just a bit of musing</A></strong>, Adam Wiggins <a href="mailto:nightfall#inficad,com">nightfall#inficad,com</a>, Thu 27 Feb 1997, 12:24 GMT </LI> <LI><strong><A NAME="00012" HREF="msg00012.html">Re: Just a bit of musing</A></strong>, coder <a href="mailto:coder#ibm,net">coder#ibm,net</a>, Thu 27 Feb 1997, 14:20 GMT </LI> <LI><strong><A NAME="00013" HREF="msg00013.html">Re: Just a bit of musing</A></strong>, Carter T Shock <a href="mailto:ctso#umiacs,umd.edu">ctso#umiacs,umd.edu</a>, Thu 27 Feb 1997, 21:13 GMT </LI> <LI><strong><A NAME="00014" HREF="msg00014.html">Re: Just a bit of musing</A></strong>, Wout Mertens <a href="mailto:Wout.Mertens#rug,ac.be">Wout.Mertens#rug,ac.be</a>, Thu 27 Feb 1997, 21:40 GMT </LI> <LI><strong><A NAME="00015" HREF="msg00015.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>, Fri 28 Feb 1997, 02:21 GMT </LI> <LI><strong><A NAME="00016" HREF="msg00016.html">Re: Just a bit of musing</A></strong>, Carter T Shock <a href="mailto:ctso#umiacs,umd.edu">ctso#umiacs,umd.edu</a>, Fri 28 Feb 1997, 03:18 GMT </LI> <LI><strong><A NAME="00017" HREF="msg00017.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>, Fri 28 Feb 1997, 10:13 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>