Creating a World Map
by Zammy
Note: This article first appeared in Russian on Arcanum
City, It was written/translated by Zammy and edited by Calis.
I've tried to make this document as complete as I could, and it should give you
all the info you need to create a world map. Of course, it's entirely possible
I missed a few things.
I. Terms
First I'd like to define a number of terms, just so we're clear on what we're
talking about...
1) GUI Map - Represents the world map image, or a set of them. The standard format for Arcanum - BMP 256 colours. If you want to divide it into multiple segments, use segments of an equal size.
2) Chunk - Segment of the GUI Map, put in a separate file. Files can
be named arbitrarily, but they should contain an identical textual prefix and a three-digit numerical part after that (in this manual I shall use map001.bmp, map002.bmp,
map003.bmp etc.).
3) Terrain - This is a surface of your map. Editing it can only
be done in WorldEd. Terrain can be seen in the
lower left corner of the editor. You can get a BMP of Terrain by choosing "Export terrain bitmap" in WorldEd. The BMP will appear in
the directory Maps of your mod and will be named the same as map from
which it is obtained.
II. Link between GUI Map and Terrain
1) Each pixel on the GUI Map corresponds to one sector of Terrain. If
you use a map with a pixel size of 500x500, it will correspond to 500 x 500
terrain sectors.
2) The link between the terrain map in WorldEd and the GUI worldmap is as follows:
the terrain map defines where your character can (and can't) walk. You need
to make sure this is reflected on the worldmap.
3) If the GUI Map is larger than the Terrain, you won't be able to travel beyond
the terrain boundaries, but will see the entire GUI Map. Reference to the images
below for examples of this. (the red square indicates the area a character can
travel in)
Terrain |
GUI Map |
Overlay |
Map view in Game |
4) If the GUI Map is smaller than the Terrain, the following happens:
Terrain |
GUI Map |
Overlay |
Map view in Game |
III. Let's clear up
This section contains a number of handy guidelines for making your own worldmap.
1) Is using a world map useful in your mod?
There is no real point in adding a world map to your mod if you only have one
city. The main strength of having a world map is speeding up traveling: if your
mod doesn't involve a whole lot of overland traveling, adding a world map is
a waste of time.
2) Map size
The window Arcanum uses
to display world maps is 501 by 365 pixels. If you're going to use a map smaller
than that, you'll get an effect similar to what you can see in the picture on
the right. I recommend that you make your world map at least 501 by 365 pixels
to avoid a "black" area.
However, even with a 501 x 365 size world
map you'll run into some troubles. The map will start scrolling once
you move towards the lower right of the world map! It seems the icon representing
your party will always be in the center of the world map window.
If your mod is as large as Arcanum itself (2000 x 2000), this won't be a problem.
It seems the map size is somehow hardcoded into Arcanum, and I have yet to figure
out how to change it. To avoid black bars on the right and from below, you can
make your GUI Map larger than your Terrain: make it 251 pixels larger on X and 183 on Y (501 and 365 divided
by 2). Fill this space by water or or other images that indicate the area can't be traveled through, similar to the seas
of Arcanum. I recommend you use a 501x365 sized terrain map, as it is easily large enough for most mods.
3) Division into segments
It is possible to divide your map into multiple segments, to keep memory usage
low. I generally just use one big map for my world, but whether or not you want
to divide it into segments is up to you.
If you use a map of Minimum size, the division into segments is not required,
as you can easily make one big segment of 501x365. If your map is rather large
and you want to divide it into segments, make segments of an identical size.
I tried to divide a minimum map (501 x 365) into 4 segments by a size 251x183,
and it worked perfectly.
4) Image format - all bitmaps in Arcanum are 256 color windows BMPs,
and this is what the GUI map should be, as well.
IV. Getting started
So, you have decided to make world map and have defined its size. Listen to
my advice: you'll really want to make the terrain map first. Export the WorldED
terrain map and edit it to make it look however you want. It's, of course, entirely
possible to do it the other way around, but it'll take you a *lot* of time to
make sure your GUI map matches your terrain map if you go with that method.
Take a look on example of creation of World map 501 x 365, without splittings into segments, but on a course of an explanation I shall specify, how to make most for a map broken on segments.
If your Terrain is already done, skip the first step.
1. Make a new map of a selected size (in our case 501x365).
Name it "Main", for simplicity's sake. Using Worlded's Terrain
Editor, make it suitable for your mod. |
|
2. Export your terrain and draw the GUI Map. It doesn't really
matter what image editor you use, but I recommend Photoshop for the final
touches. The map needs to be saved in 256 colors. Be sure to piece together
segments first if you used them. |
|
3. Create a directory "WorldMap" in your mod directory. Create a file named
"Worldmap.mes" in this directory. Put the following two lines into the file:
{20}{0, 0}
{50}{1, 1, map, ZoomedName: ZoomMap, MapKeyedTo: 2}
Let's take a look at what these lines mean.
{20}{0, 0} - These specify the coordinate origin of your world map.
In the game, placing the cursor above a map shows coordinates relative to this
point. If the origin is placed in sector with coordinates (0, 0), moving the
cursor in the game from upper right corner of a map to the lower left, we see
both X and Y coordinates increase from zero. If we enter, for example, 100 and
100, we transfer the origin to sector (100, 100) and logical coordinates of
the upper right corner (i.e. the coordinates we see by placing the cursor in
the right upper corner of a map) will become -100, -100.
"{50}{1, 1," - 1 and 1 it is a size of a map in segments on X and Y
(in this case only 1 segment)
"Map" is the prefix of file names of segment files. It's also the directory
that needs to contain your map files. Save your segments in this directory with
names "map001.bmp", "map002.bmp" and so on, 001 being at the upper left. You
can change "map" to whatever you want, but don't forget to name your files accordingly.
ZoomedName: ZoomMap - sets the name of
an unzoomed version of the GUI Map. Resize your GUI Map to 365x365 and save
in this directory as "ZoomMap.bmp". Now you'll see a small variant of your map
on the map screen. You can also edit the ZoomMap file yourself, of course.
MapKeyedTo: 2 - The number "2" means that moving on the world
map corresponds to moving on the SECOND map in your maplist, defined in MapList.mes.
Here's a MapList.mes I used:
{5000}{ShopMap, 31, 29, Type: SHOPPING_MAP}
{5001}{Main, 10000, 10000, Type: START_MAP, WorldMap: 0}
The second line is linked to the world map, as described above. Please note
that "WorldMap: 0" is necessarily for the map that is linked to the worldmap!
There might be a possibility here to use multiple worldmaps, but I have no idea
how to do this.
4. To create "hot spots" on your world map (you know, like the cities
in the main game), you need to edit a file and add all your towns and such.
Find the file "gamearea.mes" in the directory MES of your mod. Let's take a
look at the following line:
{0}{0, 0, 0, 0 /A Place Unimportant/This is the unknown area.}
I don't recommend you touch this line, just create new lines below it! Let's
consider the parameters
The first bracket is simply the line number. Be sure to number your lines properly,
with {1}, {2}, etc. The first two digits in the second set op parameters represent
the coordinates of a point where you appear if you enter or teleport into this
area (for example: moving into Tarant results in you appearing behind the bridge.
The coordinates of this point are registered for area Tarant in Arcanum). The
coordinates are set not in sectors, but in tiles!
The next two numbers represent the offset of the coordinates of this area
on the world map. For instance:
0,0 |
-100,0 |
-50,-15 |
-50,15 |
After the first back slash "/" you will need to enter the area name, which
you will see on the WorldMap. After the second backslash you can enter the description
that will be shown if you hover the mouse over the location. Furthermore, if
your Story requires it, it is possible to add the parameter " /Radius: " followed
by a number, how close an area should be passed by in order for it to become
visible (by default "5"). If you use "-1" , this area will not be designated
on a map, even if you pass directly over it, but it can be made visible by other
means (dialogue or other scripting).
A number of example lines:
{0}{0, 0, 0, 0 /A Place Unimportant/This is the unknown area.}
{1}{10000,10000, 0, 0 /First Area/This is Area where you start game}
{2}{13000,9000, 0, 0 /Second Area/This is another Area}
5. Now, how can you connect a map of the world with other maps? For teleportation
purposes and other things, it's necessary to link small maps, such as dungeons, to an area on the map where you'd like it to show up. When describing your small map in maplist.mes, add keyword "Area" followed by the number of the "parent" area.
Your area will NOT be accessible directly from world map travel. Here is how it is done in Arcanum:
GameArea.mes :
---Skipped---
{21}{62243,65664, 0, 0 /Tarant/The Most industrial City in Arcanum.}
---Skipped---
MapList.mes :
---Skipped---
{5002}{PSchuylers Lev 1-fixed, 96, 126, WorldMap: 0, Area: 21}
{5003}{PSchuylers Lev 2-fixed, 96, 126, WorldMap: 0, Area: 21}
---Skipped---
{5075}{Tarant Sewers-02, 91, 98, WorldMap: 0, Area: 21}
---Skipped---
Again, you can see WorldMap : 0 and the number of area, on which the map number
is specified: 21 in this case (Tarant).
V. PS
I have found out one thing about using more than one world map. By registering
in worldmap.mes 2 lines with numbers 21 and 51, registering one more
map, and by adding one more map in MapList.mes and by specifying it "WorldMap:1",
on this map it is possible to see the second WorldMap! Walking on it is as of
yet impossible, though. It is impossible also to register areas because gamearea.mes
only allows areas for one worldmap. Most likely it is impossible to make another
working WorldMap.
|