Archiv für den Monat: Oktober 2015

Leute, es ist jetzt endlich soweit: Heute ist der 21. Oktober 2015 – der langersehnte Zurück-in-die-Zukunft-Tag. Es ist nämlich genau der Tag, zu dem Marty McFly mit seiner Freundin Jennifer und Doc Brown in der Zukunft reist, um seine Kinder vor einer Katastrophe zu retten – und zwar in dem Film „Zurück in die Zukunft II“ mit Michael J. Fox und Christopher Lloyd. Endlich, endlich, das ewige Warten hat ein Ende.

backtothefuture_datum2

Um diesen einen speziellen Tag bildeten sich in der Vergangenheit unzählige Hoaxes in den sozialen Netzwerken und Blogs. Jährlich veröffentlichten irgendwelche Trolle neue manipulierte Bilder mit der berühmten Zeitleiste des DeLorean, auf welchen immer ein beliebiges falsches Datum im Jahr 2012, 2013 oder 2014 angegeben war, mit dem Hinweis, dass heute doch der Tag der Tage sei, und ständig fielen einige darauf herein, weil sie das Original-Datum nicht kennen oder zu faul waren, die Richtigkeit nachzuprüfen. Ich selbst habe so manches Mal jemanden auf seinen Fehler aufmerksam machen dürfen, denn mich als BTTF-Fan lässt so ein Frevel natürlich nicht kalt.

Nichtsdestotrotz, heute ist es WIRKLICH soweit. HEUTE ist dieser spannende Tag, auf den die Fans schon sehr lange und ungeduldig warten. Ab heute gibt es fliegende Autos, Sport-Almanachs, das Café der 80er Jahre, Hoverboards, Mr. Fusion, den Nahrungsmittel-Hydrator, es gibt Holofilme wie „Der weiße Hai 19“ und vieles mehr. Ich sollte jetzt direkt mal vor die Tür gehen und nachsehen, was sich alles verändert hat. Ich bin ja schon so gespannt.

Das Verrückteste ist, dass ich diesen Artikel schon vor langer Zeit vorbereitet habe. Diese Zeilen schreibe ich kurz nach Mitternacht, am Montag den 6. Januar 2014, also über eineinhalb Jahre bevor es tatsächlich soweit ist. Mit Hilfe der terminierten Artikelveröffentlichung von WordPress kann ich diesen Artikel in der Vergangenheit schreiben und ein ganz bestimmtes Veröffentlichungsdatum angeben, um ihn quasi in die Zukunft zu schicken, damit ihr ihn HEUTE lesen könnt, nämlich präzise am 21. Oktober 2015, kurz nach Mitternacht. Falls nicht vorher der Blitz in die Rathausuhr bzw. in den Serverraum meines Hosting-Providers einschlägt. Und da man bekanntlich nie zuviel über seine eigene Zukunft wissen sollte, wird der längst fertige Artikel auch keinen Tag früher veröffentlicht. Der Vorteil der Aktion ist, dass mein Artikel auch dann im Blog veröffentlicht wird, wenn ich es völlig vergessen habe. Wer weiß, vielleicht überrascht mich mein Blog selbst damit.

Ich gehe allerdings bereits jetzt stark davon aus, dass jeder zweite oder dritte Blogger auf dieselbe dämliche Idee gekommen ist, oder noch kommen wird. Insofern, nehmt es mir nicht übel, wenn man von Nachrichten über den Zurück-in-die-Zukunft-Tag praktisch erschlagen werden wird. Und vor allem, nehmt es euren Kindern nicht übel, wenn sie mal aus Versehen den Wohnzimmerteppich in Brand stecken.

Update: Und da wir nun schon in Partylaune sind: Am 3. Juli diesen Jahres hat die fantastische Filmreihe ihr 30-jähriges Jubiläum gefeiert! 30 Jahre Zurück in die Zukunft! Moment, das interessiert euch gar nicht? Tja, ich schätze ihr seid wohl noch nicht so weit, aber eure Kinder fahren da voll drauf ab!

Wieder einmal in drei Wochen nicht einen einzigen Beitrag geschrieben. Aber heute schaffe ich es. Ich habe ein freies Wochenende, ich habe Motivationsmusik laufen, ich habe Kaffee gemacht, ich muss mich nur noch konzentrieren! Tschakka! Nein, SuccessDenied wird nicht eingestampft, aber die Zahl der regelmäßigen Beiträge hat sich leider wieder einmal reduziert. Beruflich bin ich zur Zeit derart eingespannt, dass ich abends nur noch froh bin, wenn ich nichts mehr machen muss. Manchmal wundere ich mich selbst, wie ich überhaupt noch zu etwas komme. Nunja, in acht oder neun Wochen ist ja schon wieder Urlaub. Bis dahin versuche ich möglichst viel auf Autopilot unterwegs zu sein.

Trotz all der Widrigkeiten arbeite ich weiterhin im kleinen und im ganz kleinen Rahmen an meinem SPACOLA-Remake. In genau einem Jahr soll die Monochromversion fertiggestellt sein. Das ist ein sportliches Ziel, wenn man sich vor Augen führt, dass ich seit fünf Jahren an dem Spiel bastle, und mir täglich mehr Dinge auffallen, die ich leider nicht richtig hinbekommen oder komplett vergessen habe. Die To-Do-Liste wird erstaunlicherweise niemals kürzer, nur noch länger und länger. Die aktuelle Version 0.49 vom Oktober 2015 hat die 30000 Zeilen übersprungen. Hier eine kleine, unvollständige Liste der Dinge, die kürzlich hinzugekommen sind:

Kollisionsauflösung

Die Gegnerschiffe im Originalspiel können (bis auf eine einzige Ausnahme) sich im Flug niemals gegenseitig berühren, sie können lediglich mit dem Spieler und den Asteroiden kollidieren, durch andere Entitäten fliegen sie immer hindurch. Auch die Asteroiden selbst fliegen immer durch andere Asteroiden hindurch. Inzwischen habe ich meiner kleinen 2D-Engine einen Algorithmus verpasst, der es erlaubt, unter Spielobjekten wechselseitig auf Kollisionen zu prüfen. Mit steigender Anzahl der Objekte steigt der Rechenaufwand leider enorm, das Spiel wird spürbar langsamer, daher muss gewährleistet sein, dass diese Methode nur auf eine überschaubare Anzahl von Objekten angewandt wird. Hinzu kommt, dass eine Kollisionserkennung bzw. -vermeidung leider nicht ausreicht, wenn die Objekte z.B. von der Schwerkraft permanent in dieselbe Richtung gezogen werden. Schnell ergibt sich so die Situation mehrfacher Überlagerungen, oder von Objekten, die gerade durch Anwendung des Abprallvektors wiederum in ein anderes Spielobjekt hineingeschoben werden.

Es musste eine Methode zur aktiven Kollisionsauflösung gefunden werden, die auch in einer großen Ansammlung von Spielobjekten funktioniert. Einige aufwändigere Algorithmen dazu habe ich mir angesehen, leider waren diese in meinem Fall nicht gut umsetzbar. Im Endeffekt versuchte ich mich mittels Trial and Error selbst an einer Lösung. Im Prinzip werden nun für jeden Frame alle auftretenden Kräfte ausgerechnet und schrittweise auf die Objekte angewandt. Jedes Objekt wird dabei nur so weit bewegt, bis eine Kollision auftreten würde, anschließend wird immer die Richtung korrigiert. Wenn am Ende des Updates doch eine Kollision erkannt wird, die sich trotz aller Vorsicht nicht vermeiden ließ, dann werden auf die „Streithähne“ jeweils Penalty Forces angewandt, also Strafvektoren, die die Objekte mit Schwung auseinanderspringen lassen. Das Ergebnis ist fast vergleichbar mit dem, was etablierte 2D-Physik-Engines leisten können.

spacolaeclipse049

OXYD-Rotoren als Spaßgegner

Um mein kleines 2D-Physik-Experiment zu testen musste ich kurzfristig einen Spaßgegner ins Spiel einbauen, der definitiv miteinander reagiert. Im Dongleware-Klassiker OXYD gab es mit dem Rotor einen solchen Gegner. In ein oder zwei Landschaften gab es die Situation, dass zwei Rotoren gemeinsam die Spielerkugel jagten. Die drehenden Rotoren stießen sich dabei jeweils voneinander ab, wenn sie versuchten, denselben Punkt zu erreichen. Im SPACOLA-Remake werden die drehenden Rotoren nun von den Stationen losgeschickt, und sie werden direkt vom Raumschiff des Spielers angezogen. Die Anzahl gleichzeitig existierender Rotoren habe ich dabei stark erhöht, um zu testen, ob die Abstoßung auch im Pulk einwandfrei funktioniert. Das Ergebnis ist wirklich nett anzusehen und wirkt dank passendem OXYD-„Glas“-Soundeffekt auch sehr authentisch.

Stationsanimationen fertig

Alle zehn Stationsanimationen sind nun komplett fertiggestellt, die bisher bestehenden wurden verbessert. Die Timings habe ich Frame für Frame aus dem Original übernommen, dazu habe ich stundenlang Bildchen im Emulator mitgezählt und jeweils die Anzahl notiert. Dafür kann ich jetzt garantieren, dass das Remake sich in dieser Hinsicht absolut nicht mehr vom Original unterscheidet. Tests mit den jeweiligen Soundeffekten zeigen, dass die Animationen wirklich perfekt passen.

Neues Titel-Artwork und Swing-GUI

Ich habe ein neues Titel-Artwork entworfen, da mir die Abstände zwischen den Buchstaben noch nicht gefallen haben. Wenn ich schon dabei war, wollte ich die Grafik des Schriftzugs diesmal perfekt gestalten, so dass ich daran nie mehr etwas ändern müsste. Der Schriftzug wirkt jetzt plastischer, die Abstände sind optimiert, und sogar der Schattenwurf wurde an die Vorgaben im großen Dongleware-Vorbild OXYD angelehnt. Zusätzlich habe ich den Dongleware-Font invertiert und mit einem schwarzen Rand versehen, damit es ebenfalls näher am Original ist. Die Swing-GUI habe ich mit dem Dongleware-Font und mit einem einheitlichen Hintergrund etwas aufgehübscht. Doch das Ziel ist damit noch lange nicht erreicht. Ein einheitliches Optionsmenü fehlt weiterhin.

spacolaeclipse049_2

Magnetismus-Code verbessert

Den Magnetismus-Code habe ich deutlich verbessern können. Die Lösung des Problems war nicht, den Code physikalisch korrekt zu gestalten, wie ich das zuerst versucht habe, sondern – im Gegenteil – eine eher unlogische Herangehensweise. Objekte, die magnetisch angezogen werden, werden nicht mehr ausschließlich in Richtung des „Magneten“ beschleunigt, sondern vollziehen zusätzlich dessen Bewegung iterativ nach. Dadurch wird eine weichere Anziehungsbewegung ermöglicht, und es wird verhindert, dass Objekte wie Satelliten immer um den Mittelpunkt kreisen. Die exakten Werte versuche ich allerdings weiterhin durch Ausprobieren und Korrigieren herauszufinden.