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!

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, weiter geht's (26.02.2010)
in: Prototyp

Was mich bei meinen sphärischen Gravitationszonen, d.h. den Schwarzen Löchern, immer etwas stört, ist der doch recht abrupte Wechsel der Perspektive des Spielers, sollte er er in eine solche hineingeraten. Um das ganze abzuschwächen, wollte ich lange Zeit den Leveldesigner (also mich) bestimmen lassen können, welche Minimal- und welche Maximalstärke ein solches Loch hat, und wann die Maximalstärke beginnt.

Beim Versuch der Implementierung dieser Faktoren haben sich jedoch zwei Dinge gezeigt. Erstens mag es für die kugelige Form der Schwarzen Löcher noch relativ einfach einzubauen sein, für die zylindrischen und kubischen jedoch würde ich erstmal vor weiterem Kopfzerbrechen stehen. Und zweitens stellt sich der gewünschte Effekt des sanften Übergangs dann doch nicht so ein, als dass sich weiterer Aufwand in dieser Richtung lohnen würde. Also habe ich die drei Werte kurzerhand gegen einen einzigen Stärke-Wert getauscht.



Immerhin sind die Schwarzen Löcher dadurch auch fast fertig. Es gibt nun auch kubische Formen, sowie einfache direktionale Gravitationsmanipulation, damit die Spielfigur in einem bestimmten Gebiet an der Wand laufen kann und Objekte dort auch liegen bleiben.

Außerdem habe ich ein weiteres Problem gelöst, das auftrat, wenn die Spielfigur sich ganz nah am Rand eines Schwarzen Lochs aufhielt: Durch die längliche Form des Character Controllers passierte es oft, dass die Figur ständig hin und her wackelte, weil sie in einem Frame vom Schwarzen Loch beeinflusst wurde (sie also in Richtung dessen Zentrums gezogen wurde), und im nächsten Frame nicht mehr (sich die Gravitationsrichtung der Figur also wieder normalisieren wollte).
Dies geschieht nun nicht mehr, weil ich das Kollisionsobjekt der Spielfigur, das vom Schwarzen Loch beeinflusst wird, einfach gegen eine Kugel ausgetauscht habe. Der Rest blieb unangetastet.

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.

Controllersteuerung (03.12.2009)
in: Prototyp

Obwohl es nicht wirklich benötigt wird, habe ich jetzt die Möglichkeit in den Prototypen eingebaut, ihn mit einem Controller zu steuern. (Nur das Spiel; nicht den Editor.) Das wollte ich schon damals bei Über Leben und Sterben machen, bin aber nie dazu gekommen.

So wirklich gut funktioniert es allerdings nicht, da müsste noch stark getweakt werden. Die Sache ist allerdings nicht wichtig genug, als dass ich allzuviel Zeit hineinstecken werde.

Aufheben (18.11.2009)
in: Prototyp

In der Kürze der Zeit hier ein kleines Update. Momentan sitze ich daran, dem Spieler die Möglichkeit zu geben, Gegenstände aufheben und bewegen zu können.

Das ist irgendwie schwieriger als gedacht. Folgende Probleme haben sich ergeben:


  • Das Wie: In jeder Physikengine kann man die physikalisierten Objekte mittels so genannter Constraints miteinander verbinden (auf diese Weise können beispielsweise Türen gebastelt werden, die auf- und zuschwingen). Der Plan war, dass ich mit einem solchen Constraint das angewählte Objekt an die Spielfigur hefte. Leider ergaben sich daraus eine Menge Problemfelder (Gewicht, Drehung, etc.), die ich nicht wirklich lösen kann. Darum wich ich auf ein mehr oder weniger einfaches Anpassen der Position aus.

  • Da die Position des gehaltenen Objekts jeden Frame neu gesetzt wird, kann es ganz einfach durch Wände geschoben werden - ein ziemlich übler Nebeneffekt. Daher passe ich jetzt nicht die Position direkt an, sondern gehe einen Umweg über die Geschwindigkeit (Linear Velocity). Zusätzlich wird per "Ghost Object", welches nur für Kollisionsdaten existiert, geprüft, ob sich der Gegenstand nahe einer Wand befindet. Wenn ja, wird die Geschwindigkeit reduziert - ein Durchdringen wird dadurch unwahrscheinlich.

  • Ein anderes Problem war, dass das Objekt, einmal in Händen gehalten, ganz einfach einen NPC in die Höhe steigen lassen konnte. Schlimmer noch beim Player Character, der permanent nach oben beschleunigt wurde. Zudem konnten andere dynamische Objekte, die herumlagen, in den Boden gedrückt werden. Ich umging diese Probleme, indem ich die Collision Mask anpasste.

  • Es bestehen noch immer Schwierigkeiten bei sehr langen oder generell sehr großen Objekten, die nun in den Spieler hineinragen können. Hier muss wahrscheinlich die Rotation angepasst werden. Zudem sollte eine Begrenzung eingebaut werden, ab welchen Ausmaßen Gegenstände überhaupt getragen werden können, oder es wird einen Flag geben, der bestimmt, ob ein Objekt vom Spieler aufhebbar ist.

Sollte dieser Part einmal abgeschlossen sein, gibt es vielleicht wieder ein Video. Eigentlich wollte ich ja lediglich einen Dialogmodus in den Prototypen einbauen, aber es ist gut, wenn die Funktion "Benutzen" sowohl bei NPCs als auch bei Gegenständen bereits jetzt vorhanden ist.

>>>
© 2009 Friedrich Hanisch