User:SkeletonCrew

From The Battle for Wesnoth Wiki
Revision as of 09:42, 5 November 2006 by SkeletonCrew (talk | contribs) (Forest)

WIP

Terrain system

The goal is to convert the old single letter terrain system to a new multi letter system. The internal changes to the engine are almost done.

These are the proposals and explanations for the new system, once these are final and implanted these texts will move into the wiki.

NOTE: busy with writing version 2 but not finished yet :-(

Version: proposal 2.0-pre
Last updated: --SkeletonCrew 19:52, 4 November 2006 (CET)

History:
proposal 1.1

  • added the encounter terrains

proposal 1.2

  • added the link to the new proposals of Mog and Eleazar

proposal 1.3

  • added reminder to add fog/shroud to the editor
  • added idea to maybe add support to add tiles at the top and left

proposal 2.0

  • removed editor changes from proposal and moved to own topic
  • removed the discussion points and wrote the conclusion
  • rewrote User:SkeletonCrew#terrain_strings
  • rewrote the letter proposal, with the input given so far

terrain

Every terrain type gets a new field named string this will be the new string to use to refer to the terrain. The old char field will stay for the existing terrains, this is needed to convert older maps to be used with the new engine.

This string will exist of 2 to 4 characters, the allowed characters are all letters (the engine is case sensitive), all numbers and the symbols / | \. Note leading numbers are not allowed in the string, they might give confusion with starting locations. Other characters are reserved for special uses in the engine.

The limit of 4 characters is not the upper limit of the engine, but the upper level for easy parsing. The internal format uses 4 bytes and every character is 1 byte. This way it's very easy to convert the characters to the internal format. If more letters are required it will require some modifications to the engine.

I'm considering to allow 1 character terrains as well since I've some trouble to find a second letter everywhere.

Every terrain will also get a new field named theme this is explained in the editor section.

scenario map

The map will use the new strings instead of the old letters. For every tile a string will be used instead of one letter, these strings are separated with a comma. Between the string and the comma one or more spaces are allowed.

Instead of spaces tabs are allowed, but keep in mind what looks good in your text editor, might look horrible in the editor of somebody else. The official files should use spaces.

The WML for map will use the same format. The letter for map WML will use a single terrain string without comma's.

Terraingraphics

The need two modifications the map format and the type format.

map

This format will change a bit more than the other items. The old format is described here TerrainGraphicsWML. According to mog the letters in the map are never used, only the anchors are used. The new format will only accept anchors. The special characters . and * will stay the same.

This map file will no longer be space separated but comma separatedand. Odd lines will start with a leading comma instead of 2 spaces. Spaces are allowed for padding

Also here tabs are allowed instead of spaces, see previous section.

For example this

map="
  1
1   1
  2
1   1
  1"

will become

map="
,1
1,1
,2
1,1
,1"

or

map="
, 1
1 , 1
, 2
1 , 1
, 1"

type

The type will be a list of terrains, comma separated. Spaces are allowed but then the items need to be between brackets. (A WML rule.) Also after special modifiers a comma is required (at the moment only the ! is a special modifier, but that might change in the future.)

Mog had an idea which will also be implanted, the * can be used in a terrain string, V* would match all terrain strings starting with the letter 'V'. Vh* would match all terrain strings starting with 'Vh' eg Vh, Vha, Vhaa but not VH or vH.

terrain files

Eleazar would like to move the terrains in subfolders, this seems to be possible with the current system. The required modifications can be found in the following changelog http://svn.gna.org/viewcvs/wesnoth?rev=14069&view=rev

I've no idea what the best possible directory layout will be. I'll ask Eleazar to do this change when I'm ready for it. At the moment I've some patches in my queue which will conflict with these changes.

terrain strings

The terrain strings will consist of 2 till 4 letters which indicate the terrain. Numbers are not allowed except for starting positions. These are allowed to be between 1 and 4 characters. (Note Wesnoth only supports 9 starting positions.) The following special characters can be used /|\ these should be used for directional terrains, which are only bridges at the moment.

The terrain letter _ is reserved for interal special terrains this will alway be used as leading character and not used inside strings.

For readability terrains should start with a capital letter followed by one or more lowercase letters (with a maximum of 3 lower case letters). The official terrains must follow these rules, the custom terrains should follow these rules.

There will be some letters reserved for user made content these letters are Y, y, Z, z. This means every terrain with one or more of these letters inside are custom terrains. This way it's easier to integrate a new terrain without having to change the terrain-graphics.cfg.

Since UTBS is mainline the custom terrain used there will be moved to the new system.

aliases

The aliases will also be a comma separated list, where the same discussion about the + and - can be started as in the types.

terrain list

This list is obselete, it was an initial proposal, Mog and Eleazar both created a new proposal. Both of them can be found here User:Mog This list remains for historical reasons.


Letter String Theme Description
A Vhsh village, snow, hill human (snow) hill village
a Vhh village, grassland human hill village
B Vda village, desert desert village (adobe)
b Vhm village, mountain human mountain village
C C castle castle
c Wu water, common shallow water, "coast"
D Vu village, cave underground village (cave, village), "dungeon village"
d Pds plain, desert sand, (old desert)
E road, desert desert road
e Ves village, snow elven (snow) village
F Fs forest, snow forest (snow)
f F forrest, common forest
G Pgs plain savanna (grass)
g Pg plain, common grass
H Hs hill, snow hills (snow)
h H hill, common hills
I Pd plain, desert desert
i Pi plain ice (tundra)
J Hd hill, desert desert hills
j Ms mountain, snow -nothing- (will be snowy mountains)
K K misc keep (castle)
k Wf water river ford (grass, shallow water)
L Vtf village, forest tropical forest village (savanna, village)
l Yl using Y for strange items misc lava (canyon)
M Md mountain, desert desert mountains
m M mountain, common mountain
N Cr castle ruined castle
n Ce castle, common encampment (castle)
O Co castle -nothing- ( will probably be an Orc Castle one day )
o Cd castle dwarven castle (castle)
P Wo desert desert oasis
p Vd village dwarven village
Q Crw castle, water sunken ruin
q Crs castle, water ruin (swamp)
R plain, common road (grass)
r plain dirt (grass)
S Pt plain tundra
s Wd water, common deep water
T Ft forest forest (tropical)
t V village, common?? village
U Vdt village desert desert village (tent)
u Pu cave, plain cave
V Vs village, snow snow village (tundra, village)
v Vh village, common human village (village)
W Yu cave, impassable cavewall
w Ws water swamp
X Yc misc canyon (replaced by chasm in trunk)
x reserved for UMCs
Y Vws village, water swamp village (swamp, village)
y reserved for UMCs
Z Vwm Village, water mermen village (shallow water)
z reserved for UMCs
/ bridge (grass, shallow water)
| bridge (grass, shallow water)
\ bridge (grass, shallow water)
~ fog, can this be used in game?
void/shroud (it uses the "space" character), can this be used in game?
[ Pur plain, cave rockbound cave
] Fu forrest, cave mushroom grove
' Pui plain, cave illuminated cave
? Yet forrest, misc great Elven tree
& Mi mountain impassable moutains

new terrains ordered

C 	castle 	castle
Cd 	castle 	dwarven castle (castle)
Ce 	castle, common 	encampment (castle)
Co 	castle 	-nothing- ( will probably be an Orc Castle one day )
Cr 	castle 	ruined castle
Crs 	castle, water 	ruin (swamp)
Crw 	castle, water 	sunken ruin
F 	forrest, common 	forest
Fs 	forest, snow 	forest (snow)
Ft 	forest 	forest (tropical)
Fu 	forrest, cave 	mushroom grove
H 	hill, common 	hills
Hd 	hill, desert 	desert hills
Hs 	hill, snow 	hills (snow)
K 	misc 	keep (castle)
M 	mountain, common 	mountain
Md 	mountain, desert 	desert mountains
Mi 	mountain 	impassable moutains
Ms 	mountain, snow 	-nothing- (will be snowy mountains)
Pd 	plain, desert 	desert
Pds 	plain, desert 	sand, (old desert)
Pg 	plain, common 	grass
Pgs 	plain 	savanna (grass)
Pi 	plain 	ice (tundra)
Pt 	plain 	tundra
Pu 	cave, plain 	cave
Pui 	plain, cave 	illuminated cave
Pur 	plain, cave 	rockbound cave
V 	village, common?? 	village
Vd 	village 	dwarven village
Vda 	village, desert 	desert village (adobe)
Vdt 	village desert 	desert village (tent)
Ves 	village, snow 	elven (snow) village
Vh 	village, common 	human village (village)
Vhh 	village, grassland 	human hill village
Vhm 	village, mountain 	human mountain village
Vhsh 	village, snow, hill 	human (snow) hill village
Vs 	village, snow 	snow village (tundra, village)
Vtf 	village, forest 	tropical forest village (savanna, village)
Vu 	village, cave 	underground village (cave, village), "dungeon village"
Vwm 	Village, water 	mermen village (shallow water)
Vws 	village, water 	swamp village (swamp, village)
Wd 	water, common 	deep water
Wf 	water 	river ford (grass, shallow water)
Wo 	desert 	desert oasis
Ws 	water 	swamp
Wu 	water, common 	shallow water, "coast"
Yc 	misc 	canyon (replaced by chasm in trunk)
Yet 	forrest, misc 	great Elven tree
Yl using Y for strange items 	misc 	lava (canyon)
Yu 	cave, impassable 	cavewall

terrains sorted per group

This list shows the new proposal for the terrains, which takes in account the idea's of Mog and Eleazar. The italic strings are reservations for terrains. The only terrain which isn't backwards compatible is '*'. The other terrains will be converted.

Some letter defined in the old system don't have a terrain defined yet. These are still listed with their reserved letter. Just in case the terrain gets defined before this system is up and running.

I think about merging some theme's if the number of items is to small. The following merges will probably be done

  • hill, mountain
  • water, swamp
  • castle, keep

I still want to keep the themes, if for example the number mountain and hill terrains increases enough to justify their own page the splitting will be trivial.

Snow terrains

String Old letter Description Theme
Aa snow "Artic" snow
Ai i ice snow

Bridges

Since bridges are directional all strings here will be appended with either /|\ to show their direction. In this list these signs are replaced with a *.

String Old letter Description Theme
Bx* Bridge chasm for aboveground bridge
Bxu* Bridge over chasm underground bridge
Bsw* wooden bridge over swamp NOTE bws Brigde wood swamp bridge
Bws* Stone Bridge over shallow water NOTE bss Bridge stone swamp not better? bridge
Bww* /|\ wooden bridge bridge, over wadeable, wooden NOTE Brigde wood or Bridge wood water not better? bridge, common

Castles

String Old letter Description Theme
Ce n encampment (castle) castle, common
Ch C human castle castle, common
Chr N ruined castle castle
Chs q human ruin (swamp) castle
Chw Q human sunken ruin castle
Co O will be an Orc Castle one day castle
Co o dwarven castle "castle underground, dwarf" castle, underground

desert

NOTE still need to add the UTBS terrains

String Old letter Description Theme
Dd desert desert
Do desert oasis desert
Ds sand, (old desert) desert

Forest

String Old letter Description Theme
Fa F forest (snow) "forest arctic" forrest, snow
Fb Sinister Forest "Forest, Bad" forrest
Fet ? great Elven tree forrest
Ff f forrest forrest, common
Ft T forrest tropical forrest

Grass

String Old letter Description Theme
Gb dying "Grass brown/bad" grass
Gf Farmer's Fields grass
Gg grass grass, common
Gs savanna (grass) grass

hill

String Old letter Description Theme
Ha hills (snow) "hills arctic" hill, snow
Hd desert hills (dunes) hill, desert
Hh hills hill, common

Keep

String Old letter Description Theme
Kk K keep (castle) keep, common

Mountain

String Old letter Description Theme
Ma j snowy mountains mountain, snow
Md M desert mountains mountain, desert
Mm m mountain mountain, common

(mostly) Impassable

String Old letter Description Theme
Qx chasm for above ground ???
Qxu chasm for underground ???, underground
Qxw chasm with water pouring over the edge ???
Ql lava misc
Qsq stone wall ???

road

String Old letter Description Theme
Rc Carpeted Floor road
Rd desert road road, desert
Rr dirt road road, common
Rs stone road road
Rw Wood floor (interior) road

swamp

String Old letter Description Theme
Sb fetid swamp "Swamp Bad" swamp
Ss swamp swamp, water?

underground

String Old letter Description Theme
Uf mushroom grove "underground forest" underground
Uh rockbound cave (functionally "underground hill") underground
Uu normal cave underground
Uuc normal cave, carved underground
Uui illuminated cave underground

village

String Old letter Description Theme
Vda B desert village (adobe) village, desert
Veg elven village "village elven grassland" village, common????
Ves e elven (snow) village village, snow
Vha V village, snow snow village (tundra, village) village, snow
Vhg v human village (village) village, common
Vhh a human hill village village, hill, common
Vhhs A human (snow) hill village NOTE not Vhha??? village, snow, hill
Vhm b human mountain village village, mountain
Vht L tropical village (savanna, village) --nothing foresty about this village village
Vu D underground village (cave, village) village, underground
Vud p dwarven village village, underground
Vwm Z mermen village (shallow water) village, water
Vws Y swamp village (swamp, village) village, swamp

water

String Old letter Description Theme
Wo deep water "water, ocean" water, common
Ww shallow water, "water, wade-able" water, common
Wwf river ford "water wadeable, ford" water
Wwu shallow underground water water, underground

Impassable

String Old letter Description Theme
Xm impassable moutains impassable, mountain
Xsw Impassable stone wall (interior) impassable
Xu cavewall impassable, underground
Xuc cavewall, carved impassable, underground
Xww Impassable wooden wall (interior) impassable

encounter terrains

This list maintains the encountered terrains by the user this list is used in the help function to decide what to show and what not. This is now a comma seperated list. The new version will also be a comma separated list but with the new terrain strings instead of letters. In order to keep it backwards compatible at startup the system will check for encountered_terrains and encountered_terrains13 . Then test the following conditions is this order:

  • if encountered_terrains13 is found these are loaded.
  • if encountered_terrains is found, these are converted to encountered_terrains13 format and loaded
  • none are found, nothing will be done.

When writing only encountered_terrains13 will be used.

The reason to keep it backwards compatible is that if somebody tries an 1.3.x version and doesn't like it, it's no problem to return to 1.2.x. If we convert encountered_terrains to the new format it might give troubles when loading it with 1.2.x.

editor

The editor also will need an overhaul due to the changes, since the terrain consists of a maximum of 4 characters I propose it writes the terrain as a string of 6 characters; the terrains string followed by a comma and padded with spaces. eg the following terrain string

Vh,Vha,Vhaa,Vha,Vh 

will be written as

123456123456123456123456123456 (numbers won't be written.)
Vh,   Vha,  Vhaa, Vha,  Vh 

Discussion: Should the editor be able to write the old format terrain or not.

custom terrains

Zookeeper told me there's no option to add custom terrains at the moment. I want to add a button to add a custom terrain, once clicked it will prompt for the terrain string and insert the tile to the list of available tiles and allow to use this tile. The tile will be 'painted' with the terrain string. When loading a map with unknown strings these will be added to the list of terrains. The only problem will be the location of the terrains but I'll worry about that later.

There should also be an option to add fog/shroud tiles to the map. See http://www.wesnoth.org/forum/viewtopic.php?p=192326#192326

Discussion: Would this solve the unkown tile problem?

themes

In my opinion the list with terrains to browse is pretty long and this will only grow in the future. I want to add an extra grid of buttons with theme's the buttons will have an icon for their theme. When a button is clicked the list of terrains is filtered per theme. eg when the theme villages is selected only village tiles are shown. Every terrain gets one or more themes for example a snow forest can be in the theme forest and the theme snow, so with either theme this tile is shown. There will be 2 special theme's favorites and map. Favorites are your favorite tiles saved in preferences and can contain unknown terrains. Map are all tiles already used on this map, including the unknown.

Discussion: Is this handy?

resize map

maybe there should be an option to add tiles to the left and top instead of only to the right and bottom. See http://www.wesnoth.org/forum/viewtopic.php?p=192326#192326

Small maps

It would be handy to be able to create maps smaller than 20 x 20 for WML usage. IMO as soon as the map goes below this threshold a warning should be shown, that the map might nog work properly as main scenario map. See http://www.wesnoth.org/forum/viewtopic.php?p=192435#192435

Todo

Thing I plan to do after I finished my WIP's.

team sides

After the terrain system has been modified it's possible to define more teams, EdB asked this in irc at 20061027.

It would be nice to support 12 sides in multiplayer with their own tcolour. The engine should support more sides for the AI to use. These will use and scenario WML defined colour. It's not sure whether WML supports this if not the support should be made. EdB will look for an possible algo to define nice auto colours.

terrain archtypes

Eleazar had an idea for terrain archtypes in the terrain thread. It looks sane and would be nice to implant. http://www.wesnoth.org/forum/viewtopic.php?p=191410#191410

Misc

Various things I want to look at at some time.

  • version checks for WML, needed or not?
  • modulo WML, needed or not?
  • continue to work on the Python AI