Area Mapping

From LSWiki

Revision as of 00:56, 11 July 2011; Bladestorm (Talk | contribs)
(diff) ←Older revision | Current revision | Newer revision→ (diff)
Jump to: navigation, search

There are two scenarios you will come across when developing an areas. One is making a completely new area, and another is revamping or updating a current area in the mud. The main difference between a new area and a revamp of a current area is the type of prep work involved. After that, a majority of the actual construction is the same.

Contents

Concept

New area

I'll fill this part in when I go through the process of adding a new area.

Revamped area

For this process, I am going to document each step of revamping Fort Boastt. It is not an area on its own, but it is one of the sub-areas of Devonshire. I don't know the original concept of the entirety of Devonshire, but the current depiction of Fort Boastt sets it in the desert, while mildly clashes with Devonshire's placement in Avalon. Before I finish updating Devonshire, I am moving all of the sub-areas into their own projects.

In order to determine the concept of the area, I need to go through all of the files that currently make up this portion of the area. This is summed up in ~Devonshire/rms/Fort.c and ~Devonshire/rms/fort*.c. I am not including the sroad* files, but from them, it distinctly states that the fort is in ruins. Walking through the area and looking over the room files, I compile a list of features that stand out for the area.

  • The area is in ruins.
  • There is a sense of a disaster that has taken place.
  • Formerly a fortified outpost, but the only thing left standing is a tower to the northwest and a few wilted plants.
  • There was a barracks. The upper level is inhabited by an ogre, the lower level contains a room filled with skeletal trophies, an enchanted ogre skeleton, and a well with acid in the bottom
  • The bottom level of the tower that remains standing smells of fresh earth and bodies. The middle layer is guarded by a giant spider and web. The upper level has some scrawled writing on the walls and has Heltu the Skeleton Lord.
  • The writing on the wall reads
   Bartziluth's curse for our cowardice,
   we die but do not rest.
   Away from sunlight to the depths below,
   If you don't know what's good for you,
   you better not go.


This forms the framework from which I will construct the newer version of this area.

Location

When determining where to place your area, keep in mind that it needs to fit into the surrounding region. In the control file of each region, there is a note at the top indicating the influences on the design of that region. Culture and topology also have an effect on the placement. In the case of Fort Boastt, the setting is a desert. At this time, the only desert is in Ebiria, which matches most of the descriptions found in the current version. Once the region is selected, the actual site must be chosen. To do this, I go to the region, walk around with a panoramicon, and get a feel for where nearby projects are located, and make the judgment form that information.

Initial project setup

Once you have performed your project setup, some of the basic files will already be in place, but not all of them. You are going to need in rms/ a Base.c and a Map_Base.c I usually copy those over from a pre-existing project and modify the names as needed. In def/ , you are going to need Map_Area_Base.c and Map_Overlay_Base.c, and again I just copy and change as I need. In the dat/ folder, you will need to set up a map.conf file.

In the dmn/control.c, you'll need to add in

//    set_base_exploration_experience(600);
//    set_start_location(Fort_Boastt_Room("m_0_0_0"));
/*    set_routing_gateway_discovery(({
       Fort_Boastt_Room("ngate"),
   }));*/
   set_definition_registration(([
       Fort_Boastt_Definition("map_*") : 0,
   ]));
   set_definition_unregistration(([
       Fort_Boastt_Definition("map_*") : 0,
   ]));
   // This sets the rooms into the virtual map
   add_extension(LS_Extension("map"), (:
       $1->set_base_room(Fort_Boastt_Room("Map_Base"));
       $1->set_room_prefix(Fort_Boastt_Room("m_"));
       $1->set_map_conf(Fort_Boastt_Data("map.conf"));
       $1->set_map_directionality(Map_Directionality_Extreme);
// Sorted by x coord, then y coord, then z coord, in descending order.
/*        $1->set_room_names(([
           ({  19,  18,   5 })             : file name,
           ({  -7,   1,   0 })             : file name,
           ({  -5,   3,   0 })             : file name,
           ({   1,   2,   0 })             : file name,
           ({  -5,  -2,   0 })             : Fort_Boastt_Room("store_room"),
       ]));*/
   :));
   /*
   set_routing_gateways(([
       "Fort_Boastt"                               : ([
           Fort_Boastt_Room("m_-15_5_0") : ({
               Fort_Boastt_Room("m_-6_-18_0"),
               "north",
           }),
       ]),
   ]));*/
   add_published_location(query_map_terrain_rooms(Terrain_Ground), Rarity_Very_Common, Location_Danger_Low);
/*    add_extension(LS_Extension("populace"), (:
       $1->set_preload_immediate(True);
       // Sorted alphabetically by room name, roughly.
//       $1->add_person(Fort_Boastt_NPC("heltu"), Fort_Boastt_Room("somewhere"));
//        return;
   :));
*/

The commented out stuff is not necessary to begin developing the area, but will be required for when the area goes live.

Fort Boastt is not going to need set_starting_location(), since it is not going to be an area that a player can start from. Since you are using the map extension, there is a built in pathfinding that is superior to "pathfinder", so there is no need for add_extension(LS_Extension("pathfinder")); delete that line.

Map

In setting up the map.conf file, I always use the same initial pattern. The top of every map.conf looks the exact same.

// Lysator, January 2011 Initial design
<X> 5
<Y> 5
<Z> 3
<FillerType> earth/earth/earth/surface/air 1/air 2/air 3

I start with a comment about when the project was started, and add on notes as I change things. The <x> 20 sets the x-axis from -20 to 20. Same goes for <Y>. The <Z> is a little different. If you want to work on just a single plane for your area, set this to zero. In <FillerType>, you are telling the virtual mapping program what the default map_area is for that z-axis. Whatever you set <A> at, <FillerType> must have something for each z-axis, so values for ((<Z> * 2) + 1).

For Fort Boastt, I am not going to need a lot of space to fill in, so I can set it to 5x5x3, and still have plenty of space to play with. On the 0 z-axis, that gives me 121 squares to work with.

For every terrain mention in <FillerType> and for every icon depicted in the actual maps, you are going to need to set up definitions.

Basic Files

Before you begin laying down anything on the map, there are a few basic files that you will need to already have in place. In the /rms dir, you are going to need Map.Base.c and Base.c Not a lot goes into these files, so I usually copy them from another project and change out the project names in these files. In the /def dir, you are going to need Map_Area_Base.c and Map_Overlay_Base.c Again, these can just be ripped from another project and renamed.

Definitions

The first two definitions I usually make are map_area_earth.c and map_area_air.c I may not use map_area_air.c once I have the various layers of the atmosphere defined out, but for initial setup it is essential. I also usually redo my <FillerType>in the map.conf file to be just earth and air, then set up the map.conf to look like this:

<X> 10
<Y> 10
<Z> 3

<FillerType> earth/earth/earth/earth/earth/air/air/air/air/air/air

<SpecifyArea 0>
eeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeeee
</SpecifyArea>

This grid sets every square individually to the earth filler type. <SpecifyArea 0> means it is the 0 z-axis. I always set the earth definition to have an icon of e. After the project goes live, the e can stand for an elevated region. Anyway, the basic map definition looks like this, but the longer, more preferred method looks like this.

Typically, I will add one map_area_definition at a time, first adding the map_area_definition, reloading it to make sure I don't already have that icon assigned, and then adding in the icon to the map.conf where applicable. Then I work logically through the different terrains I will need. I start with the basic ground cover which will expand over most of the area, in this case the open desert (icon o). This was one of the main features mentioned in the previous version on the road south of Devonshire. The map.conf changes to this:

<SpecifyArea 0>
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
</SpecifyArea>

The next major feature mentioned was the road. Roads can be handled either as a map_area or a map_overlay. I'll handle it as an overlay, and deal with it later. It tends to work out a lot easier as an overlay. I want to set up a butte (icon B) in the northern portion of the area so that I can set up the watch tower onto it. Since I want it raised to the next elevation, I need to show that in the map.conf as such:

<SpecifyArea 1>
111111111111111111111
111111111111111111111
1111BBBBB111111111111
111BBBBBBB11111111111
11BBBBBBBBB1111111111
11BBBBBBBBB1111111111
111BBBBBBB11111111111
1111BBBBB111111111111
111111111111111111111
111111111111111111111
111111111111111111111
111111111111111111111
111111111111111111111
111111111111111111111
111111111111111111111
111111111111111111111
111111111111111111111
111111111111111111111
111111111111111111111
111111111111111111111
111111111111111111111
</SpecifyArea>
<SpecifyArea 0>
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooeeeeeoooooooooooo
oooeeeeeeeooooooooooo
ooeeeeeeeeeoooooooooo
ooeeeeeeeeeoooooooooo
oooeeeeeeeooooooooooo
ooooeeeeeoooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
</SpecifyArea>

Since I altered only a few of the rooms in the first level of elevation, I made <SpecifyArea 1>, and replaced the open desert icons (o) with the lowest level of air icon (1), and the earth areas (e) that I used to reference where the butte was, with the actual butte icon (B). Since it is an elevation change of only 1, terrain following will enable you to climb up and down from the butte as much as you want. The next map area I want is the outer wall (W).

<SpecifyArea 2>
222222222222222222222
222222222222222222222
222222222222222222222
222222222222222222222
222WWWWWWWWWWWWWWW222
222W2222222222222W222
222W2222222222222W222
222W2222222222222W222
222W2222222222222W222
222W2222222222222W222
222W2222222222222W222
222W2222222222222W222
222W2222222222222W222
222W2222222222222W222
222WWWWWWWWWWWWWWW222
222222222222222222222
222222222222222222222
222222222222222222222
222222222222222222222
222222222222222222222
222222222222222222222
</SpecifyArea>
<SpecifyArea 1>
111111111111111111111
111111111111111111111
1111BBBBB111111111111
111BBBBBBB11111111111
11BWWWWWWWWWWWWWWW111
11BWBBBBBBB111111W111
111WBBBBBB1111111W111
111WBBBBB11111111W111
111W1111111111111W111
111W1111111111111W111
111W1111111111111W111
111W1111111111111W111
111W1111111111111W111
111W1111111111111W111
111WWWWWWWWWWWWWWW111
111111111111111111111
111111111111111111111
111111111111111111111
111111111111111111111
111111111111111111111
111111111111111111111
</SpecifyArea> 
<SpecifyArea 0>
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooeeeeeoooooooooooo
oooeeeeeeeooooooooooo
ooeeeeeeeeeWWWWWWWooo
ooeeeeeeeeeooooooWooo
oooeeeeeeeoooooooWooo
oooWeeeeeooooooooWooo
oooWoooooooooooooWooo
oooWoooooooooooooWooo
oooWoooooooooooooWooo
oooWoooooooooooooWooo
oooWoooooooooooooWooo
oooWoooooooooooooWooo
oooWWWWWWWWWWWWWWWooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
ooooooooooooooooooooo
</SpecifyArea>

I went ahead and added a separate atmosphere type in for the second level above ground level. I also skimped quite a bit on the description of the outer wall, since it is more of a barrier than a terrain that most players will be standing in. Anyone actually standing within the wall will most likely not be expecting a hugely verbose description, but the map definition can make great use of the distant view, since a structure extending this tall will definitely be visible for a distance.

Use this same process until the map itself is complete. Overlays will be discussed in their own section. Add as many map_areas as is needed to adequately portray the area you are building. It's not unusual to have in excess of 30 per area, but there are no rules stating how many are the minimum or maximum. Just make the area interesting.

Personal tools