Spacola

spacolaeclipse header 2013

Drei Spiele, die mich in meiner Kindheit ganz besonders begeistert haben? Da würde ich bestimmt Super Mario Bros. auf dem NES nennen, und Cadaver auf dem Atari ST, und sowas wie Test Drive II auf dem Amiga. Würde ich bestimmt, wenn da nicht vorher ganz andere Spiele gewesen wären, die mich auf eine völlig andere Weise begeistern konnten. Drei Spiele, die ich in einem Atemzug nennen kann: Bolo, OXYD und Spacola. Drei Spiele für den Atari ST, die alle zufällig von einem Entwickler sind: Meinolf Amekudzi.

Diese Spiele zeichneten sich durch detailreiche, hochauflösende Monochromgrafik aus, durch witzigen Sound, durch anfangs unglaublich 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 verdammt. Schade eigentlich, dabei hatte gerade dieses Spiel seinen ganz eigenen Charme, weil es kein typisches Geschicklichkeitsspiel war, sondern auch viel Action bieten konnte.

Spacola Eclipse ist ein von mir derzeit entwickeltes Remake von Spacola, also eine möglichst detailgetreue Nachbildung für moderne Betriebssysteme, und da mir der Original-Quellcode leider nicht zur Verfügung steht, muss ich zwangsläufig alles vollständig aus der Beobachtung nachimplementieren. Das Remake wird in Java entwickelt und wird somit theoretisch unter jedem System lauffähig sein. Sobald es denn mal fertig ist.

Test Test

Video Previews – Version 0.21 (alt)


Features

Bereits implementiert

  • Originalgetreue Monochrom-Grafikengine (Classic-Modus)
  • Titelmusik und Sound wie beim ST-Original
  • Intuitive Maussteuerung zum Drehen, Feuern und Beschleunigen
  • Animierter Radarschirm
  • 7 Powerups, 1 Gegnertyp, Raumstationen, Asteroiden, Fracht
  • HUD-Anzeige für Koordinaten und Punktezahl
  • Parallaktischer Sternenhintergrund
  • Pixelbasiertes Partikelsystem für z.B. Explosionen
  • Weitestgehend komplettes Intro mit Titeln
  • Grundsätzliche KI-Struktur für Gegnerschiffe
  • Drei verschiedene Mauszeiger im ST-Stil (TOS-Biene, Zielvisier, Rakete)
  • Dongleware-typisches Titel-Fading mit Dithering
  • Menüleiste für die wichtigsten Funktionen, zusätzlich zum Hauptmenü
  • Fake-TOS-Ladebildschirm und Splashscreen
  • Lauffähig auf jedem Betriebssystem mit Java
  • Niedrige Hardwareanforderungen

Weiterhin geplant

  • Schwarze Löcher, Besatzung
  • Animierte Sprites, gegnerische Schüsse
  • 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.22
  • Nächster Schritt: Übrige Powerups, mehr Gegner (v0.25)
  • Danach: Kampagnenmodus, Inventar (v0.3)
  • Beta-Release, erste spielbare Version (v0.5) (Sommer 2013)
  • Komplett spielbare Milestones (v0.6 – v0.9) (Ende 2013)
  • Finale Monochrom-Version (Classic) (v1.0) (2014)
  • Kolorierte Farbversion mit höherer Auflösung (v1.1) (2014)
  • Spielbarer Multiplayer-Modus (v1.2) (when it’s done)
  • HD-Version mit hochauflösender Grafik (v2.0) (when it’s done)

Development Screenshots

2013
spacolaeclipse022 200x141

WIP-Version 0.22: Komplettes HUD

screenshot022 200x141

WIP-Version 0.22: Statusmeldungen und Gegnerhorde

2012 / Neue Architektur
wip019 1 200x140

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

wip019 2 200x140

WIP-Version 0.19: Radarschirm, Asteroiden, Stationen und viele Powerups bereits implementiert

wip019 3 200x141

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

wip019 4 200x140

WIP-Version 0.19: Spielfortschritt auf der Karte sichtbar

spacoleclipse015 1 200x142

WIP-Version 0.15: Splash-Screen

spacolaeclipse015 2 200x140

WIP-Version 0.15: Intro-Titel

spacolaeclipse015 4 200x140

WIP-Version 0.15: Hauptmenü

spacolaeclipse015 7 200x140

WIP-Version 0.15: Schutzschild zu Beginn

2010 / Alte Architektur
wip006 1 200x133

WIP-Version 0.06

wip003 200x133

WIP-Version 0.03


Q & A

In welcher Programmiersprache wird Spacola Eclipse programmiert?

Das Remake Spacola Eclipse wird komplett in Java geschrieben. Auf dem Atari ST wurde Spacola soweit mir bekannt mit dem Megamax Modula-2-Compiler entwickelt, die zeitkritischen Teile (Grafik, Sound) direkt in 68k-Assembler.

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. Spacola Eclipse sollte aber problemlos auch unter Linux und Mac OS laufen, sowie anderen Betriebssystemen. Entsprechende aussagekräftige Tests sind geplant, sobald das Spiel veröffentlicht werden kann.

Wann wird Spacola Eclipse veröffentlicht?

Leider kann ich Spacola Eclipse erst veröffentlichen, wenn es spielbar ist. Im Moment läuft es, und es macht auch so einiges, aber es sind keine Gegner da, man kann nicht gewinnen oder verlieren. Das vorliegende Programm eignet sich nicht als Demo. Im Moment ist noch nicht absehbar, wann es soweit sein wird. Mit etwas Glück möglicherweise noch 2013.

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 ausgerechnet 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 Neuland, außerdem schätze ich es als die 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. Das wäre meine 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 sehen die Screenshots 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 ich: 1. Spacola nicht anders kenne – 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.

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 die Wiedergabe 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, Animationen, sowie Maus- und Tastatur-Handling. Mit einem Game-Framework wäre die Arbeit vermutlich leichter und das Spiel womöglich 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.22 – February 2013

  • implemented proper bonus lists / highscore / main menu intro loop
  • improved graphics and audio library initialization and additional log output
  • implemented real highscore class with several functions that replaces dummy highscores
  • integrated new highscores with intro titles and main game class
  • added some log messages for Highscore events and intro
  • added debug function to randomize highscores
  • implemented displaying powerup container in status screen
  • replaced slow string concatenation code with StringBuffer in Titles class
  • renamed SpacolaFont to DonglewareFont, since we’ll be introducing the actual Spacola font sooner or later
  • created abstract class SEFont for different fonts used throughout the game
  • replaced occurrences of DonglewareFont with abstract class SEFont to make the code more flexible
  • prepared ant build script
  • after the first level is completed, only 7 more fields get selectable in the solar selector
  • added object name and powerup name variables for log output
  • fixed particle explosions being updated too late, made them look out of place
  • wrote methods for string representation of game object positions
  • started implementing special Vector2D class for any game object motion/positioning
  • started removing old motion/positioning code from some game objects
  • fixed several types for GameMath and added some new functions
  • implemented HUD code for score fields, extra life fields, and both sector fields
  • created two missing spacola fonts and added them to the resources
  • wrote a new (real) SpacolaFont class for all the hud texts
  • finally added score, extra lifes, current and target sector to the hud
  • added first bonus points for destroying asteroids
  • removed the number of asteroids existing at once
  • added new graphics functions for faster image copying
  • removed hud fields pixel dependency from the window insets (because it was wrong)
  • corrected some pixel coordinates for fields
  • implemented cargo drawing and added it to the hud
  • rewrote some parts of the hud drawing code and removed ugly code bits
  • added status message events to the hud status screen
  • added shield shutdown message and all systems ok (after losing a ship)
  • fixed showing an empty container in the status screen if it has already been collected
  • added Piraton score
  • added ingame new highscore event
  • added a new hud screen with edited symbols, to make them represent their new meaning
  • added extralife powerup event, so that the player wins a ship
  • added status message sprites for highscore, speed levels and pause
  • added sprites for instructions button
  • changed the format of the changelog file, added month and year to the versions changes
  • transcribed all the 13 pages of the short instructions from the game
  • created a new controllable class for the short instructions
  • added tos bombs error sprite
  • increased shield duration to 30 seconds
  • added some more log messages
  • implemented new logarithmic spiral algorithm for the intro star animation (wormhole)
  • increased the length of the intro star animation to 2 seconds
  • fixed status message blinking to make it look more like the original
  • changed the time/date format for logging

v0.21 – December 2012

  • added small asteroid animation
  • added correct sound effect for asteroid explosion
  • made the animation of small asteroids more random
  • fixed sound effect not playing when enemy ship collides with an asteroid
  • fixed the code for sector navigation calculation
  • added makeshift explosion particles on enemy destruction
  • added station animation, needs to be improved
  • fixed a bug in collision detection that caused an infinite loop in some rare cases
  • made particle explosions look better
  • fixed old enemy ships reappearing after switching to the next level
  • added four asteroid explosion spritesets with eight sprites each
  • fixed line spacings in wanted lists, which needed to be smaller
  • implemented explosion objects to the game
  • started rewriting 2d vector related stuff to make it unified
  • started pulling out sector generation stuff into a seperate class
  • fixed player ship facing the wrong direction on beginning of the next level
  • fixed asteroid probability, to make them appear less often
  • shortened some durations for the intro titles
  • added a new eclipse logo for the titles
  • added a new success denied logo for the titles
  • started writing a new LogUtility class which is there to handle simple JUL logging
  • implemented log output to a logfile
  • removed standard global (root) console handler for logging
  • implemented a new log output format
  • renamed resources folder to /rsc/
  • rewrote initializing of audio lib and graphics lib, logging the number of loaded files
  • prevented audio library from initializing more than once
  • rewrote part of the logging for libraries
  • keeping loggers in memory if they have already been used once

Show complete changelog

nach oben