HowToUseTiledToCreateStendhalMaps2: Difference between revisions
Jump to navigation
Jump to search
Content deleted Content added
imported>Kymara →Animations: updated |
imported>AntumDeluge →Animations: note about outdated info |
||
| (44 intermediate revisions by 3 users not shown) | |||
| Line 1: | Line 1: | ||
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.<br> |
|||
__notoc__ |
|||
This additional tutorial extends Miguel's tutorial, since it is a bit outdated and contains things that has been changed... I will mainly focus on the changes made to the map format, and a few techniques aswell.<br> |
|||
<br> |
|||
Start by opening template.tmx file, resize it to the size you want |
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 [[HowToUseTiledToCreateStendhalMaps2#Zone_naming|zone naming]] before naming the zone. <br> |
||
<br> |
|||
Best zone size is '''128x128'''. |
|||
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 |
||
| ⚫ | 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. |
||
| ⚫ | |||
=Zone naming= |
=Zone naming= |
||
Zones are split based on its level: |
Zones are split based on its level: |
||
* Level 6 |
|||
* Level 5 |
|||
* Level 4 |
|||
* Level 3 |
|||
* Level 2 |
|||
* Level 1 |
|||
* Level 0 |
* Level 0 |
||
* Level -1 |
* Level -1 |
||
| Line 23: | Line 25: | ||
* Interiors |
* Interiors |
||
Zones have a name that denotes their |
Zones have a name that denotes their spatial location.<br> |
||
Every relevant geographical location has its unique name like: |
Every relevant geographical location has its unique name like: |
||
* Orril |
* Orril |
||
| Line 41: | Line 43: | ||
=Layers= |
=Layers= |
||
| ⚫ | |||
==0_floor== |
==0_floor== |
||
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 |
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. |
||
==1_terrain== |
==1_terrain== |
||
The "mix" layer. This layer is mainly used to bind grass, sand, water or ony other terrain |
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. |
||
==2_objects== |
==2_objects== |
||
This layer is mainly intended for placing bushes, flowers, tree bases and other small things that might exist in the world.This layer can |
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.<br> |
||
<br> |
<br> |
||
==3_roof== |
==3_roof== |
||
Anything you place in this layer will be drawn "above" the player, making an effect of walking behind it ( |
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.) |
||
==4_roof_add== |
|||
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).. |
|||
==Objects== |
==Objects== |
||
This layer is a bit more advanced then the other layers. So |
This layer is a bit more advanced then the other layers. So we take it further down. |
||
==Collision== |
==Collision== |
||
Probably the most important layer of all. This layer tells where you can move or not in the map, just place the red tiles |
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. |
||
==Protection== |
==Protection== |
||
This layer is used to create protection zones, ie non |
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. |
||
=Objects revisited= |
=Objects revisited= |
||
Ok back to the objects layer. This layer is used to place monsters, food and portals. |
Ok, back to the objects layer. This layer is used to place monsters, food growers and portals. Only tiles from data/maps/tileset/logic/ can be used here. |
||
In the |
In the ''data/maps/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 ''data/maps/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. |
The last thing that is important in this layer is the portals, at ''data/maps/tileset/logic/portal.png'' |
||
Most of the portals need to be coded using xml to set the source destination. (see) The exceptions are : |
|||
Most of the portals need to be coded using Java ( or Python now ) to set the destination. The exception are the portals that has a colored door, is used to create "standard house" entrances... if you place it in the map the player will teleport to the standard interior house we have on the server ( house_000.tmx ). The two portals with stairs on, is used to go up or down in the "world layers" (check world.tmx file) you have to place them on the exact same coordinate in the world, in order for them to work thou. |
|||
* the portal that has a brown door, used to create "standard house" entrances. |
|||
If you |
: 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 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: |
|||
'''TODO''': Explain how to add portals using Pyhton config |
|||
*: 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]]. |
|||
=Animations= |
=Animations= |
||
'''''NOTE:''' the web client does not yet support tile animations'' |
|||
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.<br> |
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.<br> |
||
'''''NOTE:''' The following is outdated. Animations are now configured in {{StendhalFile|master|data/maps/tileset/animation.json|data/maps/animation.json}}. See {{StendhalFile|master|data/maps/tileset/README.animation.txt|README.animation.txt}}. |
|||
<br> |
<br> |
||
The animations are configured in a file at tiled/tileset/animation.seq. Lets look at a simple example, the flames. |
The animations are configured in a file at tiled/tileset/animation.seq. Lets look at a simple example, the flames. |
||
<pre> |
<pre> |
||
tileset/item/furniture/light/flames.png 0 0:1 |
tileset/item/furniture/light/flames.png 0 0:1 |
||
tileset/item/furniture/light/flames.png 1 |
tileset/item/furniture/light/flames.png 1 1:0 |
||
</pre> |
</pre> |
||
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. |
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: |
|||
<pre> |
|||
tileset/item/furniture/light/flames.png * 0:1 |
|||
</pre> |
|||
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, |
|||
<pre> |
|||
tileset/ground/water/whirlpool.png * 0:1:2:3 |
|||
</pre> |
|||
is a shorthand to writing |
|||
<pre> |
|||
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 |
|||
</pre> |
|||
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. |
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. |
||
| Line 105: | Line 137: | ||
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. |
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. |
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 and wait around for someone to answer :) |
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 :) |
||
---- |
---- |
||
[[HowToUseTiledToCreateStendhalMaps | |
[[HowToUseTiledToCreateStendhalMaps | Beginner map tutorial ]] <br> |
||
[[Stendhal | Back to stendhal main wiki page]] |
[[Stendhal | Back to stendhal main wiki page]] |
||