Spacola

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


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.92 alpha
  • Nächster Schritt: Vollständiger Kampagnenmodus (ab 0.95)
  • Beta-Release, erste spielbare Version (v0.95) (2020)
  • Finale Monochrom-Version (Classic) (v1.0) (Oktober 2021 oder so)
  • Kolorierte Farbversion mit höherer Auflösung (v1.1) (Ende 2021)
  • Spielbarer Multiplayer-Modus (v1.2) (when it’s done)
  • HD-Version mit hochauflösender Grafik (v2.0) (when it’s done)

Statistiken

Version: 0.92 alpha / Build 747
Datum: 29.05.2020
Grafikdateien: 1422
Audiodateien: 64
Codezeilen: 52.431
Pakete: 27
Klassen: 318
Größe Quellcode: 3,0 MByte
Größe JAR/EXE: 5,5 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 2021 festgelegt, also pünktlich zum 30-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.

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.92 – May 2020

  • renamed pirateshot to hurricaneshot to conform to the original game files
  • created perfect shape template for the hurricaneshot and fixed wrong transparency
  • added the SPI_HURR shapelist file to the resources and created entries in the library
  • removed mono hurricaneshot png sprites from the resources
  • confirmed 4 of the sprites for the hurricaneshot to be pixel perfect
  • fixed minedroppershot and hurricaneshot objects to use the new shape files
  • fixed minedroppershot handling object logic in the draw method
  • fixed transparency pixels in color hurricane shot 1 sprite according to shapelist
  • created perfect shape template for the starlaser
  • added the SPI_STAR shapelist file to the resources and created entries in the library
  • removed mono starlaser png sprites from the resources
  • confirmed 2 of the mono sprites for the starlaser to be pixel perfect now
  • fixed transparency pixels in color starlaser 1 sprite according to shapelist
  • fixed updating object logic in the draw method of starlasers
  • fixed order of hurricaneshot color sprites in the workspace resources
  • added all transparency verification layers to the minedropper sprite shape templates
  • pulled general menu icons into separate general icon subfolder in the resources
  • created and added 16×16 miniature menu icons for tos folder, tos file and tos program
  • changed a lot of the icons for different items in the menubar, e.g. info and game menu
  • fixed pause logic for the menu bar, which clashed with pressing the space bar
  • implemented pressing F4 as well during a running game to toggle pause
  • created and added a floppy menu icon
  • set the floppy menu icon to the load and save game file menu items
  • fixed the last four menu icons to set their color depth to monochrome with alpha
  • created 7 more ST style menu icons and added them to the resources
  • set some more icons for several items in the menu bar, e.g. cheats and options
  • renamed atarihand cursor to atarifinger, which seems to be a more precise handle
  • added actual default atarihand cursor to the resources and the controls class
  • renamed hand menu icon in the GEM menu icon folder to finger
  • moved actual hand menu icon to the GEM menu icons subfolder
  • created and added three more general icons to the menu icons resources
  • moved all dongleware related menu icons to a dongleware menu icon subfolder
  • created and added a pause menu icon
  • changed several more menu icons for the menu bar, e.g. resume and pause engine
  • started rewriting the level creation logic to make it more flexible and cleaner
  • implemented a basic galaxy class for the selected codepage and tab and the rng seed
  • implemented the solar selector to always create a savegame before starting next level
  • readded spac_jurchen music track for the ingame music
  • added new track spac_avalanche which will allow to have a greater variety of music
  • implemented rotating the ingame music track regarding the current level number

v0.91 – April 2020

  • added clearscreen methods reusing existing graphics object instead of creating new ones
  • changed clearing the screen in the method to render the game content
  • added the SPI_FJET shapelist file to the resources and created entries in the library
  • removed mono minedropper png sprites from the resources
  • confirmed 3 of the sprites for the minedropper to be pixel perfect
  • fixed an error where the asteroid sprites were used for the lightball animation
  • added the lightball sprites to the ship selector dialog
  • created 7 perfect shape gimp templates for the first implemented shapelist files
  • implemented a minedroppershot sprite and animation fix to create the 4th sprite

v0.90 – March 2020

  • allowed the bot to use the previously set mouse position and continue steering from that
  • implemented a mathematical method to calculate the radians from one gameobject to another
  • programmed the bot to always target the current sector powerup container
  • wrote an algorithm to determine an acceleration vector for intercepting game objects
  • vastly improved the bots ability to maneuver in the level when targetting objects
  • implemented a method to determine the ships status regarding all known powerups
  • implemented the bot automatically aiming at all hazardous objects on the screen
  • implemented the bot automatically targetting the winning station whenever possible
  • fixed the bot AI not acting correctly in manual shooting mode
  • modified smart aiming helper methods to directly use vectors instead of game objects
  • implemented smart aiming for hypothetical vectors for the bot AI aiming
  • vastly improved the bots ability to aim at shootable targets except for certain cases
  • fixed player being able to accelerate during surfing animation while respawning
  • somehow fixed not drawing the current sector immediately after starting the level
  • fixed a stupid bug that prevented the player from destroying armed sector objects
  • fixed player ship being able to visit a station while surfing animation ongoing
  • fixed code deciding whether smart aiming is too far off, instead shooting normally
  • fixed player ship being destroyable after successfully visiting the target station
  • fixed concurrent modification in the command manager by adding commands separately
  • divided the sound resources into fx and music folders, fixed loading of audio
  • finally i was able to extract and confirm 39 resource files from the original game
  • managed to extract and confirm 26 more resource files from the original game
  • managed to extract and confirm 21 more resource files in various later levels
  • managed to extract the last „zirpweep“ sound effect that is probably unused in the game
  • finally extracted all 104 original spacola resource files using a debugger
  • started analysing the dongleware shapelist (SHL) format
  • figured out several attributes and lots of information in an SHL file
  • replaced all 48 sound effects with the perfectly extracted original sound files
  • all sound effects and their corresponding filenames are considered confirmed now
  • started implementing a shapelist converter class to load and read Dongleware SHL files
  • implemented SHL code that is finally able to read at least a few of the files
  • successfully converted a batch of 34 SHL files into regular PNGs
  • moved the unfinished shapelist converter class into the gfx source package
  • improved the SHL reader code and was able to convert 13 more original SHL files
  • implemented several more specifications of the SHL format into the reader code
  • successfully converted 6 more SHL files from Spacola, OXYD and Esprit
  • successfully converted 5 SHL files from Bolo
  • tried fixing the problem with oversized sprites for example in SP_STD.SHL
  • finally i fixed converting SHL files containing sprites with a wrong width
  • the SHL converter can now properly read and convert all known SHL files
  • confirmed sprites for SPI_MINE to be pixel perfect and to have the correct size
  • added SPI_MINE to the resources into the sprites folder for original SHL files
  • implented a shapelist library that loads original shapelist files
  • the gfx library finally uses the first original sprites from SHL files for mines
  • started fixing file access objects with open inputstreams not being properly closed
  • fixed error while trying to load shapelists in deployed JAR file
  • tried implementing a signed/unsigned raw audio autodetection
  • once again extracted 15 SDD sound files that have not been decoded in the debugger
  • fixed 4 asteroid sprites and confirmed all of them to be pixel perfect
  • added SPI_STON to the resources into the sprites folder for original SHL files
  • the gfx library now uses the asteroid sprites from the original SHL files
  • fixed 4 lightball sprites and confirmed all of them to be pixel perfect
  • added SPI_LBAL to the resources into the sprites folder for original SHL files
  • the gfx library now uses the lightball sprites from the original SHL files
  • fixed not adding shapelist resources into the number of loaded resource files
  • fixed 4 colored asteroids sprites according to the SHL file
  • figured out data for x and y offsets in the SHL files for centering sprites
  • fixed the SHL converter to allow retrieving bytes either signed or unsigned
  • implemented a shape class to represent the new sprites with predefined offsets
  • unified and moved common methods to create boolean bitmasks into the utilities class
  • implemented the SHL reader to also highlight the draw offsets contained in the SHL file
  • fixed reducing blank columns in SHL images even if the width becomes too small
  • successfully converted all 59 SHL files into PNGs containing the draw offsets
  • refactored and commented the SHL converter to explain the technical details
  • created and added 4 colored lightball sprites to the resources
  • implemented 1-layer-shapes in SHL files to invert pixels and use transparent background
  • made inverting of the 1-layer-shapes optional because inverting is not always correct
  • implemented drawing of centered shapes for game objects in the gfx engine
  • created a graphics utility class that contains common graphics operations methods
  • implemented creating and using mono and colored shapes in the enum gfx library
  • the mines will now be drawn using original shapes with predefined SHL offsets
  • started using global game statistics throughout the game for score and game completion
  • implemented big all-in-one constructors for the enumgfxlib enum objects
  • implemented shape animation objects in the shapelist library class
  • created shape enums for all types of asteroids in the enumgfxlib
  • fixed wrong sign for the default shape centers
  • removed asteroid, lightball, asteroids and mine sprites from the mono png resources
  • added enumgfxlib shapes animation entry for lightball sprites

Show complete changelog