S t a r t |
Tagebuch |
Herunterladen |
Einblick |
Fragen? |
Futter |
Verweise |
I m p r e s s u m |
Click here for the english version. |
In dieser Rubrik könnt ihr die Umgestaltung des egg-O-shOOters nach euren eigenen Vorstellungen erlernen. |
<<< Was ist Vorne und was Hinten? >>> |
---|
Sicher ist euch schon eine Eigenschaft des egg-O-shOOter Universums aufgefallen: 'Es ist flach!'. Besonders augenfällig wird dieser Sachverhalt bei Rotationen von Objekten um die X- oder Y-Achse. Ihr könnt in diesem Spiel nur 2-dimensionale Grafiken erstellen und diese in einer 2-dimensionalen Welt bewegen. Betrachtet ihr die Grafiken von der Kante, so seht ihr lediglich eine dünne Linie. Was von der Optik her ein Nachteil ist, vereinfacht den Umgang mit Objekten jedoch ungemein! Ein Hase ist schnell gezeichnet und in das Programm eingefügt, aber ein 3-dimensionales Hasenmodell zu erstellen und in das Programm einzubinden bedeutet eine Menge mehr an Arbeit. Was Euch mehr Arbeit abverlangt, lässt euren Rechner ebenfalls nicht kalt. 3-dimensionale Objekte verlangen einen wesentlich höheren Rechenaufwand und zu guter Letzt müssten wir deutlich mehr Variablen behandeln, um solch einen Hasen in der 3D-Welt zu steuern. Begnügen wir uns also mit der platten Welt des egg-O-shOOters und erfreuen uns an dem comicähnlichen Stil des Spieles. Gibt es rein physikalisch betrachtet in einem 2-dimensionalen Universum kein 'Vorne' und 'Hinten', so stimmt das bei unserem Spiel nicht so ganz. Natürlich sind alle Objekte immer gleich weit von dem Betrachter (also von euch) entfernt, aber dennoch überlappen die Grafiken einander. Diese Überlappung wird von dem menschlichen Sehorgan als 'Vorne' und 'Hinten' interpretiert. OpenGL - die Grafikprogrammiersprache in der euer egg-O-shOOter programmiert wurde - zeichnet alle Objekte in der Reihenfolge des 'Eingangs'. Dabei überlappen später übergebene Grafiken die bereits zuvor gezeichneten Bilder. Die Zeichenreihenfolge des egg-O-shOOters ist dabei wie folgt aufgebaut: 1.) Hintergrundbild und alle Rahmenelemente mit dem Variablenwert FramePosxxx=1 2.) Eggheart 3.) Objekte mit ObjectFront=0 4.) Hasen, Sprunghasen, Eier, Eiszapfen, Blumen, Luftblasen, Pollen in zufälliger Reihenfolge 5.) Objekte mit ObjectFront=1 6.) Alle Rahmenelemente mit dem Variablenwert FramePosxxx=0 7.) Objekte mit ObjectFront=2 8.) Tafeln mit Punktestand usw. Die von euch definierten Objekte werden in der Reihenfolge der Aufzählung gezeichnet, d.h. zuerst in der Datei 'themes.txt' aufgelistete Objekte liegen hinter den später aufgelisteten Objekten. Zur Demonstration spielen wir mal ein wenig mit Gläsern, Tassen und Tellerstapeln. Erstellt zu diesem Zweck drei Objekte wie folgt: #1# ObjectNumber=1 #1#Tasse 'Mach mal Pause' / Cup 'Have a break' ObjectFront=0 ObjectStartActive=1 ObjectTexture=10 ObjectF=-1 ObjectD=H1 ObjectXMin=0 ObjectXMax=0 ObjectYMin=-130 ObjectYMax=-130 ObjectDMin=40 ObjectDMax=40 ObjectType=3 #1# ObjectNumber=2 #1#Tellerstapel / Batch of dishes ObjectFront=0 ObjectStartActive=1 ObjectTexture=5 ObjectF=-1 ObjectD=H2 ObjectXMin=+30 ObjectXMax=+30 ObjectYMin=-113 ObjectYMax=-113 ObjectDMin=60 ObjectDMax=60 ObjectType=3 #1# ObjectNumber=3 #1#Glas / Glas ObjectFront=0 ObjectStartActive=1 ObjectTexture=8 ObjectF=-1 ObjectD=H3 ObjectXMin=+40 ObjectXMax=+40 ObjectYMin=-103 ObjectYMax=-103 ObjectDMin=70 ObjectDMax=70 ObjectType=3 Wie erwartet steht die Tasse ganz hinten, der Tellerstapel in der Mitte und das Glas ganz vorne. Ihr könnt weiterhin beobachten, dass sich alle Hasen, Eier, Pollen usw. VOR den drei Gegenständen bewegen, was durch die Variable ObjectFront=0 so festgelegt wurde. Setzt ObjectFront=1 für alle drei Objekte und schon bewegen sich Hasen, Eier, Pollen usw. hinter unseren Gegenständen. Tauscht jetzt mal die Plätze, indem ihr z.B. den Tellerstapel in der Datei themes.txt an die erste und die Tasse an die letzte Stelle setzt (alle anderen Variablen bleiben unverändert, insbesondere 'ObjectNumber'): #1# ObjectNumber=2 #1#Tellerstapel / Batch of dishes ObjectFront=1 ObjectStartActive=1 ObjectTexture=5 ObjectF=-1 ObjectD=H2 ObjectXMin=+30 ObjectXMax=+30 ObjectYMin=-113 ObjectYMax=-113 ObjectDMin=60 ObjectDMax=60 ObjectType=3 #1# ObjectNumber=3 #1#Glas / Glas ObjectFront=1 ObjectStartActive=1 ObjectTexture=8 ObjectF=-1 ObjectD=H3 ObjectXMin=+40 ObjectXMax=+40 ObjectYMin=-103 ObjectYMax=-103 ObjectDMin=70 ObjectDMax=70 ObjectType=3 #1# ObjectNumber=1 #1#Tasse 'Mach mal Pause' / Cup 'Have a break' ObjectFront=1 ObjectStartActive=1 ObjectTexture=10 ObjectF=-1 ObjectD=H1 ObjectXMin=0 ObjectXMax=0 ObjectYMin=-130 ObjectYMax=-130 ObjectDMin=40 ObjectDMax=40 ObjectType=3 Ihr seht, dass im egg-O-shOOter die ersten die hinterstern sein werden. Das gilt zumindest bei gleichen Werten für 'ObjectFront'. Setzt im obigen Beispiel ObjectFront=2 bei dem Glas. Ihr seht, dass jetzt das Glas ganz vorne steht, obwohl dieses in der Reihenfolge der Auflistung eigentlich in der Mitte sein sollte. Hier macht sich bemerkbar, dass immer erst alle Objecte mit ObjectFront=0, dann die mit ObjectFront=1 und zuletzt die mit ObjectFront=2 gezeichnet werden. Für die Treffererkennung gilt der umgekehrte Weg. Was zuletzt gezeichnet wurde (und somit im Vordergrund steht), wird zuerst getroffen - probiert's aus. |
<<<Zurück zur Kunst des Weglassens Weiter zu Sprachversionen>>> |