Schlagwort-Archiv: Spiel

enigmalogoVoller Freude präsentiere ich mal wieder einen kleinen News-Beitrag auf meinem Blog, der sich meiner Headergrafik als würdig erweist und sie ausnahmsweise nicht gar so deplatziert wirken lässt: Fast sechs Jahre hat es gedauert, nun können OXYD-Fans endlich aufatmen, denn Enigma ist wieder da, in der neuen Version 1.20.

Enigma ist ein hervorragendes und einzigartiges Esprit-, OXYD-, OXYD2-, Oxyd Magnum-, Sokoban-, usw. -Kombi-Remake, das so viele großartige Kistenverschiebe-, Puzzle-, Denk- und Geschicklichkeitsspiele vereint, wie man sich kaum vorstellen kann. Alleine als Atarianer wird man unendlich viel Freude daran haben, weil es sich spielt wie die alten Dongleware-Meisterwerke. Der Suchtfaktor ist auch heute noch enorm. Wenn ich durch meinen exzessiven OXYD-Konsum in Kindheitstagen nicht längst immunisiert wäre, würde ich dem Charme von Enigma wahrscheinlich Tag und Nacht erliegen. In der Hinsicht verhält sich das bei mir vielleicht ein bisschen wie mit Obelix und dem Zaubertrank.

enigma120Da sich die neueste Version nun wirklich sehr lange Zeit gelassen hat, gibt es tatsächlich eine ganze Stange an Änderungen, darunter beinahe 1500 neue Levels für alle möglichen Spielarten. Auch einige bekannte Dongleware-Levels sind neu hinzugekommen, wie man schon am Screenshot erkennen kann. Darüber habe ich mich persönlich am meisten gefreut. Außerdem gibt es einige neue Musikstücke, neuerdings sogar im laufenden Spiel wenn man das möchte. Viele neue Steine und Spielobjekte wurden implementiert, es gibt viele grafische Verbesserungen, und eine komplett neue API, wobei letzteres wohl nur den Entwicklern und Leveldesignern auffallen wird.

Die neuen Download-Pakete kann man ab sofort auf der Enigma-Webseite herunterladen. Mac-Benutzer müssen sich leider noch ein wenig gedulden, für den Anfang gibt es nur Windows-Binaries und den Quelltext zum selbst kompilieren. An dieser Stelle nochmals der Hinweis darauf, dass Enigma auf Grund der Reverse-Engineering-Leistung hinter der sogenannten „Oxydlib“ die alten Dateiformate der Ur-OXYDs laden und interpretieren kann, genauer gesagt die Original-Sounds und die Landschaftsdaten, so dass sich schnell ein noch wesentlich authentischeres Spielerlebnis für Fans einstellt. Die importierten Landschaften der Originale funktionieren aber nur eingeschränkt, da auch nach all den Jahren noch längst nicht alle Spielelemente im Remake umgesetzt sind.

Das erste Update im neuen Jahr zum aktuellen Entwicklungsfortschritt meiner SPACOLA-Neuimplementation. Im Moment habe ich einen guten Lauf und kann fast täglich immer mal wieder ein bisschen an meinem kleinen Spielewerk arbeiten. Das muss genutzt werden, solange es noch anhält, denn so wie ich mich kenne, wird das nämlich die letzte Meldung in der kommenden Zeit sein. Die neueste WIP-Version enthält rund 50 Änderungen. Eigentlich hätten es noch einige mehr sein müssen, denn meine ToDo-Liste quillt inzwischen über, doch letzten Endes muss man irgendwann mal einen Cut machen. Hier also das Ergebnis der letzten Tage in visueller Form:

spacolaeclipse022

Richtig erkannt. Das HUD auf der rechten Seite ist komplett fertig und dort gibt es so einige Informationen abzulesen. Soweit möglich, habe ich alles wie im Original beibehalten. Was rausgeflogen ist, ist die Angabe zur Buchseite, der Galaxie und des Sonnensystems, denn diese Angaben werden künftig nicht mehr nötig sein. Dafür ist eine neue Anzeige hinzugekommen, die dem Spieler den Weg weist. Also genau das, was er vorher aus dem Buch ablesen musste. Entsprechend habe ich mir die Freiheit genommen, die Symbole in der Anzeige etwas anzupassen, um diesen Umstand hervorzuheben.

Eine weitere große Baustelle ist somit endlich abgeschlossen. Ein wichtiger Stützpfeiler des Original-Spielegrundgerüsts ist in langwieriger Handarbeit aufgestellt worden. Man fühlt sich manchmal wie eine Art Restaurateur für antike Uhren oder sowas. Pixel für Pixel muss das Original fein säuberlich zerlegt und untersucht und dann im Remake detailgetreu nachgebildet werden. Am Gameplay hat sich freilich wieder einmal wenig getan, denn darum werde ich mich wahrscheinlich erst kümmern, wenn alle übrigen Grundfunktionen von SPACOLA übertragen sind.

Außerdem hinzugekommen ist ein deutlich umfangreicheres und besseres Logging mit Logdatei, es gibt Statusmeldungen (z.B. für Schilde, Highscore und die diversen Geschwindigkeitslevels), es gibt Punkte für zerstörte Gegner sowie einen richtigen Punktestand. Entsprechend habe ich die Fake-Highscore-Liste durch eine richtige Highscore ersetzt, die nun dynamisch im Spiel generiert und verändert werden kann. Die Introschleife arbeitet nun korrekt und exakt so wie im Original. Zuvor wurde das Intro einfach immer wieder von vorne abgespielt. Es gibt jetzt Events, z.B. Extraleben, neuer Highscore, oder die Shield-Shutdown-Warnung. Zuletzt habe ich den Algorithmus für den Wurmloch-Effekt (Level-Intro), den ich mir damals selbst ausgedacht habe, durch einen mathematisch „korrekteren“ Algorithmus ersetzt, der auch viel einfacher funktioniert (Stichwort: logarithmische Spirale). Thank you internets!

58 Klassendateien, 9 Pakete, über 6100 Nettocodezeilen (SLOC), 574 Funktionen, 146 Bilddateien, 24 Audiodateien, zusammengepackt in ein 4,0 MB Archiv. So langsam nimmt das kleine Spaßprojekt, das ich angefangen habe ohne zu wissen, ob ich morgen überhaupt noch darauf Lust habe, fast schon Ausmaße an, die einen Rückzieher unmöglich machen. Es wäre inzwischen irgendwie zu schade, wenn ich das Projekt nun nicht zuende führen würde. Was als ödes Fenster mit einem Sprite in der Mitte und ein paar Pixelsternen außenrum begonnen hat, hat sich zu etwas entwickelt, was sich schon ein bisschen wie SPACOLA auf dem Atari ST spielt.

Es lebt! Spacola Eclipse ist zwar noch lange nicht fertig, aber ich habe den ersten Meilenstein erreicht: Der erste Gegnertyp fliegt im Spiel herum und man kann schon jede Menge Zeug kaputtballern. Die Gegner können sich zwar noch nicht richtig wehren, aber immerhin nerven sie schon gewaltig. Zur Feier der neuen WIP-Version 0.21 gibt es heute die ersten Preview-Videos, also vollständig bewegte Eindrücke des Spiels. Ich habe endlich eine Desktop-Capture-Software gefunden, die nicht nutzloser Shareware-Müll ist und sogar halbwegs flüssige Bewegungen UND Sound aufnehmen kann.

Das erste Video zeigt das Gameplay des Remakes. Das Intro wird hierzu natürlich abgebrochen. Die schlechte Bildqualität und die ruckelige Grafik bitte ich zu entschuldigen. Das Capture-Programm ist zwar gut, aber leider trotzdem nicht optimal. Der stark verlustbehaftete YouTube-Codec tut dann sein übriges. Das Spiel läuft vollständig flüssig bei (künstlich limitierten) 52 fps und verbraucht nur sehr wenige Ressourcen.

Das zweite Video ist nun naturgemäß nicht so spannend. Es soll im Grunde eigentlich nur zeigen, wie genau ich das Original-Intro in meinem Remake imitiert habe, da ich alles, so weit es mir möglich ist, pixelidentisch halten will. Das Spiel im Demo-Modus würde dann also bisher folgendermaßen aussehen:

Für Späteinsteiger: Spacola Eclipse ist mein kleines Java-Remake (bzw. im Moment eher: Re-Implementation) des Atari ST-Spiels SPACOLA, das 1991 von Dongleware veröffentlicht wurde. Das Ziel ist eine (zunächst) möglichst exakte Nachbildung des Originals für viele moderne Platformen (Windows, Mac OS, Linux, iOS, Android) und in zweiter Instanz die Erweiterung des Spiels um bessere Grafiken, neue Sounds, einen Mehrspielermodus und neue sinnvolle Features.

Die ganze Welt bestaunt gerade die Wii U von Nintendo, und mich interessiert es nicht die Bohne. Dafür habe ich zum Thema Nintendo etwas anderes im Sinn.

Heute lieferte der Paketbote ein ganz wunderbares vorgezogenes Weihnachtsgeschenk bei mir ab. Schon seit Jahren spiele ich mit dem Gedanken, mir einen Super Nintendo-Controller zuzulegen, der über ein USB-Kabel verfügt, so dass man ihn an den PC anschließen und damit alte Spiele im Emulator spielen kann. Die Tastatur hat zwar den Vorteil, dass (entsprechende Übung und eine Vorliebe für spartanische Ergonomie vorausgesetzt) sie konkurrenzlos präzise ist (und natürlich an jedem PC eine dranhängt), aber ein authentisches Spielgefühl kommt damit ganz sicher nicht auf.

Für den Anfang kaufte ich mir daher zunächst einen dieser 50-Tasten-10-Achsen-Superduper-PS3-/PC-Controller mit zwei Nippeln. Pardon, Analogsticks. Eigentlich ist mir das Ding definitiv zu klobig, aber es gab eben nur noch solche Teile. Es stellte sich heraus, dass dessen D-Pad eine absolute Katastrophe ist. Man trifft keine Richtung genau, wenn man nach rechts drückt, bewegt sich die Spielfigur manchmal auch nach unten oder oben, und das bedeutet in vielen Spielen den sicheren Tod, wenn jeder Sprung sitzen muss. Ich versuchte also mein Glück mit dem Analogstick. Der ist zwar etwas präziser (wobei analog eben auch bedeutet, dass man trotzdem regelmäßig daneben tippt), kann aber durch seinen gewaltigen Bewegungsspielraum z.B. bei Jump’n’Runs schnell ermüdend sein, weil der Ausschlag in die entsprechende Richtung nur voll oder gar nicht gezählt wird. Das war also auch nicht die Lösung.

Um meine Idee wahr werden zu lassen, hatte ich nun mehrere Möglichkeiten: einen gebrauchten SNES-Controller ersteigern und mittels USB-Adapter anschließen? Die gebrauchten Controller, die man so bekommt, habe ich mir mal stichprobenartig angesehen. Wer kein Problem mit starken Abnutzungserscheinungen hat, oder dass die Geräte teilweise mit Isolierband zusammengehalten werden, der darf gerne für 10 Euro aufwärts zugreifen. Ich hatte plötzlich weniger Bedarf an derlei Überraschungsware. Die zweite Möglichkeit erschien mir schon sympathischer: Ich wollte mir eines der zahlreichen Replikate der Nintendo-Controller als Neuware kaufen, die wahlweise bereits mit USB-Anschluss gebaut werden. Tatsächlich findet man bei Amazon und bei Ebay einige tolle Geräte, die dem Original mal mehr und mal weniger perfekt nachempfunden sind.

Als ich die Bewertungen und Kommentare der Käufer über besagte Produkte allerdings so las, da war ich mir auf einmal gar nicht mehr sicher, ob das eine gute Idee ist: Da ist von billigstem Plastik die Rede, von eingeklemmten Knöpfen, die oft gar nicht reagieren, von L- und R-Buttons, die sich anfühlten als würden sie gleich herausbrechen. Insgesamt war es meistens die schlechte Verarbeitung, sowie die extreme Ungenauigkeit, die ein Spielen angeblich unmöglich machten, und eben die Buttons, die nicht richtig funktionierten, was da so an den Controllern bemängelt wurde. Jedenfalls zuviele miese Bewertungen um noch als Zufall durchzugehen.

Ich wagte den Kauf trotzdem – und ich bestellte sogar gleich zwei davon. Für 14 Euro pro Stück wäre meine Enttäuschung ohnehin nicht so groß, wenn die Teile wirklich so unbrauchbar sein sollten. Und was soll ich heute sagen? Es hat sich gelohnt, die Pads sind der Hammer! Zum Testen habe ich gerade mal ohne Schwierigkeiten bis zum zweiten Level von Super Castlevania IV und bis zur ersten Burg in Super Mario World gespielt. Das Plastik kommt mir nicht billiger vor als beim Original, die unpräzise Steuerung ist eigentlich sogar erstaunlich präzise, die Buttons reagieren allesamt perfekt, auch L und R, Start und Select. Das Pad liegt gut in der Hand (da praktisch identisch zum SNES-Controller) und man fühlt sich auf einen Schlag um 20 Jahre jünger, wenn man Super Mario damit zielsicher auf Goombas und Koopas hüpfen lässt.

Der einzige tatsächlich „spürbare“ Nachteil ist das etwas feste D-Pad, das ich so steif nicht in Erinnerung habe. Es reagiert wunderbar und man trifft fast immer auf Anhieb die richtige Richtung, aber der Widerstand des D-Pads ist gerade am Anfang ungewohnt stark. Nach einer halben Stunde fällt es einem aber schon nicht mehr auf. Alles bestens. Auch das zweite Pad funktioniert einwandfrei (bemängelt wurde auch, dass einzelne Geräte komplett den Dienst verweigerten), weswegen ich davon ausgehe, dass ich entweder Glück hatte, oder dass meine Wahl für dieses Modell genau die richtige war. Interessierten Retrofans kann ich daher guten Gewissens den SNES Classic Controller von Retrolink empfehlen. Es ist bestimmt kein perfekter Controller für Spiele, aber es ist ein perfektes Imitat eines SNES-Controllers und genau das wollte ich. Mit dem Retrolink-Logo auf dem Pad hat diese Kopie sogar irgendwie etwas sehr Cooles.

Ein wenig wundern lässt mich die Tatsache, dass die SNES-Controller von Retrolink eigentlich immer die amerikanischen Button-Farben haben (lila), in meinem Fall habe ich aber Replikate der europäischen Controller mit den bekannten Buttons in vier Farben. Das muss wohl irgendeine Spezialversion für den europäischen Markt sein, über die ich im Netz nichts in Erfahrung bringen konnte. Wenn die Dinger ne Weile halten, dann muss ich mir am Ende noch überlegen, ob ich mir auch die entsprechende NES-Version kaufe.

So viel zu tun, so wenig Zeit. Irgendwie finde ich es traurig, dass ich im Prinzip zu überhaupt nichts mehr komme, wenn ich nicht manchmal einfach ein Stoppschild aufstelle (und Leute enttäusche). Die Wochenenden sind bereits komplett verplant, bevor sie überhaupt angefangen haben, und unter der Woche geht ja sowieso nichts, wenn man erst um 21 Uhr sein täglich zu absolvierendes Alltagsprogramm abgespult hat. Aber genug Geheule für heute. Der nächste Urlaub kommt bestimmt.

Trotz allem ist es mir ein großes Vergnügen, die neuesten Fortschritte bei meinem kleinen Feierabend-Hobby-Projekt vorzustellen: Mein Dongleware-Remake Spacola Eclipse ist jetzt praktisch „spielbar“ in der Version 0.19. Das letzte Mal als ich nennenswert am Code arbeitete, war Anfang Juli. Vor einer Woche packte es mich dann endlich wieder, als ich mich der alten Sound-Problematik annahm. Nach langem Herumgebastele und mit der Unterstützung eines Indie-Spieleentwicklers konnte ich es zu meiner Zufriedenheit hinbiegen. Es geht tatsächlich, allerdings muss man sich um das Abspielen selbst kümmern. Der Sound funktioniert seitdem besser denn je und es sind viele Ingame-Samples dazugekommen. Dadurch hatte ich die nötige Motivation um auch andere Dinge anzupacken.

Im Anschluss schrieb ich lässig den Code für die Asteroiden und die Kollisionserkennung runter. Asteroiden kann man nun zerstören und mit dem Schiff an ihnen abprallen. Zugegeben, die Mathematik hinter dem „Abprall“-Effekt von Asteroiden, die wollte ich mir nicht mit dicken Mathebüchern herleiten. Da geht es um Drehung von Koordinatensystemen, damit man eine eindimensionale Kollision berechnen kann und den Abprallwinkel und die Abprallgeschwindigkeit beider Objekte bekommt. Gruseliges Zeug wenn man schnell fertig werden will. Für die Methode ließ ich mich bei anderen intelligenten Programmierern inspirieren. Es funktioniert noch nicht perfekt, aber immerhin.

In der Folge kamen weitere Powerups hinzu, so z.B. alle Schuss-Powerups und die Extraleben. An Stationen kann man jetzt andocken, so dass man entweder wüst beschimpft wird, oder das Sonnensystem vom Spiel als erfolgreich abgeschlossen beendet wird. Ja genau, endlich kann man im Spiel vorankommen und die Levels zumindest gewinnen. So kann man nach und nach alle Sonnensysteme auf der Übersichtskarte abhaken. Verlieren kann man bisher noch nicht, da das Sterben noch nicht implementiert ist und es weiterhin noch keine Gegner gibt (kommt, kommt!). Die Sektoren sind bisher alle zufallsgeneriert, was leider nicht ganz richtig ist, da das Original-Spacola hier gewisse Konfigurationen kennt, die in die Levelgenerierung mit einfließen. Auch der Zielsektor ist fest nach einem bestimmten Schema berechnet und nicht komplett dem Zufall überlassen. Für den Moment muss es aber so gehen.

Die Preis-, Fahndungs- und Bonuslisten sind fast fertig. Die Preise stimmen alle und die Screens sind alle eingebaut, aber bisher sind eben nur die Sprites für die Lieferartikel eingebunden – die Sprites für Gegner und andere Hindernisse fehlen noch. Ebenfalls fehlen die animierten Sprites für das Beschleunigen des eigenen Raumschiffs. Zur Vereinfachung habe ich stattdessen zwei Partikelstrahler-Objekte bei den Triebwerken platziert, die beim Beschleunigen Pixelpartikel emittieren. Sieht eigentlich sehr viel besser aus als im Original, aber es bleibt am Ende natürlich nicht so. Vermutlich lasse ich diesen Effekt für spätere Versionen drin.