Weblog von MentalFS

Bild von MentalFS

Panzerdämmerung

Wir haben Tank You jetzt eine Weile schleifen lassen. Hier mal ein kleiner Hinweis darauf, wie es weitergegangen ist:

Screenshot

Wie ihr seht, seht ihr keine Panzer. Das dürfte in etwa die krasseste Änderung sein. Unser Gedanke hierbei war, einerseits, etwas mehr Action hineinzubringen, und andererseits Charaktere, mit denen man sich etwas besser identifizieren und über die man mehr lachen kann.

Des weiteren kann man, wenn man genau hinsieht, erkennen, dass die Levelsstückchen nicht mehr von vornherein sichtbar sind. Im momentanen Stand sind sie zwar immer noch vorgeneriert, aber irgendwann sollen sie aus der Explosion generiert werden. Außerdem kann man eine Hintergrundebene sehen, wo das Land weggesprengt wurde.

Aus JBox2D-Sicht ist der Roboter, so wie wir ihn hier geplant haben, sehr einfach gestrickt. Wir haben einen starren Körper, zur Dekoration einen nicht ganz so starren Kopf draufgesetzt und das wichtigste - ein Rad, das zur Fortbewegung dient. Damit sollte man viele Roboter ins Level setzen können, ohne allzu große Probleme mit der Performance zu bekommen.

Um ihn wirklich stehen zu lassen mussten wir ein paar kleine Tricks benutzen. So setzen wir die Inertia so, dass sich der Körper garnicht bewegen dürfte. Zusätzlich begradigten wir ihn bei jedem Logik-Update. Da das etwas steif aussähe, haben wir dafür gesorgt, dass diese Begradigung von der Geschwindigkeit abhängt. Im Bild oben bewegt sich zum Beispiel der linke Roboter nach rechts. Um die Bewegung hinzubekommen muss man lediglich einen Motor beim Rad einsetzen, ein Konstrukt, das JBox2D mitbringt. Die Roboter können sich recht rasant bewegen, ohne dass man die Kontrolle verliert. Auch mit springen haben wir bereits experimentiert.

Jetzt ist nur die Frage, ob man überhaupt noch von "Tank You" sprechen kann, oder sich etwas anderes einfallen lassen muss. Den Namen mochte ich eigentlich...

Die Entwicklung an TankYou ruht momentan zugunsten unseres neuen Projekts Dead Men Walking. Vielleicht werden wir denmächst ein bisschen darüber lamentieren, wieso uns die Motivation für das Projekt zeitweise verlassen hat. Ich persönlich hoffe, aus anderen Projekten ein bisschen Erfahrung zu gewinnen, die wir dann hier einfließen lassen können, wenn wir die Entwicklung fortführen.

Bild von MentalFS

Die Sache mit dem Land

Wie einige von euch bereits wissen, war Tank You urspünglich ein komplett anderes Projekt, das mehr oder weniger ein Klon von Worms war. Es gibt natürlich immer noch einige Gemeinsamkeiten, aber vor allem seit wir uns entschieden haben, Panzer als Hauptakteure zu verwenden, hat sich einiges verändert, was Tank You einzigartiger macht (zumindest in unseren Augen).

Als unser Tank-You-Voränger startete, sollte das Land sich, wie das meiste andere auch, wie in Worms verhalten. Das bedeutet, dass bei einer Explosion ein kreisrunder Schnitt ins Land gemacht wurde und ein Loch entstand. Wie es im Original gemacht wurde, wussten wir nicht genau, aber wir reimten uns zusammen, dass das Level am besten als Grafik hinterlegt wird, bei der eine bestimmte Farbe den Himmel - also den leeren Platz - markiert. Sieht man sich die Amiga-Version von Worms 1 an, so stellt man auch fest, dass genau dieses Format für Benutzerdefinierte Levels verwendet wird.

Ungefähr ein Jahrzehnt lang verfolgten wir diese Taktik. Wir mussten dabei die Riesengrafik immer in kleinere Stücke aufteilen - zuerst, weil die Grafikkarten damals keine Bilder größer als die eingestellte Bildschirmgröße erlaubten, später aus Performancegründen. Und schlussendlich, nach dem Umstieg auf Slick, mussten wir die maximale Texturgröße bei OpenGL berücksichtigen und stiegen von der Farbmarkierung auf Alphawerte um.

Ich würde sagen, dass diese Struktur nicht nur eine der feststehendsten in unserem Projekt war, sondern dass sie auch maßgeblich das Spielgefühl ausmachte und das Aussehen des Spieles bestimmte. Jedenfalls war es so, bis wir beschlossen, eine Physikengine zu verwenden.

Eine Physikengine nimmt uns eine Menge Last ab: Wie Projektile sich bewegen, wann und wo sie aufschlagen, wann ein Fahrzeug zum stehen kommt wenn es den Boden berührt und welchen Winkel es dabei hat - all dies hätten wir per Hand und alles andere als optimal programmieren müssen. Die Verwendung einer Engine bringt aber auch Einschränkungen mit sich: Alle Objekte, die etwas bewirken sollen, müssen im Format angegeben werden, die die Engine versteht. Und alle Engines, die wir ausprobierten, wollten Polygone, mit einem Bild können sie natürlich nichts anfangen.

Ein Bild in die Form von Polygonen zu bringen wäre wenig sinnvoll gewesen. Entweder wäre es ungenau oder wahnsinnig viel Speicheraufwand. Die Idee mit dem Bild als Level war somit gestorben. Stattdessen legen wir nun das Land in Form von kleinen Landstückchen als Polygone an. Das hat zur Folge, dass man nicht einfach so einen Kreis aus dem Land rausschneiden kann.

Unzerstörbares Land war uns allerdings auch zu langweilig. Wir haben deshalb die Landstücke mit Hitpoints versehen. Sie werden normalerweise nicht sofort zerstört, aber wenn man sie mehrfach trifft, oder einmal besonders hart, so verschwinden sie. Das ist grafisch natürlich nicht vergleichbar mit einem kreisrunden Loch und wir empfanden diese Lösung eher als Kompromiss.

Ein kleiner Zusatz aber verwandelte den Kompromiss in eine geniale Neuerung: Landstücke können locker werden und herumfliegen. Wenn die Hitpoints unter einen bestimmten Punkt sinken, so löst sich nun das Landstück. Das bringt eine ganz neue Dynamik in das Spiel.

Landstücke fallen nun runter, versperren einem den Weg, helfen einem aber vielleicht auch kleine Abgründe zu überwinden. Möglicherweise verursachen sie eines Tages Schaden, wenn sie aus großer Höhe auf einen Panzer fallen. Bis dahin kann man sie aber nur versuchen wegzuschieben oder einfach wegzuballern!

Inhalt abgleichen