Archive for Januar 2008

Alternative Zeppelin Designs

Mittwoch, 30. Januar 2008

Mistraal Skizzen 6cNachträglich noch ein paar Skizzen, als ich noch hin und her überlegte wie denn die Hintergrundstory aussehen könnte. Ich suchte nach alternativen Wegen, ein Zeppelin darzustellen oder einfach die Hülle etwas spannender zu gestalten.

Mistraal Skizzen 10aZwei Tage lang war ich dann von folgender Idee total begeistert: In einer von einem Asteroiden zerstörten und in Stücke geschlagenen Welt (schwebende Felsen) existieren nur noch vereinzelte Ansiedlungen der früheren Zivilisation. Das Zeppelin beliefert diese Siedlungen mit wichtigen Waren, die helfen, die Gesellschaft wieder aufzubauen (Ich muss zugeben dass der Urheber dieser Idee Ben Marty ist). Der Look ist dabei futuristisch, das Zeppelin in stylische Panzerungen und Metallteile gehüllt.

Mistraal Skizzen 3Nach Rücksprache mit Projektteilnehmern fiel mir dann aber selber auf, wie wenig das ›schwere‹ Design dem Gedanken des Zeppelins entspricht. Man würde von einem solchen Gebilde erwarten, dass es einen schnellen Antrieb hat und ein ganz anderes Bewegungsverhalten. Gedacht war ja dass es sich fast wie ein Ballon verhält und von Winden hinweggerissen wird. Der Look gefällt mir immer noch gut, nur passend wäre er nicht. Alternativ dazu auch andere Felsen-Designs.

Mistraal Skizzen 10cHieran fasziniert mich der Gedanke, ganze Städte auf der Hülle des Zeppelins anzusiedeln. Ebenfalls interessant: der Schwertfisch-, Lanzen- oder Bohrer-ähnliche Fortsatz vorne.

Mistraal Skizzen 10dDas Wal-, Schwertfisch oder Delphin-Design trägt dem früheren Gedanken von mir Rechnung, der gerne mit der Wahrnehmung des Nutzers spielen wollte. ›Bin ich nun über oder unter Wasser?‹ wird hier vermengt mit japanischen Göttergestalten und allgemeinen Verwirrspielen.

Semester-End-Präsentation

Dienstag, 29. Januar 2008

Dann war er da, der große Tag. Präsentationen sind ja nicht so wirklich meins. Im Grund kann man dankbar sein, dass bei uns alles mit ner Präsi endet. Ist ein gutes Training. Trotzdem immer wieder stressig.

Auch immer wieder schwer, raus aus der Produktion, raus aus dem Detail, das große Ganze vorstellen. Was hab ich das Semester über gemacht? Wie war mein Konzept am Anfang? Wo ist es hingedriftet und warum? Warum ist es so wie es ist und was ist überhaupt fertig geworden? Ach, Hauptsache, ich hab’s durchgestanden.

Endpräsentation Mistraal StartbildschirmEndpräsentation ich 2Endpräsentation Mistraal DemoEndpräsentation ich 3Endpräsentation Mistraal gewonnen

Sorry, mehr brauchbare Bilder waren nicht drin. Reihenfolge von links nach rechts: Der Startbildschirm, ich gestikulierend, Spielszene, ich nachdenklich während ich vom Spiel erzähle, der Gewonnen-Bildschirm. (Das große leuchtende Ding ist der Gewonnen-Schriftzug)

Präsentiert wurde mit Beamer im Hörsaal vor dem MMVR-Studiengang (ca. 60 Leute gesamt). Diesmal funktionierte sogar der Sound. Awesome.

Solidity Definitions

Dienstag, 29. Januar 2008

Zur Erklärung: Tile Shapes beschreiben die Form von soliden Dingen im Spiel, die keine Spielfiguren sind. Obwohl ein Level nur aus Hintergrundgrafiken aufgebaut ist, können die Spielfiguren mit ihnen interagieren. Das erste was man in dieser Form kennenlernt, ist der Erdboden, auf dem der Spieler steht. Tiles, die Boden symbolisieren, sind gewöhnlich vollkommen undurchlässig, das heißt solide. Wenn man sich das mal in Farben vorstellt, wäre das Boden-Tile vollkommen schwarz, während ein durchlässiges Tile wie z.B. der Himmel weiß wäre.

Tiles sind immer viereckige Grafiken, aber meistens sind zur Interaktion auch andere Formen gewünscht, wie Hügel zum Beispiel. Einen einfachen Hügel kann man hinaufgehen, darauf stehen und auch wieder hinuntergehen. Das macht zwei weitere Formen: die linke und die rechte Seite des Hügels. Ich gehe in meinen Beispielen davon aus, dass der Spieler von links nach rechts durch den Level läuft. Wenn er auf den Hügel hinauf will, muss er (diagonal) nach oben laufen können. Stellt euch eine Linie vor, die von der unteren linken Ecke des Tiles in die obere rechte Ecke läuft. Die entstandene untere Hälfte des Tiles wird mit Schwarz gefüllt, weil es ja Hügelerde ist, die obere Hälfte ist weiß. Beim Abstieg ist es umgekehrt: Die Diagonale verläuft von links oben nach rechts unten, die untere Hälfte ist schwarz.

Nun kommt es manchmal vor, dass im Spiel auch Höhlen existieren. Der Spieler läuft durch einen Gang, während über und unter ihm Erde ist. Wir haben noch kein Tile kennen gelernt, dass eine an- und absteigenden Höhlendecke darstellen kann. Von der Art her brauchen wir die selbe Form wie beim Hügel: zwei Tiles die diagonal geteilt sind. Aber diesmal werden die oberen Hälften mit Schwarz gefüllt.

Früher oder später musste ich mich auch mit dem Thema Tile Shapes beschäftigen. Die mitgelieferten sind für den Anfang gut geeignet, aber in jedem komplexeren Spiel tauchen Sonderformen auf. Vor allem da ich gleich mal angefangen habe Felsen-Tiles zu malen, die nur zur Hälfte solide sind (der Neunerblock). Egal ob man hierfür nun angibt, dass das Tile ganz durchlässig oder ganz solide sein soll, glücklich wird man damit nicht. Extrem seltsam sieht es aus, wenn man solide wählt, dann kann der Spieler die Felsen nie berühren sondern läuft in der Luft herum.

Für diesen Fall müssen neue Tile Shapes erstellt werden, und SGDK2 unterstützt dies hervorragend. Mit Absicht werden anstatt eines Schwarz-Weiß-Bildes zur Definition mathematische Formeln benutzt. Das macht es für jemand mit nicht so guten Mathekenntnissen schwerer, die Vorteile allerdings sind groß: Die Berechnung verläuft viel schneller wenn die Position des Spielers mit der errechneten Form des Tiles verglichen werden, als wenn das Spiel Pixel-Berührungen auslesen muss. Außerdem können mit Funktionen auch alle erdenklichen Formen bereitgestellt werden, z.B. Kreise und Kurven aller Art, es ist also keine Einschränkung.

Mistraal Scripten 6Ich habe also angefangen, bin aber noch nicht damit fertig. SGDK2 braucht für die Berechnung einer Tile Shape vier Funktionen: für jeden Eckpunkt der soliden Form eine. Es wirkt zwar einfach, wenn man z.B. für einen Punkt in der Bildmitte ›Höhe durch 2‹ angibt, aber es existieren dabei Feinheiten, die ich noch nicht ganz verinnerlicht habe.

Coordinating Life

Montag, 28. Januar 2008

Beim Koordinieren der verschiedenen Events (Samen-Berührung, Moos-Erscheinen, Pflanzenwachstum) hatte ich einige Schwierigkeiten. Am einfachsten hätte ich es gefunden, wenn ein Sprite Eigenschaften und Parameter eines anderen Sprites abfragen könnte. Leider geht das nicht wirklich, zumindest nicht in dem Rahmen in dem ich es bräuchte.

Mistraal Scripten 1Ich hatte sehr viele Ansätze ausprobiert. Mit meinem Latein war ich schon lange am Ende (es war ja schon länger klar, dass beim erfolgreichen Abwurf zusätzliche Events ausgelöst werden müssen, unabhängig von der Grafik). Bis ein Hinweis aus dem Forum kam, es doch mal mit Map Flags zu versuchen.

Das Ganze läuft nun folgerndermaßen: Jede Quelle hat eine ID, und jede Pflanze ebenfalls. Diese beiden Zahlen muss ich für jedes Sprite per Hand eintragen. Wird nun eine Quelle von einem Samen berührt, wird eine bestimmte Flag aktiviert. Die Pflanzen ihrerseits fragen die ganze Zeit ab, ob ihre spezifische Flag aktiv ist. Wenn ja, wird die Animation ausgelöst und die Flag inaktiv gesetzt.

Mistraal Scripten 5Es ist eine recht einfache Lösung, warum habe ich das nicht von Anfang an so gemacht? Die Methode ist zwar einfach, der große Nachteil an der gesamten Sache ist jedoch, dass ich jedem Sprite seine ID per Hand eintragen muss. Und das können im gesamten Spiel dann doch schnell mal hunderte werden. Hinzu kommt dass ich dann höllisch aufpassen muss, keine Pflanze zu einer anderen Quelle zu verschieben, weil sie da vielleicht besser aussieht und ich an der ersten schon genug habe. Wenn ein Sprite mit einer falschen ID irgendwo sitzt, wird es reagieren, wenn seine Flag aktiv wird. Und dann steht da eine Pflanze wo der Spieler vielleicht noch nicht einmal war.

Title Screen

Montag, 28. Januar 2008

Mistraal Start ScreenAls vorerst letzten Schritt erstelle ich einen Startbildschirm. Ich brauche ihn aus verschiedenen Gründen. Einmal will ich mit einer Grafik die Stimmung des Spiels transportieren, und gleichzeitig das Logo des Spiels zeigen. Dann brauche ich ihn um eine längere Wartezeit am Anfang zu kaschieren, während die Grafiken geladen werden. Und dann hat man noch vor Spielbeginn die nützliche Möglichkeit, die Musik lauter oder leiser zu stellen. Wer sich ob des als Ziersymbol verwendeten chinesischen Zeichens wundert, das habe auch genommen damit das Spiel international besser verständlich ist. Wem ein Mistral nichts sagt, der kann mit dem Zeichen für Wind doch schon mehr anfangen. Um den gehts ja auch im Spiel.

Mistraal Scripten 7Zuerst habe ich noch keinen Plan davon wie ich mit den Mitteln von SGDK2 ein Menü erstellen soll. Zum Glück ist ein Sample Game dabei, mit einem umfangreichen Menü das ich studieren kann. Ich brauche aber noch zusätzliche Hilfe aus dem Forum, bevor ich dem ausgeklügelten Konzept auf die Schliche komme. Um z.B. die Pfeile darzustellen, mit denen man unterschiedliche Punkte anwählen kann, sind Mapped Tiles verwendet worden. Ein Counter reagiert auf die Pfeiltasten-Eingaben des Users, und von diesem Counter ist dann abhängig, welcher Frame eines Tiles gezeigt wird. Das Tile muss z.B. transparent sein, wenn der Pfeil gerade an einem anderen Menüpunkt ist, es muss den Pfeil selber darstellen, und eventuell noch eine andersfarbige Version des Pfeils.

Mistraal Start Screen VolumeMit diesem Wissen fällt es mir relativ leicht, ein eigenes Menü zu erstellen, das auf andere Art, doch mit der gleichen Technik funktioniert.

Life Spots

Sonntag, 27. Januar 2008

Ranken AnimationNun gilt es sich den wenigen Flecken im Spiel zuzuwenden an denen Leben möglich ist. Das Leben sollte möglichst ursprünglich anfangen. Daher wächst aus dem Erdboden bei der Quelle zuerst ein dickes Moospolster, aus dem dann alle anderen Pflanzen sprießen können. Dass aus einem Samen viele verschiedene Pflanzen entstehen, empfinde ich als stimmig, denn immerhin geht es nicht um Realistik sondern Symbolik.

Quelle AnimationMoos AnimationMistraal Grafiken 3

Seeds

Freitag, 25. Januar 2008

Mistraal Skizze SamenMistraal SamenMistraal Inventar 2

Skizzen wie denn der Samen aussehen soll.

Auch die Inventar-Grafik wird angepasst. Neu dazu kommt ein Zähler für den Spieler, der ihm anzeigt wie viele der Quellen er schon gefunden und belebt hat.

Genesis

Donnerstag, 24. Januar 2008

Heute war Projektvorstellung mit den anderen Studenten und Professoren. Meine Zweifel bezüglich ›Wer? Was? Wozu?‹ habe ich geäußert und es kamen auch viele Anregungen. Aber erst beim Mittagessen danach wurde die Diskussion erst freier und wirklich interessant. Eigentlich kann ich nicht so recht sagen, wie eins zum andren kam, aber endlich habe ich den Sinn des Spiels gefunden und bin total begeistert davon.

Wenn man sich mal so die Grafik bisher ankuckt, wird einem auffallen, dass es bis auf einen einzigen schwebenden Felsen keine Vegetation gibt. Alles ist öd und leer, wie am Anfang der Welt, als noch kein Leben erschaffen war. Und genau das wird der Spieler tun. Er wird durch die Welt reisen und ihr dabei Leben schenken. Die Postsäcke verwandle ich in Pusteblumen-Samen, die richtigen Stellen für den Abwurf werden durch sprudelnde Quellen symbolisiert. Und wenn der Samen die richtigen Bedingungen vorfindet, dann wird Leben sprießen!

Im Zuge dessen finde ich es auch nicht mehr angebracht, ein Zeppelin als Spielfigur zu haben. Mir schwebt ein Gott der Schöpfung vor, der aus grün funkelnden Lichtschleiern besteht. Vielleicht kann es ein Spiel werden, dass den Schöpfungsmythos nachspielt. Die bekanntesten davon laufen ziemlich gleich ab, mit Entstehen von fester Erde aus den Wassern, Pflanzen, Tieren, Menschen und so. Ich werde mich mal bei den Exotischeren umschauen, was sich so Interessantes findet.

Nachträglich gesehen, bin ich gelinde erstaunt, wie erst ein Spiel entstehen und dann das Konzept dafür herbeifliegen kann. Mit dem Schöpfungsthema als Inhalt kommt es mir auch kein bisschen zusammengeschustert vor. Das Thema selbst muss noch ausformuliert, untersucht und in spielbare Elemente und Story umgewandelt werden. Ansonsten bin ich immer den umgekehrten Weg gegangen. Der macht natürlich auch viel mehr Sinn, seien wir ehrlich. Das war jetzt Zufall. Aber ein glücklicher.

Finally good Zeppelin movements

Dienstag, 22. Januar 2008

Zeppelin-AnimationKurz vor Schluss schreibe ich noch mal das gesamte Bewegungs-Skript für das Zeppelin um. Der geneigte Leser erinnert sich eventuell, dass das Luftschiff bei einer Richtungsänderung langsam umschwenkt. Wenn es nach oben oder unten fährt, neigt sich der gesamte Flugkörper. Während des gesamten Projektes habe ich immer und immer wieder an diesem Skript gearbeitet, und es doch nie zum 100%-igen Funktionieren gebracht. Fünfmal ineinander verschachtelte If- und Else-Schleifen habe ich zwar in anderen Skripten gesehen, konnte aber doch nie das Mysterium entschlüsseln.

Mistraal Scripten 8Die ganze Zeit über fehlte auch noch ein wichtiges Element: Das Schiff war nicht in der Lage, sich zu drehen, während es sich gerade in Schräglage befand. Natürlich bewegte es sich so, wie es der Spieler wollte, aber die Bilder passten nicht ganz überein. Ich hatte dutzende verschiedene Ansätze, wie ich es auf diese oder jene Weise umgehen oder doch vielleicht lösen konnte, aber nichts klappte.

Mistraal Scripten 4Dann, fast am Ende der Zeit, habe ich das Gefühl die Monate des Trial-and-Error-Skriptens haben meine Programmier-Fähigkeiten unterbewusst verbessert. Nach Wochen packe ich ein altes Skript noch mal an, das nicht laufen wollte, und siehe da! Es funktioniert.

Ganz genau so wie hier. Ich skizziere eine andere Struktur, vereinfache, probiere aus – und es klappt. Halleluja.

Interface

Montag, 21. Januar 2008

Inventory 1Es wird dringend Zeit für das Interface. Der Spieler braucht ein Inventar für seine Postsäcke und eine Anzeige. Da ja alles um Wind, Fliegen und so geht, habe ich mir für einen Rahmen aus Wolken entschieden. Ist allerdings keine endgültige Lösung. Der Vorteil hieran ist, dass durch das Darstellen jedes einzelnen Items ein Blick aus dem Augenwinkel reicht, um den aktuellen ›Ladestand‹ zu erfassen. Ja, die Grafik für den Postsack wird noch geändert.