Spacola

header_mit_rand_2_september_2015

SPACOLA Eclipse ist ein 2D-Weltraum-Ballerspiel mit 360° Bewegungsfreiheit und monochromer Pixelgrafik. Es handelt sich um ein originalgetreues Retro-Remake von SPACOLA, das 1991 von Dongleware für den Atari ST veröffentlicht wurde. Das Remake ist momentan noch in einem frühen Entwicklungsstadium und wird von mir vollständig in Java für moderne Betriebssysteme geschrieben. Da mir der Original-Quellcode leider nicht zur Verfügung steht, muss ich zwangsläufig alles vollständig aus der Beobachtung nachimplementieren. Meinolf Amekudzi, einer der beiden Programmierer des Originals, wurde insbesondere bekannt durch seine fantastischen Spielreihen Bolo und OXYD.

Diese Spiele zeichneten sich durch detailreiche, für damalige Verhältnisse hochauflösende Monochromgrafik aus, durch witzigen Sound, durch anfangs sehr simples, aber trotzdem schnell komplexer werdendes Gameplay. Bolo war ein Breakout-Klon. OXYD selbst war ein Murmelspiel, das Dongleware damit perfektioniert hatte. Spacola war dagegen ein Asteroids-Klon, allerdings deutlich aufwändiger, und mit wesentlich mehr lebendigen Gegnern als Asteroiden. Von Bolo gab es später noch einige Umsetzungen, unter anderem für den PC. Von OXYD gab es Umsetzungen, Fortsetzungen und Remakes für alle möglichen Systeme. Einzig SPACOLA war zum Sterben mit dem Atari ST verurteilt. Schade eigentlich, dabei hatte gerade dieses Spiel seinen ganz eigenen Charme, weil es ausnahmsweise kein Geschicklichkeits- oder Knobelspiel war, sondern viel nervenaufreibende Action bieten konnte.

Als intergalaktischer Handelsreisender beliefern Sie die irdischen Raumstationen in den Galaxien mit lebensnotwendigen Waren. Eigentlich ein langweiliger Job, wenn da nicht überall im Universum diese gierigen Piraten wären, die es auf Ihr teuer bezahltes Schmugglergut abgesehen haben. Da Sie aber daran interessiert sind, den Empfang Ihres Rentenbescheides noch zu erleben, setzen Sie sich mit äußerst wirkungsvollen Mitteln zur Wehr! Und da auf die Piraten ein Kopfgeld ausgesetzt ist, können Sie so manche Spacedollars mit dem Einsammeln schiffbrüchiger Besatzungen machen.

Test Test

Video Preview – Version 0.39

YouTube Preview Image

Features

  • Originalgetreue Monochrom-Grafik in 640 x 400 Pixeln
  • Spacige Titelmusik und 6-KHz-Sound wie beim ST-Original
  • Optionale Ingame-Musik
  • Kampagne mit 64 Levels
  • 27 verschiedene Gegner
  • 8 verschiedene Warentypen
  • 12 Original-Powerups
  • Intuitive Maussteuerung zum Drehen, Beschleunigen und Schießen
  • Animierter Radarschirm
  • Schiffbrüchige Piraten, Asteroiden, Fracht, Schwarze Löcher, Minen
  • HUD-Anzeige für Koordinaten und Punktezahl
  • Pixelbasiertes Partikelsystem für Schub und Explosionen
  • Komplettes Intro mit Titeln, Highscore, Kurzanleitung, Level-Ende-Screen
  • Menüleiste für die wichtigsten Funktionen, zusätzlich zum Hauptmenü
  • Multilingual, Deutsch und Englisch bereits integriert, problemlos erweiterbar
  • Lauffähig auf jedem Betriebssystem mit Java
  • Geringe Hardwareanforderungen

Weiterhin geplant

  • Originalgetreue Gegner-KI
  • HUD-Anzeige ausblendbar und Spielbildschirm im Vollbildmodus
  • Wechsel zwischen Classic-Modus, Enhanced-Modus (Farbe) und HD-Modus
  • Verschiedene Schwierigkeitsgrade
  • Multiplayer-Modus mit Duell- und Coop-Kampagne oder Schnellrunde
  • Spiel jederzeit Laden und Speichern
  • Farbversion auf Basis der Originalgrafik (koloriert)
  • HD-Version mit hochauflösenden, besseren Sprites
  • Einfach wechselbare Spritesets
  • Zusätzlich erweiterbar, z.B. andere Gegner, andere Fracht, andere Effekte

Entwicklungsfortschritt

  • Derzeitige Version: v0.54
  • Nächster Schritt: Originalgetreue Gegner-KI (ab 0.55)
  • Danach: Vollständiger Kampagnenmodus (ab 0.60)
  • Beta-Release, erste spielbare Version (v0.6) (Sommer 2016)
  • Finale Monochrom-Version (Classic) (v1.0) (Oktober 2016)
  • Kolorierte Farbversion mit höherer Auflösung (v1.1) (Ende 2016)
  • Spielbarer Multiplayer-Modus (v1.2) (when it’s done)
  • HD-Version mit hochauflösender Grafik (v2.0) (when it’s done)

Statistiken

Version: 0.54 alpha / Build 368
Datum: 14.03.2016
Grafikdateien: 843
Audiodateien: 58
Codezeilen: 33.535
Pakete: 23
Klassen: 233
Größe Quellcode: 1,8 MByte
Größe JAR/EXE: 5,2 MByte

Development Screenshots

2014
Das Remake stellt sich vor.

WIP-Version 0.32: Das Remake stellt sich vor.

Einen eigenen GEM-Texteditor bringt das Spiel auch mit.

WIP-Version 0.32: Einen eigenen GEM-Texteditor bringt das Spiel auch mit.

2013
WIP-Version 0.22: Komplettes HUD

WIP-Version 0.22: Komplettes HUD

WIP-Version 0.22: Statusmeldungen und Gegnerhorde

WIP-Version 0.22: Statusmeldungen und Gegnerhorde

2012 / Neue Architektur

WIP-Version 0.19: Preis- und Fahndungslisten sind fast fertig

WIP-Version 0.15: Splash-Screen

WIP-Version 0.19: Schub mit Partikeleffekten und Extraleben-Powerup

WIP-Version 0.19: Spielfortschritt auf der Karte sichtbar

WIP-Version 0.15: Hauptmenü

WIP-Version 0.15: Schutzschild zu Beginn

2010 / Alte Architektur

WIP-Version 0.06

WIP-Version 0.03


Ältere Videos – Version 0.29 / 0.21


Q & A

Für welches Betriebssystem wird das Remake entwickelt?

Software, die in Java geschrieben ist, läuft im Prinzip auf jedem Betriebssystem, auf dem eine Java VM läuft. Primär entwickle und teste ich unter Windows 7. Auch unter Linux wurde erfolgreich getestet. SPACOLA Eclipse sollte problemlos auch unter Mac OS laufen, sowie anderen Betriebssystemen. Entsprechende aussagekräftige Tests sind geplant, sobald das Spiel veröffentlicht werden kann.

Java? Wieso ausgerechnet Java? Wieso tust du uns das an?

Die aktuelle Anti-Java-Hysterie in den Medien kann von niemandem geteilt oder nachvollzogen werden, der selbst in Java entwickelt. Meist werden Sicherheitslücken in den obsoleten Java-Browserplugins mit Sicherheitslücken in Java verwechselt. Java ist nicht sicherer oder unsicherer als die konkurrierende Microsoft .NET Laufzeitumgebung, dennoch wird gerade unter Laien eine Hexenjagd auf alles was mit Java zu tun hat veranstaltet. Ich setze bewusst auf Java, weil ich täglich damit zu tun habe, weil die Arbeit damit Spaß macht, und weil es mir eine gewisse Plattformunabhängigkeit ermöglicht.

Wann wird SPACOLA Eclipse veröffentlicht?

Das finale Veröffentlichungsdatum der ersten komplett spielbaren Version habe ich auf den Oktober 2016 festgelegt, also pünktlich zum 25-jährigen Jubiläum des Originals. Bis dahin möchte ich aber noch einige Beta- und Milestone-Releases zum Download freigeben, die schon weitgehend spielbar sein werden. Leider ist noch nicht absehbar, wann dies soweit sein wird. Möglicherweise noch 2015.

Seit wann ist das Remake in Entwicklung?

An dem Remake arbeite ich inzwischen fast exakt genau so lange wie es Success Denied gibt. Genauer gesagt seit dem 19. August 2010. Seitdem arbeite ich mit mehr oder weniger langen Pausen daran (leider meistens längere). Neben meinem Beruf finde ich außerdem nicht immer die Zeit, um mein Hobbyprojekt nennenswert voranzutreiben. Meist packt mich das Thema erst wieder, wenn ich eine entsprechende Inspiration gefunden habe.

Sind Apps für Android und iPhone bzw. iPad geplant?

Auf jeden Fall. Über eine Umsetzung für Android denke ich bereits seit dem ersten Tag nach. Da die Dalvik VM für Android-Betriebssysteme ähnlich wie die Java VM funktioniert, dürfte das mit recht geringem Portieraufwand machbar sein. Eine iOS-Version ist ebenfalls machbar, wenngleich der Aufwand etwas höher sein dürfte. Genaueres lässt sich sagen, wenn die Dinge konkret werden.

Wieso denn ein SPACOLA-Remake? Warum nicht gleich OXYD?

Von OXYD gibt es viele Fortsetzungen und Neuauflagen und bis zum heutigen Zeitpunkt zwei(!) unabhängige Remakes, die auf aktuellen Betriebssystemen, sowie Smartphones laufen. Welchen Wert hätte ein weiteres Remake? SPACOLA ist insofern Brachland, außerdem schätze ich es als die etwas einfachere Implementation ein, was ich angesichts meines ersten kleinen Spieleprojekts, an dem ich in meiner knappen Freizeit arbeite, eher begrüße. Obwohl ich selbst wahrscheinlich auch viel mehr Zeit mit OXYD verbrachte, hat mir SPACOLA ebenfalls sehr viel Freude bereitet. Warum also nicht?

Brauche ich wieder den „Spacola Sternenatlas“ (SPACOLA-Codebuch) wie im Original?

Nein, der Spacola Sternenatlas wird NICHT benötigt, schon allein da er heute sehr selten und kaum noch zu bekommen ist, und weil er bei vielen SPACOLA-Fans sicher auch schon vor Jahren auf dem Dachboden verschollen ist. Das Spiel soll grundsätzlich jeder in vollem Umfang spielen können, daher werden für den Spielfortschritt keine Buch-/Code-Abfragen eingebaut. Ich überlege allerdings, ob ich als witziges Gimmick ein kleines Cheatmenü o.ä. in das Remake einbauen soll, das sich z.B. nur bei korrekter Eingabe eines Codes aus dem Sternenatlas öffnen wird – und dann auch nur in dafür ausgewählten Spielmodi, nicht in der Kampagne. Das wäre meine erste Idee gewesen, wie man die Besitzer des Originals auf humorvolle Weise belohnen könnte, ohne das Spiel für den Rest unzugänglich zu machen.

Warum sieht die Grafik so hässlich aus? Warum ist alles nur schwarzweiß?

Nun, Schönheit liegt im Auge des Betrachters. Manche finden diesen ganz besonderen Stil der Monochromgrafik sehr reizvoll, da sie nur wenig Spielraum lässt und die Kreativität daher auf eine ganz eigenartige Weise fordert. Ich für meinen Teil bleibe (vorerst) bei Schwarzweißgrafik weil, 1. die Fans SPACOLA gar nicht anders kennen – das Original IST einfach so, und 2. weil es mir die Entwicklung einfacher macht und ich nicht mehr Zeit mit Grafikbearbeitung verbringen muss als das sowieso schon der Fall ist. Dennoch: Eine Farbversion und eine hochauflösende HD-Version sind längst geplant. Nur Geduld.

Welche speziellen Game-Frameworks bzw. Libraries werden im Code verwendet?

Tatsächlich verwende ich bisher KEINE Game-Frameworks, und nur eine einzige externe Library (für das Dekodieren von OGG-Vorbis-Audio). Mir ist es im Moment aus autodidaktischer Sicht wichtiger, möglichst viele der üblichen essentiellen Mechanismen zur Spieleentwicklung selbst zu erarbeiten und zu entwickeln, darunter so Dinge wie Timing, Buffering, Animationen, sowie Maus- und Tastatur-Handling. Mit einem Game-Framework wäre die Arbeit vermutlich leichter und das Spiel bestimmt am Ende auch performanter, aber ich möchte derzeit möglichst unabhängig von externen Bibliotheken sein. Es mag nicht die intelligenteste Entscheidung sein, aber es ist meine Entscheidung.

Development Log

v0.54 – March 2016

  • fixed splash screen centering x and y offsets which are -4 and 2 in the original game
  • increased speed of dithering transitions. Still not satisfied with the values being used
  • fixed redundant code for toggling bomb event
  • removed unnecessary repeated casting in station handling code
  • removed redundant variable for station state
  • station states/animations are no longer static and now independent from each other
  • measured, confirmed and implemented the highscore display short period
  • fixed the height alignment of the new main menu modules titles
  • added the main menu core module to the game loop which displays after the highscore screen
  • fixed the highscore modules line spacings
  • fixed a bug where the level was marked as solved although the player went gameover
  • added valid and invalid input for the main menu core module
  • implemented some of the functionality for the F-keys during intro and main menu
  • implemented cancelling the solar selector with the ESC key
  • added any key event to intercept any key event for core modules
  • added the intro loop from price lists up to the main menu with 3 iterations in total
  • measured and confirmed the intro highscore and long main menu periods
  • enabled right mouse clicks for the main menu and the intro to start the game
  • found out that i already implemented the intro loop in a different way
  • fixed a bug in the flap display class where undelayed displays still had a small delay
  • implemented the ability for the flap displays to flap non numeric text values
  • added non numeric flap displays for the current and target sector displays
  • implemented a set score cheat that allows (re)setting the players score instantly
  • fixed cursor being shown when exiting the solar selector screen
  • removed delay from sector flap display in the solar selector
  • fixed a bug where the solar selector has not been reset properly after cancelling
  • implemented unloading cargo if the game is cancelled by pressing ESC
  • added resetting the HUD displays only shortly after the solar selector is shown
  • fixed adding the first three lives only after the dongleware switch is shown in the intro
  • added presetting the cursor to the middle of the solar selector panel
  • fixed a charset width error for the spacola and spacola white font
  • added a whitespace character to both spacola fonts
  • added teleport to random command and menu item
  • rewrote vortex code to also draw animations for game objects and stars
  • fixed converting object coordinates to screen coordinates to consider object size
  • added powerup containers to the vortex
  • added mine type objects to the vortex
  • started writing a better maforian AI from using minedropper patterns

v0.53 – February 2016

  • sorted all the open issues for the first beta release version
  • added stub certificate module to allow displaying a message after the game is completed
  • fixed floating point floor modulo calculation which didn’t wrap around correctly
  • implemented parts of the gameover and game-completed handling code
  • changed raw SDD sound sample rate from 6289 Hz to 6269 Hz, which is the correct value
  • changed raw SDD endianness to big endian which is the default for Motorola/Atari ST
  • replaced LAUGHT.SDD which is now byte-perfectly reconstructed from Trashy gimmick source
  • confirmed the new LAUGHT.SDD through the Spacola memory dump
  • removed enhanced surf sound effect since it doesn’t fit the sample rate change
  • mines don’t automatically destroy the player on contact now. Only the flying debris will
  • corrected the loop points for the rocketing sound effect once more
  • added spacola classic game mode icon for the swing menus
  • added a game mode selector component which allows choosing classic mode atm
  • started implementing the savegame coordinate verification core module
  • rewrote redirecting mouse controls to the currently running module
  • corrected the text positioning in the verification module which is now perfect
  • fixed a bug where you could enter a character more than was supposed to be allowed
  • measured, confirmed and implemented cursor blinking timings
  • fixed centering of the entered text in the verification module
  • fixed centering of the entered text in the highscores module as well
  • finally implemented actual code verification in the verification module
  • fixed a bug where the entered text was centered incorrectly while fading out
  • implemented a max level number for the solar selector for the beta release
  • for the first time the game was played through source code wise
  • added german and english text resources for the certificate module
  • refined some text resources regarding the unfinished alpha messages
  • added the first screen of text (print options) of the certificate module
  • added a demo version message to the certificate module
  • merged some multi-line text resources which used several keys
  • implemented a main menu core module for the longer main menu breaks in the game
  • discovered that almost all titles in the intro are vertically centered incorrectly
  • measured all the intro title centering vertical pixel offsets
  • added intro title centering offsets and offset handling
  • all the intro titles now seem to be centered exactly like in the original game
  • fixed a bug where the star background moved too quickly between titles
  • cut out an oxyd magnum dongleware button sprite

v0.52 – January 2016

  • confirmed all the blinking stars timings
  • confirmed all the big stars timings
  • implemented frame perfect big star animation timing code
  • implemented sometimes reducing the number of small stars by one
  • finally the star background may be 100% done and true to the original game
  • confirmed menu player speed again to make sure i didn’t miss on something
  • measured and recalculated the exact intro vortex duration in frames
  • approximated the most probable intro vortex radius expansion per frame
  • changed the intro vortex from using a logarithmic spiral to archimedian spiral
  • tweaked the vortex rotation parameters to make it look better
  • measured and confirmed the number of vortex coils that were used in the original game
  • confirmed the vortex expansion rate to be accurate
  • the intro vortex animation now seems to be perfectly true to the original
  • removed square root calculation from rescue capsules opening detection
  • replaced real modulo formula with Java 8 floor modulo call
  • wrote a math function that allows using modulo for floating point values
  • star wrapping will now be calculated a little safer
  • fixed mouse cursor being outside the allowed game screen boundaries at the start
  • replaced 2015 splash logo with a new 2016 one
  • fixed intro titles not being drawn behind the stars as in the original game
  • readded separate titles for dongleware and sd software logos in the intro animation
  • allowed the music library to separately enable/disable ingame and title music
  • the state of enabled sfx/title and ingame music will now be saved in the config file
  • added jvm debug mode detection to the utility set of the game
  • added more efficient methods to draw stars onto the game screen
  • rewrote stars drawing in the classic gfx engine
  • added visualvm defense code to the game class
  • added a utility method to calculate the crc32 checksum for a given file
  • added utility methods to find the uptime and the start time of the running JVM
  • replaced spacola eclipse 2016 build splash image with new 2016 one
  • added utility methods to calculate the crc32 checksum for any string or byte array
  • added CRC checksum aware classloader that may be useful later for classfile protection
  • fixed output format regarding milliseconds for elapsed time strings
  • wrote a base resource verifier that locates and scans all available resource files
  • fully implemented the resource verifier to verify the integrity of all packaged files
  • wasted at least two hours trying to sort out JAR file path issues when loading resources
  • wasted another two hours trying to fix file loading errors that occur from other errors
  • at least fixed loading of encrypted resources in the JAR file
  • fixed possible miscalculation in level wrapping using the new floor modulo

Show complete changelog

nach oben