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.62
  • Nächster Schritt: Originalgetreue Gegner-KI (ab 0.65)
  • Danach: Vollständiger Kampagnenmodus (ab 0.70)
  • Beta-Release, erste spielbare Version (v0.7) (Frühjahr 2017)
  • 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.62 alpha / Build 453
Datum: 11.03.2017
Grafikdateien: 870
Audiodateien: 59
Codezeilen: 39.096
Pakete: 24
Klassen: 255
Größe Quellcode: 2,3 MByte
Größe JAR/EXE: 5,4 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. Möglicherweise noch 2017.

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.60 – December 2016

  • fixed serious problem with the gfx library never being ready before window initialization
  • game window finalization is now delayed til after graphics initialization is done
  • finally the graphics can easily be switched between mono and color
  • fixed the font initialization which now considers mono and color mode
  • color fonts can now be used in the game intro and also in the client windows
  • fixed strange logger class import problem in the enum gfx library class
  • fixed colored alien sprites not being loaded in the enum gfx library
  • confirmed SHOT and SHIPROCK sound effects by analyzing file order in a memory dump
  • switched and confirmed EXPL1 sound effect
  • switched and confirmed SHOTAWAY sound effect
  • switched and confirmed ALARM sound effect
  • switched and confirmed INVSHOT1 sound effect
  • confirmed FALSEPUT, LAUGHT, HELP, WINS and FINITO sound effects
  • confirmed CREDIT, GETALIEN and GETWARE and OHOH sound effects
  • confirmed SHIELDAW sound effect
  • switched and confirmed PANEL sound effect
  • switched and confirmed HURRICAN sound effect
  • confirmed COLA and SURF sound effects
  • confirmed INTRO sound effect
  • switched and confirmed EXPL5 sound effect
  • confirmed EXPL4 sound effect
  • switched and confirmed EXPL3 sound effect
  • confirmed EXPL2 sound effect
  • switched and kinda confirmed ZIRP sound effect
  • switched and kinda confirmed ROCKET and ROCKEXPL sound effects
  • kinda confirmed the order for the INVSHOT2, INVSHOT3 and INVSHOT4 sound effects
  • switched the zirpweep and falscall sound effects (zirpweep seems unused in the game)
  • resolved all the other sound effect assignments, seems good now
  • fixed player surfing animation not being loaded in the color library
  • added colored dongleware title cards taken from Oxyd Color
  • cut out several different dongleware button sprites from colored Oxyd versions
  • fixed color tone of dongleware title cards
  • started coloring the drive thrust sprites as indicated in the original designs
  • added successdenied software colored title card
  • simplified the way explosions are created in the code
  • fixed many wrong sounds that are played back since changing the filenames
  • fixed a bug where vortex elements could only be drawn in monochrome
  • minedroppers and minedropper shots will now use the new big explosion spriteset
  • fixed wrong explosion spritesets being used in different places
  • created and added a special spacola colored dongleware font style and tested it
  • implemented warnings for when invalid gfxlib enum elements are created
  • made it possible to create color only gfxlib enum elements
  • measured and confirmed the rocket turn speed (for the last time now)
  • fixed not using the rocket turn speed in the rocket object code
  • implemented parsing of black hole keys in the level generator
  • implemented methods to fill the level with black holes
  • added radius parameter to black hole game objects
  • implemented black hole radius check in the sector object handling code
  • fixed black holes being placed twice in each sector
  • measured and confirmed black hole animation phase duration in frames
  • fixed „Game resumed“ message appearing twice in the log
  • fixed missing linebreak in debug level script
  • fixed wrong shield bouncing sound effect
  • measured and confirmed peashooter turn speed (for the last time now)
  • measured and confirmed piraton turn speed
  • measured and confirmed maforian turn speed
  • measured and confirmed small asteroid animation phase durations in frames
  • implemented new small asteroid animation code
  • fixed powerup collecting sound effects for certain powerups
  • measured and confirmed the shield powerup durations and remaining shield warnings
  • also implemented a spacola bug/feature where the player gets infinite shield power
  • measured and confirmed tailspin turn speed for peashooters and turrets
  • confirmed that all ships in the game seem to always tailspin to the left
  • confirmed that rockets always tailspin to the right
  • measured and confirmed the station default deploy distance to be 2000 pixels
  • measured and confirmed the station no deploy zone to be 100 pixels and less
  • implemented station default deploy distances and no deployment distances
  • confirmed the third station config parameter to be the enemy deploy distance
  • wrote a floodfilling method for station configurations
  • changed some units from milliseconds to seconds
  • confirmed that there is an ST realtime clock problem with the emulation
  • fixed time measurement for deploying which was always suspiciously close to 5 seconds
  • measured and confirmed calculation of the original player speedup value
  • fixed wrong calculation of the target framerate player speedup value
  • fixed calculation of the hyperspeed and ridiculous speed limits and confirmed it
  • measured and kinda confirmed shield powerup stacking which the original game had
  • implemented shield powerup stacking in the powerup manager
  • pulled shield powerup code into separate handling method
  • measured and confirmed the default limit for active enemy entities in the level
  • confirmed the first station config parameter to be the limit for active enemies
  • implemented deploy limit for stations
  • fixed aliens shouting for help even though the player is invisible
  • measured the alien shout probability and implemented it based on the framerate
  • measured the alien shout distance which seems to be 220 pixels
  • measured the alien shout duration which seems to be exactly one second
  • fixed the ZIRP sound effect which occurred twice in the memory dump
  • added a ZIRPWEEP sound effect which seems to be just a copy of ZIRP in the original
  • fixed turrets being drawn at their position while vortex gameover animation is ongoing
  • measured and confirmed the level generation sector borders for containers and stations
  • measured and confirmed the level generation sector borders for black holes
  • implemented new gamerandom functions to generate sector borders specified in pixels
  • fixed level generation object positioning for stations, containers and black holes

v0.59 – September 2016

  • changed the font for the log window to Lucida Console
  • made all subwindows dispose on close to fix a bug with taskbar thumbnail preview
  • fixed closing credits text being generated statically for the credits window
  • the cheat menu will be disabled outside the game and enabled during the game
  • fixed speed warning events when the players ship isn’t even visible
  • fixed player powerups not resetting in the different submodules
  • rewrote parts of powerup resetting and resetting the powerup manager itself
  • when the game is paused any key will now resume it
  • added a test panel class which is used in the gem textedit and particles test modules
  • added particles test module to the menubar
  • started work on the particles test module to make it work inside the game window
  • fixed minor concurrency problem with the particles test class
  • fixed a bug where cursor offsets wouldn’t be used in the correct way
  • the gfx engine now distinguishes between cursor on screen and cursor on gamescreen
  • fixed problems starting/stopping the engine for the text editor and particles test
  • created a test class for the „TOS-Magazin“ Magic gimmick effect
  • modified the frame stopwatch class to allow it being used without the gfx engine
  • added a simpleframe class which will eventually allow testing gfx effects separately
  • started rewriting gfx library to make it more compact and much easier to maintain
  • fixed a problem with removing transparency from colored images
  • finished new enum gfx library that combines mono and color images in enums
  • deprecated all four old gfx library classes
  • started removing references to the old gfx library classes from all the existing code
  • edited dozens of more classes to remove references to the old gfx library classes
  • added the new explosion spriteset to the explosion object class
  • added separate gfx library methods to get monochrome and color graphics directly
  • fixed score for kleptomara, cargoliner and cargoflyer enemies
  • edited another truckload of classes to remove old gfx library references
  • all occurrences finally replaced, the code compiles again

v0.58 – August 2016

  • added menu options to enable/disable the star background and debug text
  • linked setter for both options with the menu bar entry to synchronize them
  • peashooter enemies will now get destroyed by the players shield
  • fixed NPE for unset bitwise XOR composite for peashooters
  • measured and confirmed peashooter flight speed
  • changed maforian flight speed to same as peashooter flight speed, seems to be correct
  • changed piraton flight speed to same as peashooter flight speed
  • added method to calculate the direction vector for two points instead of two game objects
  • added method to Angle2D class to target a coordinate instead of a game object
  • started implementing the real peashooter AI
  • fixed peashooters facing the wrong direction
  • measured the peashooter player proximity in pixels
  • measured and confirmed peashooter turning speed
  • fixed an old bug where delta X and delta Y between two objects is calculated wrong
  • measured and confirmed tailspinning turn speed
  • measured tailspinning duration
  • added game math methods to convert seconds to frames and vice versa
  • measured the peashooter station patrolling distance to be about 640 pixels
  • measured the peashooter shot speed to be about 3,4 pixels per frame
  • removed enemy shots vanishing on level boundaries, unable to reproduce this feature
  • guessed the distance at which enemy shots vanish outside the players sight
  • implemented enemy shots vanishing when they get too far outside of the gamescreen
  • measured and confirmed the pirate turrets shot speed to be exactly 3,5 pixels per frame
  • measured and confirmed the deadly turrets shot speed to be exactly 3,5 pixels per frame
  • fixed turret shot speed not taking the target framerate into account
  • defined the pirate shot size
  • measured and defined the expand and fly distance for pirate shots
  • measured and recalculated animation phase durations for pirate shots
  • rewrote pirate shot animation code
  • rewrote level generation initialization since it didn’t work for turrets anymore
  • fixed a bug where an animation phase for the pirate shot was omitted
  • the station trapper will now override traps if they are set twice via level config
  • added utility methods to get sector coordinates as sector number and vice versa
  • added sector number attribute to sector objects
  • sectors now know their indexed mine types
  • rewrote the way how armed stations are recognized in the engine
  • added log output for each time when entering another sector
  • fixed a bug where more than one trap could be placed in a sector by accident
  • fixed a bug where sector shifting showed the wrong sector coordinates in the logfile
  • fixed stone menu icon not saved in indexed palette
  • fixed wrong sound effect being played when the player hits an asteroid with shield on
  • added color sprites for enemies micro shot and pea shot to the resources
  • fixed enemy shots being drawn above turrets
  • cut out a complete forgotten (big) explosion spriteset for destroyed minedroppers
  • added 10 new explosions sprites to the resources and gfx library
  • classic and color gfx library will now dinstinguish themselves in the log file
  • started analysing 1000+ screenshots to find out the order of drawing for all game objects
  • created a new color cherry cargo bay sprite based on the color palette of Oxyd Color
  • measured the turn speed for players rockets
  • found out that i miscalculated almost all turn speeds, will have to measure again
  • removed confirmed tag for all turn speed attributes in the configuration
  • fixed the radar not drawing objects correctly when the camera is focused somewhere else
  • the radar will no longer draw objects that the camera is focused on
  • the radar will draw other player ships, which is necessary in multiplayer mode
  • fixed powerup containers being drawn on top of the player ship
  • the station trappers random creation methods now use the game random object
  • fixed several occurrences where objects were illegally added directly to the collection
  • fixed jvm uptime calculation
  • added tabs to the about window
  • fixed following blanks in the uptime string generation code
  • added enum getter for number of audio resource files
  • added method to get the number of stored resource files
  • added methods to get date and time strings in longer format
  • added a system info tab to the about window where the user can see certain runtime info
  • fixed long date and time strings ignoring the preset language
  • enabled uptime calculation to show days
  • added a way to inject the application built date/time into the client and display it
  • added methods to find the current work directory and the current users home directory
  • added methods to get the java home directory and current username
  • wrote new methods to control the text prompt, set text, set cursor, remove text, etc.
  • the enter highscore screen can now fill in the current username for you
  • the enter highscore screen also refills the name prompt with the last name entered
  • fixed version number and built date not being replaced in the config files on build
  • changed the ordering in the powerup menu to the order of powerups appearing ingame
  • confirmed ‚F‘ to be the identifier for the cantina call powerup in the original game
  • confirmed ‚E‘ to be an unknown/unfinished powerup that makes the original game crash
  • added cantina call powerup to the levels parser to allow using it in the config
  • allowed built date/time strings to be created localized or unlocalized
  • output built date/time to the log at client startup
  • cleaned up displayed info in the system info panel
  • removed redundant timestamp and timestamp format in the build script
  • made the close button visible on all tabs of the about window
  • created a separate view credits window and added it to the info menu
  • changed the fonts for the view credits and view highscores window
  • the credits text from the closing credits module will be used in the credits window
  • created a more beautiful text representation of the highscores for the highscore window
  • turned remake copyright notice and dongleware copyright notice around in the credits
  • enabled uptime calculation to show weeks

v0.57 – July 2016

  • implemented a java version of the original Megamax Modula-2 linear congruential generator
  • fixed not using the sound effect enabled property from the config file
  • added a custom greeting in the closing credits when the player entered his name
  • fixed the closing credits module not centering multi line greetings correctly at the end
  • fixed dongleware dithering effect and perfectly reconstructed and confirmed the method
  • added a math real modulo method for long variables
  • added assembler style multiplication method for the linear congruential generator
  • wrote a vector method to find out if an enemy ship has reached the targeted base motion
  • fixed a bug with the base motion adaption where the adaptive value was miscalculated
  • finally got the maforian enemy AI quite close to the original
  • added delivering ware code to the maforian AI
  • changed the thruster distance of the maforian enemy
  • fixed a bug where the maforians didn’t target the player correctly at high speeds
  • fixed a bug where the particle effects had been re-enabled in the level
  • persisted particle effects option into the configuration file
  • renamed a few property names in the configuration file to remove spaces
  • fixed a bug where maforians wouldn’t navigate correctly after ware pickup
  • fixed a bug where the base motion wouldn’t gradually return to zero correctly
  • added more methods for bit manipulation in the Megamax Modula-2 LCG class
  • added utility methods to convert sector hex string to sector number and vice versa
  • removed redundant code in the vector class concerning base motion updates
  • added constant base motion adaption to have it work more like the game probably was
  • fixed incorrect AI motion adaption which adapted quicker in diagonal directions
  • measured and confirmed maforian default flight speed
  • added maforians randomly turning the ship as they approach their target
  • implemented maforians accelerating for a few frames on deployment
  • measured and confirmed maforian turn speed
  • measured and confirmed pirate turret turn speed
  • measured and confirmed pirate turret cooldown frames and recalculated for new framerate
  • implemented turrets no longer moving during cooldown phase
  • measured and confirmed pirate turret proximity distance
  • removed square root from pirate and deadly turrets and used comparable distances
  • changed screenshot saver to show error messages in the game client on write problems
  • changed logging class to hide the exception stacktrace in error dialogs
  • measured (kind of) the station deployment cooldown in frames and implemented it
  • measured (kind of) the ships initial thrust on deploy frames and recalculated for 50 fps
  • changed deployment process for enemy ships and removed frozen enemies on deployment
  • changed base motions only adapt when enemy ships accelerate anyway
  • split up base motion updates and adaption into separate methods
  • maforians now act more authentically in high speed chases
  • fixed a bug where maforians dragging cargo wouldn’t accelerate anymore
  • implemented maforians shooting
  • added multiplayer server methods to start the registry and server independently
  • added localized messages for starting and stopping the multiplayer server
  • implemented yet another way of base motion adaption with a buffer and a delay
  • fixed cantina call code for the maforian enemy AI
  • implemented final account balance display in the closing credits module
  • fixed F10 not quitting the game on main menu after closing credits
  • implemented stations redeploy queue and timer to work independently from deployment
  • implemented deploying maforians either harmful or harmless
  • implemented alarm sound for harmful maforians
  • fixed bouncing code for enemies with base motions where the base motion was left unchanged
  • rewrote maforian navigation to avoid using base motion at all – works easier, looks better
  • fixed player sprite being drawn out of center when enemies bounce it around
  • pulled speed limit checks out of the acceleration code
  • fixed speed limit events not firing when enemies bounce the player around
  • fixed game objects not appearing in the intro vortex (forgot to update current sector)
  • fixed invaders being deployed even if the number in level config was specified with 0
  • wrote a new magnetic effect method which is easier after all and looks better
  • changed the bitwise XOR composite class to allowing XORing both black and white pixels
  • refined magnetic effect to make alien and ware be pulled more smoothly towards the player
  • all aliens are now drawn to the game screen using bitwise XOR composite
  • fixed the black and white bitwise XOR which created false results
  • fixed camera set on current station, leaving the sector will now reset the camera
  • created and added the 4th oxyd rotor color sprite which is missing in the IBM OXYD game
  • fixed a mistake with the classic game mode image in the classic graphics library
  • added an inverted classic game mode image for the select game mode window
  • made the game mode image on the button appear inverted on mouseover
  • implemented a separate magnetism function for aliens and ware
  • implemented a frame by frame key option for debugging purposes
  • implemented two new menu cheat commands for filling and emptying convict aliens
  • increased the default force for ejecting aliens and ware
  • increased the distance at which aliens and items will be collected
  • added a new math function that creates a random vector with min and max speed
  • pulled lost alien score into the score configuration class
  • measured and implemented the maximum ejection force for aliens and items
  • set the minimum alien and item ejection force to 0.05
  • rewrote creating a random ejection vector for small objects like alien, ware and capsules
  • added another station menu icon which is not inverted
  • pulled all powerup menu icons into separate resource folder
  • fixed two menu icons not being initialized in the color gfx library
  • measured the alien turn speeds and tried to recalculate them to the target framerate
  • aliens will now be ejected with differing turning speeds
  • fixed the window manager now handling the game mode selector window
  • fixed many sub windows being disposed instead of hidden on close event
  • simplified code for debris ejection vector calculation
  • fixed completely resetting the player in the solar selector after every level
  • implemented frame by frame menu command
  • renamed cheat menu to debug menu
  • fixed an error when pressing cancel in the menu command for setting score
  • added new variables for solar selector fadeout timings that were more accurate for the remake
  • fixed destroyed asteroids being bounced before exploding
  • fixed destroyed asteroids being added to the explosion collection directly
  • increased the number of small asteroids spawned to 4
  • measured and confirmed the duration for explosion animations
  • increased the small object collect distance to 15 pixels
  • implemented explosion animation showing the first sprite twice as long
  • removed min speed for small object ejection vector again
  • measured the player ship respawning timings
  • rewrote part of the player respawning animation and implemented the right timings
  • explosion particles now use another method to get a random vector
  • deprecated a few old math functions

v0.56 – June 2016

  • added a fixed port RMI socket factory to allow more control for which ports are used
  • changed the port on which the exported game server object will listen
  • the RMI code will now use one single port for registry AND server/client connection
  • added some more debug output to the multiplayer game joining process
  • added a server method to retrieve the game version of the running server
  • added providing a password in case the multiplayer server is password protected
  • implemented showing the object ids and object types for any game object
  • implemented centering the object ids and object type specifiers at the object
  • implemented showing the player names, which may be necessary for multiplayer games
  • added menu options to reset the highscore list with a confirm dialog
  • implemented the menu option to save the highscore list whenever necessary
  • implemented menu options to set showing object ids/types and player names
  • fixed the station trapper placing mines on fractures of pixel positions
  • added game mode selector to the menu bar and implemented button events
  • added some more titles to the credits roll module
  • implemented final text message and fade out event to the credits roll module
  • the fadeout in the credits is now triggered per user input
  • added a missing solar selector clicked field image
  • turned the clicked solar selector field images into an animation
  • replaced the spacolassic game mode image with a better one
  • created a solar selector frame shadow image that is used to cover the stars
  • improved the way the solar selector field blinking animation is handled
  • the solar selector frame is now drawn as a shadow on top of the stars
  • fixed the game cancelling fadeout which should also fadeout stars and the cursor image
  • increased the pause after game cancelled or gameover to 3 seconds
  • fixed F9 not working in the dedicated main menu module
  • cancelling the game won’t show the highscores module, instead go straight to the menu
  • fixed old status messages showing in the solar selector after restarting the game
  • implemented hiding the last sector powerup only after main menu fadein
  • added a class for panels with tiled backgrounds
  • refined the solar selector animation frame by frame, is much more authentic now
  • fixed a mono oxyd rotor enemy sprite which had a wrong pixel in its white border
  • cut out and added all(?) three colored oxyd rotor sprites from the PC version of oxyd
  • renamed the credits roll module to closing credits module
  • removed the short main menu after the first intro title loop has been played
  • fixed not resetting the volume on music playback after song fadeout
  • fixed using the old successdenied software logo, was supposed to be replaced long ago
  • fixed not hiding the mouse cursor when the solar selector has been cancelled
  • fixed the window not resizing when the game engine was not running
  • added new titles and many names to the closing credits module
  • fixed a bug where the cursor position in the text prompt module would not be reset
  • started adding customized closing credits depending on the highscore entry
  • started designing a new splash screen and website header for the remake project
  • created a much bigger cover text artwork with the help of vectorizing software
  • added two more names to the special thanks in the closing credits module

v0.55 – April 2016

  • fixed a bug in the level generator where the defined space atlas code has not been used
  • added output of file sizes when loading files
  • added output of space atlas meta data when loading the codes
  • fixed a bug where the final 176th page of the space atlas was parsed but not saved
  • fixed a bug where the last bracket when parsing the raw atlas file has not been removed
  • fixed removing one more character at the end of the raw atlas file
  • wrote methods for setting and unsetting function key menu bar accelerators on demand
  • the certificate module now removes some accelerators to hijack the function keys
  • added control actions for all the function keys
  • fixed possible nullpointers on triggering key events for unset controllables
  • fixed no buffers being created after restoring from or switching into fullscreen mode
  • readded typo in the certificate printing screen as a comment in the german resource bundle
  • measured all the printer driver printout durations for the certificate mockup module
  • fixed a wrong pixel in the dongleware font letter ‚d‘ that was unnoticed for years
  • implemented the original certificate printing menu parts and all the options for it
  • added a method to redraw the previous frame again
  • fixed exceptions after recreating the canvas buffers
  • replaced pause after solar selector with repeatedly drawing the previous frame
  • fixed mouse clicks not working in the certificate module
  • removed some obsolete code for drawing onto the buffer in the graphics engine
  • made window resizing and fullscreen switch handling safer through the graphics engine
  • removed all synchronized statements from the graphics engine to speed things up
  • pulled initialization of the space atlas and the levels.txt parser into the client startup
  • removed wrong output at highscores initialization
  • added XOR mode in ship decorator class (for the shield and thrust animation)
  • implemented actually drawing the final winning certificate
  • implemented the certificate text being drawn either centered and left aligned
  • will use the left aligned option, since the original game seems to use it
  • the certificate module will now actually send the certificate to the printer
  • landscape orientation will now be preselected when choosing to print the certificate
  • printing the certificate now also uses interpolated image scaling to fit the whole page
  • created a new special certificate printer class that handles all the printing stuff
  • added a method to retrieve the list of available printers
  • added a cancelling method for printer jobs
  • implemented a credits roll module for the ending of the game
  • fixed line spacings and added all the intro titles to the credits roll
  • confirmed left alignment for the final balance in the drawn certificate

Show complete changelog

nach oben