Hello, All.
First time poster here.  I've had over 2 years to muck around in ROM's code
and a fraction of that to lurk on the list, so I thought it's about time I
gave a little back.  Here goes...  (Warning, semi-long email follows)

The reason it's difficult to do this with ROM is the exit/room structure
itself.  Not the data structures, but the way they work.  The whole idea
behind the current system (IMHO) is flexibility, and in this situation that
very flexibility bites you in the butt.
This flexibility allows a room to link to itself (exit leaves north and
arrives south into the same room) and for "return" exits to lead in
different directions than they originated (exit leaves north and arrives
east).  It also allows what I like to think of as "variable distance" exits.
For example...

Room 100 links East/West to room 101
Room 101 links East/West to room 102
Room 102 links North/South to room 103
Room 103 links East/West to room 104
Room 104 links North/South to room 100

This would (intelligently) give you a map like this if you were standing in
room 100:
( * = room, --- = exit between rooms, @ = you )


104       103
*---------*
|         |
@-----*---*
100  101  102

but with a "simple" mapping algorithm (that doesn't understand distance
properly) if standing in room 100 would look like

104   103
*-----*
|     |     |
@-----*-----*
100   101   102

Ouch.  103 and 101 do NOT link to eachother and 102 actually links to 103,
not "empty space"!!!  Why?  In reality, the exit link between Room 103 and
104 is "longer" than that between 100 and 101 or between 101 and 102.
That's why you'll (almost) never see a "quick and easy" snippet for mapping
an area.  ROM allows too many difficult to map situations to make an easy
snippet.

Sorry for that bad news, but now some ideas -

1. Implement a "distance" value for each exit and make a way to map
"variable distance" exits correctly.  A.k.a., the exit between room 103 and
104 would have a distance of 2 and the rest would have a distance of 1 so
the mapper will make the "exit line" between 103 and 104 longer.  (This
requires a custom mapping function and editing of all areas in your mud -
not a very fun thing, but would be the most rewarding IMHO.)
2. Create static maps and print out a part of that map based upon what room
the player is in. (Maybe the easiest.)
3. Move the ROM areas to a coordinate locked system that doesn't allow all
of ROM's nifty exit features (self-linking rooms, "variable length" exits,
etc...) and requires all rooms and exits to fit nicely on the "grid".  (Ick!
Yuck! Nasty!)

Questions, comments?  Fire away!

Tony

> I saw an ascii map on a mud one time and the map itself had an area of
> about 5 x 5 rooms, with the current room you were in being in the middle
> of the map. I found a snippet for an ascii map, but the map doesn't go
> further than the next room over. Is anyone familiar with this snippet and
> if so, has anyone made any adjustments to it? If not, does anyone have
> their own piece of code they are willing to share?
>
> Thanks,
> Noose
>
>
> --
> ROM mailing list
> [email protected]
> http://www.rom.org/cgi-bin/mailman/listinfo/rom
>


Reply via email to