<!-- MHonArc v2.4.4 --> <!--X-Subject: Re: [MUD-Dev] Room-based vs. coordinate-based --> <!--X-From-R13: Oqnz Ivttvaf <avtugsnyyNvasvpnq.pbz> --> <!--X-Date: from scipio.globecomm.net [207.51.48.12] by in12.ibm.net id 865341096.30278-1 Tue Jun 3 12:31:36 1997 CUT --> <!--X-Message-Id: 199706031240.FAA23096#user2,inficad.com --> <!--X-Content-Type: text/plain --> <!--X-Reference: 3399f534.728119540@neptune --> <!--X-Head-End--> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <html> <head> <title>MUD-Dev message, Re: [MUD-Dev] Room-based vs. coordinate-based</title> <!-- meta name="robots" content="noindex,nofollow" --> <link rev="made" href="mailto:nightfall#inficad,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> [ <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="msg01095.html">Previous</a> | <a href="msg01097.html">Next</a> ] Thread: [ <a href="msg01059.html">Previous</a> | <a href="msg01099.html">Next</a> ] Index: [ <A HREF="author.html#01096">Author</A> | <A HREF="#01096">Date</A> | <A HREF="thread.html#01096">Thread</A> ] <!--X-TopPNI-End--> <!--X-MsgBody--> <!--X-Subject-Header-Begin--> <H1>Re: [MUD-Dev] Room-based vs. coordinate-based</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-Dev] Room-based vs. coordinate-based</LI> <LI><em>From</em>: Adam Wiggins <<A HREF="mailto:nightfall#inficad,com">nightfall#inficad,com</A>></LI> <LI><em>Date</em>: Tue, 3 Jun 1997 05:40:20 -0700 (MST)</LI> <LI><em>Reply-To</em>: <A HREF="mailto:nightfall#inficad,com">nightfall#inficad,com</A></LI> </UL> <!--X-Head-of-Message-End--> <!--X-Head-Body-Sep-Begin--> <HR> <!--X-Head-Body-Sep-End--> <!--X-Body-of-Message--> <PRE> [Alex O:] > I have some questions regarding a room-based vs. a coordinate-based MUD issues > (*) Ease of coding and efficiency. > Room-based seems much more efficient and easier to code. Well, it depends. In a limited scope, yes. On a broad scope, no. That is - muds (and textadventure games, etc) now are of limited scope. There's a certain number of things you can do, and that's it. What I've found, over the course of creating my own, more ambitious project, is that a more flexible system is ALWAYS easier in the long run. Every time you go to add something new to a limited system, you find yourself having to hack the system a little bit more to try to make it work. A flexible system is able to absorb the new feature(s) seamlessly. > Coordinate-based will require proximity calculations on almost any activity or > command (in room-based I can just assume that objects inside a "room" containe > are close to each other). Motion, visibility, etc. becomes more complex. Yes, absolutely. Here's the thing: once you code these things, and assuming you code them correctly, they will work forever. That is, if you add some new thing that you hadn't planned on, your simple visibility code will still work. A simple but rigid system is usually based on assumptions like "players will always be able to see X distance" or "players will always be able to interact with things X far away." What happens when you, say, add airplanes to a room-based system? The players can't see the planes because they are hundreds of rooms above them - yet they should be able to. You will end up 'hacking' the system to allow for this special case. What about when you add infrared goggles? Now players can see 'through' walls - a simple change to a visibility system to consider heat the vehicle for vision, instead of light. Probably a room-based system (again, as it is done on normal muds) will require yet more hacking. > (*) Combat. > > Coordinate-based makes ranged attacks, closing-in, retreats, etc. simpler to > implement (any ideas how to handle this in a room-based system?). Yes. Rooms are vague. Coordinates are specific. Coordinates are 'harder' to begin with, because you can't ever fake something - everything is at fixed distances and positions, so you _must_ take into account these things for anything you do. Rooms have the advantage of just figuring, "Yeah, he's in the room, he must be close enough." But of course, as soon as you want to do anything more complex (like combat), you find that this starts to become a hinderance instead of a help - you *want* to know how close they are, how they are positioned, etc. > Also, consider the following sniplets (in the context of room vs. coordinate): > > [JCL:] > } The big reason for this is that I am > } working hard to totally lose the concept of rooms. As such I actively > } want to support two players fighting who are also seperated by the > } entire width of the land, a couple rooms apart, or right beside each > } other. > > [Adam:] > } > notch arrow bow > } You notch a wooden arrow into your bow. > } > shoot north orc > } [Here 'bow' and 'arrow' are already in your list of objects recently accessed] > } You fire a wooden arrow north at the orc. > } > notch > } [Here everything it wishes to know is already in your list...] > } You notch a wooden arrow into your bow. > } > shoot > } [Same thing - it just so happens the orc has moved west.] > } You fire a wooden arrow west at the orc. We have rooms. Partially because we started creating areas that way, areas that I like, and I like the handcrafted effect of rooms. We also have coordinates and ranges for purposes of combat, line-of-sight, and so on. If I were to start another project from scratch, I'd probably ditch rooms altogether. They are a nice abstraction, for now, particularly being limited to text. > (*) Area effects. > > How will I handle "Boffo arrives from the north" type of messages? Again, this is one of those things that's somewhat complex to design and code in the first place, but once you do it, you've taken care of it forever - no special code to handle things like sneaking, flying, arrows whizing by, and so on. You just have a simple visual unit attached to each character. This visual unit has properties - how much it notices, what its field of view is, what the medium for viewing is (this means that sound and smell are also 'visual' units - perhaps a better name is sensory unit), how detailed the unit is, what the range is, and so forth. This will 'notice' things and send the user a message based on a lot of different variables, producing something as simple as 'Boffo walks in from the north' to 'A dark shape passes by, far overhead' and 'A strange and unpleasant odor drifts in from somewhere off to your right.' None of this requires 'special' code, once you've created the sensory unit. All you need to do is outline the properties of the character's senses, and then the outputs of other objects. (Ie, things need to put off a smell, put off a heat signature, and so on.) > Room-based (or, rather, "container-based") has an advantage here. A container > may send messages to the objects it contains. In a coordinate-based system I > will need to consult a "map" of object locations to determine message > recipients. Or am I wrong? Yup. You're right. But again, with containers, you need special code - if someone is talking inside that tent, shouldn't others nearby but not inside the tent be able to hear? These sorts of things are either speciality coded in room-based, or (more likely) just ignored as being unimportant (which is probably not that bad of an assumption in many cases). > (*) Movement. > > What will be the difference between "north" and "run north" in a room-based an > a coordinate-based systems? This becomes an arbitrary definition. For one thing, it's easier to actually do things like "run to the building" than it is "north". You can set north to map to "turn towards what I think is north" and then "walk a given distance", of course. > Coordinate-based systems also seem to imply finer movement granularity > (closing-in for combat vs. walking towards the mountain) and therefore, > additional user commands may be needed to realize this. Absolutely. Is this bad? I don't think so. There is a certain simplicity to the n, e, s, w, u, d system, which I really like. Some time ago (might have even been on Wout's list, now that I think of it) we were arguing over this. I dislike arbitrary exits. Co-ordinates are the ultimate in non-arbitrary exits, since everything has a very specific position in 3D space. Making a good use interface for this is certainly tricky, however. </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="01059" HREF="msg01059.html">Room-based vs. coordinate-based</A></STRONG> <UL><LI><EM>From:</EM> alexo#bigfoot,com (Alex Oren)</LI></UL></LI> </UL></LI></UL> <!--X-References-End--> <!--X-BotPNI--> <UL> <LI>Prev by Date: <STRONG><A HREF="msg01095.html">Re: [MUD-Dev] The reality of constant combat??</A></STRONG> </LI> <LI>Next by Date: <STRONG><A HREF="msg01097.html">Re: [MUD-Dev] Life</A></STRONG> </LI> <LI>Prev by thread: <STRONG><A HREF="msg01059.html">Room-based vs. coordinate-based</A></STRONG> </LI> <LI>Next by thread: <STRONG><A HREF="msg01099.html">Re: [MUD-Dev] Room-based vs. coordinate-based</A></STRONG> </LI> <LI>Index(es): <UL> <LI><A HREF="index.html#01096"><STRONG>Date</STRONG></A></LI> <LI><A HREF="thread.html#01096"><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] Re: Issues from the digests and Wout's list</STRONG>, <EM>(continued)</EM> <ul compact> <ul compact> <ul compact> <ul compact> <ul compact> <ul compact> <ul compact> <LI><strong><A NAME="00261" HREF="msg00261.html">Re: [MUD-Dev] Re: Issues from the digests and Wout's list</A></strong>, clawrenc <a href="mailto:clawrenc#cup,hp.com">clawrenc#cup,hp.com</a>, Mon 28 Apr 1997, 23:34 GMT <UL> <LI><strong><A NAME="00281" HREF="msg00281.html">Re: [MUD-Dev] Re: Issues from the digests and Wout's list</A></strong>, Shawn Halpenny <a href="mailto:malachai#iname,com">malachai#iname,com</a>, Tue 29 Apr 1997, 21:10 GMT <UL> <LI><strong><A NAME="00295" HREF="msg00295.html">Re: [MUD-Dev] Re: Issues from the digests and Wout's list</A></strong>, clawrenc <a href="mailto:clawrenc#cup,hp.com">clawrenc#cup,hp.com</a>, Wed 30 Apr 1997, 02:53 GMT </LI> </UL> </LI> </UL> </LI> </ul> <LI><strong><A NAME="01059" HREF="msg01059.html">Room-based vs. coordinate-based</A></strong>, Alex Oren <a href="mailto:alexo#bigfoot,com">alexo#bigfoot,com</a>, Tue 03 Jun 1997, 01:02 GMT <UL> <LI><strong><A NAME="01096" HREF="msg01096.html">Re: [MUD-Dev] Room-based vs. coordinate-based</A></strong>, Adam Wiggins <a href="mailto:nightfall#inficad,com">nightfall#inficad,com</a>, Tue 03 Jun 1997, 19:31 GMT </LI> <LI><strong><A NAME="01099" HREF="msg01099.html">Re: [MUD-Dev] Room-based vs. coordinate-based</A></strong>, Shawn Halpenny <a href="mailto:malachai#iname,com">malachai#iname,com</a>, Tue 03 Jun 1997, 22:43 GMT <UL> <LI><strong><A NAME="01153" HREF="msg01153.html">Re: [MUD-Dev] Room-based vs. coordinate-based</A></strong>, clawrenc <a href="mailto:clawrenc#cup,hp.com">clawrenc#cup,hp.com</a>, Thu 05 Jun 1997, 00:52 GMT <UL> <LI><strong><A NAME="01200" HREF="msg01200.html">Re: [MUD-Dev] Room-based vs. coordinate-based</A></strong>, Shawn Halpenny <a href="mailto:malachai#iname,com">malachai#iname,com</a>, Thu 05 Jun 1997, 23:44 GMT <LI><strong><A NAME="01237" HREF="msg01237.html">Re: [MUD-Dev] Room-based vs. coordinate-based</A></strong>, clawrenc <a href="mailto:clawrenc#cup,hp.com">clawrenc#cup,hp.com</a>, Thu 08 Jan 1970, 05:01 GMT </LI> </LI> </UL> </LI> </UL> </LI> </UL> </LI> </ul> </ul> </ul> </ul> </ul> </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>