Spacola

header_mit_rand_august2015

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.47
  • Nächster Schritt: Originalgetreue Gegner-KI (v0.50)
  • Danach: Vollständiger Kampagnenmodus (v0.60)
  • Beta-Release, erste spielbare Version (v0.6) (Winter 2015)
  • Komplett spielbare Milestones (v0.7 – v0.9) (Frühjahr-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.47 alpha / Build 246
Datum: 21.08.2015
Grafikdateien: 780
Audiodateien: 54
Codezeilen: 28.536
Pakete: 21
Klassen: 203
Größe Quellcode: 1,4 MByte
Größe JAR/EXE: 4,9 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.47 – August 2015

  • created 6 colored radar sprites from the original designs
  • confirmed 3 enemy shield sprites transparency and size
  • fixed mine h2-43 sprite transparency and size inspired by mine h3/8 designs
  • confirmed transparency, size and order of triangular debris sprites
  • confirmed transparency and size of debris spark sprites
  • fixed accidentally using an old version of the toiletpaper cargo sprite
  • fixed remains of menubar repainting code which didn’t quite work
  • fixed not using interpolation in splash screens
  • wrote a screenshot saver class which allows taking screenshots of the game engine
  • implemented screenshot saving function into the menubar
  • pulled all existing sprite subfolders into /img/mono to prepare for adding color sprites
  • copied all 21 color sprites into /img/color
  • created a prototype color gfx library from the existing mono gfx library
  • started writing a class that decides whether to retrieve classic or colored sprites
  • implemented a way to create sector range objects from discrete values
  • started implementing the level generation process from a given level configuration
  • added log output to find the currently selected level number in the solar selector
  • added rocketcycle, defender, spermbird, rocketgun and shielddefender gameobject types
  • added tricore gameobject type
  • added gameobject and powerup maps for level config key to level object mapping
  • wrote a simple token recognition for the levels config block parser
  • added some token constants for the default level configuration
  • extended the sector range class to get their width and height
  • sector ranges now also calculate how many sectors are affected by them
  • implemented parsing of any number of parameters from a given script token
  • implemented retrieving all affected sectors from a given sector range
  • implemented methods to fill/floodfill level sectors with powerup types
  • added minimum and maximum value constants for the level generator
  • changed toString method for gameobject class that expresses its contents more precisely
  • fixed sector range span not considering the center sector of the range
  • finished creating a generic gfx library which allows to switch between mono and color
  • replaced lots of occurrences of classic gfx library with the generic gfx library
  • finally playing with colored graphics is possible from now on
  • created base level class that holds all parameters for a fresh generated level
  • fixed sector range logic which centered around the start sector and not the target sector
  • created methods that handle teleporting the ship to the base levels starting position
  • fixed powerup container creation logic because it didn’t check for existing containers
  • the level parser now successfully parses and fills level sectors with powerups
  • the level parsing/generating process via level script finally works
  • deprecated old methods in the level generator class that may not always work correctly
  • implemented an unload cargo “cheat” for testing
  • powerups in the solar selector will be shown upon game configuration
  • implemented enemy setup logic and deployment for space stations
  • implemented parsing and creating enemy setups in the level parser/generator
  • fixed log output of collected powerup which has already been unset
  • fixed missing menu captions for unload cargo cheat
  • fixed level parser mistaking powerup fixed number with powerup probability
  • added more methods for parameter parsing for when tokens may deliver empty parameters
  • implemented parsing and setting up asteroided sectors from the level configuration
  • added methods for filling and floodfilling minefields to given sector ranges
  • confirmed and enlisted station sprites as perfect
  • confirmed station wave animation sprites and sprite order
  • confirmed station rant animation sprites and sprite order
  • resized all 40 station animation sprites and added them to the resources
  • confirmed station cigarette animation sprites and sprite order
  • confirmed station cutter animation sprites and sprite order
  • confirmed station cherry and bonbon sprites and sprite order
  • confirmed existing design parts of the station toilet animation sprites and sprite order
  • created a shape for big and small asteroids
  • confirmed existing design parts of the shapes for big and small asteroids
  • implemented parsing of station trap placement from the level configuration
  • the level parser is now able to read all tokens from level 1 configuration
  • added log warnings for illegal sector ranges and unknown level configuration tokens
  • finally fixed the stupid bug that prevented rockets from chasing after enemies
  • rockets will now be shot slower than standard shots like in the original game
  • added log output when a players rocket hit something
  • renamed uppercase method names in the GameMath utility class
  • added methods for calculating the horizontal or vertical distance between two objects
  • added 3 convenience methods to GameObject for finding the distance from other objects
  • fixed conversion of level coordinates to screen coordinates which used wrong screen size
  • added menubar cheat for granting all weaponry
  • added german and english text translation resources for all 12 powerups
  • created a submenu under cheats where each powerup can now be selected manually
  • added commands for every available powerup
  • fixed long shot powerup not using a higher maximum distance anymore
  • implemented redeployment of enemy ships that have delivered their stolen items
  • fixed a very old bug that made single engine ships emit particles incorrectly
  • implemented hud status message for cantina radio call powerup
  • measured enemy fleeing distance and duration value for the cantina radio call powerup
  • removed powerup collecting sound effect on collecting cantina call powerup
  • finally implemented the cantina radio call powerup. All powerups functional now!
  • added a global cantina radio call timer to allow logging when the powerup has worn off
  • added 12 menu icons for all the powerup symbols available on containers
  • added icons to all the cheat powerup menu items
  • replaced the phone menu icon with the narrower one from the hud cargo bay display
  • the gfx lib now also creates a black dongleware font for the certificate printout
  • fixed transparency and size for all 12 powerup sprites as given by original designs
  • fixed the cantina call menu icon reflecting the latest powerup sprite changes
  • fixed toiletpaper menu icon reflecting the latest cargo screen sprite changes
  • cut out megaghost and megamax modula-2 logos from bolo screenshots for later use
  • added oxyd sound effect ‘oxmagic’ for taking screenshots
  • added F12 as accelerator for taking screenshots
  • added a check if the game engine is actually running when trying to take a screenshot
  • the screenshot function now plays a sound effect to indicate if it was successful
  • fixed controls initially having not set any context
  • key typing will now make a sound effect in the opening screen
  • created new shapes for all 9 minedropper shot sprites
  • fixed transparency of the 9 minedropper shot sprites as given by original designs
  • started creating alternative ‘bolo’ and ‘oxyd’ fun border designs for the hud frame
  • pulled some of the highscore constants into the score config class
  • fixed an uppercase letter in the resource bundle keys for the solar selector header
  • implemented methods for the gfx engine to draw many contents centered with x offset
  • fixed solar selector panel not being drawn with an offset of -4 as in the original
  • implemented special demo version message for the solar selector footer as in the TOS-Demo
  • removed unnecessary recalculations per mouse move event in the solar selector
  • added a note to the solar selector showing that this is an unfinished version
  • implemented ‘saving game’ message for the solar selector
  • clicking the coffee button now works a lot more like in the original game
  • confirmed transparency for defender sprite
  • fixed size and bit depth for defender sprite and both defender shield sprites
  • removed fading out of the solar selector panel and the special demo message
  • added the special demo version message for the instructions and translated it
  • implemented target coordinate deciphering which reveals the target sector after a while
  • added a bolo rotor menu icon to the resources
  • added a shocker heart menu icon to the resources
  • created a new dongleware monochrome font with borders which was used in OXYD
  • cut out a falcon tos atari logo for later use
  • created a new dongleware color font with black shade which was used in OXYD Color
  • confirmed pirate shots sprites order in the game and transparency in the designs
  • confirmed last two maforian sprites (11 and 15) once and for all. Done three times!
  • implemented minimum and maximum coordinate decoding time which is randomized
  • implemented an arrow pointing to the direction of any game object in the level
  • prevented drawing the arrow if the player is directly in front of the object
  • the arrow now points directly to the object on screen when the player gets close to it
  • fixed tailspinning peashooters vanishing again when hit by the player
  • added pixel doubling and interpolation user preference to the config file
  • fixed a bug where the preferred dimensions of the game canvas have been calculated wrong
  • added direction marker cheat to the cheat menu and implemented enabling/disabling it
  • fixed rare NPEs when resetting game components before the thread is really stopped
  • added an unfinished version note to the instructions pages
  • cut out 4 OXYD rotor sprites, which could be used as a bonus enemy somewhere
  • added OXYD rotor sprites to the resources and to the gfx library
  • fixed color gfx library not loading a certain image
  • confirmed the player shot standard speed to be 5,5 pixels per frame
  • set the player shot standard speed to 7,92 pixels per frame for the target framerate
  • confirmed the player shot rapid cooldown to be 12 frames @ 72 fps, thus 8.33 @ 50 fps
  • set the player shot rapid cooldown to 8 frames for the target framerate
  • confirmed the player shot long speed to be also 5,5 pixels per frame
  • set the player shot long speed to 7,92 pixels per frame for the target framerate
  • transcribed the back of the original Spacola disk + space atlas box
  • fixed size, rotation and order of all 32 spermbird sprites as given by original designs
  • created 64 new engine thrust sprites from the designs with fixed size, rotation and order
  • replaced the old 128 engine thrust sprites in the project with the 64 new ones
  • rewrote drawing of the engine thrust sprites in the shipdecorator with less image files

Show complete changelog

nach oben