Über eineinhalb Jahre ist es her, dass ich mit Erscheinen meines Buches an einem kleinen 3D-Spiel gearbeitet habe, das einige der Features, die ich im Buch erkläre, demonstrieren sollte. Das peinliche ist: dem Spiel fehlt nur eine rudimentäre Kollisionskontrolle (die intern schon funktioniert, nur in die Spielregeln eingearbeitet werden muss) und ein Highscore und es wäre fertig. Höchste Zeit also, dass das Spiel samt Quellcode endlich zum Download freigegeben wird, mitsamt der Klassenhierarchie, die im Buch erklärt wird, gut dokumentiertem Quellcode und vielen Klassen (für 3D-Objekte und 2D-GUI-Elemente), die vielleicht der ein oder andere in seinen eigenen Programmen verwenden kann. Besser spät als nie. [image:150:c]Das Spielprinzip ist ganz einfach und beruht auf den realen Heissluftballon-Meisterschaften. Man startet in gewisser Entfernung zu einem Zielpunkt mit seinem Heissluftballon und muss versuchen bei dem nächsten Bodenkontakt so nah wie möglich an diesem Ziel zu sein. In drei verschiedenen Höhen gibt es dabei drei verschiedene Windrichtungen und man hat nur begrenzt Treibstoff an Board, kann also nicht ewig hin und her heizen. Obwohl sich das Spiel im Prinzip nur mit einer Taste steuern lässt, ist das Spiel zwar einfach zu erlernen aber nur schwer zu beherrschen. Ursprünglich war auch geplant durch das Abwerfen von Sandsäcken (von denen man z.B. nur 3 im Korb hat) kurzfristig an Höhe gewinnen zu können.
Wie gesagt, obwohl das Spiel schon sehr weit fortgeschritten ist, fehlen noch ein paar Details, bevor es wirklich spielbar ist.[image:151:c]Nun zum Sourcecode: dem Spiel liegt der komplette Sourcecode bei inklusive des Frameworks, das in meinem Buch erstellt wird. Der Sourcecode ist recht ausführlich dokumentiert. Es gibt ein Log-File (”logfile.txt”, Klasse: tdhlogfile) und eine Debug-Ausgabemöglichkeit innerhalb der Anwendung (Klasse: td3ddebugtext). In der “config.txt” können grobe Einstellungen vorgenommen werden. Das Level ist eine externe Datei, die innerhalb der Anwendung editiert werden kann. Das Hauptprogramm läuft in der Klasse tD3DEngineMP ab. Die Eingaben werden mit DirectInput entgegen genommen, Sounds werden mittels DirectSound wiedergegeben. Für beides gibt es Hilfsklassen, die die Nutzung sehr stark vereinfachen.
Das Programm wird komplett mit der Tastatur gesteuert:
[image:152:r]Im Menü:
Enter: Menüpunkt wählen
Escape: Beenden
Im Spiel:
Pfeiltasten: Blickwinkel ändern
+/-: Zoom
Leertaste: Brenner betätigen
S: In den Editier-Modus und wieder zurück wechseln
W: Speichern der Karte
Im Editiermodus:
Pfeiltasten: Bewegen des Ballons auf dem Terrain
C: Lösche das Item, an dem sich der Ballon befindet
T: Erstelle einen 3D-Tree
H: Erstelle ein 3D-Haus
NUMPAD 1-3: Setze einen Billboardbaum mit einer von drei Texturen
F: Erstelle einen Zaun und wechsel in den Zaun-Modus
S: zurück in den Spielmodus
Zaun-Modus:
Pfeiltasten: Verschieben des Zaunes
Y/Z: drehen des Zaunes
Enter: Wechsel in den Editiermodus
Das ganze Paket steht unter der GPL-Lizenz.
balloon.zip (6,51 MB)
Das Programm benötigt die d3dx9.dll im windows/system32-Verzeichnis oder im Programmverzeichnis. Die Datei kann dieser ZIP-Datei entnommen werden. Ich hoffe, das Programm läuft dann bei Euch.
Für Fragen bezüglich des Programms sowie des Sourcecodes stehe ich natürlich gerne zur Verfügung, auch wenn ich schon seit einer halben Ewigkeit nicht mehr daran gearbeitet habe. Vielleicht hat ja jemand Lust, das (wie ich finde, ziemlich gute) Spielprinzip aufzugreifen und neu zu verpacken.
