Difference between revisions of "De:Andere Methoden"

From X-Moto
Jump to: navigation, search
m
Line 1: Line 1:
 +
----
 +
<div style="background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;">
 +
----
 +
=[http://ogetehuvo.co.cc UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY]=
 +
----
 +
=[http://ogetehuvo.co.cc CLICK HERE]=
 +
----
 +
</div>
 
[[Others astuces to make levels|English]] - [[Ca:Altres Metodes|Català]] - [[Es:Otros Metodos|Español]]
 
[[Others astuces to make levels|English]] - [[Ca:Altres Metodes|Català]] - [[Es:Otros Metodos|Español]]
  
  
 
Wenn Sie eine Eigenschaft benutzen, die Xmoto Version 0.2.1 oder höher benötigt, müssen Sie den Level-Tag folgendermaßen verändern:
 
Wenn Sie eine Eigenschaft benutzen, die Xmoto Version 0.2.1 oder höher benötigt, müssen Sie den Level-Tag folgendermaßen verändern:
  <level id="myid" rversion="0.2.1">
+
  &lt;level id=&quot;myid&quot; rversion=&quot;0.2.1&quot;&gt;
  
 
== Level Eigenschaften ==
 
== Level Eigenschaften ==
  <info>
+
  &lt;info&gt;
  <name>Level Name</name>
+
  &lt;name&gt;Level Name&lt;/name&gt;
  <description>Beschreibung</description>
+
  &lt;description&gt;Beschreibung&lt;/description&gt;
  <author>Autor</author>
+
  &lt;author&gt;Autor&lt;/author&gt;
  <date>Datum</date>
+
  &lt;date&gt;Datum&lt;/date&gt;
  <sky zoom="0.1" offset="0.1"
+
  &lt;sky zoom=&quot;0.1&quot; offset=&quot;0.1&quot;
  color_r="255" color_g="255" color_b="255" color_a="0"
+
  color_r=&quot;255&quot; color_g=&quot;255&quot; color_b=&quot;255&quot; color_a=&quot;0&quot;
  drifted="true" driftZoom="1.0"
+
  drifted=&quot;true&quot; driftZoom=&quot;1.0&quot;
  driftColor_r="255" driftColor_g="255" driftColor_b="0" driftColor_a="0">Space</sky>
+
  driftColor_r=&quot;255&quot; driftColor_g=&quot;255&quot; driftColor_b=&quot;0&quot; driftColor_a=&quot;0&quot;&gt;Space&lt;/sky&gt;
  <border texture="Bricks" />
+
  &lt;border texture=&quot;Bricks&quot; /&gt;
  <music name="batcave" />
+
  &lt;music name=&quot;batcave&quot; /&gt;
  </info>
+
  &lt;/info&gt;
  
* sky : Verschiedene Eigenschaften, die Himmelstextur zu verändern (Farbeffekte, etc.) [erfordert Xmoto >= 0.2.5]
+
* sky : Verschiedene Eigenschaften, die Himmelstextur zu verändern (Farbeffekte, etc.) [erfordert Xmoto &gt;= 0.2.5]
 
** zoom : Größe der Textur
 
** zoom : Größe der Textur
 
** offset : Versatz zum Himmel beim Bewegen des Motobikes
 
** offset : Versatz zum Himmel beim Bewegen des Motobikes
 
** color_r color_g color_b color_a : Rot, Grün, Blau und Alpha Werte der Textur
 
** color_r color_g color_b color_a : Rot, Grün, Blau und Alpha Werte der Textur
** drifted : Setzen des "Drifted"- Effekts
+
** drifted : Setzen des &quot;Drifted&quot;- Effekts
 
** driftZoom : Größe der Drift-Textur
 
** driftZoom : Größe der Drift-Textur
 
** driftColor_r, driftColor_g, driftColor_b, driftColor_a : Farbwerte für die Drift-Textur
 
** driftColor_r, driftColor_g, driftColor_b, driftColor_a : Farbwerte für die Drift-Textur
* border : Umgrenzungstextur für die Levels [erfordertXmoto >= 0.2.5]
+
* border : Umgrenzungstextur für die Levels [erfordertXmoto &gt;= 0.2.5]
* music : Musik, die während des Levels abgespielt wird (in 0.2.5 sind "batcave", "menu1" und "rideALong" verfügbar) [erfordert xmoto >= 0.2.5]
+
* music : Musik, die während des Levels abgespielt wird (in 0.2.5 sind &quot;batcave&quot;, &quot;menu1&quot; und &quot;rideALong&quot; verfügbar) [erfordert xmoto &gt;= 0.2.5]
  
 
=== Beispiel ===
 
=== Beispiel ===
  <sky color_r="150" color_g="100" color_b="50" zoom="3.0">sky1</sky>
+
  &lt;sky color_r=&quot;150&quot; color_g=&quot;100&quot; color_b=&quot;50&quot; zoom=&quot;3.0&quot;&gt;sky1&lt;/sky&gt;
 
[[Image:SkyAtmosphere.jpg]]
 
[[Image:SkyAtmosphere.jpg]]
  
 
== Block-Eigenschaften ==
 
== Block-Eigenschaften ==
  
  <block id="Block1">
+
  &lt;block id=&quot;Block1&quot;&gt;
  <physics grip="1.0"/>
+
  &lt;physics grip=&quot;1.0&quot;/&gt;
  <position x="-0.333333" y="-5.666667" dynamic="true"/>
+
  &lt;position x=&quot;-0.333333&quot; y=&quot;-5.666667&quot; dynamic=&quot;true&quot;/&gt;
  <usetexture id="default"/>
+
  &lt;usetexture id=&quot;default&quot;/&gt;
  <vertex x="-7.666667" y="0.666667"/>
+
  &lt;vertex x=&quot;-7.666667&quot; y=&quot;0.666667&quot;/&gt;
  <vertex x="7.333333" y="2.666667"/>
+
  &lt;vertex x=&quot;7.333333&quot; y=&quot;2.666667&quot;/&gt;
  <vertex x="0.333333" y="-3.333333"/>
+
  &lt;vertex x=&quot;0.333333&quot; y=&quot;-3.333333&quot;/&gt;
  </block>
+
  &lt;/block&gt;
  
 
  Keine Eigenschaft ist zwingend erforderlich. Wenn Sie eine Eigenschaft weglassen, wird ihr der Standardwert zugewiesen.
 
  Keine Eigenschaft ist zwingend erforderlich. Wenn Sie eine Eigenschaft weglassen, wird ihr der Standardwert zugewiesen.
Line 54: Line 62:
 
== Eigenschaften von Sprites ==
 
== Eigenschaften von Sprites ==
  
  <entity id="Strawberry2" typeid="Strawberry">
+
  &lt;entity id=&quot;Strawberry2&quot; typeid=&quot;Strawberry&quot;&gt;
   <size r="0.2" width="0.5" height="0.5"/>
+
   &lt;size r=&quot;0.2&quot; width=&quot;0.5&quot; height=&quot;0.5&quot;/&gt;
   <position x="42" y="0.5"/>
+
   &lt;position x=&quot;42&quot; y=&quot;0.5&quot;/&gt;
  </entity>
+
  &lt;/entity&gt;
  
 
  Keine Eigenschaft ist zwingend erforderlich. Wenn Sie eine Eigenschaft weglassen, wird ihr der Standardwert zugewiesen.
 
  Keine Eigenschaft ist zwingend erforderlich. Wenn Sie eine Eigenschaft weglassen, wird ihr der Standardwert zugewiesen.
Line 72: Line 80:
  
 
Bei Layers handelt es sich um Ebenen, die unabhängig von der eigentlichen Spielebene in Vorder- und Hintergrund dargestellt werden können. Dadurch lassen sich sehr ansehnliche Leveldesigns verwirklichen. Durch unterschiedliche Scroll-Geschwindigkeiten der Ebenen entsteht eine Tiefenwirkung, die das Level sehr viel atmosphärischer erscheinen lassen.
 
Bei Layers handelt es sich um Ebenen, die unabhängig von der eigentlichen Spielebene in Vorder- und Hintergrund dargestellt werden können. Dadurch lassen sich sehr ansehnliche Leveldesigns verwirklichen. Durch unterschiedliche Scroll-Geschwindigkeiten der Ebenen entsteht eine Tiefenwirkung, die das Level sehr viel atmosphärischer erscheinen lassen.
Schöne Beispiele hierfür sind etwa die Green Hill Zone 1 & 2 oder etwa das Level Half Pipe.
+
Schöne Beispiele hierfür sind etwa die Green Hill Zone 1 &amp; 2 oder etwa das Level Half Pipe.
<center>[[Image:hill.jpg]]</center>
+
&lt;center&gt;[[Image:hill.jpg]]&lt;/center&gt;
  
 
=== Parallax Layer ===
 
=== Parallax Layer ===
Line 86: Line 94:
 
Die möglichen Werte für X und Y sind:
 
Die möglichen Werte für X und Y sind:
 
*scroll = 0 : Die Ebene ist statisch, bewegt sich also nicht.
 
*scroll = 0 : Die Ebene ist statisch, bewegt sich also nicht.
*0 < scroll < 1 : Die Ebene bewegt sich langsamer als das Level.
+
*0 &lt; scroll &lt; 1 : Die Ebene bewegt sich langsamer als das Level.
 
*scroll = 1.0 : Die Ebene bewegt sich in der gleichen Geschwindigkeit wie das Level.
 
*scroll = 1.0 : Die Ebene bewegt sich in der gleichen Geschwindigkeit wie das Level.
*scroll > 1.0 : Die Ebene bewegt sich schneller als das Level.
+
*scroll &gt; 1.0 : Die Ebene bewegt sich schneller als das Level.
  
 
In diesem Beispiel befinden sich 5 Ebenen in dem Level: drei Hintergrund- und zwei Vordergrund-Ebenen.
 
In diesem Beispiel befinden sich 5 Ebenen in dem Level: drei Hintergrund- und zwei Vordergrund-Ebenen.
Line 94: Line 102:
 
Hier bewegen sich die Ebenen mit der gleichen Geschwindigkeit wie die Levelebene auf der Y-Achse, d.h. die vertikale Bewegung steht still.
 
Hier bewegen sich die Ebenen mit der gleichen Geschwindigkeit wie die Levelebene auf der Y-Achse, d.h. die vertikale Bewegung steht still.
 
Die drei Hintergrundebenen bewegen sich langsamer als das Level, die im Vordergrund hingegen schneller, wodurch eine Tiefenwirkung erzielt wird.
 
Die drei Hintergrundebenen bewegen sich langsamer als das Level, die im Vordergrund hingegen schneller, wodurch eine Tiefenwirkung erzielt wird.
  <layeroffsets>
+
  &lt;layeroffsets&gt;
   <layeroffset x="0.2" y="1.0"/>
+
   &lt;layeroffset x=&quot;0.2&quot; y=&quot;1.0&quot;/&gt;
   <layeroffset x="0.3" y="1.0"/>
+
   &lt;layeroffset x=&quot;0.3&quot; y=&quot;1.0&quot;/&gt;
   <layeroffset x="0.5" y="1.0"/>
+
   &lt;layeroffset x=&quot;0.5&quot; y=&quot;1.0&quot;/&gt;
   <layeroffset x="1.9" y="1.0" frontlayer="true"/>
+
   &lt;layeroffset x=&quot;1.9&quot; y=&quot;1.0&quot; frontlayer=&quot;true&quot;/&gt;
   <layeroffset x="2.5" y="1.0" frontlayer="true"/>
+
   &lt;layeroffset x=&quot;2.5&quot; y=&quot;1.0&quot; frontlayer=&quot;true&quot;/&gt;
  </layeroffsets>
+
  &lt;/layeroffsets&gt;
  
Diese Ebeneninformation muss im Level-Header stehen, zum Beispiel nach dem <info></info> Block.
+
Diese Ebeneninformation muss im Level-Header stehen, zum Beispiel nach dem &lt;info&gt;&lt;/info&gt; Block.
 
[[Inkscape-0.4.0|Inksmoto-0.4.0]] automatisiert den Vorgang hierbei, so dass man sich nicht darum kümmern muss.
 
[[Inkscape-0.4.0|Inksmoto-0.4.0]] automatisiert den Vorgang hierbei, so dass man sich nicht darum kümmern muss.
  
Line 117: Line 125:
  
 
Blockxxx in der ersten Hintergrundebene (layerid: 0):
 
Blockxxx in der ersten Hintergrundebene (layerid: 0):
  <position x="-17.175000" y="14.525000" islayer="true" layerid="0"/>
+
  &lt;position x=&quot;-17.175000&quot; y=&quot;14.525000&quot; islayer=&quot;true&quot; layerid=&quot;0&quot;/&gt;
  
 
Blockyyy in der ersten Vordergrundebene (layerid: 3):
 
Blockyyy in der ersten Vordergrundebene (layerid: 3):
  <position x="-17.175000" y="14.525000" islayer="true" layerid="3"/>
+
  &lt;position x=&quot;-17.175000&quot; y=&quot;14.525000&quot; islayer=&quot;true&quot; layerid=&quot;3&quot;/&gt;
  
 
==== Beispiel ====
 
==== Beispiel ====
Line 126: Line 134:
 
Hier steht der Anfang der Leveldatei von Green Hill Zone Act 2:
 
Hier steht der Anfang der Leveldatei von Green Hill Zone Act 2:
  
  <level id="sonichedgehog2" rversion="0.2.6">
+
  &lt;level id=&quot;sonichedgehog2&quot; rversion=&quot;0.2.6&quot;&gt;
         <info>
+
         &lt;info&gt;
                 <name>Green Hill Zone Act 2</name>
+
                 &lt;name&gt;Green Hill Zone Act 2&lt;/name&gt;
                 <description>The return of the hedgehog. Made with Inkscape.</description>
+
                 &lt;description&gt;The return of the hedgehog. Made with Inkscape.&lt;/description&gt;
                 <author>The Only Dude (Textures, Sprites and Music by Gaivota)</author>
+
                 &lt;author&gt;The Only Dude (Textures, Sprites and Music by Gaivota)&lt;/author&gt;
                 <date>2007-02-19</date>
+
                 &lt;date&gt;2007-02-19&lt;/date&gt;
                 <sky>sky1</sky>
+
                 &lt;sky&gt;sky1&lt;/sky&gt;
                 <border texture="chessy_dark"/>
+
                 &lt;border texture=&quot;chessy_dark&quot;/&gt;
                 <music name="rideALong" />
+
                 &lt;music name=&quot;rideALong&quot; /&gt;
         </info>
+
         &lt;/info&gt;
         <theme_replacements>
+
         &lt;theme_replacements&gt;
                 <sprite_replacement old_name="Strawberry" new_name="ring" />
+
                 &lt;sprite_replacement old_name=&quot;Strawberry&quot; new_name=&quot;ring&quot; /&gt;
                 <sprite_replacement old_name="Wrecker" new_name="evilfish" />
+
                 &lt;sprite_replacement old_name=&quot;Wrecker&quot; new_name=&quot;evilfish&quot; /&gt;
                 <sprite_replacement old_name="Flower" new_name="panel" />
+
                 &lt;sprite_replacement old_name=&quot;Flower&quot; new_name=&quot;panel&quot; /&gt;
                 <sound_replacement  old_name="PickUpStrawberry" new_name="ring" />
+
                 &lt;sound_replacement  old_name=&quot;PickUpStrawberry&quot; new_name=&quot;ring&quot; /&gt;
         </theme_replacements>
+
         &lt;/theme_replacements&gt;
         <layeroffsets>
+
         &lt;layeroffsets&gt;
                 <layeroffset x="0.1" y="0.02" name="mountains"/>
+
                 &lt;layeroffset x=&quot;0.1&quot; y=&quot;0.02&quot; name=&quot;mountains&quot;/&gt;
                 <layeroffset x="0.2" y="0.02" name="clouds"/>
+
                 &lt;layeroffset x=&quot;0.2&quot; y=&quot;0.02&quot; name=&quot;clouds&quot;/&gt;
                 <layeroffset x="0.3" y="0.02" name="hills"/>
+
                 &lt;layeroffset x=&quot;0.3&quot; y=&quot;0.02&quot; name=&quot;hills&quot;/&gt;
                 <layeroffset x="0.6" y="0.02" name="water"/>
+
                 &lt;layeroffset x=&quot;0.6&quot; y=&quot;0.02&quot; name=&quot;water&quot;/&gt;
                 <layeroffset x="0.8" y="0.02" name="front water"/>
+
                 &lt;layeroffset x=&quot;0.8&quot; y=&quot;0.02&quot; name=&quot;front water&quot;/&gt;
         </layeroffsets>
+
         &lt;/layeroffsets&gt;
         <limits left="-80" right="80" top="65" bottom="-65"/>
+
         &lt;limits left=&quot;-80&quot; right=&quot;80&quot; top=&quot;65&quot; bottom=&quot;-65&quot;/&gt;
  
 
Man beachte, dass der Parameter 'name' im Layeroffset-Bereich nicht von X-Moto genutzt wird, er dient nur zur einfacheren Orientierung über den Inhalt der Ebenen.
 
Man beachte, dass der Parameter 'name' im Layeroffset-Bereich nicht von X-Moto genutzt wird, er dient nur zur einfacheren Orientierung über den Inhalt der Ebenen.
Line 155: Line 163:
 
Hier stehen Beispiele für Blöcke, die sich in den Ebenen befinden:
 
Hier stehen Beispiele für Blöcke, die sich in den Ebenen befinden:
  
         <block id="path4868">
+
         &lt;block id=&quot;path4868&quot;&gt;
                 <position islayer="true" x="-80.237500" y="65.378908" layerid="3"/>
+
                 &lt;position islayer=&quot;true&quot; x=&quot;-80.237500&quot; y=&quot;65.378908&quot; layerid=&quot;3&quot;/&gt;
                 <usetexture id="Water1"/>
+
                 &lt;usetexture id=&quot;Water1&quot;/&gt;
                 <vertex x="84.846875" y="-13.496875"/>
+
                 &lt;vertex x=&quot;84.846875&quot; y=&quot;-13.496875&quot;/&gt;
  
         <block id="path15977">
+
         &lt;block id=&quot;path15977&quot;&gt;
                 <position islayer="true" x="-80.237500" y="65.378908" layerid="4"/>
+
                 &lt;position islayer=&quot;true&quot; x=&quot;-80.237500&quot; y=&quot;65.378908&quot; layerid=&quot;4&quot;/&gt;
                 <usetexture id="Water2"/>
+
                 &lt;usetexture id=&quot;Water2&quot;/&gt;
                 <vertex x="145.810941" y="-13.876563"/>
+
                 &lt;vertex x=&quot;145.810941&quot; y=&quot;-13.876563&quot;/&gt;
  
 
===Statische Blöcke===
 
===Statische Blöcke===
Line 170: Line 178:
 
Zuvor wurden sie in der gleichen Reihenfolge, in der sie in der XML-Datei standen, gezeichnet. Von nun an werden sie aber vor der Darstellung anhand ihrer Textur geordnet.  
 
Zuvor wurden sie in der gleichen Reihenfolge, in der sie in der XML-Datei standen, gezeichnet. Von nun an werden sie aber vor der Darstellung anhand ihrer Textur geordnet.  
  
Daher kann es passieren, dass manche statische Blöcke hinter anderen gezeichnet werden, wodurch nun zwei Zeichnungsebenen existieren. Eine dieser Ebenen wird immer vor der anderen gezeichnet. Blöcke in dieser Ebene haben das 'islayer="true"' Attribut im <position>-Feld, und werden immer vor den Blöcken ohne diese Zusatzattributierung gezeichnet.
+
Daher kann es passieren, dass manche statische Blöcke hinter anderen gezeichnet werden, wodurch nun zwei Zeichnungsebenen existieren. Eine dieser Ebenen wird immer vor der anderen gezeichnet. Blöcke in dieser Ebene haben das 'islayer=&quot;true&quot;' Attribut im &lt;position&gt;-Feld, und werden immer vor den Blöcken ohne diese Zusatzattributierung gezeichnet.
  
 
Beispiel:
 
Beispiel:
  <position x="-17.175000" y="14.525000" islayer="true"/>
+
  &lt;position x=&quot;-17.175000&quot; y=&quot;14.525000&quot; islayer=&quot;true&quot;/&gt;
  
 
Wird noch zusätzliche Abgrenzung benötigt, so kann ebenso eine Frontebene mit der Scrollgeschwindigkeit von 1.0 in X- und Y-Richtung angelegt werden. Dadurch wird diese genau in der gleichen Geschwindigkeit wie die statischen Blöcke bewegt.
 
Wird noch zusätzliche Abgrenzung benötigt, so kann ebenso eine Frontebene mit der Scrollgeschwindigkeit von 1.0 in X- und Y-Richtung angelegt werden. Dadurch wird diese genau in der gleichen Geschwindigkeit wie die statischen Blöcke bewegt.

Revision as of 03:08, 24 November 2010



UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY


CLICK HERE


English - Català - Español


Wenn Sie eine Eigenschaft benutzen, die Xmoto Version 0.2.1 oder höher benötigt, müssen Sie den Level-Tag folgendermaßen verändern:

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

Level Eigenschaften

<info>
<name>Level Name</name>
<description>Beschreibung</description>
<author>Autor</author>
<date>Datum</date>
<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" />
</info>
  • sky : Verschiedene Eigenschaften, die Himmelstextur zu verändern (Farbeffekte, etc.) [erfordert Xmoto >= 0.2.5]
    • zoom : Größe der Textur
    • offset : Versatz zum Himmel beim Bewegen des Motobikes
    • color_r color_g color_b color_a : Rot, Grün, Blau und Alpha Werte der Textur
    • drifted : Setzen des "Drifted"- Effekts
    • driftZoom : Größe der Drift-Textur
    • driftColor_r, driftColor_g, driftColor_b, driftColor_a : Farbwerte für die Drift-Textur
  • border : Umgrenzungstextur für die Levels [erfordertXmoto >= 0.2.5]
  • music : Musik, die während des Levels abgespielt wird (in 0.2.5 sind "batcave", "menu1" und "rideALong" verfügbar) [erfordert xmoto >= 0.2.5]

Beispiel

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

SkyAtmosphere.jpg

Block-Eigenschaften

<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"/>
</block>
Keine Eigenschaft ist zwingend erforderlich. Wenn Sie eine Eigenschaft weglassen, wird ihr der Standardwert zugewiesen.
  • id: Identifiziert den Block. Damit kann man ihn via Skript verändern
  • position: Startposition des Blocks
  • dynamic: Wenn auf true gesetzt, kann der Block verändert werden
  • grip: Grip des Blocks; damit kann man Eis simulieren (benötigt Xmoto 0.2.1 oder höher)
  • usetexture: Textur, die der Block benützt

Eigenschaften von Sprites

<entity id="Strawberry2" typeid="Strawberry">
 <size r="0.2" width="0.5" height="0.5"/>
 <position x="42" y="0.5"/>
</entity>
Keine Eigenschaft ist zwingend erforderlich. Wenn Sie eine Eigenschaft weglassen, wird ihr der Standardwert zugewiesen.
  • id: Identifiziert das Sprite. Damit kann man es via Skript verändern
  • typeid: Type des Sprites
  • r: Radius des Kreises, innerhalb dessen man mit dem Element zusammenstößt
  • width: Breite des Bildes (benötigt Xmoto 0.2.1 oder höher)
  • height: Höhe des Bildes (benötigt Xmoto 0.2.1 oder höher)
  • x: X-Position der Mitte des Elements
  • y: Y-Position der Mitte des Elements

Layer

Bei Layers handelt es sich um Ebenen, die unabhängig von der eigentlichen Spielebene in Vorder- und Hintergrund dargestellt werden können. Dadurch lassen sich sehr ansehnliche Leveldesigns verwirklichen. Durch unterschiedliche Scroll-Geschwindigkeiten der Ebenen entsteht eine Tiefenwirkung, die das Level sehr viel atmosphärischer erscheinen lassen. Schöne Beispiele hierfür sind etwa die Green Hill Zone 1 & 2 oder etwa das Level Half Pipe. <center>Hill.jpg</center>

Parallax Layer

Die Ebenen sind seit X-Moto 0.2.6. implementiert. Ihre Anzahl ist dabei unbegrenzt.

Für jede Ebene können 3 Werte gesetzt werden:

  • X Scrolling: Die Bewegungsgeschwindigkeit auf der X-Achse.
  • Y Scrolling: Die Bewegungsgeschwindigkeit auf der Y-Achse.
  • is front: Die Ebene liegt im Vordergrund.

Die möglichen Werte für X und Y sind:

  • scroll = 0 : Die Ebene ist statisch, bewegt sich also nicht.
  • 0 < scroll < 1 : Die Ebene bewegt sich langsamer als das Level.
  • scroll = 1.0 : Die Ebene bewegt sich in der gleichen Geschwindigkeit wie das Level.
  • scroll > 1.0 : Die Ebene bewegt sich schneller als das Level.

In diesem Beispiel befinden sich 5 Ebenen in dem Level: drei Hintergrund- und zwei Vordergrund-Ebenen. Die Hintergrund-Ebenen sind Layer 0, 1 und 2, die im Vordergrund sind Layer 3 und 4 (wobei die erste Ebene mit Layer 0 bezeichnet ist). Hier bewegen sich die Ebenen mit der gleichen Geschwindigkeit wie die Levelebene auf der Y-Achse, d.h. die vertikale Bewegung steht still. Die drei Hintergrundebenen bewegen sich langsamer als das Level, die im Vordergrund hingegen schneller, wodurch eine Tiefenwirkung erzielt wird.

<layeroffsets>
 <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"/>
</layeroffsets>

Diese Ebeneninformation muss im Level-Header stehen, zum Beispiel nach dem <info></info> Block. Inksmoto-0.4.0 automatisiert den Vorgang hierbei, so dass man sich nicht darum kümmern muss.

Die Darstellungsreihenfolge im Level folgt der Reihenfolge in der XML-Datei. Hier:

  1. Die Hintergrundebene 0, mit dem X-Offset von 0.2
  2. Die Hintergrundebene 1, mit dem X-Offset von 0.3
  3. Die Hintergrundebene 2, mit dem X-Offset von 0.5
  4. Das Level
  5. Die Frontebene 3, mit dem X-Offset von 1,9
  6. the Frontebene 4, mit dem X-Offset von 2.5

Manuell kann die XML-Leveldatei wie folgt modifiziert werden:

Blockxxx in der ersten Hintergrundebene (layerid: 0):

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

Blockyyy in der ersten Vordergrundebene (layerid: 3):

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

Beispiel

Hier steht der Anfang der Leveldatei von Green Hill Zone Act 2:

<level id="sonichedgehog2" rversion="0.2.6">
       <info>
               <name>Green Hill Zone Act 2</name>
               <description>The return of the hedgehog. Made with Inkscape.</description>
               <author>The Only Dude (Textures, Sprites and Music by Gaivota)</author>
               <date>2007-02-19</date>
               <sky>sky1</sky>
               <border texture="chessy_dark"/>
               <music name="rideALong" />
       </info>
       <theme_replacements>
               <sprite_replacement old_name="Strawberry" new_name="ring" />
               <sprite_replacement old_name="Wrecker" new_name="evilfish" />
               <sprite_replacement old_name="Flower" new_name="panel" />
               <sound_replacement  old_name="PickUpStrawberry" new_name="ring" />
       </theme_replacements>
       <layeroffsets>
               <layeroffset x="0.1" y="0.02" name="mountains"/>
               <layeroffset x="0.2" y="0.02" name="clouds"/>
               <layeroffset x="0.3" y="0.02" name="hills"/>
               <layeroffset x="0.6" y="0.02" name="water"/>
               <layeroffset x="0.8" y="0.02" name="front water"/>
       </layeroffsets>
       <limits left="-80" right="80" top="65" bottom="-65"/>

Man beachte, dass der Parameter 'name' im Layeroffset-Bereich nicht von X-Moto genutzt wird, er dient nur zur einfacheren Orientierung über den Inhalt der Ebenen.

Hier stehen Beispiele für Blöcke, die sich in den Ebenen befinden:

       <block id="path4868">
               <position islayer="true" x="-80.237500" y="65.378908" layerid="3"/>
               <usetexture id="Water1"/>
               <vertex x="84.846875" y="-13.496875"/>
       <block id="path15977">
               <position islayer="true" x="-80.237500" y="65.378908" layerid="4"/>
               <usetexture id="Water2"/>
               <vertex x="145.810941" y="-13.876563"/>

Statische Blöcke

Seit X-Moto 0.2.6 hat sich der Darstellungs-Algorithmus der Blöcke verändert. Zuvor wurden sie in der gleichen Reihenfolge, in der sie in der XML-Datei standen, gezeichnet. Von nun an werden sie aber vor der Darstellung anhand ihrer Textur geordnet.

Daher kann es passieren, dass manche statische Blöcke hinter anderen gezeichnet werden, wodurch nun zwei Zeichnungsebenen existieren. Eine dieser Ebenen wird immer vor der anderen gezeichnet. Blöcke in dieser Ebene haben das 'islayer="true"' Attribut im <position>-Feld, und werden immer vor den Blöcken ohne diese Zusatzattributierung gezeichnet.

Beispiel:

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

Wird noch zusätzliche Abgrenzung benötigt, so kann ebenso eine Frontebene mit der Scrollgeschwindigkeit von 1.0 in X- und Y-Richtung angelegt werden. Dadurch wird diese genau in der gleichen Geschwindigkeit wie die statischen Blöcke bewegt.