Schlagwort-Archive: Spiel

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.

diablo1_1

The sanctity of this place has been fouled„. Wer bei diesem einprägsamen Satz nostalgisch wird und sich mit gezücktem Schwert spontan nach Imps, Ghouls und Skelettkriegern umsehen muss, der wird diesem kleinen Retro-Artikel nicht ganz abgeneigt sein. Vor 20 Jahren veröffentlichte das für heutige Verhältnisse noch recht kleine Entwicklerstudio Blizzard North das Spiel Diablo. Blizzard hat gerade rein zufällig vor wenigen Tagen sein 25-jähriges Firmenbestehen gefeiert. Das Studio das einst für Battle Chess, Rock & Roll Racing und The Lost Vikings gefeiert wurde und natürlich große Erfolgsserien wie Warcraft, Starcraft und Diablo hervorbrachte, landete mit dem Hack’n’Slay-Spiel 1996 einen weiteren Überraschungshit, der Blizzard nicht zuletzt einen Platz auf dem Olymp der Spieleindustrie sicherte. 1997 folgte für Diablo die Erweiterung Hellfire von dem unabhängigen Entwicklerstudio Synergistic Software, die dem Spiel eine kleine Nebenkampagne verabreichte.

Wer Diablo bis heute noch nicht gespielt hat, der wird jetzt auch nicht mehr damit anfangen wollen. Es ist ein Stück PC-Spielegeschichte, kein Meilenstein der Spieletechnik, aber ein Süchtigmacher mit packendem Gameplay. Die Grafik mit ihren 640×480 Bildpunkten und 256 Farben wirkt heute antik und vor allem klein. Zu jener Zeit waren Bürorechner mit 14- oder 15-Zoll-Monitoren aber noch der Stand der Dinge, Diablo entsprechend ein bildschirmfüllender Spaß. Ich erinnere mich noch gut an die Tests in den Spielezeitschriften und an die Fernsehbeiträge in PC-Sendungen. Die Demoversion bekam ich relativ früh in die Hände, damit konnte man immerhin das erste Stockwerk unterhalb der Kathedrale von Tristram spielen. Ganze 16 Stockwerke mussten in der Vollversion durchkämmt werden, ehe man dem dunklen Lord zum finalen Showdown gegenübertrat.

diablo1_2

Mangels Unterstützung für Windows 7 installierte ich Diablo mitsamt der Erweiterung Hellfire in einer virtuellen Maschine unter Windows XP. Zunächst nur um VirtualBox erneut auf seine Spieletauglichkeit hin zu testen, packte mich die Atmosphäre des Spiels relativ schnell wieder. Die virtualisierte Umgebung war tatsächlich schnell genug für anspruchsvolle 2D-Spiele. Ich begann zu rätseln, ob ich Diablo je selbst vollständig durchgespielt hatte. Auf LAN-Parties zwar schon desöfteren, aber im Einzelspielermodus vielleicht noch nie. Um sicherzugehen, beschloss ich, mich des Spiels erneut (vielleicht zum letzten Mal) anzunehmen. Diablo wurde somit das erste Spiel, das ich je virtualisiert durchgespielt hatte.

In meiner grenzenlosen Einfallslosigkeit wählte ich den Krieger als Charakterklasse, so wie schon immer. Mit Magiern und Bogenschützen kann ich zugegebenermaßen nicht umgehen, daher versuche ich es erst gar nicht. Einige selbstauferlegte Regeln sollten das Spiel für mich spannender machen: Es werden keine Ausrüstungsgegenstände gekauft, sondern nur das benutzt, was man findet. Alles was ich finde und nicht brauche, wird ins Dorf gebracht und zu Geld gemacht. Da es in Diablo noch keine Truhe für den Spieler gab, wurden Geldhäufchen und ungenutzte Gegenstände schon immer im Dorfzentrum auf den Boden geworfen. Diablo hat eine wunderbar persistente Welt: Jedes einzelne tote Monster, jeder noch so unbedeutende Gegenstand bleibt in gespeicherten Spielen immer exakt an seinem Platz liegen. Das in Diablo sehr beliebte Duping war für mich tabu. Stadtportale nehmen einem viele lange Fußwege ab, vor allem wenn man wieder vollbeladen mit Gegenständen ins Dorf musste um diese bei Deckard Cain zu identifizieren.

diablo1_3

So räumte ich nacheinander Stockwerk für Stockwerk auf, vertickte den ganzen Müll bei Griswold und Adria, und besiegte nebenbei so sympathische Gestalten wie den Butcher, den Skelettkönig Leoric, den Erzbischof Lazarus und natürlich Diablo höchstpersönlich. Das Spiel bleibt dabei erstaunlich lange sehr einfach. Erst ab Stockwerk 9 zieht der Schwierigkeitsgrad spürbar an. Gegnergruppen versucht man dann möglichst vorsichtig auszudünnen und immer genug Lebenstränke im Gürtel zu haben. Für den Krieger sind die Fernkämpfer das größte Problem: Sie greifen feige aus der Distanz an, und sobald man näherkommt, laufen sie davon. Teilweise laufen sie dem Spieler dabei minutenlang durch das halbe Level davon. Da man nicht rennen kann, zehrt das extrem an der Geduld, bis man sie mal in eine Ecke gedrängt hat. Dummerweise werden die Fernkämpfer zum Ende des Spiels immer zahlreicher, und die Stockwerke so zeitaufwändiger und nervtötender.

Als Diablo schließlich gefallen und die Endsequenz über den Bildschirm geflimmert war, wollte ich noch die Erweiterung Hellfire spielen, und so übernahm ich wie im Handbuch beschrieben meine Spielfigur (mittlerweile Level 25) in das Addon. Dummerweise fiel mir dann erst auf, dass man in Hellfire erneut die Hauptkampagne durchspielen musste. Hätte ich das vorher gewusst, hätte ich mir den ersten Durchlauf glatt gespart. Da die Ausrüstung nicht übernommen werden konnte, versuchte ich mich zunächst im Faustkampf gegen die Monster im Erweiterungs-Dungeon des „Defilers“, aber auch dort machten mir die Fernkämpfer schwer zu schaffen. Genervt entschloss ich mich, die Kathedrale ein weiteres Mal auf den Kopf zu stellen, was verständlicherweise keine große Herausforderung mehr war.

diablo1_4

An die vier Stockwerke im Monsternest und die vier Stockwerke in der Krypta unter dem Friedhof konnte ich mich überhaupt nicht erinnern, was dafür spricht, dass ich so weit nie gekommen bin. Auch auf dem Weg zum Defiler und zum Hellfire-Endgegner Na-Krul waren die wenigen Nahkämpfer kein Problem, die unzähligen Fernkämpfer dagegen sehr. Besonders die Liches und Arch Liches wurden mir auch mit Level 28 noch extrem gefährlich. Ich versuchte mein Glück in der Not diesmal ohne Schwert, sondern mit einem Bogen, und plötzlich war das Spiel wieder spielbar. Lediglich das ständige, hektische Wechseln der Waffen war nervenaufreibend. Womöglich sollte ich manchmal etwas früher über den Tellerrand schauen.

Es ist ein wenig schade, dass Blizzard aus Gründen der Gewinnmaximierung seit 1997 am laufenden Band nur noch Ableger von Warcraft, Starcraft und Diablo produziert. Als etablierter Spieleentwickler und Publisher kann man sich offenbar keine Risiken mehr erlauben. Die erste Ausnahme nach all der Zeit stellt Overwatch dar, auf das ich auch ein wenig gespannt bin. Diesen kleinen (abschließenden) Ausflug hin zu den Wurzeln der Diablo-Serie habe ich auf jeden Fall sehr genossen, und so auch zeigen können, dass VirtualBox zumindest in manchen Fällen absolut brauchbar ist, um alte Spiele wiederzubeleben. Es war ein großer Spaß, das alte Teil nochmal auszugraben, mich stundenlang in die Welt von Tristram zu begeben, und dabei Horden von Monstern totzuklicken, ständig auf der Suche nach einer besseren Waffe oder einem besseren Helm. Mal sehen, ob ich das irgendwann mit anderen Spieleklassikern fortführe.

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.

Eine wirklich wahre Geschichte, die für meinen Geschmack mal wieder ausreichend dumm ist, dass ich sie der Weltöffentlichkeit nicht vorenthalten möchte. „Amnesia – The Dark Descent“ gab es Mitte der Woche bei Steam geschenkt. Die DRM-freie-Version des Gruselspiels bei GOG wäre mir einhundert Mal lieber gewesen als die accountgebundene Steamschrott-Fassung. Aber einem geschenkten Gaul usw., ihr kennt das ja. Jedenfalls wurde die Aktion nur mäßig deutlich bekanntgemacht, außerdem war ich relativ viel beschäftigt, und natürlich galt die Aktion mal wieder nur für einen wirklich sehr knappen Zeitraum. Ich erfuhr erst am Mittwoch im Büro davon, nur ein paar Stunden bevor es zu spät gewesen wäre.

Erschrocken rechnete ich mir aus, dass ich nicht mehr rechtzeitig zuhause sein würde, da ich ausgerechnet am selben Abend einem Firmenevent beiwohnen würde. Ich wäre mindestens zwei Stunden zu spät dran. Das war mal wieder typisch für Steam, dass sie sich den denkbar ungünstigsten Zeitpunkt dafür aussuchen würden, nur um mir mal wieder eins reinzuwürgen. Aber ich hatte noch ein Ass im Ärmel: Ich kannte glücklicherweise meine Steam-Zugangsdaten auswendig. Also nur flott bei Steam eingeloggt, um mir das begehrte Spiel einzuheimsen, das dauert keine 30 Sekunden. Leider hatte mein geringes Glück mich schon nach den ersten paar Mausklicks wieder verlassen, denn den verdammten Steamguard hatte ich völlig vergessen. Der Browser mit dem ich mich einloggen wollte, war ihm höchst suspekt, ich müsste diesen erst über eine E-Mail verifizieren. Verdammte Scheiße, Steamguard, entspann‘ dich mal! Ich will doch nur das blöde Spiel in meinen Warenkorb legen!

So klickte ich wild herum, in der Hoffnung, dass ich mich doch noch irgendwie einloggen könnte. Ich versuchte sogar, das Spiel zu installieren ohne eingeloggt zu sein, aber ich wurde mehrmals zum selben Login-Bildschirm weitergeleitet, mit der immergleichen blöden Steamguard-Meldung, die mir den letzten Nerv raubte. Ich suchte verzweifelt den „Spiel meinem Account hinzufügen ohne mich einzuloggen“-Button, den es doch genau für solche Fälle geben musste, denn welcher Hacker würde mir denn bitte irgendwelche Spiele in meinen Account legen wollen. Meine Gehirnwindungen rotierten beim Versuch, mich an das Passwort für den bei Steam hinterlegten E-Mail-Account zu erinnern, doch da war nichts zu machen. Der Steamguard entschloss sich, mir das tolle Horrorspiel vorzuenthalten. Würde es tatsächlich so enden?

Schon bald spielte ich mit dem Gedanken, direkt nach Feierabend nachhause zu fahren, und mich für den Firmenevent entschuldigen zu lassen. Aber eigentlich wäre das ja schon irgendwie armselig, mich von einem Spiel für eine handvoll Euro so kontrollieren zu lassen. Andererseits hätte ich vielleicht schnell nachhause fahren, das Spiel kurzerhand in meinen Account klicken und danach direkt wieder ins Geschäft zurückkehren können. Zeitlich machbar, aber wenn ich die zusätzliche Fahrstrecke in Euro umrechnete, wäre das Gratisspiel am Ende gar keins mehr, also völlig sinnlos.

Ein letzter Notnagel fiel mir ein: Für den fraglichen E-Mail-Account kannte ich das Passwort nicht, aber ich hatte via Smartphone Zugang zu dem anderen E-Mail-Account, der beim erstgenannten E-Mail-Anbieter zur Sicherheit hinterlegt ist. Ich musste nun dort auf „Ich habe mein Passwort vergessen“ klicken, damit ich mit dem Smartphone dann die Passwortänderung freigeben konnte, damit ich mich wiederum beim ersten E-Mail-Account einloggen konnte, damit ich eine der zwei Dutzend Anfragen von Steamguard bestätigen konnte, damit ich mich bei Steam einloggen konnte, damit ich endlich das Spiel aktivieren konnte. Klingt voll scheiße. Ist auch so. Und das alles nur, weil Steamguard ein blödes Arschloch ist.

Ja, ich weiß, Steamguard lässt sich auf eigenes Risiko abschalten, wenn man denn möchte, dass einem die gesamte Steam-Library abhanden kommt. Aber das hat mir an dem Tag natürlich überhaupt nichts genützt, weil er da noch aktiviert war, und das lässt sich ohne Zugang nicht ändern. Für die Zukunft kann ich es mir dann mal überlegen. Jedenfalls hat die Geschichte diesmal ein Happy End, und das ist für mich bei Steam eher selten der Fall. Außerdem habe ich ein neues Passwort für meinen E-Mail-Account.

spacolaeclipse047

Gestern auf den Tag genau vor fünf Jahren tippte ich die ersten 50 Quellcodezeilen von etwas, das ein paar weiße Pixel auf einem schwarzen Hintergrund bewegte. Heute sind es ziemlich genau 28.500 Zeilen mehr, und es sind leider immer noch weiße Pixel auf schwarzem Hintergrund. So ein Pech aber auch. Nein, heute ist es ein Spiel, das einem originalgetreuen SPACOLA-Remake tatsächlich sehr nahe kommt. Originaltreue ist mir am wichtigsten. Ich verändere nur Details, die mir sinnvoll erscheinen und sich nicht vermeiden lassen. Jede zusätzliche Änderung, jedes weitere witzige Extra wird immer optional sein. Im Moment arbeite ich mich recht fleißig durch die vielen offenen Punkte, und darauf möchte ich in diesem Update-Artikel zu sprechen kommen.

Levelparser/Levelgenerator und Kampagnenmodus

Der Parser für die Levelkonfiguration mit dem Levelgenerator sind weitgehend fertig. Der Parser liest die Original-Levelskripte ein, teilt die Anweisungen im Skript in Tokens und Parameter ein und „interpretiert“ diese, indem er dem Levelgenerator Anweisungen gibt, wie das nächste Level aufgebaut werden muss. Das funktioniert schon perfekt für Level 1. Ab Level 2 aufwärts werden allerdings weitere Befehle eingeführt, die ich erst noch verstehen und vor allem einbauen muss. Damit ist der Kampagnenmodus jetzt theoretisch vorhanden und benutzbar, und wird auch mit jedem weiteren umgesetzten Befehl besser.

Spielen ohne Spacola Sternenatlas

Zwei Änderungen, die nötig sind um das Spiel ohne Buch sinnvoll spielen zu können, habe ich nun umgesetzt. Im Levelauswahl-Bildschirm kann man mit dem Mauszeiger über die Levels fahren und rechts im Statusfenster wird jetzt das darin befindliche erste Sektor-Powerup eingeblendet. Dieses musste man sonst aus dem Buch herauslesen. Ohne das Buch hätte man aber keine Möglichkeit mehr, diese an sich wichtige taktische Entscheidung noch zu treffen, darum hilft das Remake hier nach. Die zweite Änderung, die mir wichtiger ist: Wie soll der Spieler erfahren, wohin es die Waren auszuliefern gilt? Im Jahre 1991 hatte ich dazu das Buch mit der richtigen Seite aufgeschlagen an der oberen Kante unter die Tastatur geklemmt, um die Tabelle immer sofort griffbereit zu haben. Mit dem Finger konnte ich so Zeile und Spalte entlangfahren und schon ging es los. Ohne das Buch muss ich den Zielsektor logischerweise direkt rechts einblenden, was auch der Fall ist. Aber um die Sache spannender zu gestalten, experimentiere ich im Moment damit, dem Spieler den Zielsektor nur zeitverzögert zu verraten, so dass man sich erst noch ein paar Sekunden alleine mit der Spielwelt befassen muss, ehe man sich auf die Reise macht. Derzeit sieht es so aus, dass rechts in der Leiste eine Art „Dekodierung“ angezeigt wird, die nacheinander die X- und Y-Koordinate „entschlüsselt“. Das wäre meine Idee, wie man diesen Aspekt sci-fi-mäßig ohne Buch umsetzen könnte, ohne es noch simpler zu machen.

Alle Powerups fertig

Das „Kantinenruf“-Powerup wurde kürzlich von mir implementiert, und auch das Abfeuern von Lenkraketen funktioniert jetzt einwandfrei. Es sieht sogar schon recht witzig aus, wie die kleinen Lenkraketen zielsicher die Gegnerschiffe verfolgen und alles explodiert. Inzwischen kann ich also stolz vermelden: Alle 12 Original-Powerups sind funktional! Mit der Taste F12 kann man im Spiel neuerdings jederzeit Screenshots abspeichern lassen. War nicht wichtig, aber kam mir irgendwie selbstverständlich vor, dass der Client sowas können sollte. Außerdem merkt der Client sich jetzt endlich alle Einstellungen, die der Spieler vornimmt. So werden etwa Grafikeinstellungen in eine CFG-Datei persistiert und beim Programmstart geladen. Im Cheatmenü gibt es ein neues Untermenü für alle verfügbaren Powerups, die man hier einzeln anwählen kann. Das macht das Testen etwas einfacher.

Richtungspfeil und Testversions-Hinweise

Einen weiteren Cheat habe ich diese Woche verwirklicht: Einen Richtungspfeil am Bildschirmrand ähnlich wie in GTA, der immer den kürzesten Weg zu einem frei wählbaren Spielobjekt anzeigt, also z.B. die Zielstation. Sobald das Objekt sich dann mal tatsächlich auf dem Bildschirm befindet, zeigt der Pfeil auch direkt darauf. Dieser Pfeil wird in der klassischen Kampagne natürlich nicht enthalten sein, da er das Spiel zu sehr vereinfacht, aber ich fand es gut, dass ich sowas mal verfügbar habe für alle Fälle. Analog zu den Spezialhinweisen in der TOS-Demo von SPACOLA habe ich (pixelgenau positioniert versteht sich) auch in mein Remake einige Hinweise bezüglich seiner Unvollständigkeit hinterlegt. Das könnte man als erste Vorbereitung für einen öffentlichen Beta-Release werten, der definitiv in nächster Zeit nötig sein wird, wenn die Entwicklung in diesem Tempo weitergeht.

Präzise Messungen beim Schießverhalten

Das Schießverhalten des Spielerschiffes ist nun sehr viel näher am Original. Durch witzige Messmethoden habe ich versucht, herzuleiten, welche Parameter im Original verwendet werden. Hierzu muss ich Screenshots des Originals anfertigen, und dann die Distanz in Pixeln messen, die die abgefeuerten Schüsse in einer zuvor gezählten Anzahl an Frames zurückgelegt haben. Bei den 72 Hertz, die der Atari ST darstellt (wobei SPACOLA im Gegensatz zu OXYD nur jedes zweite Bild zeichnet, also eigentlich 36 fps), kann ich dann eine Umrechnung in Pixel pro Zeiteinheit als Schussgeschwindigkeit vornehmen, die ich im Remake wiederum verwende, um sie auf die gewählte Zielframerate aufzuteilen. Auch die Schussfrequenz bei Dauerfeuer konnte ich so mit Hilfe von Screenshots messen. Wenn beim Messen dann mal keine ganz krumme Zahl herauskam, wusste ich, dass ich auf der richtigen Spur bin. Die Herumrechnerei führt dazu, dass im Remake endlich deutlich authentischere Werte verwendet werden. Hierbei ist mir auch aufgefallen, dass das Weitschuss-Powerup anders als im Handbuch behauptet, die Schussgeschwindigkeit nicht erhöht, sondern die Kugeln nur weiter fliegen lässt.

Grafikbearbeitung abgeschlossen

In den vergangenen zwei Monaten habe ich die Original-Designvorlagen von SPACOLA wirklich ausgiebig analysiert, in stunden- und tagelanger Fleißarbeit ausgeschnitten, mit meinen eigenen Dateien etwa bezüglich Transparenz, Rotation und Reihenfolge verglichen und dadurch unzählige kleine und große Korrekturen an hunderten von Sprites vornehmen können. Dieser Prozess ist jetzt zu 99,9% abgeschlossen, und damit fallen die teilweise recht lästigen Pixeldoktoreien mit GIMP weg, und ich kann mich endlich vollkommen auf den Code konzentrieren. Mann, das wird ein Spaß. Aber der schwierigste und wichtigste Teil von allen kommt ja erst noch: Die Gegner-Intelligenz so wie im Original hinbekommen.