Others tips to make levels

From X-Moto
Revision as of 20:33, 9 March 2007 by The only dude (talk | contribs) (Level properties)
Jump to: navigation, search

Català - Español

If you use a property requiring xmoto >= 0.2.1 for example, you must modify the level tag like this :

<level id="myid" rversion="0.2.1">

Level properties

<name>Level name</name>
<sky zoom="0.1" offset="0.1" 
color_r="255" color_g="255" color_b="255" color_a="0"
drifted="true" driftZoom="1.0"
driftColor_r="255" driftColor_g="255" driftColor_b="0" driftColor_a="0">Space</sky>
<border texture="Bricks" />
<music name="batcave" />
<sprite_replacement old_name="Strawberry" new_name="Star" />
<sprite_replacement old_name="Wrecker" new_name="Star" />
<sprite_replacement old_name="Flower" new_name="Strawberry" />
<sprite_replacement old_name="Star" new_name="Wrecker" />
<sound_replacement  old_name="PickUpStrawberry" new_name="Squeek" />
<layeroffset x="0.2" y="1.0"/>
<layeroffset x="0.3" y="1.0"/>
<layeroffset x="0.5" y="1.0"/>
<layeroffset x="1.9" y="1.0" frontlayer="true"/>
<layeroffset x="2.5" y="1.0" frontlayer="true"/>
  • sky : several properties to change the sky texture (some color effects, ...) [require xmoto >= 0.2.5]
    • zoom : size of the texture
    • offset : offset with the sky when moving the bike
    • color_r color_g color_b color_a : red, green, blue and alpha color apply to the texture
    • drifted : set the drifted effect activated
    • driftZoom : size of the drift texture
    • driftColor_r, driftColor_g, driftColor_b, driftColor_a : color apply to the drift texture
  • border : border of the level [require xmoto >= 0.2.5]
  • music : music played while playing the level (with 0.2.5, batcave, menu1 and rideALong are available) [require xmoto >= 0.2.5]
  • theme_replacements : you can replace a special sprite like Flower by an other picture and a sound by another one (you can replace Wrecker, Strawberry, Star, Flower and PickUpStrawberry) [require xmoto >= 0.2.5]
  • parallax layers: allow you to have different background and front parallax layers of blocks. In the example, there's three background layers (0, 1 and 2) and two front layers (3 and 4). [require xmoto >= 0.2.5]
  • Now, there's two layers of static blocks. If you add 'islayer="true"' in the position of a block, then the block will be in the second static block layer which is display on top of the existing static block layer.


<sky color_r="150" color_g="100" color_b="50" zoom="3.0">sky1</sky>



To see parallax layers at work, check out the Green Hill Zone Act 1&2 levels.

Parallax layers

Since 0.2.6 you can add background and front parallax layers of blocks (non dynamic blocks which can't interact with the biker, only for visual effects) with no limit in the number of layers.

Here is how to update the blocks to put them in a layer:

Blockxxx in the second background layer (layerid: 1):

<position x="-17.175000" y="14.525000" islayer="true" layerid="1"/> 

Blockyyy in the first front layer (layerid: 3):

<position x="-17.175000" y="14.525000" islayer="true" layerid="3"/>

Static blocks

Since xmoto 0.2.6, the rendering order of blocks have changed. Before 0.2.6, blocks were rendered in the same order as the order of blocks in the xml level file. Now, visible blocks are sorted on their texture before being rendered.

As a consequence, some static blocks can be rendered behind some others, so now there's two layers of static blocks (there's a new layer of static blocks in front of the existing one). Blocks with no special informations in them are in the back layer of static blocks. Blocks with the 'islayer="true"' information in their '<position >' are rendered in the front layer of static blocks.


<position x="-17.175000" y="14.525000" islayer="true"/>

If you need even more granularity you can add a front layer with an x and y offset of 1.0. This way the front layer will scroll at the same speed than the static blocks

Block properties

<block id="Block1">
	<physics grip="1.0"/>
	<position x="-0.333333" y="-5.666667" dynamic="true"/>
	<usetexture id="default"/>
	<vertex x="-7.666667" y="0.666667"/>
	<vertex x="7.333333" y="2.666667"/>
	<vertex x="0.333333" y="-3.333333"/>
all the properties are not mandatory. The default value will be given in this case.
  • id : identifiant of the block ; allow to change the block via a script
  • position : initial position of the block
  • dynamic : allow this block to move via a script if set to true
  • grip : gripness of the block ; allow to simulate ice [require xmoto >= 0.2.1]
  • usetexture : texture applied on the block

Sprites properties

<entity id="Strawberry2" typeid="Strawberry">
 <size r="0.2" width="0.5" height="0.5"/>
 <position x="42" y="0.5" angle="3.14159" reversed="true"/>
all the properties are not mandatory. The default value will be given in this case.
  • id : identifiant of the sprite ; allow to change the block via a script
  • typeid : type of the sprite
  • r : radius of the collision circle
  • width : width of the picture [require xmoto >= 0.2.1]
  • height : height of the picture [require xmoto >= 0.2.1]
  • x : position x of the center
  • y : position y of the center
  • angle : angle to draw the sprite [require xmoto >= 0.2.5]
  • reversed : mirror the picture [require xmoto >= 0.2.5]