[MUD-Dev] Re: MapMaker

Joel Kelso joel at ee.uwa.edu.au
Fri Jul 10 13:27:16 CEST 1998


S. Patrick Gallaty wrote:

> Warning - code post.
>
> Okay, there's a project I've been working on for 4 years on and
> off.. the concept is this :
>
> "Array based virtual map manager with dynamic room object
> configuration and automatic garbage collection."

Bravo.  Its good too see someone actually _do_ this: I too have been
thinking about this for a few years.  Allow me to make some unhelpful
comments from the sidelines.

> The idea is this - you take a text representation of a 2-d map
> and the head_object reads this map in.  When someone wants to
> enter the map they call a function in the head_object which
> includes the x,y location on the map they wish to go.

#1    Have several different methods of generating your mapdata, and
allow maps to be layered on top of each other.  When
a request comes in for data on a particular co-ordinate, use the
top-most map that covers the spot.  Your backdrop maps could
be uniform, coursely mapped or fractally generated.  On top
of these could be your special area maps for towns (with data
taken from the sorts of text map you describe), buildings
etc; and on top of this a "dropped object map" that keeps track
of loose objects (this one would be dynamic and keep a
dictionary of location/contents mappings).  The first layer is
static and can be compressed as you like (using fractal terrain,
quad trees or whatever).  You might like to keep the second
layer static, and record "damage" in a separate map, or have
it dynamic.


> The map checks to see if an object is in fact loaded into
> the managed array of rooms, and if so moves the player into
> it with all due move messages.
> If there isn't, it goes through a series of complex iterations
> to determine the long() of the room based on the surrounding
> 'rooms' and their calculated appearance so that each room
> seems to describe its surroundings and is interesting
> and different.
> Also, objects on the map that have special properties for
> high visibility get included in the long description
> for surrounding rooms if they have the right functions
> to return their far_short() etc.
>
> For example
>
> You are standing at the edge of the sea.  To the west and
> north you hear the sound of breaking waves.  To the east
> you see a grassy plain.  To the south you see a sparse
> forest.
> In the distance to the north you see dark tower.
>
> and the resultant text map to create this virtual room
> would be something like :
>
> . . -
> . - '
> . % %
>
> I am going to port this code to a workmud first, and get
> the bugs out of it and then use it on EOTL to fulfill
> one of my alltime favorite unfinished projects - which is
> a random dungeon a la nethack for LP Mud.
>
> This code came out of a desire to be able to make very
> large outdoor areas in a sensible way.  I realized that
> I could also use it for my other sinister purposes.
>
> The rooms in the map are only created when a player moves
> into the room, and expire after a while (definable) and
> clean themselves up.

Presumably your room timers reset when someone enters theroom.  What do
you do with dropped objects, delete them,
move them to a lost-and-found ?


> take you on a tour of an amusing 1600 room overland map :)

Hey, anyone want to see if they can get a Java 1.1 applet going:

http://ciips.ee.uwa.edu.au/~joel/fmap.html

Take a zooming, panning tour of a trillion square kilometers of
(bady) faked topography mapped down to 1 meter resolution :-)
I have plans for making the geography more interesting, and adding
climate and vegetation to the forged maps.

Joel Kelso

-- joel at ee.uwa.edu.au -----------------------------------------------
"Wasn't it a four-year-old this time ? It makes me feel like standing
 in the middle of the Atlantic with a megaphone and shouting:
 'America!  We know you're in there!  Put the guns DOWN!'"
    - Overheard Conversations
-- http://ciips.ee.uwa.edu.au/~joel ---------------------------------






More information about the mud-dev-archive mailing list