Re: [CODE] [REQUEST] Automapper

From: Erwin S. Andreasen (erwin@PIP.DKNET.DK)
Date: 05/18/98


On Mon, 18 May 1998, Mark A. Heilpern wrote:

> >Wow. Real Hard. Just incorperate the map into the description.

> One word: lame.
> Ok, more than one word. Can you say you NEVER plan to link
> into existing rooms, or that you don't care about the royal nightmare
> it is to change your descriptions when you do?

Indeed. Here is something I have written earlier about this, which
describes one possible implementation.

Oh yeah, I have implemented line-of-sight too (the math involved was
painful), so you do not see what is behind those mountains, however, this
cut/paste was with my Admin character that had X-Ray vision :) ) as well
as max viewing range based on things like lightsource, shape, various
skills, spells etc. The latter is done by picking a spot in a table, where
each element is a mask that is overlayed on the full map.

The mail was apparently originally sent to this list, then forwarded to
ROM, and now it has returned to here again.. :)


Date: Sat, 3 Jan 1998 03:35:31 +0100 (MET)
From: "Erwin S. Andreasen" <erwin@pip.dknet.dk>
To: John <s0215794@cc.ysu.edu>
cc: rom <rom@rom.org>
Subject: Re: 2 questions [overworld & random area generator]

On Fri, 2 Jan 1998, John wrote:

> has anyone successfully implimented either of these features?

Here's the latest I could find in which I explain a wilderness area
interconnecting areas. It's not the first time I've written about this,
maybe you can find some more info in some archives for the ROM list.

Sample of what it looks like you you're in the wilderness area:

>> at 40,20 l
""""|""""    Forest [54040, forest] x=40, y=20
@--------    A forest of trees stands here, rising up to
"""""""""    the sky and sheltering the earth below, where
"""""""""    numerous creatures make their home.
TTTT*T""T
TT%X%TTTT
%%%%%%%%%
%%%%%^^TT
TTTTTTTTT

(It looks nicer with color)

On Mon, 29 Dec 1997, StormeRider wrote:

> We're talking maps outside of the cities. The idea of a few rooms
> connecting areas that should be long distances apart, IMHO, is bullshit. =)

Some info about how I've implemented a wilderness on AR:

Wilderness is a dedicated area, limited to 200x50 in size. You can from an
X/Y coordinate derive the room vnum (e.g. 50000 + x + y * 200) and thus
drawing a map centered on the character is quite easy: if the character is
standing in 12,12, the point right to the north is 12,11 , the one to the
right of that 13,11 etc.

Each room has a legend field and a color field. The map was originally
made with acidDraw,saved as some binary format and converted to another
binary format which is read in by the MUD

Rooms get a default description depending on sector type/color. If someone
changes a room, it will be saved as other rooms in area files, as long as
it's unchanged, it only saves as some 8 bytes of data in the binary file

Exits in the wilderness are virtual: a getExit method returns a pointer to
a static Exit structure: since we know that the room to the east of room
(12,12) is (13,12) there is no need to allocate 40,000 exit structures for
those exits

The 10,000 rooms take up a good chunk of memory: however having them be
real rooms gives flexibility (e.g. you can add mob/object resets in them,
add real exits (that then override the virtual ones) and all code that
does something to rooms needs no changing.

Bad things about this implementation: It's nearly impossible to expand the
map to be larger once the size is set. Big memory use (though the rest of
the MUD takes up 27mb, so another mb does not concern me).

The map draw includes things like LOS and lighting too, so you cannot see
behind those mountains, can see farther while standing on a hilltop, etc.

Landmarks make navigating around the wilderness easier: a certain command
will reveal things like: "You see a flaming tower far to the northeast"
even when the flaming tower is outside the range of the drawn map.

Area connections are made by simply creating a real exit in the room
leading to some actual area: the real exits override the virtual ones.

A more in-depth walk-through of the implementation will, I hope, appear
some day soon in my MERC Programming FAQ at
http://www.abandoned.org/drylock/faq/.

[ NOTE: That day has not come yet :) ]

 =============================================================================
Erwin Andreasen   Herlev, Denmark <erwin@pip.dknet.dk>  UNIX System Programmer
<URL:http://www.abandoned.org/drylock/>     <*>         (not speaking for) DDE
 =============================================================================


     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
     +------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 12/15/00 PST