Schlagwort-Archive: Code

Monatelang gab es zu meinem Hobbyprojekt SPACOLA Eclipse keine Neuigkeiten. Hauptsächlich deshalb, weil ich lange Zeit nicht mehr daran gearbeitet habe. Nun möchte ich einen winzigen Statusbericht abliefern, der zeigen soll, dass ich im neuen Jahr nicht gänzlich untätig war. Die wichtigste Frage, die es vorab zu beantworten gilt: Gibt es spielrelevante neue Features? Nein, leider nicht. Okay, was habe ich sonst gemacht? Viele neue Artworks entworfen, den kompletten Audiocode modularisiert (einfach austauschbar gemacht), viele Grafiken angepasst, neue Sounds hinzugefügt, ein automatisches Build-Script gebaut, einige spürbare Vereinfachungen unter der Haube, einige hartkodierte Stellen dynamischer gestaltet, solchen Kram eben. Mein Code-Metrics-Plugin zeigt mir, dass ich die 10.000 Zeilen jetzt mehr oder weniger voll habe.

spacolatextedit

Die sichtbarste Änderung wird sein, dass ich zusätzlich zu den bisherigen beiden Schriftarten nun auch einen echten GEM-Font in das Projekt eingefügt habe, den man im Spiel jetzt verwenden kann. Um die neue Funktion zu demonstrieren, habe ich in relativ kurzer Zeit einen kleinen Texteditor gebaut, der den üblichen Editoren auf dem Atari ST nachempfunden ist. Als Bonus gibt der kleine GEM-Texteditor denselben witzigen Click-Sound wie beim guten alten ST von sich, wenn eine Taste gedrückt wird. Und wenn der Click schon dabei ist, dann darf der System Beep-Sound („Bing!“) nicht fehlen, (also CHR$(7), falls sich jemand damit auskennt), wenn man z.B. schon am Textanfang ist, und Backspace drückt. War interessant zu sehen, mit wie wenig Code man grundlegende Textverarbeitungsfunktionen wie Cursorpositionierung, Backspace, Zeilenwechsel etc. hinbekommt, damit es halbwegs gut funktioniert. Aus Spaß an der Freude hab ich den Texteditor dann gleich als Tool ins Spiel eingebaut. Möglicherweise kann man damit später einmal in Echtzeit Levelscripte oder sowas editieren, und das dann sogar auf grafisch authentische Weise.

Für die neuen Artworks habe ich viele neue Schriften generiert, die ich aus dem Spacola Sternenatlas mit hoher DPI eingescannt und in stundenlanger Arbeit pixelgenau rekonstruiert habe. Darauf aufbauend habe ich dann einige neue Designs für mögliche Schriftzüge gebastelt, obwohl da noch viel Platz für Verbesserungen ist. Wo ich dann schonmal dabei war, habe ich gleich das komplette Cover des Sternenatlas mit GIMP digital in hoher Auflösung rekonstruiert. Jede Schrift habe ich möglichst detailgetreu nachgebildet und mich an alle Abstände, Positionen und Größen gehalten. So habe ich jetzt praktisch eine perfekte Vorlage für ein Buch- und Disketten-Cover, sogar bereits mit Rücksicht auf Modifikationen bezüglich des Remakes.

Spacola_Disks1Übrigens fand ich inzwischen meine beiden Spacola-Disketten für den Atari ST in einer Plastiktüte, mit abgegriffenem, vergilbtem Etikett. Eine der Disketten hatte ich leider vor Jahren mit einem Kugelschreiber beschriftet, was mich heute ein wenig ärgert. Zum Glück konnte ich das Label der Diskette nach dem Scannen relativ gut retouchieren, aber der Makel am Original bleibt. Nunja, die vielgenutzten Datenträger waren Mitte der 90er von meinem Diskettenlaufwerk schon nicht mehr 100% lesbar, heute – bald 20 Jahre später – wird darauf sicher nichts mehr zu finden sein.

Daneben tauchte auch mein eigener alter Spacola Sternenatlas in einem verstaubten Karton auf. Den jahrelangen Gebrauch in Kinderhänden sah man dem Buch deutlich an. Ich gab mein Allermöglichstes, den Einband mit etwas angefeuchteten Tüchern von kleinsten Kritzeleien, vom Gilb und sonstigem Schmutz zu reinigen, ohne noch mehr Schaden zu verursachen. Außerdem musste ich dutzende kleinerer und größerer Eselsohren von Hand aus den Seiten entknicken, und das Buch gegenüber der Falz seitdem mit Gewichten beschweren, in der Hoffnung, dass sich die neue Form festigt. Inzwischen sieht es deutlich sauberer, wenn auch längst nicht mehr alpinaweiß aus, aber es ist vorzeigbar geworden. Zur Demonstration eignen sich meine beiden hinzugekauften Atlanten freilich sehr viel besser, denn diese sind in einem absolut makellosen Zustand.

Zum Abschluss bleibt mir nur zu sagen, dass ich wirklich die Hoffnung habe, diese neugewonnene Begeisterung für mein Spieleprojekt über das Jahr aufrechterhalten zu können und dass ich schon bald neue Features vorzeigen kann. Mein Ziel ist es, diesmal am Ball zu bleiben und regelmäßig kleine Neuerungen zu implementieren, ohne dass mal wieder alles monatelang auf Eis liegt. Schließlich würde ich gerne Ende des Jahres eine spielbare Version anbieten können, aber warten wir es mal ab.

Mein treuester „Spacola Eclipse“-Fan hat sich soeben bei mir erkundigt, wie es denn mittlerweile um mein kleines Remake steht. Wie es der Zufall wollte, konnte es kaum einen besseren Zeitpunkt geben, mich das zu fragen. Nach mehreren Wochen fauler Abstinenz gelang es mir gestern und heute tatsächlich für ein paar Stunden einige Dinge am Code zu ändern und Kleinigkeiten von der To-Do-Liste zu streichen. Zeit für mich, meinen ereignislosen Blog mit Dev-News zu füttern.

spacolabrechnungAuf der linken Seite kann man dazu eine Abbildung sehen. Was auf den ersten Blick wie zweimal exakt derselbe Screenshot aussieht, ist in Wirklichkeit eine Gegenüberstellung von Original (oben) und Remake (unten). Ja genau, dieser kleine Aspekt hat mich bestimmt drei Stunden meines Lebens und so einige Nerven gekostet. Es handelt sich im Spiel um den Teil der „Kontoabrechnung“, also die Grafik, die man zu sehen bekommt, sobald man einen Level erfolgreich beendet hat. Hier werden jeweils gelieferte Waren in bare Münze umgerechnet und anschließend kann man schon den nächsten Level beginnen.

Es waren die vielen kleinen Dinge, die die Arbeit so langwierig machen. Pixelgenaue Abstände, Schriftzeilenhöhe, richtige Zentrierung, originalgetreues Timing, Sounds, HUD-Events während der Animation (Highscore!), sukzessives Entfernen der Sprites aus dem Inventar, dabei gleichzeitiges Hochzählen des Punktestands. Und nein, ich habe nicht einfach nur eine große Grafik eingebunden, alles wird dynamisch gezeichnet. Die Unterschiede sind marginal, aber sie sind (leider) da.

Falls sich jemand wundert, wieso auf dem unteren Screenshot das Abrechnungsergebnis nicht mit dem tatsächlichen Score übereinstimmt: Die Berechnung ist leider noch hartkodiert. Ein Fake, ein Test, nur zum Vergleichen. Alles andere ist echt.

Die zweite größere Neuerung ist, dass die Highscore jetzt vollständig in eine Datei gespeichert und beim nächsten Spielstart auch von dort wieder ausgelesen wird. Jetzt fehlt eigentlich „nur“ noch der Dialog zur Eingabe des Namens, dann wäre auch der ganze Highscore-Kram fix und fertig. Aber den Spaß hebe ich mir vermutlich doch für ein anderes Mal auf.

Bereits mit Version 0.23 kam der zweite Gegnertyp hinzu, der zwar komplett eigenständige Sprites hat, sich aber (Copy & Paste sei dank) fast genauso verhält wie der erste Gegnertyp. Ist im Moment eben noch work in progress. Außerdem gibt es jetzt die Geschwindigkeitsstufen für Hyperspeed und natürlich „Ridiculous Speed“ in Anlehnung an den Filmklassiker Spaceballs. Anfang April habe ich noch die komplette Vektorarithmetik zusammengefasst, umgeschrieben und in eine eigene Klasse ausgelagert. Damit habe ich drei Dinge erreicht: 1.: eine konsistente Implementierung der Bewegung von Spielobjekten. 2.: jede Menge überflüssiger oder redundanter Code, der jetzt rausgeflogen ist. 3.: um die 20 Klassen mussten angepasst werden, damit der Code seit der Änderung wieder kompilierbar wurde.

Achja, wir haben jetzt Ingame-Musik und die lässt sich in der Konfiguration sogar an- und abschalten. Der Song ist zwar nicht optimal, aber er ist so ziemlich der passendste, den ich bisher finden konnte. Ich werde da mal noch weitersuchen. Zuletzt kann ich noch erwähnen, dass die Raketentriebwerke der Piratenschiffe jetzt auch Partikel sprühen, wenn sie Schub geben. Das sieht deutlich wuseliger aus als noch in der letzten Version. Vor einigen Wochen hatte ich mal ein neues Preview-Video angekündigt. Ich denke, ich werde meine Ankündigung daher etwas relativieren und mit dem Video warten, bis es wieder spektakuläre Änderungen gibt.

Nachtrag vom 02.06.: Heute war ich ebenfalls ein bisschen fleißig: Der Spieler kann jetzt mit aktiviertem Schildgenerator von gegnerischen Schiffen abprallen (so wie bei Asteroiden bisher schon) oder sich von den Piraten bestehlen lassen, wenn er ohne Schild unterwegs ist. Allerdings fehlt den Piraten noch die nötige Intelligenz um das Diebesgut auch abzuliefern. Wenn der Spieler keine Ware mehr im Inventar hat, kann er den Level jetzt nicht mehr beenden. Mal sehen, vielleicht kümmere ich mich heute noch darum, dass die Gegner auch zurückfeuern können.

Nachtrag vom Nachtrag: Keine drei Stunden später ist es dann soweit: Die Gegner können jetzt aus allen Rohren zurückballern. Und als Spieler muss man sich ganz schön in Acht nehmen. Das macht das Gameplay nun tatsächlich um einiges hektischer als zuvor. Vor allem aber macht es das Gameplay um einiges sinnvoller, denn so nähert sich das Spiel langsam einem ansatzweise vorzeige- und spielbaren Zustand. Hurra!