Long time no see (13.06.2010)
in: Screenshots

Da die letzten Wochen leider nicht sehr viel Zeit/Muße zur Erstellung von Tagebucheinträgen übrigließen, zum Ausgleich ein paar Screenshots von dem, was ich beinahe als finales Produkt bezeichnen möchte. (Final in Bezug auf die Präsentation, natürlich. Die findet übrigens am 05.07.2010, 13 Uhr, im Hörsaal des Medienzentrums in Neuwerk 1, 06108 Halle/Saale, statt.)

Zeitstopp, und alles wird schwarzweiß (28.04.2010)
in: Prototyp, Screenshots

Vor längerem habe ich mich daran versucht, dem Zeitstopp-Effekt eine interessante Optik zu geben. Nach einigen glücklosen Versuchen mit einem Refraction-Shader (erster Screenshot) hatte ich mich darauf konzentriert, die Umgebung um den Spieler herum lediglich einzufärben (Zwischenstand zweiter Screen).

Im Endeffekt wird innerhalb der Zeitstopp-Blase nun alles desaturiert, also schwarzweiß (drittes Bild). Um das ganze etwas zu verstärken, habe ich die Grautöne außerdem mit einem Post-Effect zur Hervorhebung von Kanten kombiniert - diesen Compositor fand ich bei den OGRE-Beispielen.
Der vierte Screenshot zeigt also den finalen Stand des Zeitstopp-Effekts.

Vielen Dank an dieser Stelle an CodingCat für seine Unterstützung!

MaxScripts (28.04.2010)
in: Leveldesign, Modelling, Screenshots, Worlddesign

Ich habe mir, als eine Art zusätzliche Unterstützung für meine Pipeline, zwei Scripts gebastelt, welche in 3dsmax zur Anwendung kommen. (Sie wurden also in MaxScript geschrieben.)

Das erste ist für's Exportieren da:



Mit einem Klick habe ich dann meine Objekte im Spiel. Das Script nutzt hierbei die Scripting-API von OgreMax. Da OgreMax ein Szenen-Exporter ist, legt es bei jedem Klick auch eine .scene-Datei an, die ich nicht benötige (genauso wenig wie die Materialenbeschreibungs-Datei) - mein Script löscht sie daher.
Etwas komplexer wurde mein Script durch die Tatsache, dass ich Objekte mit unterschiedlichen Material IDs habe, auf denen aber keine echten 3dsmax-Materialien liegen - OgreMax fasst solcherlei Teil-Objekte dann automatisch zusammen (mit einem Material namens "NoMaterial"). Daher muss mein Script Meshes selbst erst einmal aufsplitten, bevor sie exportiert werden.

Mein zweites Script ist eigentlich eine (ständig wachsende) Script-Sammlung, mit kleinen aber feinen Funktionalitäten:



Wichtig ist vor allem die "Distributing"-Gruppe - schnell und einfach lassen sich dann kleinere Assets auf einem größeren Mesh entlang der Oberflächennormale verteilen, mit zufälliger Skalierung und Rotation. Das kann dann so aussehen aus wie auf diesen Bildern:

Ygnes (25.04.2010)
in: Characters, Konzept, Modelling, Skizzen

Ygnes ist nun so gut wie fertig. Sie ist sozusagen der "erste Offizier" auf dem Inselschiff (oder Erster Maat, der genaue Titel ist im Grunde egal), auch wenn es nicht militärisch angehaucht sein soll. Auf jeden Fall ist sie nicht nur die rechte Hand des Kapitäns, sondern auch seine Ehefrau. In meiner offiziellen Beschreibung im Konzept habe ich sie vor allem als streng und herrschaftlich charakterisiert, und versucht, dies in die Umsetzung miteinfließen zu lassen.

Von den Skizzen her gefällt mir die rechts oben am besten ("Piratestyle!"), sie war am Ende meine hauptsächliche Vorlage.

Die Bilder im Ganzen zeigen, was zu einem Characterdesign so dazu gehört: Skizzen, Modellierung, Unwrapping (in Roadkill, zum Vorbereiten der Texturierung), Rigging und Skinning (d.h. mit Knochen ausstatten), Animation. Die Textur ist auch beinahe fertig, kann jedoch jederzeit überarbeitet werden.
Da Ygnes in meinem Konzept über und über mit Efeu bedeckt ist, habe ich ihr der Einfachheit halber grüne Haut gegeben; denn das es würde den Aufwand kaum rechtfertigen, jede Menge Blätter zu modellieren - zumal ich sowieso einen eher einfachen Stil anstrebe, wie man sieht.

Die ersten beiden Screenshots demonstrieren übrigens, dass sich Ygnes auch schon in den Prototypen einbauen lässt, allerdings noch ohne Animation. Denn dafür muss ich erst alle Animationsphasen, die ich erstellt habe, in einer einzigen Datei in Reihenfolge bringen und dann entsprechend exportieren. Diese Aufgabe spare ich mir für den Moment, in dem ich Ygnes auch tatsächlich als Story-Element in meinem Präsentations-Level brauche.

Nebenbei kann man auf dem allerersten Screen auch erkennen, welcher Unterschied hinsichtlich Körpergröße zwischen ihr und dem Protagonisten besteht. Dieser Unterschied ist nicht zufällig, sondern wurde auf Größenvergleichs-Skizze links bereits geplant. Es wäre langweilig, wenn alle Figuren gleich groß wären - eine Lehre, die auch ganz nett im Manga Zeichenkurs von Akira Toriyama und Akira Sakuma erklärt wird.

Ygnes ist übrigens die erste Frau, die ich jemals modelliert habe ...

Licht&Schatten, Dimensionswechsel, Gravitationsportale (05.04.2010)
in: Prototyp, Screenshots



YouTube und Vimeo halten ein neues Video bereit, welches zwei Special Items zeigt (Gravitationsportale und Dimensionswechsel) sowie die Tatsache, dass ich Schatten in den Prototypen eingebaut habe.

Wie auch auf dem ersten und dritten Screenshot zu sehen, wird der Schatten durch PSSM (Parallel-Split Shadow Maps, eine Demonstration findet man hier) dargestellt. Das dritte Bild zeigt auch die meiner Meinung nach schöne Kombination von PSSM und SSAO - da stört es mich auch nicht, dass die Schatten recht hart sind und keinerlei weiche Kanten besitzen. Im Grunde passt das auch zu der Optik, die ich anstrebe.
Leider habe ich zur Zeit noch einige Probleme mit OGREs Schattensystem, sodass oftmals Objektschatten ganz oder teilweise verschwinden, vor allem, wenn sich diese Objekte relativ weit weg befinden.

Die anderen Screenshots zeigen übrigens meine Experimente mit einem Glow-Shader (gefunden im OGRE-Forum), sowie dem "Radial Blur" Post-Effect, der als Beispiel-Compositor im OGRE-SDK vorhanden ist. Das letzte Bild kombiniert die beiden Effekte zudem mit einem Kolorationsshader, der die dargestellte Szene in Falschfarben taucht. Diesen musste ich mir selbst schreiben, da ich nichts vergleichbares gefunden hatte.
Zusammen ergeben die drei Effekte die Optik des Dimensionswechsels. Der Wechsel in eine Paralleldimension ist für den Spieler nützlich, um bestimmte Hindernisse zu überwinden; Glow, Blur und Farbwechsel zeigen jedoch, dass der Dimensionswechsel nicht permanent ist.

Im Video werden überdies Gravitationsportale veranschaulicht, welche vom Spieler erstellt werden können. Das Portal selbst ist noch eine reine Testgrafik, es fehlen auch noch subtile Partikeleffekte.
So ein Portal kann sehr mächtig sein, aber auch gefährlich. Lässt man es in die falsche Richtung zeigen, landet man unvermeidlich im Nichts und muss von vorne beginnen.

Protagonist (01.04.2010)
in: Characters, Modelling, Skizzen

Nun folgt eine kleine Zusammenstellung des Werdegangs der Hauptfigur. Sie ist diejenige Figur, die der Spieler steuert, wodurch sie ein gewisses Identifikationspotential besitzen sollte. Entgegen üblicher Konventionen habe ich mich dagegen entschiedenen, einen strahlenden Helden zu kreieren. Stattdessen wollte ich einen anfänglichen Niemand und Nichtsnutz haben, der im Laufe des Spiels über sich hinaus wächst.
Vorstellbar wäre sogar eine graduelle Veränderung des Modells (bzw. der Textur), so wie in "Shadow of the Colossus", um die Veränderung des Charakters nachvollziehbar zu machen. Wobei in SotC die Spielerfigur mit jedem Level schmutziger und verderbter wurde ... eine Herangehensweise, die ich faszinierend finde.

Als Hintergrundgeschichte für den Helden des Spiels habe ich mir überlegt, dass er ein Adliger ist - also durch Bücher gebildet und etwas hochnäsig. Allerdings ist er kürzlich verarmt, eventuell so sehr, dass er seinen Adelstitel verkaufen musste. Erstmals muss er in seinem Leben hart arbeiten, um seinen Magen füllen zu können.

Die ersten vier Skizzen (Reihenfolge der Bilder ist von links nach rechts!) zeigen anfängliche Überlegungen zum Aussehen des Protagonisten, wobei die vierte sehr spät entstanden ist. Gleich nach dieser zeichnete ich das fünfte Bild, welches für mich am ehesten den Charakter widerspiegelte, den ich darstellen wollte. Darauf folgten dann einige Proportionsstudien, wobei ich die achte Skizze, auf dem der Held des Spiels gar zu unmotiviert und unförmig aussieht, als zu übertrieben empfinde.
Die Zeichnung davor ist mein persönliches Leitbild für das Aussehen des Helden, vor allem, was die Proportionen betrifft - die Beine sind so lang wie der Oberkörper, die Körperhöhe ist insgesamt recht gering und ein kleines Bäuchlein demonstriert den vormaligen Wohlstand. Das zusammen ergibt einen scheinbar unscheinbaren Anti-Helden mit Ambitionen zu Abenteuer und Selbstverwirklichung; ein wenig wie der kleine Hobbit Bilbo Beutlin von Tolkien.
Das Gewächs auf dem Kopf, zu guter Letzt, dient der Wahrung des durchgängigen Konzepts des Spiel.

Die letzten drei Bilder zeigen den Prozess des Modellierens. Interessanterweise entsteht das Grundmesh relativ schnell. Die meiste Zeit wird üblicherweise in die Details investiert, und die permanente Nachjustierung einzelner Vertices, für die schönere Gesamtform. Vor allem die Silhouette ist wichtig.

Bevor ich dieses Modell nun unwrappe, rigge, skinne und animiere, werde ich erst einmal an die anderen Figuren modellieren und animieren.
Denn es hat sich gezeigt, dass während des komplexen Prozesses der Character-Erstellung immer wieder Fehler offenbar werden, die man anfangs hätte vermeiden müssen; beispielsweise hätte dort noch ein Edge-Loop hingehört, hier ein paar Vertices und drüben ist das Skinning falsch. Da der Protagonist die wichtigste Figur ist, will ich erst einmal mit den sekundären Modellen üben.

Zeit anhalten (16.03.2010)
in: Prototyp, Screenshots

Der dritte der Screenshots zeigt eine Testszene, die ich angefertigt habe; hier werden verschiedene physikalische Eigenschaften ausprobiert. Denn man kann im Editor von Dynamikon nun endlich Dinge wie Reibung und Restitution (Rückgabe) eines dynamischen oder statischen Objekts einstellen. Setzt man beispielsweise die Restitution eines Balls und des Untergrunds auf eins, kommt besagte Kugel nie mehr zu Ruhe, da sie auf ewig nach oben springt - fantastisch elastisch!



Ansonsten gibt es auf YouTube und Vimeo ein neues Video zu meinem Projekt. Gezeigt wird kurz und knackig, was die letzten Tage an Features hinzugekommen ist:

  • NPCs sind halbwegs fertig, denn nun kann man mit ihnen reden. Mit dem Dialogsystem an sich bin ich noch nicht ganz zufrieden. Neben kleineren Bugs und der natürlich zu überarbeitenden Optik muss ich mir noch Gedanken dazu machen, wie ich Sprachausgabe integrieren möchte. Am wichtigsten ist aber, dass auch für Zuschauer klar wird, wer gerade spricht; aber ich werde vermutlich keine Zeit für deutliche Sprechanimationen haben. Daher wären vielleicht sprechblasenartige Symbole gut.

  • Es existiert nun ein Inventar, in das der Spieler Power-Ups verstauen kann. (zweiter Screenshot) Momentan ist dies eine einzelne Leiste mit festen Slots; da ich aber auch ein generelles Inventar für trivialere Gegenstände haben möchte, wird es noch mehr aufgeteilt werden.

  • Damit man überhaupt was verstauen kann, habe ich das erste Power-Up eingebaut, das mir auch sehr am Herzen lag: das Zeitstopp-Extra. Es hat noch keine eigene Grafik, deswegen sieht es im Video recht abstrakt aus. Bei diesem nützlichen Power-Up jedenfalls entsteht um die Spielfigur eine Blase, in der alle Gegenstände und NPCs quasi einfrieren. (erster Screenshot) Hoffentlich schaffe ich es im nächsten Monat, dies mit ein paar interessante visuelle Effekten zu garnieren.

Man sieht überdies, dass ich die Möglichkeit in den Editor implementiert habe, Partikeleffekte und Lichter einzufügen. (vierter Screenshot) Dafür wollte ich - wie schon damals bei den Triggern - eigentlich eine eigene Objektart einführen. Im Endeffekt habe ich diese Funktionalität jedoch bei den Point-Objekten eingefügt.

Als nächstes großes Ziel für den Prototypen steht die Machbarkeitsprüfung für eine Paralleldimension an. Das wird sich jedoch etwas länger hinziehen, da ich mich erstmal dem grafischen Teil etwas mehr widmen sollte.

Schwarze Löcher, vorerst final (04.03.2010)
in: Prototyp, Screenshots



Ein neues Video (YouTube, Vimeo) demonstriert, dass die einzelnen Funktionalitäten der Schwarzen Löcher inzwischen vollendet sind, mehr oder weniger. Folgendes wird gezeigt:

  • Mehrere Gravitationssphären lassen sich miteinander verknüpfen, sodass Zylinder entstehen, oder sogar ganze Ketten. (Letzteres ist im Video nicht zu sehen.) Dabei kann definiert werden, ob die Enden dieses Zylinders abgerundet sind oder nicht. Es wird vom Prototypen sogar berücksichtigt, dass die Sphären unterschiedlich groß sind.

  • Statt nur Kugeln gibt's auch Quader.

  • Man kann statt einer Gravitation, die auf einen Punkt oder einer Linie ausgerichtet ist, nun auch einfach eine allgemeine Richtung angeben. Somit ist es möglich, den Spieler ohne Mühe die Wand hochlaufen zu lassen.

  • Ein Schwarzes Loch kann auch an ein dynamisches Objekt geheftet werden, es bewegt sich also fortan mit. Im Video wird dies durch eine Kugel demonstriert, die magnetähnliche Eigenschaften besitzt.

  • Last but not least kann einem Schwarzen Loch ein Script zugewiesen werden, sodass bei Betreten oder Verlassen des Lochs interessante Effekte im Spiel auftreten können.

Eigentlich wollte ich solcherlei "Trigger" als eigene Objekte im Editor haben, aber es war zu verlockend, den Schwarzen Löchern selbst die Scriptfähigkeit zu verleihen. Trigger wurden damit überflüssig. Es fehlte lediglich noch die Möglichkeit, die gravitationsverändernde Fähigkeit eines Schwarzen Lochs auszuschalten, was jetzt ebenfalls implementiert wurde. Damit verliert die Namensgebung zwar endgültig ihren Sinn, aber es gibt momentan wichtigeres ...

Auf meinem internen Wochenplan steht nun vor allem das Zeichnen und die Stilsuche an. Danach soll man im Spiel Dinge aufsammeln und ins Inventar tun können. Das wäre die Vorarbeit für Power-Ups im Spiel; als erstes würde ich diesbezüglich den Zeitstopp (meine eigentliche Grundidee für dieses Projekt!) umsetzen wollen.

Zuguterletzt ein paar Screenshots zum Thema Schwarze Löcher, als Bonus.

>>>
© 2009 Friedrich Hanisch