Schlagwort-Archive: Dongleware

Berichte über das Ende von SuccessDenied sind stark übertrieben. Ich hatte in letzter Zeit weder besonders viele Themen über die ich schreiben wollen würde, noch war ich überhaupt in der Stimmung, etwas zu schreiben. Beruflich bin ich zur Zeit unabkömmlich. Hinzu kommt, dass ich seit meiner letzten Erkältung vor über fünf Wochen zwar längst nicht mehr krank bin, aber leider auch nicht richtig gesund. Wieder einmal schleppe ich einen wirklich besonders hartnäckigen, unproduktiven Husten mit mir herum. Mehrmals täglich inhaliere ich daher mit meinem Kompressor-Druckluftinhalator Kochsalzlösung mit Mucosolvan, schmiere mich mit Mentholsalbe ein, trinke Hustenlöser, nehme Tropfen ein – die ganze übliche Palette eben, ohne dass irgendetwas davon irgendwie helfen würde. Mit meinen guten Genen bin ich schon sehr gesegnet.

Aber: Wenn die Gesundheit eines Tages zurückkehrt, bin ich sicher, dass ich auch meine gute Laune zurückerhalten werde. In der Zwischenzeit ein kleines Update zum SPACOLA Eclipse Remake-Projekt. Das Projekt steht ganz und gar nicht still, sondern wird wöchentlich mit Änderungen und Neuerungen versehen. Die aktuelle WIP-Version 0.57 vom Juli bringt wieder viele kleine neue Funktionen mit, und sogar eine größere. Aber auch ein paar Änderungen der vorhergehenden Versionen dürfen hier nicht unerwähnt bleiben. Der nüchterne Screenshot soll einen Einblick in das Debug-Menü geben, das ich um einige Einträge erweitert habe. Beim Testen sind die vielen Kommandos äußerst hilfreich, sonst spielt man sich dumm und dämlich, wenn man zum 50. Mal dieselbe Stelle im Code geändert hat.

spacolaeclipse57

Remake-Technik

Die 2D-Grafikengine zeigt jetzt bei Bedarf ein paar Dinge an, die das Original nicht hatte: Sektorgrenzen, Hüllkreise, Objekttypen, Spielernamen (für den Multiplayer-Modus), außerdem natürlich die Partikeleffekte, Interpolation und Pixelvergrößerung. Mal davon abgesehen, erlaubt es das Remake, einige Limitierungen des Originals aufzuheben, die damals vermutlich aus Performancegründen nötig waren. Beispielsweise Objekte, die sich zu weit vom Spieler entfernt hatten, wurden im Original aus dem Spiel genommen. Heute könnte man diesen Löschmechanismus herausnehmen und dadurch eine persistentere Spielwelt bekommen. Der Dongleware-Fadein/Fadeout-Effekt, den ich vor ungefähr 4 Jahren mühsam implementiert hatte, war leider fehlerhaft. Inzwischen ist er eine absolut pixelgetreue Nachbildung.

Maforianer-Gegner fertig

Es hat lange gedauert und mir sind dabei viele graue Haare gewachsen: Der Maforianer, einer der ersten drei Gegner, ist mehr oder weniger komplett fertig. Das Bewegungsmuster dieses Gegners ist vermutlich eines der einfachsten im Spiel, aber bei weitem nicht so leicht nachzuimplementieren, wie man meinen möchte. Inzwischen bin ich an einem Punkt angelangt, wo mein Ansatz der Vorlage nahe genug kommt, so dass man es vorerst so lassen könnte. Dadurch bin ich auch auf die Spur eines neuen mathematischen Ansatzes für die Schiffsnavigation der Gegner gekommen – und habe zufällig auch die Lösung für das Problem mit dem Magnetismuseffekt gefunden. In der Folge bewegen sich die Gegner jetzt realistischer, und die Anziehung von Containern, Waren und Piraten sieht viel besser aus als vorher. Der Maforianer hetzt jetzt dem Spieler permanent hinterher, jagt ihm nach Möglichkeit die Lieferwaren ab und flieht damit zu seiner Piratenstation. Es ist noch nicht alles hundertprozentig, aber es ist besser als nichts. Fehlen für den ersten Level also nur noch zwei weitere Gegner, mal sehen wann mir das gelingt.

Abspann

Im Remake kann man sich – genau wie im Original – das „Zertifikat“, also die Siegerurkunde ausdrucken lassen, sobald man den letzten Level gewonnen hat. Zusätzlich gibt es im Remake nun einen echten Abspann (die Closing Credits), in dem viele beteiligte Personen genannt und Danksagungen zum Ausdruck gebracht werden. Diese kleine Erweiterung wollte ich in jedem Fall im Remake drin haben, denn sie macht ja schließlich auch nichts kaputt. Mir fällt tatsächlich nun außerhalb des laufenden Spiels nichts mehr ein, das ich noch nicht fertig habe. Eigentlich eine gute Nachricht.

Timings

Timings sind mir seit einigen Monaten ein großes Ärgernis gewesen. Nachdem ich am Anfang meistens gesagt habe „Diese oder jene Animation läuft ungefähr 4 Sekunden“ und das dann auch so eingebaut habe, ging ich nun endlich dazu über, die exakte Anzahl Frames zu zählen. Wenn dann beispielsweise 270 Frames herauskommt, muss ich das wiederum umrechnen auf die Zielframerate von aktuell 50 fps. Das wären dann etwa 187 Frames, damit die Animation genauso lange läuft. Ähnlich verhält es sich mit den Konstanten für Gegnerverhalten: Wenn ein bestimmter Gegner 120 Frames braucht, um sich um 180 Grad zu drehen, dann braucht derselbe Gegner im Remake dafür nur noch 83 Frames. Und da sich die Framerate beliebig einstellen lassen wird, muss diese Berechnung wiederum variabel sein. Zusammengefasst habe ich viel Zeit damit verbracht, die Dinge, die eigentlich schon fertig waren, nun auch bezüglich der Original-Timings anzupassen.

Gegner-Deployment und -Redeployment

Das Deployment und Redeployment von Gegnern ist nun wesentlich näher am Original. Alle paar hundert Frames wird ein Gegner in der Station generiert. Dann beginnt dieser sich zu drehen, und zum Spieler auszurichten. Wenn die Ausrichtung stimmt, gibt er Schub und beginnt die Jagd. Dafür gibt es eine Gegner-Warteschlange, die sich aus den Anweisungen der Gegnerkonfigurationen im Levelskript zusammensetzt, und es gibt die Redeployment-Warteschlange für Gegner, die gestohlene Ware abgeliefert haben. Leider verstehe ich den Zusammenhang mit den Levelskripten noch nicht so ganz, daher ist die Unschärfe hier sehr groß. Ich kann aktuell nur nachbilden was ich sehe, und viel sehe ich nicht.

Es sind wie gesagt viele Kleinigkeiten, die nach und nach besser werden. Das Ziel für den ersten komplett spielbaren Level ist schon sichtbar, jetzt heißt es dranbleiben und das Tempo steigern. Die zwei verbliebenen Gegnertypen (für Level 1) werde ich wohl in Kürze angehen müssen, und mich zur Not auch damit anfreunden, wenn das Ergebnis dann nicht perfekt wird.

Seit kurzem befindet sich in meiner kleinen privaten Sammlung von Dongleware-Büchern ein Exemplar von „The Oxyd Book“ (General Edition) in der American Edition von 1992. Von der deutschen Ausgabe besitze ich bereits zwei Exemplare, aber aus irgendeinem Grund war ich wohl der Meinung, ich müsste die Sammlung dringend mal wieder erweitern, und so bestellte ich mir kurzerhand dieses schöne Stück aus den USA. Beim vorsichtigen Säubern des sichtlich beschmutzten Bucheinbands fiel mir auf, dass sich nicht allein der Schriftzug von der deutschen Variante unterscheidet, sondern der ganze Farbton des Bucheinbands ein anderer ist. In Deutschland ist er orange, die American Edition dagegen ist gelb. Nach dem Einscannen des Covers und des Klappentextes fürs Archiv wandert das Buch natürlich in meine gedachte, weil leider noch nicht ganz vorhandene Raritäten-Glasvitrine.

The Oxyd Book

Das Buch bei Amazon über einen Drittanbieter war leider nicht so ganz günstig zu bekommen. Auf der anderen Seite des großen Teiches zu bestellen, treibt den Preis scheinbar ziemlich in die Höhe, jedenfalls sind mir keine Schnäppchen aufgefallen. Sei’s drum. Ohnehin war die Bestellung eine recht interessante und witzige Erfahrung für mich, schon da ich nicht so oft international bestelle, so wie manch anderer. Zunächst wusste ich auch gar nicht, ob das Buch tatsächlich erst noch importiert werden muss, da der Händler entweder seinen Sitz in Deutschland hatte, oder zumindest deutsch klang. Ich bildete mir anfangs ein, das Buch sei womöglich schon zuvor eingeflogen worden und müsse nur noch innerhalb Deutschlands verschickt werden.

Jedenfalls war das Päckchen nach fünf Wochen noch nicht eingetroffen. Ich hatte eigentlich nur peripher begonnen, mir Sorgen zu machen, ob da etwas verschüttgegangen sein mochte, aber als selbst der Verkäufer bei mir wohl routinemäßig in schönstem Google-Translate-Deutsch per Textnachricht anfragte, ob denn alles in Ordnung war, und ob er seine Händlerbewertung bitte haben könne, da war das eine geeignete Gelegenheit für mich, durchblicken zu lassen, dass ich noch (geduldig) auf die Lieferung wartete. Die Antwort kam prompt: Das sei natürlich ganz und gar nicht gut, er entschuldigte sich, und ich solle doch bitte kurz bestätigen, ob die hinterlegte Adresse die richtige sei, und auch mal nachsehen, ob das Paket nicht womöglich für mich irgendwo abgegeben worden sein konnte.

Die Adresse bestätigte ich, und die Lieferung wartete ganz sicher auch nicht wochenlang in irgendeinem Erdloch ohne meine Kenntnis auf mich. Der Händler erstattete mir kaum zwei Tage später den gesamten Betrag und entschuldigte sich erneut bei mir. Er konnte leider nicht in Erfahrung bringen, wo die Lieferung sei. Ich war überrascht angesichts soviel Freundlichkeit und der schnellen und völlig unproblematischen Rückerstattung. Ich erwarte ja eigentlich ständig, irgendwann einmal in eine solche blöde Situation zu kommen, in der ich ewig hilflos meinem Geld hinterherrennen muss, und am Ende doch keinen Cent mehr davon sehe.

Ich hatte das Thema längst abgehakt, da steckte das Buch nach deutlich über acht Wochen plötzlich doch noch in meinem Briefkasten. Das war erfreulich und gleichzeitig irgendwie kurios – vor allem die Tatsache, dass ich für das eigentlich recht teure Buch faktisch überhaupt nichts bezahlt hatte, und der Verkäufer die Lieferung auch schon selbst als verloren betrachtete. Nun sollte ich vielleicht die Geschichte erzählen, wie ich eine längere und hitzige Diskussion mit dem Engelchen auf meiner rechten Schulter und dem Teufelchen auf meiner linken Schulter führte, aber so war es gar nicht. Fast sofort begann ich einige Zeilen an den Verkäufer zu schreiben und ihn auf das schließlich doch noch aufgetauchte Paket aufmerksam zu machen. Unehrlich liegt mir irgendwie nicht.

Dafür bedankte sich der Verkäufer bei mir für meine Aufrichtigkeit und für die Bereitschaft, die Rückerstattung rückgängig zu machen. Dazu musste ich jedoch selbst bei Amazon aktiv werden, da einem Verkäufer die notwendigen Mittel dazu fehlen. Ich schrieb also wiederum an den Amazon-Support und bat darum, die Rückerstattung zurückzunehmen, weil das Paket inzwischen doch noch angekommen war. Als Antwort bekam ich von einer netten indischen Supportmitarbeiterin eine weitere Entschuldigung, dafür dass das mit der Rückerstattung noch nicht geklappt hat. Überweisungen dauerten bekanntlich oft länger, und ich solle mich doch bitte einige Tage gedulden und dann gegebenenfalls noch einmal melden, wenn das Geld weiterhin auf sich warten ließe. Die Dame hatte meine Anfrage offensichtlich nicht richtig gelesen.

Nach einer weiteren Nachricht konnte ich das Missverständnis aufklären. Diesmal hatte eine andere indische Supportmitarbeiterin meine Anfrage beantwortet. Erneut bedankte man sich bei mir für soviel Ehrlichkeit, die Zahlungsabteilung würde das Geld demnächst nochmals bei mir abbuchen. Der Dank und die Entschuldigungen waren mir das Geld allemal wert.

spacolaeclipse054

Seit Oktober kein Lebenszeichen von SPACOLA Eclipse, und auch das versprochene neue Vorschau-Video hat inzwischen drei Monate Verspätung? Ja, das klingt eindeutig nach mir. Aber ich kann Entwarnung geben: Bislang war ich eigentlich „nur“ zu faul, euch mittels Blog-Beiträgen auf dem laufenden zu halten, und auch das Produzieren, Schneiden und Hochladen des Videos war mir bisher zu mühselig. Dennoch bearbeite ich jeden Monat durchschnittlich 40 „Issues“ an dem Spiel, so dass es immer weiter vorangeht. Sogar an diesem Wochenende habe ich wieder eine ganze Stange an unliebsamen Problemen behoben, die mich schon recht lange stören.

Mit unliebsamen Themen meine ich solche Codeänderungen, die sich nicht auf das Gameplay auswirken, über die es sich daher eigentlich auch nicht lohnt, in einem Beitrag zu schreiben. Die Vortex-Klasse kann jetzt die Animationen der Sterne und Spielobjekte darstellen, außerdem ist die Animation des Wurmlochs selbst jetzt deutlich näher am Original. Die Displays in der HUD-Seitenleiste sind jetzt allesamt numerische oder hexadezimale „FlapDisplays“, also solche Anzeigen, bei denen die einzelnen Ziffern bei Wertänderungen erst nacheinander umklappen – genau wie im Original. Daneben gibt eine ganze Menge an Änderungen bezüglich der Programmablaufkontrolle. Was passiert z.B. wenn man im Intro F5 drückt, oder ESC im Levelauswahlbildschirm? Wie lange wird das Hauptmenü angezeigt und wohin soll das Programm dann springen? Genau solche Dinge musste ich stundenlang im Originalspiel analysieren und ins Remake einbauen. Das ist wahnsinnig viel kleinfitzeliger Kram, der aber leider nötig ist.

Dafür habe ich endlich die Bedingung für das erfolgreiche Beenden des Spiels implementiert. Sobald alle 64 Levels abgeschlossen sind, wird das Zertifikats-Modul ausgeführt, welches es im finalen Spiel erlaubt, das persönliche Zertifikat anzuzeigen oder auszudrucken. In der Testphase wird hier allerdings nur eine Meldung angezeigt, dass es sich noch um eine Testversion handelt. Zusätzlich habe ich das Verifikations-Modul eingebaut, das im Original verwendet wird, um beim Laden von Savegames zu prüfen ob der Spieler auch wirklich den Sternenatlas besitzt. Im Remake wird dieses Modul zwar nicht direkt benötigt, aber es gehört eben trotzdem dazu. Tatsächlich funktioniert die Prüfung sogar perfekt, denn SPACOLA Eclipse beinhaltet seit einigen Monaten den kompletten Inhalt des Sternenatlas. Möglich wurde das durch die Unterstützung eines Hackers, der das Originalspiel mit einem Disassembler dazu gebracht hat, alle 29568 Codes auszuspucken.

Auch erscheint nun beim Klick auf „Neues Spiel“ ein kleines Menü, in welchem man den Spielmodus (dargestellt durch eine entsprechende Grafik) auswählen kann. Im Moment ist das nur das Monochrom-Remake mit dem Codenamen „SPACoLASSIC“. Im Verlauf von späteren Versionen gibt es hier auch die verbesserte Farbversion und den Multiplayer-Modus zur Auswahl. Das eingebaute Cheat-„Navigationssystem“ (der Richtungspfeil) zeigt nun nette kleine Icons an den Pfeilen, um zu verdeutlichen wohin der Pfeil eigentlich deutet. Denn neuerdings wird dem Spieler nicht nur die Richtung zum Ziel ausgewiesen, sondern auch zu bestimmten Powerups.

Ach, Moment. Eine große Gameplay-Änderung habe ich dann doch zu vermelden: Der Minenleger ist fertig. Dieser äußerst unangenehme Gegner fliegt im Spiel auf den Spieler zu und wirft ihm eine Mine direkt vor die Füße. Das Teuflische an diesen Gegnern ist, dass wenn sie vom Spieler zerstört werden, sie diesen mit einer weiteren Mine oft noch mit in den Tod reißen können. Doch auch hier gibt es leider eine Beobachtungsungenauigkeit von mindestens 20%, so dass ich nicht garantieren kann, dass die Bewegungen oder das Schießverhalten wirklich genau wie im Original sind. Aber besser wird es leider nicht.

Weiterhin peile ich den Oktober als Termin für eine erste richtig gut spielbare Version an. Ob diese Version dann das komplette Spiel beinhalten wird oder doch nur den ersten Level, das mache ich davon abhängig wie gut ich bis dahin vorankomme.

Eine Besonderheit des Hintzen & Verwohlt -Klassikers „Shocker II – Das Haus der Spiele“ war, dass es hiervon eine hochaufgelöste Farbversion für den Atari TT und Atari Falcon gab, diese bekam ich jedoch mangels passender Hardware nie zu sehen. Einzig in einem Atari-Magazin (vermutlich in einer der letzten Ausgaben des TOS-Magazins anno 1993) war einmal ein Farb-Screenshot abgedruckt. Die ST-Fans kannten bis dahin nur die üblichen Farbspiele in 320×200 Pixeln, die zwar wunderbar bunt, aber dafür oft viel zu grobpixelig waren, um viele kleine Details gut erkennbar darzustellen. Wer ein niedrig aufgelöstes OXYD gesehen hat, weiß wovon ich rede. Mit den höheren Auflösungen des Atari TT und Atari Falcon 030 unter gleichzeitiger Unterstützung für 16 oder mehr Farben änderte sich dies leider erst zum Ende der Atari-Ära hin. Entsprechend wenige Spiele nutzten die erweiterten technischen Möglichkeiten aus – vermutlich auch, weil der TT und Falcon sich im Vergleich zum ST und STE nicht gut verkauften.

Als Fan der hochaufgelösten Monochromgrafik des ST habe ich mich daher immer mit dem STE-Emulator Steem begnügt, der mir viele Funktionen bietet, die andere Emulatoren nicht haben, etwa jederzeit Speicherabbilder erstellen, laden und auslesen zu können, oder die Emulation beliebig langsamer, schneller oder Frame-by-Frame ablaufen zu lassen. Mit dem Steem Debugger kann man den Speicher sogar in Echtzeit modifizieren und den Programmablauf oder Programminhalte verändern. Leider stammt die letzte offizielle Steem-Version aus dem Jahr 2004, also noch aus der Zeit in der ich mein Abitur gemacht habe. Inzwischen wird Steem wenigstens inoffiziell von Fans weiterentwickelt. Doch auf Grund der relativ langen Zeit, die schon vergangen ist, scheint Hatari heute der wesentlich fortgeschrittenere Emulator zu sein. Zumal Hatari längst auch den Atari TT und Atari Falcon emulieren kann, was für mich praktisch ist, um auch Dinge zu sehen, die ich nicht aus eigener Erfahrung kenne.

Seit mehreren Jahren versuchte ich nun, beispielsweise die hochaufgelösten Farbversionen von Shocker II oder Oxyd Magnum in Hatari zu starten, schon alleine um Screenshots für meine Levelgalerien und Spielemuseen anzulegen, doch offenbar hätte ich dazu das Handbuch des Atari Falcon lesen müssen, denn ich hatte keine Ahnung, wie man das Gerät in den hochaufgelösten Bildschirmmodus umschalten konnte. In Hatari lässt sich ganz komfortabel per Mausklick ein VGA-Monitor mit der Auflösung 640×480 „anschließen“, doch das Falcon-TOS bootete trotzdem immer nur in der niedrigen Auflösung. Eine Option für höhere Auflösungen gab es nicht, oder wenn es sie gab, war sie aus irgendeinem Grund ausgegraut. Entsprechend ließen sich auch die Spiele nicht starten, bzw. stürzten direkt mit mehreren Bomben ab. Mehrfach fragte ich bei bekannten Atari-Fans per E-Mail an, ob sie eine Idee hätten, wie man Shocker II starten könnte. Niemand wusste Rat.

Schließlich musste mir Frank, ein weiterer Dongleware-Enthusiast und „Esprit“-Experte, aushelfen, der sich ganz beiläufig bei mir über die Farbversion von Shocker II erkundigte. Dank seiner Anleitung gelang es mir endlich, den Desktop in der hohen Auflösung zu genießen. Wie sich herausstellte, war ich jahrelang auf der falschen Fährte: Ich war auf der Suche nach einer Option für höhere Auflösungen, dabei war die Auflösung eigentlich schon richtig. Ich musste nur noch die Zeilenverdoppelung ausschalten und die Anzahl Spalten von 40 auf 80 erhöhen, also auf genau den Wert, den ich aus dem monochromen GEM kenne. Das sind beides leider äußerst kryptische Optionen für das, was sie bewirken sollten: Horizontale und vertikale Pixelverdoppelung. Daher wurden auf dem Monitor nur 320×200 Pixel dargestellt. Und plötzlich erschienen mir der GEM und sogar Shocker II in ihrer vollen Farbpracht:

shocker2falcon

Danke nochmals an Frank für den genialen Tipp. Jetzt kann ich die wunderbare Welt der Falcon-Programme und -Spiele entdecken und meine Webseite ein wenig mit bunten Screenshots aufhübschen. Es geht natürlich nichts über schön schattierte Monochromgrafik, aber auch aufwändig gepixelte Farbsprites in der VGA-Auflösung haben ihren eigenen Charme, besonders wenn der Grafikstil im Endeffekt derselbe bleibt.

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.