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.

Vergangenes und Zukünftiges (23.02.2010)
in: Allgemeines, Dokumente

So, mal ein (relevantes) Update für dieses Blog. Und zwar hatte ich mich, wie allgemein bekannt, bis zum Anfang des Monats fast nur noch mit meiner schriftlichen Arbeit beschäftigt, dessen so genannte Screenversion man nun hier herunterladen und lesen kann.

Wie von Anfang an geplant hatte ich mich mit einigen Bestandteilen eines Computerspiels beschäftigt: Gameplay, Interface, Story, Sound, Leveldesign und Physik. Im Nachhinein wundere ich mich selbst ein wenig, warum ich nicht auch die generelle grafische Gestaltung besprochen habe, zumal es da viele interessante Beispiele für gäbe. Andererseits halte ich den Faktor Grafik sowieso schon für viel zu überrepräsentiert (v.a. in den Spieletestzeitschriften), da es bei vielen Spieleentwicklern inzwischen anscheinend nur noch darauf ankommt, schöne Screenshots und Trailer machen zu können. Anders kann ich mir die fortschreitende Regression hinsichtlich Gameplay und Story nicht erklären. Aber ich schweife ab.

Nicht wirklich geplant war, dass das Konzept, welches man auch hier im Blog lesen kann, letzten Endes nur im Anhang der Diplomarbeit zu finden sein würde. Allerdings bin ich sowieso schon beinahe über die maximale Seitenzahl gekommen - und dennoch gäbe es noch viel zu sagen. Insgesamt bin ich mit meiner Arbeit nicht wirklich zufrieden - aber froh, dass dieser Teil nun hinter mir liegt. Ich bereue jedoch, keine Zeit mehr für einige Gestaltungsrichtlinien von "Dynamikon" gehabt zu haben. Außerdem mag ich den Arbeitstitel immer noch nicht, aber Namensfindung stand und steht gerade weit hinten an.

Nach drei Wochen jedenfalls widme ich mich endlich wieder meinem Prototypen - diese Zeit der Erholung musste leider sein, unter anderem möchte ich über Spiele ja auch nicht nur schreiben, sondern sie auch selbst mal ausprobieren ..

Momentan sitze ich daran, die bereits im Dezember angefangenen Schwarzen Löcher abzuschließen: Gravitationszylinder und -kuben müssen eingebaut werden, sowie ein fehlerfreies Verhalten, wenn sich eine Spielfigur im Grenzbereich aufhält. Zudem muss definiert werden, was passiert, wenn ein beliebiges Objekt ein Schwarzes Loch wieder verlässt.

Da das ganze sowieso immer mehr Zeit frisst als man denkt, habe ich auch gleich mal einen Wochenplan angefangen, der sich demnächst aber auch wieder ändern wird. Das liegt daran, dass ich mir erst einmal bewusst werden muss, welche Abschnitte meiner Story ich eigentlich umsetzen will. Dazu werde ich wohl als nächstes eine Menge Skizzen produzieren; leider habe ich das Zeichnen allgemein seit langem sträflich vernachlässigt und muss daher erst einmal wieder meine Zeichenhand trainieren.

Nach den Schwarzen Löchern soll das Feature "Zeitstopp" umgesetzt werden. Ob ich danach tatsächlich noch Paralleldimensionen implementiere, wird sich allerdings erst noch zeigen. Wichtiger wäre mir mindestens eine Art an Gegner. Auf jeden Fall sollte ich gewisse Effekte, wie Schatten und Partikel, nicht vergessen und sie möglichst früh in den Prototypen einbauen.

Und das ist nur der Part, der durch die Programmierung zustande kommt. Zwei bis drei Figuren und eine Menge Prefabs müssen ja nebenbei modelliert werden, um die Level, die dann entstehen, auch mit Inhalt zu füllen.

Fortsetzung folgt.

Konkurrenz belebt das Geschäft, Teil 3 (09.01.2010)
in: Allgemeines

Huch, das sieht ja aus wie das, was ich machen will. Nur etwa eine Billion mal besser. Aber ich benutze ja nicht DX11, sondern nur DX9c - kein Wunder!

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