Archive for Dezember 2007

Snowstorm Tileset

Samstag, 22. Dezember 2007

Schneesturm-TilesetHier seht ihr das im Spiel verwendete Tileset. Jeweils eine Reihe ergibt ein animiertes Tile. Sie werden der Reihe nach abgespielt, um das Stärkerwerden des Sturms darzustellen. Die unterste Reihe ist der tatsächliche Sturm, der einige Zeit anhält. Dann ebbt er ab und die Tiles werden in umgekehrter Reihenfolge abgespielt.

Der rosa Hintergrund ist nur zur Verdeutlichung da. Alles was ihr Rosa seht, ist eigentlich transparent.

Mistraal Scripten 11Auf dieser Skizze seht ihr wie der Aufbau des Sturms, in Ebenen und Zeit ausgedrückt. Ich habe für ihn auf drei Ebenen verteilt, von denen eine mit der Einblend-Ani gefüllt ist, die zweite mit dem Sturm selbst, und die dritte mit der Ausblend-Ani. Es war …  frickelig, alles genau synchron hinzubekommen. Es sind drei animierte Tiles, jedes auf seiner eigenen Ebene. Bei den zwei zeitlich später spielenden Animationen musste ich die Vorlaufzeit mit einberechnen. Es war alles nicht so einfach, besonders weil bei jedem Durchrechnen ein anderes Ergebnis rauskam.

Mistraal Skripten 12Und hier nochmal eine Skizze, mit der ich mir klar gemacht habe, wie denn eigentlich die Bewegung der diagonalen Streifen stattfindet.  An dieser Stelle konnte ich mit dem eingebauten Grafikeditor des SGDK2 nicht mehr viel anfangen, weil es für so kleine Verschiebungen nicht ausgelegt ist.

Raising The Storm

Mittwoch, 19. Dezember 2007

Kurz vor Weihnachten bekam ich dann noch den Schneesturm fertig. Um ihn nach meiner Vorstellung ablaufen zu lassen (kurzes Einblenden, Andauern, Ausblenden) war mehr Gehirnschmalz nötig als ich dachte. Was daran liegt, dass ich die Angewohnheit habe, mich selbst bei einfachsten Additionen zu verrechnen. Sind eigentlich alle Designer in Mathe so schlecht?

Wie ich den Sturm im Groben darstellen wollte, wusste ich von Anfang an: diagonale weiße Streifen, die von oben links nach unten rechts wandern. Klassisch. Der Sturm sollte aus heiterem Himmel über den Spieler hereinbrechen. Er sollte dicht sein und dem Spieler die Orientierung nehmen.

Zuerst machte ich mir Gedanken darüber, wie ich den Sturm denn in Spiel bringen könnte. Ohne langes Suchen bot mir das SGDK2 die beste Lösung an: Eine neue Ebene erstellen, sie mit den gewünschten Tiles füllen und das alles per Skript ein- und nach einiger Zeit wieder ausblenden. Sogar das Skripten des Auslöser-Events ist total einfach. Man legt für die Spielerebene einen ›Plan‹ an. Dieser enthält ein Rechteck. Wenn der Spieler dieses berührt, wird der Sturm ausgelöst. In diesem Fall wird die Sturm-Ebene als ›Overlay‹ definiert, und nachdem ein Zähler einen bestimmten Wert erreicht hat, wieder gelöscht.

Nachdem die technische Seite genügend Sicherheit bot, wurde mit sehr groben Mitteln ausprobiert, wie das denn grafisch gehen könnte. Ich nutzte den internen Grafikeditor des SGDK2, um einige diagonale schwarze Streifen zu malen. Mit den Copy-, Offset- und Wrap-Funktionen waren ganz schnell ein paar Tiles erstellt, die in hintereinander animiert einen netten Streifensturm ergeben würden. Noch schneller war die Animation erstellt. Also die Sturm-Ebene mit dem animierten Tile füllen und testen … KLAPPT!

Animation – Freezing the flying rock

Dienstag, 18. Dezember 2007

WIP - VereisenFür einige Dinge habe ich dann aber doch auf getrennte Ebenen zurückgegriffen, um den Prozess, aber vor allem den späteren Einsatz der Grafiken zu erleichtern. Die weißen Glanzlichter, der blaue Schein von unten rechts, der halbtransparente Schatten und die einzelnen Bestandteile der Eisschicht sind voneinander getrennte Ebenen.

Animation – Flying Rock

Montag, 17. Dezember 2007

WIP - LuftbrockenVon einem Felsen habe ich regelmäßig Snapshots während des Arbeitens gemacht (Eine sehr nützliche Photoshop-Funktion). Die Animation dürfte die meisten Fragen über meine Vorgehensweise klären. Das Bild ist in Originalgröße, so wie die Grafik auch im späteren Spiel auftaucht.

Blocking

Freitag, 14. Dezember 2007

LuftbrockenDie Grafikerstellung lief schleppend an, aber schließlich fing ich mit dem Blocking an. Die zwei linken Erdbrocken sind in diesem Zustand abgebildet. Nach dem Blocking fing ich an, die Felsen zu malen. Ich habe mir wirklich lange Gedanken darüber gemacht, wie das wohl am besten zu bewerkstelligen ist. Meine größte Sorge dabei war einfach, ob ich für jede Farbe eine extra Ebene erstellen sollte. Das ist vorteilhaft für eine spätere Bearbeitung, aber in diesem Fall ungeeignet. Die Grafiken sind nun mal ein kleines Gemälde, und statt lange die richtige Ebene zu suchen, um auf ihr zu radieren oder umzufärben, musste ich einfach in der Lage zu sein, schnell drüberzumalen. Auch wenn das das Risiko steigert, Patzer nicht mehr so einfach rückgängig machen zu können.

Bei den ersten paar Felsen habe ich einfach drauf losgemalt. Der ganze Prozess war dann doch einfacher als ich gedacht hatte, auch wenn ich meine Vorgehensweise anpassen musste. Die ersten Versuchsobjekte waren die kleinsten Felsbrocken. Die waren ja auch relativ schnell fertig. Dann stellte ich fest, dass sie viel zu kleinteilig sind und mir auch die Felsstruktur nicht besonders gefällt. Beim nächsten Kandidat, dem eiförmigen Brocken, malte ich in viel größeren Clustern und versuchte auch gleich eine ganz andere Struktur zu erzielen. Mit dem Ergebnis bin ich sehr zufrieden und habe dann mit dieser Methode alle nachfolgenden Felsen erstellt.

Painting is not so funny as i remembered

Montag, 10. Dezember 2007

Endlich ist es soweit. Es war wirklich nicht einfach, bei der Programmierung einen Schnitt zu machen und zur Grafik überzugehen. Dabei war doch die Grafikerstellung etwas, worauf ich mich am Anfang sehr gefreut habe. Doch das ganze Scripten hat so dermaßen viel Spaß gemacht, dass ich gar nicht mehr damit aufhören wollte. Erst recht, wo doch erst ein Bruchteil des Konzepts umgesetzt ist. Aber ich sehe ein, dass das Projekt jetzt endlich schmucke Bildchen benötigt.

Mir hat der Wechsel etwas auf die Motivation geschlagen. Reines Malen ist zwar nicht intellektuell anspruchslos, aber doch etwas völlig anderes als das jeden Funken Konzentration und Kreativität fordernde Programmieren. Und so langweilte ich mich erst mal fürchterlich. Bis ich mir ein paar Hörbücher besorgte.

Look & Feel II

Donnerstag, 6. Dezember 2007

Mistraal Skizzen 9 Noch ein paar Gedanken dazu wie es denn mal aussehen könnte im Spiel. Ich weiß nicht wirklich woher der Gedanke dazu kam, aber schön finde ich ihn allemal: Stellt euch vor, ihr fliegt mit eurem Zeppelin so rum, und auf einmal sind da ganz viele andere! Bis eben habt ihr noch gedacht ihr wärt allein auf der Welt, und plötzlich ist der ganze Himmel voll von Luftschiffen. Majestätisch schweben sie an euch vorbei, Kleine, Große, Riesenhafte. Sie sind alle in die gleiche Richtung unterwegs, jedes in seinem eigenen Tempo. Manche sind so langsam dass ihr sie mühelos überholt, andere ziehen mit Leichtigkeit an euch vorbei. Es wirkt fast wie ein Traum, als ob ihr unvermittelt in einen Fischschwarm oder eine Walschule geraten wärt. Und genauso schnell ist es auch wieder vorbei …

Mistraal Skizzen 1Diese Skizze ist enstanden nachdem ich einen kleinen Spaziergang gemacht habe, ans Wehr in Trotha, wo diese fantastische Bogenbrücke steht. Wasser und Brücke haben mich inspiriert. Zu gerne würde ich mit der Wahrnehmung des Spielers spielen, indem ich ihn im Unklaren lasse, ob er sich eigentlich über oder unter Wasser befindet.

Zwischen den fliegenden Felsen könnten sich überall Brücken spannen. Die Atmosphäre hätte ein dunstiges Blau, es wäre unklar ob die langsam schwingenden Pflanzen sich in einer Brise oder in einem Fluss wiegen. Ab und zu könnten Blasen aufsteigen.

Mistraal Skizzen 2

Hier hab ich ein paar Sachen überlegt, die so die Gegend bevölkern könnten. Auch lässt sich mit der Größenwahrnehmung gut spielen: Der Spieler hat das Zeppelin als einzige Bezugsquelle immer vor Augen. Wie wird er sich wohl fühlen, wenn er eben noch an einem Felsen vorbei kam, der mit winzigen jubelnden Menschen bevölkert war, und ihm nun ein Kolibri entgegenfliegt, der doppelt so groß ist wie das Schiff?

Drop it

Dienstag, 4. Dezember 2007

Auch der nächste Schritt ist in den Grundzügen gelungen. Ich habe eine Zielzone eingerichtet, die es registriert wenn ein abgeworfener Postsack sie berührt. Der noch am Luftschiff hängenden Post schenkt sie keine Beachtung. Noch passiert nichts weiter als dass sich der erste glücklich gelandete Sack verfärbt. (›ModulateRGB‹ ist gut zum Testen kleinerer Sachen zu verwenden und ganz schnell eingerichtet.)

Ich muss mir später mal überlegen, wie die Zielzone genau aussehen soll. Bisher denke ich an sowas wie eine bunten und verzierten Pfeiler, in dessen Umgebung die Post abgeworfen werden muss. Aber was passiert dann? Kommen ein paar Leute und nehmen die Post mit? Alles noch etwas unklar bisher, aber es gibt schließlich noch mehr Dinge die eingebaut werden müssen …

Air Mail

Sonntag, 2. Dezember 2007

Die Übertragung der Regeln für die Luftströme auf den Postsack ging einwandfrei. Wenn er nun abgeworfen wird und dabei durch einen Windstrom fällt, wird er davon erfasst und mitgetragen. Ich habe die Werte für ihn angepasst, so dass er zwar beeinflusst wird, aber noch lange nicht so stark wie das Zeppelin. Schließlich soll er nicht davon fliegen, sondern auch mal landen. Klappt doch.

Implementing Air Streams

Samstag, 1. Dezember 2007

Die Luftströme funktionieren!!!

Windkanal 1 - ScreenshotWindkanal 2 - Screenshot

Die roten Pfeile stellen jeweils ein Tile dar. Ich habe versucht, Luftströmungen zu simulieren, indem ich den Wind um Hindernisse herumfließen lasse und in Ecken Luft-Kreisel entstehen lasse. Beides funktioniert ziemlich gut. Für den Anfang reichten 8 Windrichtungen, später habe ich dann noch die Zwischenrichtungen implementiert.

Tile CategoriesUm die Berührung des Zeppelins mit den Wind-Tiles abzufragen und das Schiff in die richtige Richtung zu schicken, habe ich Tile-Kategorien erstellt. Für jede Windrichtung eine. Ich scheine mich mittlerweile ans Scripten gewöhnt zu haben, denn die Übertragung der Bewegung in einen mathematischen Ausdruck fällt mir leicht. Zugegeben, die Formel ist so einfach, dass kein Programmierer mit genügend Stolz sie so nennen würde.

Player Rules for Air Streams

Auf dem Screenshot sollte das Prinzip recht gut erkennbar sein. Links sind die Regeln, die ich im Skript des Zeppelins angelegt habe. Es wird einzeln abgefragt, ob und welches Wind-Tile berührt wird, und dementsprechend wird die Geschwindigkeit und Richtung des Luftschiffes verändert. Rechts ist die Ansicht der zwei Unterregeln im Bearbeitungsfenster dargestellt.

Zur Erklärung was die Zahlen 45, 30 und 60 bedeuten: Damit sind die Winkel gemeint, in denen sich der Wind bewegt. 45 Grad ist ja genau diagonal, mit 30 Grad ist ein sanfter Anstieg gemeint und mit 60 Grad ein sehr steiler Anstieg. Noch mehr Winkel braucht es für ein einfaches Spiel wohl kaum, es ist flexibel genug so.