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:

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.

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.

Schwarze Löcher im Editor (20.12.2009)
in: Prototyp, Screenshots

Rudimentär habe ich mal die Schwarzen Löcher in den Editor eingebaut. Dazu gibt es auch ein Video, wieder mal auf YouTube (schlechte Qualität) und Vimeo (gute Qualität). Es zeigt auch kurz das Aufheben und Werfen von Gegenständen.

An der Darstellung und Bearbeitung der "Holes"-Objekte muss noch gefeilt werden. Es wird von der Übersicht her so oder so problematisch, sobald ein Objekt sich in einem anderen befindet, also sollte es irgendwann so eine Art Ebenen-Modus geben.

Bis Anfang Februar habe ich für weitere Arbeiten am Prototypen leider keine Zeit - die schriftliche Arbeit verlangt meine vollste Aufmerksamkeit. Eigentlich wollte ich die Arbeit an den Schwarzen Löchern ja bis dahin beenden, aber es kommt ja doch immer anders als man denkt.

Zwischenstand-Screenshots (16.10.2009)
in: Characters, Prototyp, Screenshots

Ein paar neue Screenshots, teilweise nichts weiter als Spielerei, im Grunde nichts spannendes.

Interessant sind v.a. das vierte und fünfte Bild. Theoretisch sollten die beiden komplett gleich aussehen - der Level (wie im dritten Screenshot zu sehen) wurde in beiden Fällen resettet und die Physiksimulation gestartet. In der Praxis hat sich gezeigt, dass Determinismus zwar auf jeden Fall vorhanden ist, aber nicht so wie erwartet: Zwei "Endstadien" (d.h. Position aller physikalisierten Objekte, sobald sie in Ruhe sind) wechseln sich bei jedem Reset ab. Warum das so ist, weiß ich allerdings nicht; und da mein Spiel von einem hundertprozentigen Determinismus nicht abhängig sein dürfte, ist es glücklicherweise nicht wirklich relevant.

Die beiden letzten Screens zeigen, was ich in diesem Monat angefangen habe: den Einbau von Figuren in den Editor. Ein Character ist stets eine Nichtspieler-Figur und als solche mit einem so genannten kinematischen Physikkörper ausgestattet. Auf diese Weise können NPCs beispielsweise nicht weggeschubst werden, ob nun direkt oder mittels geworfener Objekte.
Per Script kann man einen beliebigen Character in einen Player verwandeln, sodass dieser zur Steuerung innerhalb des Spiels verwendet wird. Der Physikkörper ist in diesem Fall nicht kinematisch - somit muss der Spieler aufpassen, dass er gefährlichen Flugkörpern ausweicht.

Damit ist das Thema Characters zwar noch lange nicht abgeschlossen, aber immerhin.

>>>
© 2009 Friedrich Hanisch