Projekt ConfusingBall

Aus DGL Wiki
Wechseln zu: Navigation, Suche

Projekt: Confusing Ball

Die Vorgeschichte

Am Anfang war... der Ball.

Das grobe Grundprinzip von Confusing Ball basiert auf dem (schon sehr alten, warscheinlich unbekanntem) Spiel "Kula World", damals für die Playstation. Da mir die Idee des Spiels gefiel, habe ich Confusing Ball nach einem ähnlichen Prinzip aufgebaut. Einige Spielelemente sind jedoch verändert worden/neu hinzugekommen.

Die Entwicklung

ConfusingBall

Da Confusing Ball mein erstes größeres OpenGL-Projekt war, hat sich die Entwicklung dem entsprechend lange hingezogen. Rund 8 Monate hat es gedauert das Spiel inklusive Editor fertigzustellen. Den Editor habe ich parallel dazu geschrieben: Kamen im Spiel neue Features hinzu wurde zunächst der Editor um eben diese Features erweitert.

Das größte OGL-Technische Problem war die "Kamera". Ich habe jedoch keine Kamera-Unit verwendet, sondern alles nur über viele, in If-Anfragen verschachtelte, Translate und Rotate Befehle gemacht. Dabei traten immer wieder viele Fehler auf, als der Ball die Seiten wechselte. Durch langes testen und noch mehr Abfragen hat es irgendwann ohne Probleme funktioniert, wobei ich dann selbst nicht mehr wirklich durchblickte...

Wenn ich das Spiel neu schreiben würde, käme als erstes eine Kamera-Unit hinzu, und der Quellcode würde um einige hundert Zeilen schlanker, übersichtlicher und wesentlich schneller. Auch würde ich zuerst alles planen, bevor ich anfange zu schreiben, dann wäre das Einbauen neuer Features erheblich leichter gewesen.

So konnte das Spiel irgendwann nicht mehr ohne große Probleme erweitert werden. Ich kann bei größeren Projekten nur raten sich vorher ein Plan zu machen, wie alles am Ende aussehen soll, denn diese Vorarbeit spart einem später sehr viel Zeit und Ärger.


Praktisch an der Entwicklung war, das sich nebenher einige Units automatisch mitentwickelt haben, die auch in meinen zukünftigen Programmen/Spielen ihren Dienst leisten werden. Darunter eine SoundUnit für FMod, einen TexturenManager, und eine GUI-Unit.

Links