Difference between revisions of "TerrainCodesWML"
m (→Terrain strings) |
(→Terrain codes in map data: Update to account for the removed header and the new special locations syntax) |
||
Line 98: | Line 98: | ||
** '''usage''', this should be 'map' for a map and 'mask' for an overlay mask | ** '''usage''', this should be 'map' for a map and 'mask' for an overlay mask | ||
** '''border_size''', the size of the border, should be 1 for map and 0 for mask. When the border_size is 1 the map border is part of the map data, this means the user can define the border instead of the game taking a guess. | ** '''border_size''', the size of the border, should be 1 for map and 0 for mask. When the border_size is 1 the map border is part of the map data, this means the user can define the border instead of the game taking a guess. | ||
+ | ** {{DevFeature1.13|12}} These keys are now deprecated and will be ignored if present. The blank line mentioned below is not required if these keys are absent. | ||
* Between the header and the data should be 1 empty line | * Between the header and the data should be 1 empty line | ||
* A map data file consists of any number of lines, each with the same number of terrain codes. | * A map data file consists of any number of lines, each with the same number of terrain codes. | ||
Line 103: | Line 104: | ||
* When the file is interpreted, each terrain code will be replaced by the terrain it refers to. | * When the file is interpreted, each terrain code 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. | * 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. | + | * 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. {{DevFeature1.13|12}} In addition to side numbers, terrains may be prefixed by any number of strings (which should consist of alphanumeric characters only, including underscores). All names and side numbers must be delimited by spaces and are separated from the actual terrain code by an additional space. |
Since text file tiles are squares while game tiles are hexes, some tiles must be shifted. | Since text file tiles are squares while game tiles are hexes, some tiles must be shifted. |
Revision as of 04:43, 12 April 2018
Note: the old (1.2) terrain system is no longer documented here. If you have 1.2 maps you will need to convert them using wmllint.
Contents
Terrain strings
The following rules hold for terrain strings. Note most of these rules are not validated since it would slow down Wesnoth; not following these rules might break Wesnoth.
- terrain strings are composed from one or more terrain codes of 2 to 4 characters each, separated by ^.
- terrain codes start with a capital letter and the following letters are lower case
- terrain strings can only contain letters, the symbols /|\ which are meant for directional items like bridges and the symbol ^
- the underscore is used as a leader for internal terrain codes
- the star '*' can be used for wildcards in some places where a terrain code is required
- the symbol ^ indicates that a terrain is created with layers, for example Gs^Fp means Semi-dry Grass(Gs) with a Forest(Fp) overlay.
Starting positions are defined by a number followed by 1 space and then the terrain string; this means that a starting position is no longer automatically a keep.
The letters Y,y,Z,z are reserved for UMC so any string containing any of these letters is a custom terrain. Other undefined terrain strings are reserved for future expansion within Wesnoth.
Terrain Table
The list of terrains can be found at TerrainCodeTableWML. Since most overlays can be combined with most bases the list is not complete.
Adding terrains
When adding terrains make sure the following files are also checked:
data/multiplayer/factions/* contains favorite positions for the different factions, this is only used for the random map generator at the moment so it is not very important.
data/core/macros/abilities.cfg contains the definition of submerge and ambush so depending on the change these need to be updated.
Decoding the Terrain Codes
The initial letters of each terrain code have a standard meaning, though some are not obvious.
- A = “Arctic” i.e. frozen
- B = “Bridge”
- C = “Castle”
- D = “Desert”
- E = "Embellishment"
- F = “Forest”
- G = “Grass”
- H = “Hills”
- I = "Interior" (possible future use)
- J = testing
- K = “Keep”
- L
- M = “Mountains”
- N
- O
- P
- Q = "Un-walkable"
- R = “Road”
- S = “Swamp”
- T
- U = “Underground”
- V = “Village”
- W = “Water”
- X = "Impassable"
- Y = Reserved for UMC
- Z = Reserved for UMC
- _ = "special system stuff"
Additional letters do not always follow the same meaning, but are as consistent as possible.
- \, |, / = for indicating the direction of bridges
- a =
- b =
- c = "city"
- d = "dry or desert, deciduous"
- e = "encampment"
- f = "flowers, fall"
- g
- h = "human"
- i = "ice"
- j
- k
- l = "lava"
- m = "mixed"
- n
- o = "orc"
- p = "pine"
- q
- r
- s = "simple"
- t
- u = "underground"
- v = "elvish"
- w
- x = "chasm"
- y = Reserved for UMC
- z = Reserved for UMC
Terrain codes in map data
This is not the Matrix. You normally don't need to look at encoded maps. However, it can be beneficial and useful for more advanced users to understand the usage of terrain strings in raw map file.
The encoding for maps has a specific format in Wesnoth:
- A map starts with a header with the following keys
- usage, this should be 'map' for a map and 'mask' for an overlay mask
- border_size, the size of the border, should be 1 for map and 0 for mask. When the border_size is 1 the map border is part of the map data, this means the user can define the border instead of the game taking a guess.
- (Version 1.13.12 and later only) These keys are now deprecated and will be ignored if present. The blank line mentioned below is not required if these keys are absent.
- Between the header and the data should be 1 empty line
- A map data file consists of any number of lines, each with the same number of terrain codes.
- 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 terrain code 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. (Version 1.13.12 and later only) In addition to side numbers, terrains may be prefixed by any number of strings (which should consist of alphanumeric characters only, including underscores). All names and side numbers must be delimited by spaces and are separated from the actual terrain code by an additional space.
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 ('Re') tiles, the map data would look like this:
usage=map border_size=1 Re, Re, Gg, Gg, Gg, Gg, Gg, Gg Gg, Gg, Re, Re, Gg, Gg, Gg, Gg Gg, Gg, Gg, Gg, Re, Re, Gg, Gg Gg, Gg, Gg, Gg, Gg, Gg, Re, Re