This tutorial covers zone naming conventions, and what should go on each layer. It has a separate section on the objects and portals layer since these are complicated. Finally we explain how to do animations.
Start by opening template.tmx file. Make sure all Layers are selected to be visible, then resize it to the size you want. Save it with the new map name, in the directory it's suppose to be in (level 0 - level -7 and semos, nalwor. orril etc... depending on which it is closest to). Just save it in one of those folders, and it should be ready to edit. Also please read zone naming before naming the zone.
Best zone size is 128x128. In general, outside zones (anything other than an interior) must be multiples of 32.
We may accept 256x128 on some specials cases ( infrequently visited areas ), but we will force you to split it in smaller zones if it is any bigger ( it is really easy to split the zone anyway ). The template.tmx file has all the layers in the correct order. It is best to use this, or open and 'Save As....' an existing map, for making new maps. Some prefer to use a duplicated version of an existing map since it has tilesets pre-loaded. If you do this, try to choose one with as similar tiles as possible and remove from the Palette that you don't use, to optimise memory usage.
Zones are split based on its level:
- Level 6
- Level 5
- Level 4
- Level 3
- Level 2
- Level 1
- Level 0
- Level -1
- Level -2
- Level -3
- Level -4
- Level -5
- Level -6
- Level -7
Zones have a name that denotes their spatial location.
Every relevant geographical location has its unique name like:
So the central point of that area has a simple name like dungeon, city, castle or whatever. And around it we build the whole map using n,e,w and s keywords to denote cardinal positions. So for example
0_semos_city is the central point of this area. 0_semos_forest_nw is the forest of semos that is on the north west position of semos central point. 0_semos_forest_n2_w is the forest of semos above the previous forest.
Now when you have your clean map, and have loaded a few tiles to use, you can start drawing... some things you need to know is about the layers we have, lets start from the bottom and move up.
The bottom of it all. This layer is used to draw different kinds of land, like sand, grass, water or anything else of that kind. Make sure you draw one "full tile" (a "full tile" is a tile that doesn't have any transparent pixels in it) on every tile in this layer (even if it's just a black tile). If any of the tiled 'grey' background is left not coloured in, the play field wont update after you walk near it. This makes a weird blur effect, until that spot comes out of the screen.
The "mix" layer. This layer is mainly used to bind grass, sand, water or ony other terrain together, making the different terrains blend together using edge tiles or wall tiles. This layer is also used to give the map a "personality"... If you open the orril_forest map there is a place on that map you find a portal (position 60,90). Near that portal you have statues surrounding it. Now on those statues you see vines growing on them, those statues is placed in the mix layer while the vines is actually placed in next layer, creating the feeling of that the statues is very old, and have been standing there for ages.
This layer is mainly intended for placing bushes, flowers, tree bases and other small things that might exist in the world. This layer can also be used just like the 1_terrain layer for mixing small objects into the world. A good rule for using the 1_terrain layer and the 2_object layer is that: "it should look correct", and thats all you have to think of.
Anything you place in this layer will be drawn "above" the player, making an effect of walking behind it (commonly used for the tree tops, say.)
Just like the 3_roof layer you walk behind this, however this is also drawn above the 3_roof layer, so you can draws chimneys on roofs say. Or so you can put flames on this layer, on top of a torch or lamp top piece on the 3_roof layer. (E.g. Take a look on how our tower in the nalwor_city map is done)..
This layer is a bit more advanced then the other layers. So we take it further down.
Probably the most important layer of all. This layer tells where you can move or not in the map, just place the red tiles from tiled/tileset/logic/collision.png wherever you don't want players to be able to walk, make sure no other tiles is placed here, because they will work as collision tiles aswell.
This layer is used to create protection zones, ie non PvP (Player versus Player) zones, use the green tile in tiled/tileset/logic/protection.png to place these zones. The protection zone is done on a tile per tile basis.
Ok, back to the objects layer. This layer is used to place monsters, food growers and portals. Only tiles from tiled/tileset/logic/ can be used here.
In the tiled/tileset/logic/creatures folder you have a lot of tiles with small images of the monsters on. They are grouped according to monster type e.g. elf.png. Just place a few monsters from this tileset in the object layer, and they will be there in game later when the server updates. If you place a very big creature like the balrog then make sure it has plenty of space to spawn because even though the tile is only 1x1 the balrog takes up a lot more space!
In the tiled/tileset/logic/item folder are vegetables, resources like wood, and the sheepfood. The sheepfood is for the berries you can place on the bushes (or on any other place actually... but don't confuse the players!... or our poor sheep :P ).
The last thing that is important in this layer is the portals, at tiled/tileset/logic/portal.png Most of the portals need to be coded using xml to set the source destination. (see) The exceptions are :
- the portal that has a brown door, used to create "standard house" entrances.
- If you place it on the map a new interior will be created, which is entered where you placed the portal. It has the standard interior from tiled/interiors/abstract/house_000.tmx
- the two portals with stairs on, used to go up or down in the "world layers" (check world.tmx file). Do not use on interiors! It is easiest to explain by example:
- You place one pointing 'down' at coordinates 45, 50 on a Level 0 layer with global coordinates x=499872 y=500000.
- Then if you place one pointing 'up' at coordinates 45, 50 on a Level -1 layer with global coordinates x=499872 y=500000, the stairway will be created to go in both directions.
- If you don't match the local coordinates 45, 50, it won't work. If you don't match the global coordinates, x y, then it won't work. If you try skipping a layer and making it from Level 0 to level -2, say, it won't work. If you only put in one half of the up down pair, it won't work.
- For the mental wellness of your players, add an image of some stairs on the 1_terrain or 2_objects layer.
- For a much harder example look at the -2_orril_dwarf_mine stairs going down from the green dragon cave to the -3_orril_dwarf_blacksmith. If you understand that, you're truly a master of the stairs.
- The plain white portal square can be used as a marker for where you have created portals in xml (see below.) It will not do anything if you only use this, you need the xml too. And you do not have to use it, as the xml doesn't need it. It's just for your own memory that you might want it.
- The others like 'Entry' 'Zone Change' and the one with the stop sign aren't used. So, ignore them.
If you want to create a portal leading to a specific interior house, or stairs to go up and down levels inside an interior, or a fancy portal like key checking or one-way, you need to edit the xml files for the zones. This is explained at HowToAddMapsServerStendhal#Adding_Portals.
Most tiles we use in stendhal now which should be animated, are animated already. For example the white daisy, the flames, etc. We document here how it's done.
The animations are configured in a file at tiled/tileset/animation.seq. Lets look at a simple example, the flames.
tileset/item/furniture/light/flames.png 0 0:1 tileset/item/furniture/light/flames.png 1 1:0
The flames.png has two tiles, counting from 0 they are numbered 0, 1. There is an entry for each tile which should be animated. 0:1 tells the order they should animate in.
If you write * for the tile to be animated, then all the tiles in the following list are animated. So we can animate the flames in a shorter way:
tileset/item/furniture/light/flames.png * 0:1
The use of * is equivalent to writing a line for each of the tiles in the frame list, and cycling through the list at each line. For example,
tileset/ground/water/whirlpool.png * 0:1:2:3
is a shorthand to writing
tileset/ground/water/whirlpool.png 0 0:1:2:3 tileset/ground/water/whirlpool.png 1 1:2:3:0 tileset/ground/water/whirlpool.png 2 2:3:0:1 tileset/ground/water/whirlpool.png 3 3:0:1:2
Lets try a more complicated example, the white daisy. That is a file with both a double daisy and a single daisy in it. We want the double daisies animated in a sequence, and the single in a sequence, and never the twain shall meet.
tileset/plant/flower/daisy_white.png 0 0:2:4:6@3500 tileset/plant/flower/daisy_white.png 2 2:4:6:0@3500 tileset/plant/flower/daisy_white.png 4 4:6:0:2@3500 tileset/plant/flower/daisy_white.png 6 6:0:2:4@3500 tileset/plant/flower/daisy_white.png 1 1:3:5:7@3500 tileset/plant/flower/daisy_white.png 3 3:5:7:1@3500 tileset/plant/flower/daisy_white.png 5 5:7:1:3@3500 tileset/plant/flower/daisy_white.png 7 7:1:3:5@3500
The even numbers tiles, 0:2:4:6, are the double daisy. So for example tile 0 in daisy_white.png animates 0->2->4->6, through all the 'double daisies' in sequence. Same for the other double tiles. The odd numbers tiles, 1:3:5:7, are the single daisy. As you've probably now guessed, tile 1 is told to animate through 1:3:5:7, all the single daisy frames.
In the white daisy example, notice the extra @3500 after the sequence order. This tells the (somewhat slow) speed that daisies are animated at. If you don't want to use the default speed, try adding a speed like this and do 'trial and error' till you achieve a realistic effect. You can add the speed after the first tile number (or *), when you want all the frames stay visible for the specified time, or you can specify the speed for an individual frame, like in our example.
If you have any unanswered questions after this, please join our IRC channel irc.freenode.net #arianne, and we will answer them with the best of our abilities. Just ask your question and wait around for someone to answer. Don't ask to ask :)