Difference between revisions of "BuildingMaps"

From The Battle for Wesnoth Wiki
(Wesnoth map data format)
m
(48 intermediate revisions by 17 users not shown)
Line 1: Line 1:
This is all you need to know about maps:
+
{{Translations}}
 +
{| style="float:right"
 +
|
 +
__NOTOC__
 +
|}
  
# A map is just a bunch of letters arranged in a rectangle (the rectangle is known as the "map data")
 
# There are two ways to save this rectangle in a file
 
  
Seriously now, here are the details.
+
{{Create}}
  
== Wesnoth map data format ==
+
<div class="thumb tright"><div>
 +
[http://www.wesnoth.org/images/sshots/wesnoth-1.11.8-4.jpg http://www.wesnoth.org/images/sshots/wesnoth-1.11.8-4-175.jpg]
 +
<div class="thumbcaption">Map editor</div></div>
 +
</div>
  
Map data is used to represent maps in Wesnoth. The encoding for maps has a specific format:
+
A map is the most basic of user made content you can create. Complex scenarios can be developed on them, or they can be played on their own as simple battlefields with no extra work required.
  
* A map data file consists of any number of lines, each with the same number of characters.
+
Wesnoth features a fully featured map editor, accessible from the <b>Map Editor</b> option at the main menu. Inside you will find all the tools you need to create your own arenas to stage your adventures.  
* Each character must be either a letter specified in a ''letter'' key specifying a terrain (see [[TerrainLettersWML]]), or a digit.
 
* When the file is interpreted, each letter will be replaced by the terrain it refers to.
 
* Each nonzero digit ''n'' where ''n'' = 1, 2, 3, ... will be replaced by keep, with the leader of side ''n'' placed on the keep.
 
  
Since text file tiles are squares while game tiles are hexes, some tiles must be shifted.
+
Inside the individual map files themselves are simply terrain codes that the games translates into graphics when you play. Usually you will never have to edit these files manually, but it can come in handy to understand the format. For more on terrain codes and the map data format, see the [[TerrainCodesWML]] page.
Tiles in even-numbered columns are shifted down 1/2 of a tile.
 
For example, to have a road of connected dirt ('r') tiles, the map data would look like this:
 
  
rrgggggg
+
For further instructions on what to do once you have completed your map, see below.
ggrrgggg
 
ggggrrgg
 
ggggggrr
 
  
'''''[[User:SkeletonCrew#Branch_terrain|(SVN terrain only)]]'''''
+
== Creating a map ==
The map format for the new Wesnoth version has been changed so this description is for the newer version.
 
  
Map data is used to represent maps in Wesnoth.  The encoding for maps has a specific format:
+
=== Note before you start ===
  
* A map data file consists of any number of lines, each with the same number of strings.
+
As of Wesnoth 1.12, the [[MapEditor|Map Editor]] has become more fully featured, and includes options to define scenario-related items on your map, such as name, unit placement, graphical items, time of day schedules, etc. <b>In order to create a plain map file with no scenario data, use the <i>File → Save Map</i> option. Scenario-specific content will not be saved unless you select the <i>File → Save Scenario</i> option. </b>
* Each string must be a string specified in a ''string'' key specifying a terrain (see [[TerrainLettersWML]]).
 
* Each string may be padded with spaces or tabs and must be separated with a comma, except for the last string on a line this one may not have a comma.
 
* When the file is interpreted, each string will be replaced by the terrain it refers to.
 
* Empty lines are allowed before, after and between lines of characters, between lines is not advised.
 
* Terrains may be prefixed with a number followed by one space, these indicate the starting position for side ''n''. ''n'' = 1, 2, 3, ... 9 (more might work but is untested and unsupported). This is a change from the previous system where a starting position was automatically a keep.
 
  
It's advised to use spaces for padding and pad each column to be the same width; the game does this when writing a map file.
+
More on scenario-specific content is discussed in [[BuildingScenarios]].
 
Since text file tiles are squares while game tiles are hexes, some tiles must be shifted.
 
Tiles in even-numbered columns are shifted down 1/2 of a tile.
 
For example, to have a road of connected dirt ('r') tiles, the map data would look like this:
 
  
Re, Re, Gg, Gg, Gg, Gg, Gg, Gg
+
=== General guide to map making ===
Gg, Gg, Re, Re, Gg, Gg, Gg, Gg
 
Gg, Gg, Gg, Gg, Re, Re, Gg, Gg
 
Gg, Gg, Gg, Gg, Gg, Gg, Re, Re
 
  
== Creating a map ==
+
When you first open the map editor, you are presented with a large blank canvas covered in Grass. Below is a general guide to turning this empty meadow into an interesting and challenging battlefield.
  
This is not the Matrix. You do not need to look at encoded maps. The source code and most binary distributions come with the official graphical map editor. When compiling from source, remember to use the ''--enable-editor'' option when configuring, otherwise the map editor won't be compiled. Using the map editor tends to be straightforward, judging from the feedback received from novice mapmakers. However, if you do encounter problems locating or using the editor, please ask for help on the [http://www.wesnoth.org/forum forum].
+
#<b>Decide on the intended use</b> <br> Maps intended to use in a campaign usually portray a location relative to the story being told, while maps intended for use in multiplayer usually have a more "arena-like" quality to them - they're often somewhat symmetrical, feature many types of terrains to benefit all units, and are often in not-rectangle shapes. <br><br>
 +
#<b>Choose your map size</b> <br> You can resize your map with the resize function. Choose one proportional to the gameplay you would like to see on it. A close-knit battle arena? Smaller is better. A large epic, battle with many sides? Go larger. Remember, though, to not make it too big, or you will bore your players. <br><br>
 +
#<b>Decide on a theme</b> <br> Wesnoth includes many different terrains for many different situations. Caves, dungeons, meadows, icy wastes, beautiful fall scenery, etc. Decide on a general theme for your map and be sure to work with the terrains that best fit your chosen theme. <br><br>
 +
# <b>Place large geographic features first</b> <br> If you were designing an outdoors map, now would be the time to draw large features such as mountain ranges, rivers, etc. On an indoors map, place the walls, design the passages and rooms, etc. It doesn't have to be perfect, just a general outline to work with. <br><br>
 +
# <b>Add castles, villages, and roads</b> <br> Every map needs castles and keeps to recruit on, and roads or flat terrain for units to move on (most units move best on Flat terrain such as roads, grass, or dirt). Add these now, making sure not to make your castles too big or close to one another. The placement of these determines the general flow of your scenario, so choose carefully. Also add villages. These will provide your team income and healing, so don't place them too close to each other (a general rule is about 6 hex radius (at minimum) around each village). Too many close together will result in imbalance from too much gold and health regeneration. <br><br>
 +
# <b>Finer details and revision</b> <br> Begin filling in the more open spaces of your map. Add forests, trees, hills, dirt, floors, the lot, while at the same time tweaking the general layout to fit your intended design. This is where the map really begins to reach completion. Also note to be sure to draw terrain features in a way that work with your plans for the scenario; for example, be sure to place bridges where you want your units to be able to cross a river. <br><br>
 +
# <b>Embellishments</b> <br> Your map is almost complete, but in order to look polished, throw in a few embellishments. Make the grass different colors. Put rocks and mud in the rivers. Strew trash around your buildings. Scatter flowers in the meadows. It's up to you, just don't overdo it.
  
After the map is created, you may find it easier to make small tweaks by editing the textual map data directly.
+
It can take a lot of practice. Making good, balanced, interesting maps is an art unto itself. ESR has more handy tips in his [http://catb.org/~esr/wesnoth/campaign-design-howto.html#_map_composition Campaign Design How-To] article. You can also ask for assistance on the [http://www.wesnoth.org/forum/viewforum.php?f=15 Multiplayer Development forum].
  
Making good, balanced, interesting maps is another task altogether, and if someone wants to take a stab at sharing insight about this art, please do so.
+
== Now what? ==
  
== Using map data ==
+
You've created an awesome map with the map editor, but now what? It's actually quite simple.
  
Map data is used in two ways.
+
=== Play your map ===
# It is used as an input to the key ''map_data'' (see [[ScenarioWML]]).
 
# Files consisting entirely of map data can be read and edited easily by the [[WesnothMapEditor]].
 
#* Files in the folder '''''userdata''/editor/maps/''' which consist entirely of map data can be played in multiplayer as user maps.
 
  
==== The map_data key ====
+
If you just want to play the map, maybe against the computer or with a friend, all you have to do is save it into the map editor's folder (the default location). Then, when you launch the game and host a multiplayer game, the map should appear <b>at the top</b> of the map choices screen.
  
The first way is to use the map_data key.  A campaign scenario starts with the '''[scenario]''' tag.  A multiplayer map scenario starts with the '''[multiplayer]''' tag.  Each tag takes the key ''map_data''.  The value of the ''map_data'' key is the map data enclosed in quotes. Here is an example:
+
When creating a game on the multiplayer server, your map will be described to other players as a "User Map" and any replays stored on the server will refer to the game as "User Map."
        map_data="111111111111111111"
 
  
==== Standalone map file ====
+
For the curious: Saving a map file like this creates a stand-alone file that holds the map data. That file is by default saved in <b><i>userdata</i>/editor/maps/</b>, and maps in that location are added to the top of the multiplayer map selection list.
  
The second way to store a map is in a text file that consists '''only''' of the map data.  The advantage of this method is that it's simple.  If you drop one of the map files in '''''userdata''/editor/maps/''', the game will find it automatically in multiplayer.  On the other hand, this method also works with more complex scenarios.  If there is a scenario file somewhere (campaign or multiplayer) that has a line similar to the following:
+
=== Use your map in a scenario ===
map_data="{@editor/''map_filename''}"
 
then all of the map data in the file is inserted between the quote marks.
 
  
== Discussion: Scenario File vs Standalone ==
+
If you're interested in more complex gameplay, you can use your map in a scenario. More information on how to proceed is on the [[BuildingScenarios]] page.
  
Campaign writers can't write campaigns without scenarios, so campaigns will always use the ''map_data'' key, either with the raw data in quotes or a preprocessor symbol {} pointing to the standalone file.
+
=== Share your map ===
  
Multiplayer mapmakers, however, '''have a choice'''.  If you want to place an object or unit on the map, you must create a scenario file starting with the '''[multiplayer]''' tag and containing the ''map_data'' key therein. You lose the simplicity of the standalone map file, but you gain tremendous power. Not only can you add units and objects, you can set allies, experience modifiers, add a map description, and add custom events (among other things). The question, "How do I place an object on the map with the map editor" is such a common question that I am sorry this information is buried so deeply here. But, now that you know you can seek out an example of a multiplayer map scenario file to use as an example.  The game comes with many maps of each type.  Check out [[BuildingMultiplayer]] for more information.
+
When you're ready to share your map with the world, post it to the [http://www.wesnoth.org/forum/viewforum.php?f=15 Multiplayer Development forum] or package it to be distributed on the in-game add-ons server. For instructions on how to distribute maps, see [[Distributing_content]]
  
 
== See Also ==
 
== See Also ==
  
* [[Create]]
+
* [[TerrainCodesWML]]
 
* [[ScenarioWML]]
 
* [[ScenarioWML]]
 
* [[ReferenceWML]]
 
* [[ReferenceWML]]
 
 
{{Create}}
 

Revision as of 08:29, 22 October 2019



wesnoth-1.11.8-4-175.jpg

Map editor

A map is the most basic of user made content you can create. Complex scenarios can be developed on them, or they can be played on their own as simple battlefields with no extra work required.

Wesnoth features a fully featured map editor, accessible from the Map Editor option at the main menu. Inside you will find all the tools you need to create your own arenas to stage your adventures.

Inside the individual map files themselves are simply terrain codes that the games translates into graphics when you play. Usually you will never have to edit these files manually, but it can come in handy to understand the format. For more on terrain codes and the map data format, see the TerrainCodesWML page.

For further instructions on what to do once you have completed your map, see below.

Creating a map

Note before you start

As of Wesnoth 1.12, the Map Editor has become more fully featured, and includes options to define scenario-related items on your map, such as name, unit placement, graphical items, time of day schedules, etc. In order to create a plain map file with no scenario data, use the File → Save Map option. Scenario-specific content will not be saved unless you select the File → Save Scenario option.

More on scenario-specific content is discussed in BuildingScenarios.

General guide to map making

When you first open the map editor, you are presented with a large blank canvas covered in Grass. Below is a general guide to turning this empty meadow into an interesting and challenging battlefield.

  1. Decide on the intended use
    Maps intended to use in a campaign usually portray a location relative to the story being told, while maps intended for use in multiplayer usually have a more "arena-like" quality to them - they're often somewhat symmetrical, feature many types of terrains to benefit all units, and are often in not-rectangle shapes.

  2. Choose your map size
    You can resize your map with the resize function. Choose one proportional to the gameplay you would like to see on it. A close-knit battle arena? Smaller is better. A large epic, battle with many sides? Go larger. Remember, though, to not make it too big, or you will bore your players.

  3. Decide on a theme
    Wesnoth includes many different terrains for many different situations. Caves, dungeons, meadows, icy wastes, beautiful fall scenery, etc. Decide on a general theme for your map and be sure to work with the terrains that best fit your chosen theme.

  4. Place large geographic features first
    If you were designing an outdoors map, now would be the time to draw large features such as mountain ranges, rivers, etc. On an indoors map, place the walls, design the passages and rooms, etc. It doesn't have to be perfect, just a general outline to work with.

  5. Add castles, villages, and roads
    Every map needs castles and keeps to recruit on, and roads or flat terrain for units to move on (most units move best on Flat terrain such as roads, grass, or dirt). Add these now, making sure not to make your castles too big or close to one another. The placement of these determines the general flow of your scenario, so choose carefully. Also add villages. These will provide your team income and healing, so don't place them too close to each other (a general rule is about 6 hex radius (at minimum) around each village). Too many close together will result in imbalance from too much gold and health regeneration.

  6. Finer details and revision
    Begin filling in the more open spaces of your map. Add forests, trees, hills, dirt, floors, the lot, while at the same time tweaking the general layout to fit your intended design. This is where the map really begins to reach completion. Also note to be sure to draw terrain features in a way that work with your plans for the scenario; for example, be sure to place bridges where you want your units to be able to cross a river.

  7. Embellishments
    Your map is almost complete, but in order to look polished, throw in a few embellishments. Make the grass different colors. Put rocks and mud in the rivers. Strew trash around your buildings. Scatter flowers in the meadows. It's up to you, just don't overdo it.

It can take a lot of practice. Making good, balanced, interesting maps is an art unto itself. ESR has more handy tips in his Campaign Design How-To article. You can also ask for assistance on the Multiplayer Development forum.

Now what?

You've created an awesome map with the map editor, but now what? It's actually quite simple.

Play your map

If you just want to play the map, maybe against the computer or with a friend, all you have to do is save it into the map editor's folder (the default location). Then, when you launch the game and host a multiplayer game, the map should appear at the top of the map choices screen.

When creating a game on the multiplayer server, your map will be described to other players as a "User Map" and any replays stored on the server will refer to the game as "User Map."

For the curious: Saving a map file like this creates a stand-alone file that holds the map data. That file is by default saved in userdata/editor/maps/, and maps in that location are added to the top of the multiplayer map selection list.

Use your map in a scenario

If you're interested in more complex gameplay, you can use your map in a scenario. More information on how to proceed is on the BuildingScenarios page.

Share your map

When you're ready to share your map with the world, post it to the Multiplayer Development forum or package it to be distributed on the in-game add-ons server. For instructions on how to distribute maps, see Distributing_content

See Also