S
t
a
r
t
Tagebuch
Tagebuch
egg-O-shOOter herunterladen
Herunterladen
Wie funktioniert egg-O-shOOter ?
Einblick
Häufig gestellte Fragen
Fragen?
egg-O-shOOter Futter
Futter
Links
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.
Screenshot egg-O-shOOter

<<<Zurück zur Kunst des Weglassens          Weiter zu Sprachversionen>>>