De:Andere Methoden

From X-Moto
Jump to: navigation, search

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.

Hill.jpg

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.