Schlagwort-Archive: Swing

spacolaeclipse045

Wo ich gerade schon bei Spielen mit der Grafik noch aus der Zeit der Weimarer Republik bin, spreche ich am besten direkt das nächste passende Thema an: Spiele mit Grafik aus der Steinzeit. Es folgt ein diesmal etwas längerer Artikel über den aktuellen Entwicklungsfortschritt meines Hobby-Dongleware-Remake-Projekts SPACOLA Eclipse. Es gibt viel zu berichten, weil ich in letzter Zeit viel daran gearbeitet habe. Die neueste Work-in-progress-Version vom Juni 2015 führt einige neue Gameplay-Features ein, allerdings auch viele tolle Neuerungen unter der Haube, die das Arbeiten an dem Projekt endlich deutlich interessanter machen, was wohl auch der Grund für meinen unerwarteten Eifer ist.

Mehrspieler-Modus

Ich habe in letzter Zeit die Serialisierbarkeit der meisten Spielobjekte überarbeitet und damit angefangen, den Mehrspieler-Modus zumindest grundsätzlich mit Leben zu füllen. Nachdem man bislang den Server lediglich vorbereiten, und sich als Client nur theoretisch registrieren lassen konnte, startet nun in der neuen Version tatsächlich ein Spiel, sobald die Mindestanzahl der Teilnehmer erreicht ist. Als nächsten Schritt sorgte ich dafür, dass die Spieler-Objekte untereinander ausgetauscht und dargestellt werden können. Die Mitspieler werden sich jetzt zwar auf dem Bildschirm gegenseitig sehen, aber davon abgesehen wird noch nichts synchronisiert, jeder spielt ein völlig eigenständiges Spiel. Mein Ziel war damit bereits erreicht, denn es ging mir vorerst um das Programmgebilde außenrum. Als nächstes wäre eine Lobby nötig, damit man einen Spielmodus und das Level auswählen, sich absprechen, und die Teilnehmerzahl festlegen kann.

Aktives Rendern, höhere Auflösungen, Vollbildmodus

Es war eine kleine und interessante Herausforderung, als ich damals mein eigenes Double-Buffering schrieb für das Zeichnen von 50 Bildern pro Sekunde ins Fenster, aber wenn ich ehrlich bin, war das eine rein autodidaktische Mission und überhaupt nicht nötig. Double-Buffering gehört zur Standardausstattung von Swing. Für meine Verhältnisse war meine Methode lange Zeit absolut ausreichend, aber für höhere Auflösungen leider unbrauchbar langsam. Inzwischen habe ich die 2D-Grafikengine von SPACOLA Eclipse auf aktives Rendern umgestellt, das den ausbremsenden Swing-Overhead umgeht und das Zeichnen des Fensters selbst steuert. Der Unterschied in der Performance ist beeindruckend. Als Bonus habe ich Echtzeit-Skalierung eingebaut, die das Bild stufenlos vergrößert, sogar mit Interpolation. Inzwischen läuft SPACOLA Eclipse in 1280×800 Pixeln, und das absolut ruckelfrei und noch dazu viel responsiver was die Mauseingaben angeht. Ach stimmt, einen exklusiven Vollbildmodus gibt es jetzt auch, den man wahlweise ganz normal mit ALT+Enter oder F8 umschaltet. Die Menüleiste ist mit dem Vollbildmodus noch nicht so ganz einverstanden, aber daran arbeite ich noch.

Farbsprites

Die ersten Vorbereitungen für den Farbmodus sind endlich getroffen. Meinen ganzen alten Monochrom-only-Code habe ich durch pseudomonochrome Grafikobjekte ersetzt, die zur Farbdarstellung in der Lage sind. Ein erster Test mit ins Spiel eingebauten Farbsprites verlief erfolgreich, der Rest ist also nur noch eine Sache von wochenlanger Kolorierung in Fleißarbeit und Search & Replace. Angefangen habe ich damit bereits teilweise. Außerdem gelang es mir, die ersten Farbsprites, die von Meinolf Amekudzi im Jahr 1993 für eine nie in Entwicklung gegangene SPACOLA-Farbversion angefertigt wurden, endlich richtig auszulesen. Die Grafiken sehen wirklich sehr spannend aus. Es müsste mir also möglich sein, diese Designs bald zu komplettieren, und einen Farbmodus ins Remake einzubauen.

Neue Gegner-KI

Die alte provisorische Gegner-KI ist bald Geschichte. Bislang war das Flugverhalten der Dummy-Gegner doch sehr merkwürdig, da sie im Weltraum Haken schlagen konnten und auch nur endlos dem Spieler folgten. Längst gelang es mir, das Flugverhalten deutlich realistischer zu machen. So müssen die Gegner jetzt genau wie der Spieler genügend Gegenschub liefern, damit sie ihre Richtung anpassen können. Endlich driften die kleinen Piratenschiffe halbwegs glaubwürdig über das Pixelbild, verfehlen auch mal das Ziel, und müssen dann ständig wieder den Kurs korrigieren. Darüber hinaus machen die Piraten zum ersten Mal das, was sie eigentlich sollten: Sie knöpfen dem Spieler seine Waren ab oder suchen freischwebende Waren, und fliegen damit zur feindlichen Station, um sie unter Gelächter dort abzugeben. Das klappt wirklich erstaunlich gut, ist nur leider noch nicht so ganz am Original dran. Und wenn die Gegner mal gut gelaunt sind, dann fliegen sie schiffbrüchigen Kameraden hinterher und retten diese.

Rettungskapseln, neue Powerups

Es gibt im Original Gegnerschiffe, die bei ihrem Abschuss mehrere Rettungskapseln freigeben. Diese öffnen sich dann wiederum in ausreichendem Abstand zum Spieler von selbst und geben die üblichen hilferufenden kleinen Männchen frei. Die Rettungskapseln sind jetzt auch im Remake enthalten. Bei den Powerups sind immerhin eineinhalb dazu gekommen: Der Molekularduplikator, der soweit ich es erkennen kann in genau einem von 64 Levels vorkommt, funktioniert jetzt perfekt. Beim Raketen-Powerup habe ich immerhin das Einladen mal fertiggestellt. Das Abfeuern derselben fehlt noch.

Der Quellcode umfasst jetzt mehr als 24.000 Zeilen und wurde von mir in den vergangenen Wochen ausgiebig gepflegt und verbessert. Einige verschluckte Exceptions beim Soundplayer habe ich so aufgespürt, was sich vermutlich auch auf die Performance ausgewirkt hat. Das Logging habe ich deutlich erweitert und auch hier einige Fehler behoben, die mir vorher nie aufgefallen waren. Insgesamt ist das Projekt spürbar aufgeräumter und ausgereifter geworden, so dass die faulen Phasen hoffentlich der Vergangenheit angehören dürften. Inzwischen ergibt selbst ein richtiges Optionsmenü Sinn, in dem man Grafikmodus und Audiotreiber und diverse andere Technikaspekte einstellen könnte. Das nächste große Thema ist ein funktionierender Kampagnenmodus mit wechselnden Levelkonfigurationen. Das Ding habe ich jetzt lange genug vor mir hergeschoben.

spacolaalpha039

Uff, ganz schön staubig hier auf meiner Webseite. In drei Wochen keinen einzigen Beitrag geschrieben, nicht einmal einen ganz kleinen. Und wer hat Schuld? Die Politik selbstverständlich! Solange in Deutschland der Konsens ist, dass 55 Stunden als Wochenende ausreichen, werde ich immer an Zeitnot leiden. Ich finde, zwischen Freitag und Samstag und zwischen Samstag und Sonntag müsste jeweils ein Entkaterungstag eingefügt werden, denn sonst verbringt man mitunter das halbe Wochenende ungenutzt mit einem Eimer neben dem Bett und hofft, dass sich das Zimmer endlich aufhört zu drehen.

Ich weiß, ich müsste viel mehr daran arbeiten, praktisch den ganzen November habe ich es komplett ruhen lassen. Es gibt endlich wieder Neuigkeiten von meinem kleinen Spaßprojekt SPACOLA Eclipse: Ein paar Stunden meines Wochenendes hat es gekostet, und mit Version 0.39 wird das Spiel endlich multilingual. Nun hat man im Menü die Wahl zwischen Deutsch und Englisch, und die Sprache lässt sich (fast) jederzeit ändern. Die Ingame-Texte werden dabei ausgetauscht und sogar die Swing-GUI ändert sämtliche ihrer Beschriftungen ganz fix per Mausklick. Damit habe ich doch tatsächlich einen der ersten Feature Requests von zwei nicht-deutschsprachigen Dongleware-Fans erfüllt, die die Originaltexte leider kaum verstehen können und sich zumindest eine englische Version gewünscht hatten.

Nun ist es dank vieler kleiner und einiger großer Änderungen sehr leicht möglich, mit einem einfachen Texteditor zusätzliche weitere Übersetzungen für das Spiel zu schreiben, vorausgesetzt jedoch, sie kommen mit dem lateinischen Alphabet aus oder können in dieses überführt werden. Der Dongleware- sowie der GEM-Font, der in meinem Remake verwendet wird, kennt leider nur diese Zeichen. Viele weitere Stunden Pixelei in GIMP wären nötig, um weitere Buchstaben hinzuzufügen, was ich mir vorerst sparen möchte. Wer will, darf sich diese Arbeit natürlich gerne auch selbst machen. Freiwillige vor, die Rohmaterialien zum Basteln gibts auf Anfrage.

Es gibt jetzt ein kleines „Module“-Menü, in dem man vorerst nur den GEM-Texteditor starten kann. Dieser wird neuerdings in der Spiel-Engine ausgeführt und muss nicht mehr umständlich per Debug-Einstellung gestartet werden. Damit lassen sich später einmal zusätzliche Module wie einen Leveleditor, eine Gesamt-Levelkarte oder einen Skript-Editor während des Spiels aufrufen um in Echtzeit Änderungen vorzunehmen. Auch für den geplanten Multiplayer-Modus böte sich hier Platz für interessante Extras.

Wird bald eine downloadbare Testversion veröffentlicht? Noch nicht. Nur Geduld. Leider kann ich hier keinen „Early Access“ anbieten, wie das bei Indie-Spielen ja neuerdings üblich ist, außer jemand bezahlt mich fürs Entwickeln. Oder möchte doch jemand spenden? Bevor es zum ersten Beta-Release kommt, will ich noch den LevelConfig-Parser und den Levelgenerator fertigstellen, die die Originalkonfiguration der Atari ST-Vorlage einlesen und interpretieren können. Wenn das mal steht, werden die Levels endlich nicht mehr vollständig per Zufallsgenerator erstellt, sondern nach den Bauplänen der 64 Ur-Levels. Im Moment bin ich bei knapp 17000 Zeilen bzw. 810 Kbyte Quellcode angelangt, verteilt auf 143 Klassen.

In den kommenden Tagen wird es eine neue Video-Preview geben, die den aktuellen Entwicklungsstand demonstriert. In diesem werde ich auch die vielen kleinen Gameplay-Änderungen zeigen, die ich hier nicht extra erwähnt habe. Der Weihnachtsurlaub ist nicht mehr weit, dann kann ich mich mal wieder mehr um das ganze Thema kümmern.