Map-making Guide:

Any area can have a submap, and anyone can make a map for their own areas. The only real requirement is that the area in question is zoned, as the map data will be stored on the ZMO (zone master object). With that in mind, lets jump right in.

The first step is to lay out the desired map as an ASCII drawing. Lets use the park as an example:

            Dock
             |
             |
             |
             |
             |
Bandstand---Lake     Garden
             |          |
             |          |
             |          |
             |          |
             |          |
          Grassy----Entryway-----Oak-----Sakura----Fountain
           Hill         |        Path     Path
             |          |
             |          |
             |          |
             |        Main
         Playground   Gate
                       /
                      /
                   VILLAGE

Pretty, isn't it? You can really lay this out any manner you like, though working along a vertical/horizontal layout is easier by far, as we'll cover later in.

Okay, next, lets set up a few settings on the ZMO. Here, you'll want to parent the ZMO to the Map Parent (#4642). You'll also want to set the VISUAL flag and unset the NO_COMMAND flag. The &CAPTION attribute will store the title of the submap, which is displayed at the top when viewed. One last optional attribute you can set is &SKY; this is used if your area is outdoors, and will set a specific destination in the sky area for flying, rather than defaulting to over the Village Center.

You will also need to set &HSIZE and &VSIZE to the horizontal and vertical sizes of the map you drew above (number of characters wide and tall, respectively). You may wish to use an editor that tells you what line/column the cursor is on to simplify this, and it'll come in handy for later steps. It's generally recommended to keep maps within 80 characters wide and 24 lines tall, to conform with default terminal display sizes.

What we have so far:

@parent Yuriba Park=#4642
@set Yuriba Park=VISUAL
@set Yuriba Park=!NO_COMMAND
&CAPTION Yuriba Park=Yuriba Park
&HSIZE Yuriba Park=60
&VSIZE Yuriba Park=22

With the bare bones layed out, on the the next step. You can do the next two parts in either order, but I find this way easier to double-check things as you go along.

Remember how I said a vertical/horizontal layout is easier? That's because lines (that is, paths between rooms) in those directions are easier to lay out. Diagonals are possible, and inevitable for some things, but are more work to create.

In our map up above, we have four lines, two vertical, and two horizontal (room labels are placed atop lines drawn, so you can extend single lines through where places will go; otherwise we'd be writing out five of each), and one diagonal. We'll deal with the last towards the end, as they're treated differently.

Lines are stored in two attributes, &HLINES and &VLINES. Each attribute holds a list of !-seperated values representing each line. A line is represented by a coordinate set; 'v,h1-h2' for horizontal lines, and 'h,v1-v2' for vertical. In our example, the leftmost vertical line is in column 14, and runs from row 2 to row 18. This would be represented by '14,2-18'. The upper horizontal line is in is in row 7, and runs from column 10 to column 12. This would give us '7,10-12'.

Lets set up the rest for our example:

&HLINES Yuriba Park=7,10-12!13,17-52
&VLINES Yuriba Park=14,2-18!25,8-17

If you looked at the map right now with just that set, you'd see this:


             |
             |
             |
             |
             |
         --- |
             |          |
             |          |
             |          |
             |          |
             |          |
             |  --------+--------------------------
             |          |
             |          |
             |          |
             |          |
             |




Not a bad start! Lets add some places next.

Each room on the map is given it's own label, saved in the following format:

&LABEL_R<DBREF#> <ZMO>=<X>|<Y>|<NAME>`<COLOR>

Or, for names taking up two lines:

&LABEL_R<DBREF#> <ZMO>=<X1>|<Y1>|<NAME1>!<X2>|<Y2>|<NAME2>`<COLOR>

Rooms with names taking up more lines would simply continue the pattern.

While this may look a bit complicated, it really isn't. I'll explain a few of what these values mean using the Garden place on our example.

DBREF# is, obviously, the dbref# of the room:
#4027
ZMO is the zone object we're storing the map data on:
Yuriba Park
X is the line the name appears on in our ASCII mockup:
7
Y is the column of the first character of the name:
22
NAME is the name of the room as it appears on the map:
Garden
COLOR is the color the room will be highlighted with if you're present in the room, or the room someone else is in if using the locating function:
hr

So, this gives us:

&LABEL_R#4027 Yuriba Park=7|22|Garden`hr

And for a two-line pattern, here's the Grassy Hill:

&LABEL_R#3968 Yuriba Park=13|11|Grassy!14|12|Hill`hr

In fact, lets go ahead and fill in the rest while we're at it:

&LABEL_R#3975 Yuriba Park=1|13|Dock`hr
&LABEL_R#3978 Yuriba Park=7|1|Bandstand`hr
&LABEL_R#3972 Yuriba Park=7|13|Lake`hr
&LABEL_R#3954 Yuriba Park=13|21|Entryway`hr
&LABEL_R#3632 Yuriba Park=13|34|Oak!14|34|Path`hr
&LABEL_R#3959 Yuriba Park=13|42|Sakura!14|43|Path`hr
&LABEL_R#3962 Yuriba Park=13|52|Fountain`hr
&LABEL_R#3981 Yuriba Park=19|10|Playground`hr
&LABEL_R#3953 Yuriba Park=18|23|Main!19|23|Gate`hr
&LABEL_R#2384 Yuriba Park=22|20|VILLAGE`hr

Let's take another look at our map:

            Dock
             |
             |
             |
             |
             |
Bandstand---Lake     Garden
             |          |
             |          |
             |          |
             |          |
             |          |
          Grassy----Entryway-----Oak-----Sakura----Fountain
           Hill         |        Path     Path
             |          |
             |          |
             |          |
             |        Main
         Playground   Gate


                   VILLAGE

Whoops, VILLAGE is just floating off the bottom there, isn't it? Time to cover diagonal lines.

Really, these aren't anything more than a special room label, only we use #FALSE as the dbref, as it's not a real room, and just use the neccesary coordinates with '/' or '' as the name. Unfortunately, this means we have to include coordinates for every segment of the line, rather than a span like we can for vertical/horizontals.

This is also a good way to add any other designs that are part of the map, but aren't places (such as a compass arrow, or other decorative text).

Since we only have one such line in our example, with two segments, this is pretty easy. For longer lines, or many of them, however, it can be really, really tedious.

Thus, this gives us:

&LABEL_R#FALSE Yuriba Park=20|24|/!21|23|/`hr

We're almost done, there's only one thing left to cover.

Not all labels are simply a single room. Some are actually connections to other submaps and areas, as with VILLAGE in our example, which is really the room in the village submap that connects to the park. The map lets people locate others by finding them on the map, and highlighting their location in red if they're in the same submap. It's helpful to include a secondary label, showing if someone is in the zone linked to, rather than the specific room.

The format for these types of labels is as follows:

&LABEL_Z<ZONE DBREF#> <ZMO>=@R<ROOM DBREF#>`<COLOR>

A lot simpler than room labels, isn't it? Lets go over the values here, using the VILLAGE place in our example (convention for the mush holds that such labels are in all-caps, to distinguish them from normal rooms).

ZONE DBREF# is the dbref# of the ZMO of the linked area:
#6256
ZMO is the same as for room labels:
Yuriba Park
ROOM DBREF# is the dbref# of the linking room, the DBREF# from the corresponding room label:
#2384
COLOR is, again, the color used for highlighting; we use a different shade for these:
hy

So, lets put it all together:

&LABEL_Z#6256 Yuriba Park=@R#2384`hy

And with that, our map is done!

                         Yuriba Park                         
                                                             
             Dock                                            
              |                                              
              |                                              
              |                                              
              |                                              
              |                                              
 Bandstand---Lake     Garden                                 
              |          |                                   
              |          |                                   
              |          |                                   
              |          |                                   
              |          |                                   
           Grassy----Entryway-----Oak-----Sakura----Fountain 
            Hill         |        Path     Path              
              |          |                                   
              |          |                                   
              |          |                                   
              |        Main                                  
          Playground   Gate                                  
                        /                                    
                       /                                     
                    VILLAGE                                  
@parent Yuriba Park=#4642
@set Yuriba Park=VISUAL
@set Yuriba Park=!NO_COMMAND
@power Yuriba Park=See_All
&SKY Yuriba Park=#4980
&CAPTION Yuriba Park=Yuriba Park
&HSIZE Yuriba Park=60
&VSIZE Yuriba Park=22
&HLINES Yuriba Park=7,10-12!13,17-52
&VLINES Yuriba Park=14,2-18!25,8-17
&LABEL_R#FALSE Yuriba Park=20|24|/!21|23|/`hr
&LABEL_R#3975 Yuriba Park=1|13|Dock`hr
&LABEL_R#3978 Yuriba Park=7|1|Bandstand`hr
&LABEL_R#3972 Yuriba Park=7|13|Lake`hr
&LABEL_R#4027 Yuriba Park=7|22|Garden`hr
&LABEL_R#3968 Yuriba Park=13|11|Grassy!14|12|Hill`hr
&LABEL_R#3954 Yuriba Park=13|21|Entryway`hr
&LABEL_R#3632 Yuriba Park=13|34|Oak!14|34|Path`hr
&LABEL_R#3959 Yuriba Park=13|42|Sakura!14|43|Path`hr
&LABEL_R#3962 Yuriba Park=13|52|Fountain`hr
&LABEL_R#3981 Yuriba Park=19|10|Playground`hr
&LABEL_R#3953 Yuriba Park=18|23|Main!19|23|Gate`hr
&LABEL_R#2384 Yuriba Park=22|20|VILLAGE`hr
&LABEL_Z#6256 Yuriba Park=@R#2384`hy