Changelog

v0.9.23 – March 2024

  • started implementing junit test cases for Vector2D math class
  • added a new 2024 build splash image to the project
  • updated the project from using ProGuard version 7.3.2 to version 7.4.2
  • fixed a bug where the game statistics dialog could not be opened anymore
  • rewrote gathering of all statistics metrics for the statistics dialog
  • added more log warning output for the game statistics
  • removed obsolete setters in the game statistics class
  • implemented replay method to determine if the replay version is compatible
  • tried fixing massive swing problems that have occurred for no reason
  • implemented a test window class to find the cause of the swing problems
  • removed old jar in jar loader dependency from eclipse runnable jar feature
  • added creating a dst folder for distribution of dependencies/libraries
  • all jar dependencies will now be extracted and repackaged when building the jar
  • the runnable fat jar of the game now also works with Java 17 again
  • removed showing an unnecessary warning when parsing an empty level patch configuration
  • confirmed that the game client runs with Java 21 but the audio is broken then
  • switching to Java 21 actually solves the mysterious Swing problems with all dialogs
  • fixed including duplicate library classes in the proguard ant targets
  • cleaned up the build process and removed redundant folder handling
  • added several demo classes for software line audio mixing and tone generation
  • started rewriting audio playback using software mixing for a single source line
  • implemented fixes for narrow no-break spaces appearing in newer java formatted time
  • fixed a bug with debris explosions being drawn when their base explosion is inactive
  • fixed an old bug in the station trapper that prevented creating more than one mine layer
  • deprecated an old station trapper method and removed redundant call to trap index setter
  • fixed a bug that left the starlaser without a weapon after station trap placement
  • tried finding a way to retrieve another mixer on newer Java versions under linux
  • added icedtea-sound.jar including libicedtea-sound as a dependency to the game libraries
  • implemented loading the shared library libicedtea-sound.so located in the workspace
  • implemented retrieving a PulseAudioMixer as default audio device with Java 21
  • finally the game can play more than one sound simultaneously again using PulseAudioMixer
  • modified the ant build script to include icedtea-sound and its native library
  • implemented extracting native libraries into the game folder to allow loading them
  • the jar file can now extract the native icedtea-sound library and use it for audio
  • implemented initializing the audio playback device and showing information and warnings
  • fixed potential problem with the wrong object being terminated when enemies collect ware
  • implemented object based collision handling methods for collisions with floating aliens
  • implemented object based alien collision handling method for the player ship
  • implemented default implementation alien collision handling for enemy ships
  • the level will now check all enemies for collisions with all alien objects
  • added some header echo output for certain java properties in the ant build script

v0.9.22 – November 2023

  • implemented utility methods to determine hostname and ip address of the current machine
  • starting the multiplayer server now logs the hostname and ip address that it is using

v0.9.21 – September 2023

  • implemented enemy ships having their own tailspinning duration values
  • reduced tailspinning time for maforian enemies and increased their bounce mass
  • reduced acceleration for maforian enemies to the same value as the players ship
  • implemented object based collision handling methods for station collisions
  • changed maforians to just fly through the station while delivering stolen cargo
  • fixed enemy ships exploding when being despawned by the station during delivery
  • fixed redeployment for piraton enemies after object based station collision handling
  • removed now redundant destroy method from neutralroamer and neutraldeliverer class
  • rewrote generic returnware enemyship method to handle returning stolen ware
  • removed two older returnware methods that contained lots of redundant and bad code
  • rechecked all 16 mothermaforian mono sprites by comparing to the SHL file
  • recreated all 16 mothermaforian mono sprites for the sprites archive
  • created all 16 mothermaforian color sprites and added them to the resources
  • added SPI_DTAM shapelist file to the resources and created entries in the library
  • removed the 16 mothermaforian mono sprites from the png file resources
  • implemented returning shapes for the mothermaforian object
  • implemented an enemypool class for stations which handles instantiating enemies
  • implemented creating maforian formations when they are detected in the enemypool
  • rewrote enemyship deployment and redeployment for stations to make use of enemypools
  • stations will now be able to (re)deploy several enemies at once if the queue suggests it
  • fixed neutral ships accidentally destroying stations upon arrival
  • deployment of mothermaforians with two maforians as a group now basically works
  • implemented maforians following the mothership and turning towards the target
  • maforians in formations will now get unlocked as soon as their mothership is destroyed
  • implemented object based collision with station handling method for the playership
  • fixed playership being able to interact with stations that are not alive
  • simplified enemy deployment logic in the level and removed redundant code
  • implemented a play method that makes use of basic sound panning
  • changed the default line audio format from mono to stereo
  • reimplemented using pan or balance audio line controls if they are available
  • finally got a single sound to play with panning enabled successfully for the first time
  • implemented more methods in the sound engine to get mixer lines and line formats
  • implemented debug methods to get and print a list of available audio formats for a line
  • rewrote all the sound engine methods to get mixers, audio lines and audio formats
  • implemented methods to print all combinations of audio lines and supported formats
  • implemented method to print all mixers with all audio lines and all supported formats
  • using stereo channels seems to destabilize the audio of the game, so only mono for now
  • tried finding a way to get the maforian formation code to work authentically
  • confirmed that maforians locked to mothership can steal cargo, but won’t return it
  • fixed a bug where the time played was cast to the wrong type in the statistics
  • readded idle time after deployment to help deploying maforian formations
  • added follower number as a maforian attribute to define their position in the formation
  • maforians in formations will be pulled towards certain wing points behind the mothership
  • finally got the maforian formations to work and it looks almost fine for now
  • fixed a bug where neutral deliverers exploded when delivering their cargo
  • removed code that despawned neutral roamers as soon as they touch a station
  • fixed generating shieldmothermaforian images for the ship selector buttons
  • fixed ship selector animations not using shapes for the mothermaforians and harakiris
  • created empty dummy method for gameobject collisions with ware objects
  • implemented object based ware collision handling method for the player ship
  • implemented default implementation ware basic collision handling for enemy ships
  • moved delayed playback of ingame song into delayed game event handler
  • fixed a bug where maforians would never return their ware even when no longer locked
  • changed define invader can shoot parameters from local to global in the levelstxtparser
  • the level will now check all enemies for collisions with all ware objects
  • added cantina call powerup to the ‚grant all powerups command‘
  • moved all cantina call code into the powerup manager and thus made it player specific
  • removed check tick events method in the solar system class
  • implemented an update method for the powerup manager to handle updates to powerups
  • removed shield and cantina call checks from the playership update code
  • confirmed that the players motion is taken into account for cantina call enemy behaviour
  • increased the time that enemies need to reach their cantina call flight motion
  • implemented vector2d methods to merge base+current motions or merge them into base
  • implemented method to unlock a formation maforian from its mothership
  • fixed a bug where a formation maforian loses most of its momentum when unlocked
  • implemented a method to help explicitly updating a base object for any derived object
  • tried fixing problems with unequal object updates becoming apparent at high speeds
  • implemented a single method to add all new game objects for all types
  • new game objects will now be added only at the beginning of every game update
  • renamed old remove-methods in the solar system to reflect them removing all entities
  • implemented a single method to remove all inactive game objects for all types
  • dead or inactive game objects will now only be removed at the end of every game update
  • changed all remaining types for object type specific collections to gameobject
  • fixed cast to wrong data type for mileage statistics after ending a level
  • implemented log warnings when level script commands are not terminated properly
  • implemented floodfilling modifier for asteroid level script command
  • confirmed that station script command without fill modifier is not applied to the level
  • reconfirmed all default values and value ranges for the station script command
  • added new level station parameters constants with proper naming to the game config
  • removed some redundancy in station config modifier code and added more cleanup code
  • properly inserted all station default values and value ranges in the levels text parser
  • refactored station deployment variables and used the new default values
  • confirmed that sector range parsing must use 0 as default value for all unset params
  • switched order of parameters for sector range parsing in level scripts from x-y to y-x
  • rechecked all 8 explosion ‚e‘ mono sprites by comparing to the SHL file
  • recreated all 8 explosion ‚e‘ color sprites and added them to the resources
  • added SPE_SPR5 shapelist file to the resources and created entries in the library
  • removed the 8 explosion ‚e‘ mono sprites from the png file resources
  • fixed the order of explosion animations to make SPE_SPR5 to become explosion ‚e‘
  • implemented returning shapes for the explosion ‚e‘ object
  • added a sprite from the space trader palm os game to the optional project graphics

v0.9.20 – August 2023 (Laid-Off & EPS version)

  • updated the project from using ProGuard version 7.3.1 to version 7.3.2
  • started implementing observer code to allow gameobjects to react to certain events
  • created reaction triggering interface and added empty dummy methods to all ship classes
  • rechecked all 16 maforian mono sprites by comparing with the SHL file
  • fixed 5 incorrect maforian mono and color sprites where the original designs differ
  • recreated all 16 maforian color sprites and added them to the resources
  • rechecked 3 enemy shield mono sprites by comparing with the SHL file
  • added 1 missing enemy shield mono sprite that seems to be unused but was in the designs
  • recreated existing 3 enemy shield mono sprites and added them to the resources
  • created all 4 enemy shield color sprites and added them to the resources
  • added SPI_DELT shapelist file to the resources and created entries in the library
  • removed the 16 maforian mono sprites from the png file resources
  • removed the 4 enemy shield mono sprites from the png file resources
  • implemented returning shapes for the maforian object
  • changed statistics text descriptions for levels played and distance travelled
  • the weapon factory class now decides whether an enemy ship needs any weapon at all
  • removed redundant playback of shot sound for decoy launching code
  • started rewriting enemy shooting code to make it more dynamic
  • pulled weapon type and reaction event type enums into their corresponding classes
  • implemented reaction event handler for player shot & enemy shot fired events
  • implemented adding player ship and enemy ships as listeners for shot events
  • added convenience method to find out whether a solar system runs a replay
  • added enum for all saved metrics in the game statistics class
  • added generic method to set values for any statistics metric utilizing common checks
  • avoided repeated replay playback checks by using the generic setter method for stats
  • implemented gfx mode aware method to return either mono or colored image for a shape
  • fixed shipdecorator methods to draw enemy shield shapes on maforian shapes
  • implemented generic methods in the classic gfx engine to draw a shape on an image
  • added ticks value output to gameobject and playership tostring methods
  • gameobject tostring method now reusing short tostring method for code deduplication
  • implemented convenience method to determine if a ship has any weapon at all
  • implemented code stub for ships colliding (docking) with a space station
  • renamed checkstation method to updatestation and refactored some smaller methods
  • started implementing multiple weapon handling for all the ships in the game
  • pulled reaction shots for decoy and mine weapons out of solar system into ship classes
  • implemented keeping an index on the currently selected weapon for easier reference
  • the selected weapon index will be decreased whenever the weapon is removed from the list
  • implemented code to select next and previous weapons for any ship
  • fixed an NPE when ships were removed from the reaction event handler listeners
  • fixed an old, stupid bug where all player shots were always added in an unsafe way
  • fixed a bug where collected powerups were logged as empty powerup before depleted
  • fixed peashooters to allow them to shoot again after shoot handling rewrite
  • implemented aligned duration counter for ships to check how long they are aligned
  • fixed enemyships to only shoot decoys at objects of type playershot
  • fixed showing log message even when removing a non-existant reaction event listener
  • implemented a neutral ship generator for the enhanced version
  • in the enhanced version now up to 50 basic neutral ships will roam the level
  • implemented separate tostring methods for all shot subtype game objects
  • implemented separate tostring methods for all general level game objects
  • implemented separate tostring methods for all enemy ships
  • implemented convenience method to determine if two level coordinates are float-equal
  • implemented convenience method to determine if an object attaches with a coordinate
  • created two types of neutrals: deliverer and roamer, being generated constantly
  • implemented methods to actually count the number of enemy ships and all ships in level
  • fixed enemy spawn limit prematurely reached when neutrals are also spawned in the level
  • rechecked all 16 harakiri mono sprites by comparing to the SHL file
  • recreated all 16 harakiri mono sprites for the sprites archive
  • created all 16 harakiri color sprites and added them to the resources
  • added SPI_KAMI shapelist file to the resources and created entries in the library
  • removed the 16 harakiri mono sprites from the png file resources
  • implemented returning shapes for the harakiri object
  • refactored some enemy ship variable names to make their meaning clearer
  • started writing a prototype enemy ship class intended as an AI enemy construction kit
  • pulled code for determining sector number and position from playership into gameobject
  • generalized and simplified sector number and position calculation for gameobjects
  • simplified sector change handling and refactored method name
  • fixed an NPE when updating the missing weapons of the turrets
  • created ai.original package and moved all original AI enemy ship classes there
  • cleaned up, simplified and restructured much of the maforian enemy AI code
  • improved maforian enemy behaviour and fixed some of its navigation problems
  • finally the maforian enemy behaviour seems to be getting near-perfectly accurate
  • enabled ship selector to spawn shield maforian enemies
  • implemented non-destructive tailspinning for shield maforian enemies
  • simplified code for tailspinning either clockwise or counter-clockwise
  • fixed tailspinning for maforians to either use clockwise or counter-clockwise
  • implemented gamemath convenience method to get boolean clockwise/counter-clockwise spin
  • simplified direction-aware tailspinning for all those enemies that use it
  • removed old tailspin method that also caused gameobject vectors to get updated twice
  • reduced some more excessive code and refactored navigation for maforian enemies
  • fixed maforian shield animation which used an additional sprite that is obsolete
  • removed a redundant cantina powerup handling method in the enemy ship class
  • made mothermaforian enemies extend the maforian class to have their behaviour shared
  • implemented ship selector button deploying shieldmothermaforians on demand
  • added shield option information to the gameobject types and enemy deployment setups
  • finally fixed redeployment for maforians and mothermaforians with or without shield
  • implemented maforians and mothermaforians being destructible by player mines
  • moved mine explosion effects from playership collision check into own destroy methods
  • fixed log output when ejecting cargo on playership destruction
  • reconfirmed that all cargo is immediately ejected although hud is still unloading
  • added visible particle count to the debug output text
  • fixed neutral ships filling the entire level with acceleration particles
  • this also fixed explosion particles not being created anymore due to particle limit
  • added gamescreen diagonal and half diagonal constants to the mainconfig file
  • neutrals will only generate acceleration particles when they are visible on screen
  • added minedroppershot and -debris collision destruction as default for enemy ships
  • fixed counting escaped enemy ships for the game statistics after exiting a level
  • again introduced separate classes for shield maforians and shield mothermaforians
  • fixed tailspinning maforians not losing their stolen cargo
  • fixed code for ejecting cargo not actually removing cargo from the enemy ships
  • implemented mothermaforians stealing ware when destroying the player
  • removed losing ware on tailspinning since that never happens in the original game
  • added mothership parameters with getters and setters to the maforian enemy
  • started implementing formation handling code where maforians follow their mothership
  • readded missing tostring method to maforian class after the rewrite

v0.9.19 – April 2023

  • split up rendering process into several smaller methods to enable using them separately
  • implemented non-finalized version for rendering simple images to the screen
  • implemented rendering initializing method as opposed to finalizing rendering
  • started simplifying creation and disposal of graphics objects for the screen
  • mirrored several rendering methods to allow reusing previously created graphics objects
  • implemented keypress handling for Shift+Space and Shift+Backspace in the controls
  • implemented intro solar system class that allows showing ingame scenes during the intro
  • created methods to enable using the blur filter in the core modules
  • finally it is possible to show gameplay demos during the intro title animation
  • implemented a delayed camera object that follows a locked object within a given delay
  • implemented vector methods to allow getting and setting positions as copies
  • the intro replay now uses a delayed camera movement that makes the action more dynamic
  • pulled camera initialization code into separate method to allow overriding
  • rechecked all 16 pirateturret mono sprites by comparing with the SHL file
  • recreated all 16 pirateturret color sprites and added them to the resources
  • added SPI_TGUN shapelist file to the resources and created entries in the library
  • removed the 16 pirateturret mono sprites from the png file resources
  • implemented returning shapes for the pirateturret object
  • fixed and cleaned up some of the game engine launch code
  • moved gem text editor and particles test launch code into their own threads
  • fixed gem text editor branching directly into the game after pressing esc
  • removed some redundant game statistics calls during the game

v0.9.18 – March 2023

  • added a new 2023 build splash image to the project
  • updated the project from using Launch4j linux version 3.14 to version 3.50
  • updated the project from using ProGuard version 7.2.2 to version 7.3.1
  • implemented menubar function to log which menu item has been selected
  • implemented always logging whenever a menu item in the menubar is selected
  • fixed a textscroller bug due to a deprecated drawing method used in the billing module
  • rechecked all 10 explosion ‚d‘ mono sprites by comparing to the SHL file
  • fixed 2 explosion ‚d‘ mono and color sprites that were not cut out pixel perfectly
  • recreated all 10 explosion ‚d‘ color sprites and added them to the resources
  • added SPE_SPR4 shapelist file to the resources and created entries in the library
  • removed the 10 explosion ‚d‘ mono sprites from the png file resources
  • fixed the order of explosion animations to make SPE_SPR4 to become explosion ‚d‘
  • implemented returning shapes for the explosion ‚d‘ object
  • fixed several entities to use the correct explosion spriteset d
  • changed the label for number of new highscores statistics value
  • implemented statistics for total aliens lost
  • when the player is gameover then this will also increase stats for lost ware and aliens
  • quitting the game via ESC now also increases stats for lost ware and aliens
  • enemies delivering ware will now also deliver their lost alien buddies
  • shortened all those lengthy calls to game statistics class in the solar system module
  • cleaned up code for the game mode selector and simplified logging user interactions
  • implemented a text resource method to determine if a key exists in the bundles
  • implemented text resource methods to replace keys in compound texts
  • completely rewrote initialization and configuration of the menubar
  • menubar configuration now happens more centralized after gfx engine initialization
  • selecting menu items now allows logging the actual untranslated default texts
  • simplified code to change the language for the menubar
  • modified key replacement in compound texts to allow replacing multiple keys at once
  • implemented solar system methods to get all sector objects in the current level
  • implemented solar system method to get a random station in any sector
  • implemented solar system method to get a random powerup container in any sector
  • implemented solar system method to get a random sector object in any sector
  • implemented showing percentage values for statistics entries
  • implemented statistics for levels won in percent
  • the playership object now keeps track of the highest speed that it reached in a level
  • implemented statistics for highest speed
  • fixed a bug where the player ship was destroyed infinitely on gameover
  • fixed showing only 3 lost lives on gameover in the statistics when there are actually 4
  • ware and aliens that are currently floating in the level are counted towards lost values
  • implemented solar system methods to count floating ware and aliens currently in the level
  • implemented solar system methods to count all ware and aliens in the game
  • fixed counting lost ware and aliens on win, lose or esc conditions in a game
  • modified stats to counting only surplus aliens in enemy ships as lost aliens
  • fixed counting lost ware twice on gameover when cargo is ejected immediately
  • cleaned up ogg decoder class and refactored lots of unreadable variable names
  • cleaned up fadeable ogg clip class and refactored some variable names
  • rechecked all 4 cycle mono sprites by comparing to the SHL file
  • created all 4 cycle color sprites and added them to the resources
  • added SPI_CYCL shapelist file to the resources and created entries in the library
  • implemented returning shapes for the cycle object
  • removed the 4 cycle mono sprites from the png file resources
  • fixed a calculation error for overlap testing in the level generator
  • prevented the players starting position from being too close to sector objects
  • implemented storing custom level configurations in the savegame for custom games
  • implemented replaying and resuming games using custom level configurations
  • in the game statistics output removed blank between the value and the percent sign
  • created new package for gfx converter classes and moved all converter classes there
  • started implementing an Atari ST Dongleware PAC bitplane file format converter
  • implemented utility methods to convert atari bytes to unicode chars and vice versa
  • implemented Dongleware bytes reader class that allows reading Dongleware specific data
  • implemented a method to return the next bit in Dongleware byte reader
  • finally the Dongleware PAC bitplane file converter can at least read the oxyd title image
  • fixed an error with skipping quadrants in PAC bitplane decompression
  • some more PAC bitplane files can now be successfully converted, still unreadable ones left
  • implemented the missing draw block uncompressed function for the PAC decompression
  • implemented a missing undocumented dithered xor invert mode for the PAC decompression
  • finally the Dongleware PAC bitplane file converter can read all the original PAC files
  • implemented finishing images when all block data ends prematurely
  • oxyd and spacola title images are now rendered completely up to the last line
  • simplified xor invert mode code and pulled invert modes into separate functions
  • cleaned up some more WIP code in the Dongleware PAC bitplane file converter
  • pulled lots of utility methods out of enum gfx library into graphics utility class
  • removed redundant utility code from the Dongleware PAC bitplane file converter
  • pulled lots of utility methods out of classic gfx engine into graphics utility class
  • created new gfx.lib package and moved all gfx library related classes there
  • created a new pac bitplane gfx library class for Dongleware packed bitplane files
  • moved two dithering related methods from graphics utility class into dithering class
  • fixed a bug in the packed bitplane converter with rows that end prematurely
  • fixed inverting images that have the xor invert flag set and have been xor’d properly
  • added TITLE.PAC to the resources and implemented loading it in the library
  • reimplemented showing the original title screen when starting in classic mode
  • added SPA_RENT.PAC to the resources and implemented loading it in the library
  • added SPACOLA.PAC to the resources and implemented loading it in the library
  • implemented getting both the hud and radar image from the original SPACOLA.PAC bitplane
  • added DONGLE.PAC to the resources and implemented loading it in the library
  • fixed bad order of parameters for the image+filename+transparency gfx constructor
  • fixed redundant dollar characters in the menu bar keys which led to two wrong captions
  • removed all monochrome view png files for certificate, hud and radar
  • fixed not loading colored radar image as png file
  • fixed a serious bug in handling player termination when traversing the object tree
  • created a copy constructor for the shape object
  • fixed accidentally modifying the rectangular debris sprites when loading decoy sprites
  • added two implementations for blur filters and allowed enabling them in the gfx engine
  • improved and simplified adding and removing filters and put some log output there
  • replaced pausing the engine with drawing a black screen which leaves the game responsive
  • implemented additional playback mode of a replay on repeat
  • created a new menubar submenu for filters and added invert, interpolate and blur filters
  • fixed adding filter menu item listeners and filters always twice per mouse click
  • prevented enabling filters twice by accident
  • fixed counting replay gameplay events towards player statistics during playback
  • implemented simulating highscore status events in replay playback
  • fixed a bug where recollected ware was dropped from the game upon player destruction
  • added missing parameters to ware and shot tostring methods
  • added a replay solar system class that is intended to be used for replays only
  • split up the game content rendering methods and made rendering much more flexible
  • pulled more rendering composition code into the solar system module
  • renamed gfx engine methods to show that they render images finalized (thus exclusively)
  • implemented finalized and non-finalized version for all the different rendering methods

v0.9.17 – August 2022

  • finished rewriting game object termination for all relevant classes in the project
  • simplified debug methods for destroying/removing all enemies in the solar system
  • fixed debug methods to also remove newly added enemies, dissolves and score indicators
  • rechecked all 16 peashooter mono sprites by comparing to the SHL file
  • fixed 7 peashooter mono sprites that have never been cut out pixel perfectly
  • also fixed 7 peashooter color sprites respectively
  • recreated all 16 peashooter mono sprites for the sprites archive
  • recreated all 16 peashooter color sprites and added them to the resources
  • added SPI_PIG shapelist file to the resources and created entries in the library
  • removed the 16 peashooter mono sprites from the png file resources
  • implemented returning shapes for the peashooter object
  • implemented statistics for total games completed (aka full playthroughs)
  • implemented a method to iterate all solar system sectors and check their visited status
  • implemented statistics for total sectors visited
  • rechecked all 10 explosion ‚c‘ mono sprites by comparing to the SHL file
  • recreated all 10 explosion ‚c‘ color sprites and added them to the resources
  • added SPE_SPR3 shapelist file to the resources and created entries in the library
  • removed the 10 explosion ‚c‘ mono sprites from the png file resources
  • fixed the order of explosion animations to make SPE_SPR3 to become explosion ‚c‘
  • implemented returning shapes for the explosion ‚c‘ object
  • implemented statistics for total mines destroyed
  • added last level gameplay „statistics“ for binary win/lose/start/complete states
  • fixed ship selector using images instead of shapes which made them being centered wrong
  • implemented statistics for total new highscores set
  • implemented statistics for total collisions with asteroids
  • fixed object termination code for ship and asteroid collisions with several game objects
  • fixed several game objects calling their own destroy method directly
  • fixed modal confirmation dialogs not having their window title set
  • implemented drawing of shapes in the vortex animation
  • fixed npe when trying to draw non-shapes in the vortex animation
  • renamed rocket game object type to missile
  • implemented basic decoy launcher weapon code
  • added a method to remove all aliens at once from an enemy ship
  • fixed a bug where not all surplus aliens are ejected when an enemy ship is destroyed
  • fixed a log output error in the ware class where the wrong class was referenced
  • the peashooter can now launch decoys to stop incoming player shots
  • added spawning a small explosion when the player shot has hit a decoy
  • renamed decoy shot object type to decoy
  • pulled code for handling player shot hit by a decoy into the destroy method
  • added sound effect on decoy hit for player shots
  • fixed peashooter launching decoys while already tailspinning
  • fixed log output errors in the abstract shot class
  • implemented decoy animation and max distance logic
  • implemented choosing the decoy launcher as a usable weapon for the player
  • made the discovery that decoy sprites are actually square debris sprites but inverted
  • implemented shapelist fixes for inverting the square debris sprites
  • implemented returning shapes for the decoy shot object
  • removed the 6 old mono decoy sprites that were always wrong and unnecessary anyway
  • created 8 colorized decoy sprites and added them to the resources
  • fixed old playonce logic for the sound lib, explicitly playing sounds once works now
  • implemented a soundfx player window that works just like the jukebox window
  • implemented methods to play sounds exactly once, even if they are set to looped
  • all the entries in the jukebox and the soundfx player will now be sorted
  • implemented methods to play sounds exactly once but per given game object
  • fixed explosion constructors that always abandoned the origin object
  • implemented a game object method for a shorter tostring output
  • implemented handling of terminate object and root object when the player is destroyed
  • implemented statistics for total destroyed by enemies
  • turned the enemyfactory (used in the station) static, just as the weaponfactory
  • changed all enemies constructors to allow setting their origin object
  • pulled station code for random enemy creation into the enemyfactory class
  • the decoy launcher will aim directly at the target if there is no smart aim available
  • fixed order of parameters for several methods in the aim helper class
  • fixed order of parameters for several methods in the enemyfactory class
  • enemies deployed from a station will now have the station set as their origin object
  • rewrote the method to handle the terminate object to allow traversing the object tree
  • implemented statistics for total destroyed by mines
  • changed the border colors for the window title panel to fix the border looking too short
  • allowed selecting single rows in the statistics window and the highscore window

v0.9.16 – July 2022 (Lost Eye version)

  • fixed a bug in the scale image 2x method where it returned the original image size
  • fixed using localized title for the modal dialog instead of supplying title text key
  • implemented logging exception stacktraces when using unknown text resource keys
  • implemented a utility method to count the number of lines for a given string
  • finished the generic modal dialog class which can be used for action confirmation
  • renamed modal dialog to modal confirmation to express what it asks for
  • implemented executing a given task when confirming the modal confirmation dialog
  • replaced the swing optionpane for resetting the highscore with a modal confirmation
  • fixed using text content in the modal confirmation instead of text resource keys
  • successfully implemented loading and saving of game statistics to the filesystem
  • the game is finally able to keep track of and display detailed game statistics
  • implemented statistics for both the last game played and the current session
  • implemented statistics for total levels played
  • implemented statistics for total credits gained
  • implemented statistics for total credits lost
  • implemented statistics for total powerups collected
  • cleaned up powerup collecting code a little and removed redundant code
  • implemented statistics for total levels successfully completed
  • implemented statistics for total levels failed or quit
  • implemented method to theoretically allow the player to lose more than one life at once
  • implemented statistics for total time played
  • implemented statistics for total ware delivered
  • fixed a bug that prevented piratons from collecting aliens when they have stolen cargo
  • implemented statistics for total ware lost
  • implemented statistics for total mileage
  • fixed not rounding the double values when displaying the total mileage
  • implemented methods for resetting some or all of the game statistics
  • added a button in the view statistics window to delete the statistics
  • fixed not reloading the content of the view statistics window after deleting its data
  • pulled methods for opening cargo bay, ejecting aliens and ware into the playership class
  • implemented statistics for total enemies destroyed
  • the statistics will now be saved directly when leaving a level instead of client exit
  • the statistics will now also be saved directly after resetting the stats
  • implemented statistics for total enemies escaped
  • implemented statistics for total asteroids destroyed
  • fixed still image when exiting a level prematurely while saving statistics
  • started fixing and rewriting obstacle avoidance for the bot player once again
  • extracted 3 gem dialog icons for question, exclamation and stop signs
  • created colored versions of the gem dialog icons
  • added 3 colored and 3 mono gem dialog icons to the resources
  • implemented only resizing small 16×16 icons in the modal confirmation dialog
  • modal confirmation dialogs will use 32×32 gem dialog icons for a more authentic l&f
  • modal confirmation dialogs will use colored or mono dialog icons depending on game mode
  • implemented statistics for total aliens collected
  • removed possibility to add negative amount of or zero lives to the player
  • added convenience method to the flap display to subtract the whole value at once
  • implemented method to subtract an arbitrary number of extra lives from the player
  • rewrote subtracting lives code on player ship destruction, simplified the process
  • the force gameover command will now properly report all lost lives to the statistics
  • started rewriting game object destroy logic to allow naming the cause of destruction
  • implemented statistics for total shots fired
  • added game object fields for termination position, time and the causing game object
  • implemented a terminate method for the game objects to record the destroy circumstances
  • pulled bomb, shield and surfing checks out of the player ship update method
  • simplified player ship update method by always calling seperate check methods
  • implemented statistics for total black hole flythroughs
  • increased the height of the view statistics window
  • implemented a convenience game object method to restore a previously terminated object
  • started rewriting major parts of the player ship destruction logic to gather more info
  • fixed broken bomb animation code after rewriting player ship destruction logic
  • pulled bomb animation handling code into a separate method in the hud class
  • added the game object label to the string output method for all game objects
  • log messages for player ship destruction are now unified and will always show the cause
  • reverted an earlier edit that removed acceleration particles from the enhanced game
  • removed all direct calls to the destroy method in the player ship class
  • implemented statistics for total pirate stations docked
  • updated the project from using ProGuard version 7.1.1 to version 7.2.2
  • fixed some more ugly code formatting that eclipse ruined again
  • replaced dozens of calls to the alive setter with call to new terminate method
  • implemented setting game object termination values for tailspinning enemies
  • prevented resetting previously set game object termination values

v0.9.15 – June 2022

  • started restructuring the bot player code
  • rechecked all 10 explosion ‚b‘ mono sprites by comparing to the SHL file
  • recreated all 10 explosion ‚b‘ color sprites and added them to the resources
  • added SPE_SPR2 shapelist file to the resources and created entries in the library
  • removed the 10 explosion ‚b‘ mono sprites from the png file resources
  • fixed the order of explosion animations to make SPE_SPR2 to become explosion ‚b‘
  • implemented returning shapes for the explosion ‚b‘ object
  • fixed using the wrong number of sprites for the explosion ‚f‘ spriteset
  • fixed line lengths for the debug output to beautify the generated debug overlay
  • created a simple view game statistics window and added an entry in the game menu
  • implemented showing the overall collected score bonus in the statistics window
  • added current value for score bonus collected during this session only
  • removed some unused code in the view highscore window class
  • created a generic modal dialog class to replace the default swing optionpanes

v0.9.14 – March 2022

  • implemented a game object method to traverse the origin object tree upwards to the root
  • implemented a shot object method to find out if it is a player shot
  • implemented a ship object method to find out if it is the origin of a specified shot
  • minedropper shots will now spawn debris objects depending on who the origin object was
  • fixed calls to various shot constructors that have changed
  • started implementing object based collisions and destruction for player shot updates
  • implemented shot collision methods for various enemy types and other game objects
  • simplified rescue capsule opening logic by removing redundant opening attribute
  • cleaned up huge and complicated update method for player shots
  • started implementing object based collisions and destruction for sector object updates
  • fixed updating enemies and bouncing enemies even though they might be already dead
  • finally rewrote all the game object update methods to use object based collisions
  • finished rewriting game object classes to offer object based collision handling
  • reverted removing objects before updating them because of regression problems
  • fixed regression with collecting aliens where they could be collected several times
  • added more log output messages to collecting aliens and triggering status messages
  • pulled alien collecting code from the solar system class into the playership class
  • added more log output messages to collecting ware
  • pulled ware collecting code from the solar system class into the playership class
  • fixed regression with collecting ware where it could be collected several times
  • fixed regression with enemies not being removed when trying to deliver stolen cargo
  • implemented a menubar item to quickly start a demo game from the file menu
  • fixed the player bot to always wait until the vortex animation is finished
  • made the player bot fly a little more naturally by implementing a motion threshold
  • prevented the player bot from shooting at cycle and spermbird enemies
  • implemented a method to easily find an enemy that is currently stealing cargo
  • made the player bot intercept enemies stealing cargo if the player needs to
  • started implementing some basic dodging intelligence for the player bot
  • added methods to try to determine the next collision with a nearby object
  • fixed a regression bug where a hurricane shot would always destroy the player
  • made the player bot try dodging asteroids, enemy shots and enemy ships
  • the player bot kinda manages to dodge dangerous objects if it has enough time to do so
  • fixed missing destroy method for minedroppers where they spawn mines
  • increased priority for cargo hunting in the bot players behaviour
  • implemented the player bots ability to decide whether to turn left or right for dodging
  • added method for collision prediction using custom object sizes to allow safety distances
  • rewrote finding a course for object dodging using radians analysis
  • tried improving the bots dodging abilities but somehow made it even worse
  • rewrote calculation of a flee vector once again and finally made a little progress
  • the bot will use increased virtual object sizes for all collision prediction tests
  • fixed the player bot cease actions when an enemy has stolen cargo
  • implemented a separate method to cancel a running level
  • added a new command in the command manager to cancel the running level
  • fixed looped acceleration sound effect keep playing when the level has been cancelled
  • all sound effects and the level timer will be stopped before the level is cancelled
  • implemented target arrival logic for the player bot for powerup containers and stations
  • the player bot will now smoothly arrive at those targets and brake just in time
  • this accidentally fixed the player bot not collecting all rockets in a container
  • fixed the player being able to collect powerups while surfing animation is ongoing
  • fixed a problem where container magnetism could be applied to non-existing containers
  • implemented waiting logic for the player bot when visiting a powerup container
  • pulled calculation of arrival flight speed into separate method
  • implemented proper bot methods to determine every collision time and position
  • implemented calculating a correct avoidance force for the most threatening object
  • the player bot is finally able to maneuver around asteroids in most cases
  • implemented a method to get a description of which direction a given vector points to
  • added id to the string representation for generic game objects
  • fixed a bug in the string description for vectors
  • added speed value to the string description for vectors
  • implemented graphical highlighting of game objects that the bot is targetting
  • fixed a regression bug that enabled asteroids to collide with containers and blackholes
  • implemented vector method to allow adding two simple double values to the motion vector
  • added a convenience method for radians calculation that takes a double array
  • implemented drawing arrows for all the game objects motion vectors
  • fixed trying to draw vector arrows for objects standing still
  • implemented drawing highlighted particles on the game screen to show collision points

v0.9.13 – February 2022

  • rechecked all 8 explosion ‚a‘ mono sprites by comparing with the SHL file
  • recreated all 8 explosion ‚a‘ color sprites and added them to the resources
  • added SPE_SPR1 shapelist file to the resources and created entries in the library
  • fixed the order of explosion animations to make SPE_SPR1 to become explosion ‚a‘
  • implemented returning shapes for the explosion ‚a‘ object
  • fixed cycles not being destroyed by the players shield like in the original game
  • started moving collision handling logic into the object classes themselves
  • started rewriting all game loop update code for game objects regarding collisions
  • oxyd rotors are the first game objects to define their own collision handling
  • implemented a default collision handling for collisions with the player ship
  • implemented object based collision handling for peashooter enemy types
  • split up collision handling method into ship collision and shot collision handling
  • fixed wrong log message for the destroy station command in the command manager
  • fixed enemies carrying ware possibly throwing a ware item with a different type
  • implemented object based collision handling for all previously defined enemy types
  • moved generic cargo throwing logic into the enemyship class
  • replaced all ship collision code with object based collision handling logic
  • created object based collision handling method for colliding with asteroids
  • made peashooters bounce and tailspin from the players shield for a better effect
  • removed duplicate code for handling dead enemies in the game loop
  • reduced method complexity from delegating collision handling to the objects themselves
  • deprecated lots of old methods that do not use object based collision handling
  • moved default implementation for game object collisions into ship object class
  • several more enemy ship types can now be deployed directly from the ship selector
  • created object based vanishing logic for game objects that need to despawn
  • implemented object based vanishing logic for aliens, ware and shots
  • cleaned up the way aliens and ware are being removed from the game object lists
  • game objects will now only be added or removed at the beginning/end of an update
  • destroy methods for all game objects will now be called upon being marked dead
  • missile objects will now handle their own emitting of spark particles
  • refactored update methods for ware, aliens and rescue capsules to improve readability
  • fixed the way rescue capsules are being removed from the game object list
  • fixed destroyed enemies possibly losing a ware item with a different type
  • implemented many missing getters and setters of addlists for different game objects
  • added calls to game object destroy methods before removing them from the object lists
  • created common methods for ejecting aliens and ware for enemy ships
  • destruction of enemy ships will now call the common eject aliens and eject ware methods
  • cleaned up update methods for enemies, enemy shots, rescue capsules, aliens and ware
  • cleaned up update methods for explosions, dissolves and score indicators
  • refactored addlists in the solar system class to clean up their names
  • removed ugly getters and setters for all addlists in the level
  • replaced all addlists getters and setters with simple to use delegate methods
  • decided to check objects for alive status in all update methods before updating them
  • added addlist delegate methods for also adding multiple game objects in one call
  • fixed setting wrong object type in the decoy shot class
  • moved piraton exact shot speed aiming into the aim helper class where it belongs
  • fixed shooting for the piraton enemy which will now shoot properly using the aim helper
  • simplified peashot class to remove redundant code in the object initializers
  • fixed initialization for all the shot classes to properly define their origin object

v0.9.12 – January 2022

  • finally added my favorite code metrics/LoC plugin (now Metrics3) to Eclipse again
  • added a new 2022 build splash image to the project
  • updated the project from using ProGuard version 7.1.0beta4 to version 7.1.1
  • rechecked all 16 piraton mono sprites by comparing with the SHL file
  • recreated all 16 piraton color sprites and added them to the resources
  • added SPI_GLID shapelist file to the resources and created entries in the library
  • implemented returning shapes for the piraton object
  • reordered key and modifier constants in the levels txt parser
  • added new modifier constant for harmful invader setting in the levels txt parser
  • implemented global level setting for harmful invader in the levels txt parser
  • fixed a bug with global harmful setting not being checked correctly
  • fixed a bug where the piraton used the wrong sprites
  • compiled the game with Java 17 and confirmed that it works perfectly using it
  • improved performance for writing sector difference debug text
  • created 4 colorized rotorstar sprites and added them to the resources
  • implemented a utility method to easily join two arrays of the same type
  • implemented a temporary fix to allow returning ship decorations as centered shapes
  • ship decorations will now work with ships that use shapes for drawing their appearance
  • implemented a method to floodfill enemy setups in a given sector range
  • implemented parsing the floodfill invader modifier and generate the level accordingly
  • implemented a basic cycle enemy ai that at least manages to circle around the player
  • implemented a method to retrieve a random position in a given distance around an object
  • fixed cycle animation not being updated anymore
  • vastly improved the cycle enemy ai which looks much more like in the original game
  • started slowly rebuilding my ST Spacola playtest and debug environment under Linux

v0.9.11 – September 2021

  • implemented methods to retrieve a player ship for a given name or an index number
  • added player name to the virtual cursor instances
  • implemented a gamemode enum class that contains all the game mode specific information
  • implemented a playerstatus class that contains all savegame related player information
  • implemented adding players to a running game and updating all players equally
  • implemented updating all inputs for all players equally
  • implemented hashcode and equals for new playerstatus, solarprogress and replay classes
  • rewrote replay recording and enabled multiplayer recordings
  • started rewriting initializing playback for a replay
  • tried fixing the currently broken verification of the replay objects
  • generated new toString methods for all savegame and replay related classes
  • fixed a possible NPE when closing an OGG stream too quickly
  • fixed replay verification by removing custom enums from serializable classes
  • fixed not getting control actions for the main player from a replay object
  • got the replays to run again but they always get out of sync after a while
  • painstakingly fixed lots of the broken code formatting that eclipse ruined somehow
  • added a method to return a simple string representation for a ticks counter
  • added ticks indices to lots of log output during the gameplay
  • tried fixing the async replay problems by changing the player initialization
  • fixed a hard to find bug, that caused the replay to become async by collecting aliens
  • at least the singleplayer replays should now work perfectly again
  • unified and simplified alien object initialization in the game
  • generated toString methods for a lot of additional game logic objects
  • fixed initiating game mode in a totally wrong way which resulted in graphic artifacts
  • fixed initiating bot players in multiplayer
  • the multiplayer game finally launches successfully again with bots
  • added a solar selector module prior to launching a multiplayer game
  • implemented a method to select non-existing codebook pages for multiplayer levels
  • recording of multiplayer replays is now basically possible
  • implemented a way to take some random seed and derive a book page and code tab from it
  • implemented a utility method to generate random strings up to a maximum length
  • fixed several off by one errors in the code to generate random strings and book pages
  • implemented deriving singleplayer and multiplayer book pages from random strings
  • fixed animated buttons to also handle SHL shapes instead of images
  • changed the ship selector window to make use of 5 animated buttons with shapes
  • rechecked all the 16 laser shot sprites by comparing with the SHL file
  • created 16 new colored laser shot sprites with their new sizes and using SHL offsets
  • added SPI_LASR shapelist file to the resources and created entries in the library
  • implemented a method to fix an original error in the offsets of the 16th laser sprite
  • implemented returning shapes for the laser shot objects
  • implemented generating random texts with fixed length instead of variable length
  • fixed generating random texts with zero length when calculating the variable length
  • rechecked all 4 rotor star sprites by comparing with the SHL file
  • added SPI_ROTS shapelist file to the resources and created entries in the library
  • the SPI_ROTS SHL file fixed wrong sprite order and offsets in my old rotor star sprites
  • implemented returning shapes for the rotor star object
  • removed call to laser shot shapelist fix again, since i am unsure if this was intentional
  • recolorized all 8 asteroid sprites exactly like the ST Megaroids game in colored mode
  • renamed sprites folder to shapelists to show that it contains original SHL files
  • created 3 colorized minedropper sprites and added them to the resources
  • added a new 2021 build splash image to the project

v0.9.10 – August 2021

  • fixed audio looping issues under Linux & Java 16 but introduced clicking noises
  • now the audio code will open the audio line with the actual requested buffer size
  • finally fixed audio sample looping completely for Linux & Java 16
  • audio is still somehow broken for Linux & Java 8, still no idea how to fix this mess
  • replaced deprecated explicit Integer constructor calls with better valueOf calls
  • tried implementing some safety code for safely stopping the running music thread
  • removed several calls to drain the audio line to see if it improves the stability
  • slightly improved powerup collecting code for the player bot
  • the player bot will now decide if it wants to collect the duplicator powerup
  • fixed a problem where the bot tried to keep playing in level win state
  • added checks to prevent player bot from shooting and accelerating when not allowed to
  • fixed player shots bouncing infinitely inside the station in enhanced mode
  • fixed ogg clips only playing once successfully and staying silent afterwards
  • the game engine will now only play ingame music if enabled and if enhanced mode active
  • finally fixed both sound and music playback for Linux & Java 16 at least
  • fixed level numbers not actually being set for the played solar system
  • switched development environment to Java 16 for now, since Java 8 is broken here
  • from now on Java 16 will be required as minimum version to run with (i.e. for audio)
  • fixed rocket powerups not being initialized correctly with random amounts
  • the player bot enabled menu status is now retained in the game engine
  • fixed too high volume for master gain line controls by reducing the value
  • added a volume offset to get the volume line control value from a master gain value
  • implemented a fix to prevent the bot from being stuck at the start with a mine around
  • enabled the player bot to turn twice as fast when trying to target a dangerous object
  • fixed potential NPE when closing the splash screen too quickly under Java 16
  • implemented a new kind of fadeout for the intro music which is much more authentic
  • found absolutely perfect timing values for the new fadeout
  • implemented methods to determine if a player has the max amount of aliens or credits
  • implemented a method to determine if a player has the max amount of cargo items
  • the player bot will now decide whether it wants to collect free-floating ware or aliens
  • implemented the bot being able to intercept and collect ware and aliens in reach
  • vastly improved targetting of the bot by extending the target motion calculation
  • increased the cargo and alien collecting range for the player bot
  • the player bot will now intercept and collect cargo or aliens like a champ
  • implemented a method to get the actual client version without build number
  • implemented a color highlighting when there is a version mismatch for a replay file
  • audio in Java 8 will freeze only when launching from inside Eclipse, the JAR file is ok
  • fixed several GUI error and warning windows not being centered relative to the frame
  • fixed several GUI error and warning windows not being translated
  • fixed being able to start a replay while another replay is already playing
  • figured out middle mouse button emulation in Ubuntu should be disabled for this game
  • stopped the bot from shooting at tailspinning enemies
  • created 2 new icon subfolders for devices and paint icons and separated the icons
  • created 5 new menu icons and added them to the resources
  • replaced the printer menu icon with a better one from an actual Atari ST program
  • created 2 more new menu icons and added them to the resources
  • added a game cursor interface to allow using and controlling more than one cursor
  • rewrote major parts of the cursor code to separate the main cursor from virtual cursors
  • implemented the control action executor to persist actions on any given cursor
  • fixed the bot code to use any player ship instead of always the main player ship
  • implemented retrieving the nearest or any near sector object using a given max distance
  • pulled update code for game cancelled event into separate method
  • moved player dependent cargo bay fill and unload logic into the playership class
  • fixed all the unload, refill and refill+unload methods always changing the main player
  • the multiplayer solar system can now spawn bot players, but they’re still broken
  • fixed a bug where calculated level coordinates from mouse coordinates would persist
  • finally the bot can properly navigate in a multiplayer level next to the player
  • fixed a regression bug that broke mouse button release events in the input receiver
  • fixed shooting in the multiplayer solar system
  • the level will now be properly generated using level configuration in multiplayer
  • fixed a bug in the levels text parser when parsing an almost empty configuration
  • implemented using the last available configuration for unavailable level numbers
  • implemented multiple powerups parsing and generating in the level generator
  • pulled some more multiplayer code into the common level preparation block
  • implemented a game random method to retrieve a random position near a reference object
  • adding bots to a multiplayer game is now handled more dynamically
  • the multiplayer game now works with adding three or more bots simultaneously
  • removed some obsolete audio playback code that didn’t make any sense in the game
  • implemented sound effects on a per gameobject basis for isolated playback controls
  • multiple playerships can now play the accelerate sound effect simultaneously
  • fixed multiple calls to accelerate the playership in multiplayer games
  • implemented switching cameras between playerships in multiplayer games
  • implemented disabling the main cursor if the camera is locked to another player
  • fixed multiplayer game launching even when the server startup failed
  • fixed not shutting down the multiplayer server properly after engine shutdown
  • added player names to all log messages for the player ship
  • renamed game client to SpacolaClient class since it contains implementations
  • extracted a game client interface from the implementation
  • implemented a gametoken class that is used to authenticate clients in multiplayer games
  • rewrote parts of the client registration process for the multiplayer server
  • implemented several game remote exceptions to represent the different multiplayer errors
  • registering with the game server now returns a game token that is used for communication
  • added a game remote exception for invalid tokens (client not registered)
  • added a remote input receiver to the client entry upon registering a client
  • implemented drawing the actual hud for the currently viewed (camera locked) player ship
  • declared two older hud drawing methods deprecated to reduce the risk of reusing them
  • added game tokens to all the former remote server calls
  • changed throwing remote exceptions to always throwing game remote exceptions
  • fixed not setting the solar system object in the game class for multiplayer games

v0.9.9 – June 2021

  • implemented a simple mathematical function to determine correct tailspinning direction
  • enhanced game mode uses calculation of clockwise or counter-clockwise tailspinning
  • classic mode only has tailspinning counter-clockwise, as it is done in the original game
  • unified usage of positive and negative radians for clockwise and counter-clockwise spin
  • implemented another helper method to calculate radians for two simple positions
  • added a little more javadoc to some gamemath methods to make them easier to understand
  • implemented a method to return fixed ship angle degrees in 32 steps for classic mode
  • the player ship can now only accelerate in fixed directions in classic game mode
  • removed duplicate definitions of math constants in the ship angle class
  • pulled repeated calculations of constants in angle2d class into separate math constants
  • fixed about window with subpanels not being translated after changing languages
  • fixed fading in the ogg music code for linux volume controls
  • changed the fadeout index in the intro music to be closer to the original game

v0.9.8 – May 2021

  • started debugging the annoying linux java audio issues with the spacola samples
  • fixed concurrency issue with startup splash screen updating after closing on linux
  • fixed a splash screen problem due to linux using the headless version of openjdk8
  • fixed another concurrency issue for errors closing the splash screen prematurely
  • implemented a sound method to return the name of the currently used audio mixer
  • cannot fix splash screen not being centered correctly. It is plain linux jvm bullshit
  • fixed lots of linux problems where GUI update code was not executed by the EDT
  • implemented audio volume conversion methods to calculate integer volumes
  • improved the code that plays a silent audio sample to make it actually silent now
  • the audio system will now either use master gain or volume controls for linux systems
  • the project will at least start the build process for jar files on linux again for now
  • changed compile source and target version to 1.8 in the ant build script
  • fixed a problem with type safety in the spacola multiplayer server code
  • added another check to find out if we use java in headless mode
  • now a platform independent font and a font size are specified in the splash screen
  • fixed about-window being instantiated and opened by the menubar
  • fixed not resetting about window tabs to the first panel on subsequent views
  • implemented realtime updating values in the system info panel while viewing
  • renamed SpacolaSplash to SpacolashScreen to conform to own naming conventions
  • renamed Splash to TitleScreen to make it clear what this is supposed to be
  • created and added shield, speed slow and speed fast menu icons to the resources
  • created and added new mouse cursor from the atari st game ‚aliens‘ from 1992
  • started implementing a method to convert audio data to compatible format after loading
  • implemented converting audio data to different formats, but it still doesn’t help it
  • tried fixing pulseaudio for 6269 Hz sound, but the source data line always gets blocked
  • finally implemented a method to reduce the loudness of raw PCM audio data on linux
  • the sample playback on linux finally starts working better and might become usable
  • implemented sound methods to fix distortion for sdd files and to set their loudness
  • implemented converting all sdd and ogg sound files to a common sound format
  • i seem to have fixed the problem with blocking audio lines by converting all audio sfx
  • implemented a method to get sample length in microseconds
  • the loop points for the acceleration sound effect are now calculated dynamically
  • fixed the acceleration sound effect loop after the conversion broke it
  • implemented a utility method to create a reversed copy of a byte array
  • implemented a method to reverse a sound effect taking sound format into consideration
  • the sound engine is now capable of playing any sound effect in reverse
  • implemented a method to stretch and thus double the length of any sound effect
  • started fixing fadeout for the ogg music clip which is broken under linux java
  • changed the classpath separator in the proguard configuration which was wrong somehow
  • added platform dependent conditions for proguard targets
  • fixed jdk problems in the build script, the proguard targets can execute again
  • moved the keystore for the signjar target into the project dir
  • fixed signing jar files in the ant build script using the correct key store
  • updated the project from using ProGuard version 6.2.2 to version 7.1.0beta4
  • updated the project from using Launch4j windows version 3.12 to linux version 3.14
  • the complete build process finally works perfectly under linux, even exe file creation
  • tried implementing calculation of the length of ogg audio streams

v0.9.7 – October 2020

  • fixed exception with malformed resource URLs for the inconsistent JAR classloader
  • fixed wrong class for log output in powerup container
  • fixed wrong loglevel for several powerup container log messages
  • implemented set cargo method for the playership to allow setting cargo to any number
  • fixed duplicator powerup that wouldn’t work without the set cargo method
  • added log message to show when packaged files are accessed in contrast to folder files

v0.9.6 – September 2020

  • changed the spacolassic game mode image and added it to the resources
  • fixed setting cursors endlessly in the mouse entering and exiting handling code
  • implemented graphics methods to extend or scale images to a given width and height
  • custom cursors in the client now take into account the best toolkit cursor size
  • the game won’t try to use custom cursors anymore if the OS toolkit doesn’t support them
  • finally fixed a very old bug where NPEs occurred while creating 16x16px custom cursors
  • the game mode selector window now shows the atari finger cursor
  • fixed not delivering key typed events for some of the core modules through the controls
  • now the correct sound effect is played when typing in the fake TOS module
  • fixed the spacolassic game mode image again because the fill pattern was wrong
  • fixed client dialog windows not always being repositioned relative to the parent window
  • created a complete spacola font with full character set
  • renamed classic spacola font (with bigger spacings) to spacola HUD font
  • added complete spacola font and complete white spacola font to the resources
  • added whitespace character to the spacola and spacola white fonts
  • renamed spacola font class to spacola hud font
  • implemented complete spacola font class with mono, white and color styles
  • added the new spacola game fonts to the game font loader class
  • added enum constant names to the gfx lib initialization warnings
  • implemented a simple kerning feature to the spacola font as seen in the original game
  • removed unnecessary dongleware font graphics and styles that will probably never be used
  • simplified dongleware font style handling
  • added missing tilde character to the colored dongleware font
  • added missing square and curly brackets, and at character to both dongleware fonts
  • implemented altgraph event handling methods in controls
  • tried implementing square bracket keytyped events but it doesn’t work yet
  • java doesn’t seem to recognize any altgr key events properly on german keyboard layouts
  • implemented alt event handling methods in controls
  • implemented workaround to enable handling ctrl+alt as altgr replacement for windows
  • fixed locking either ctrl or alt keys when handling ctrl+alt and missing release events
  • implemented workaround to finally allow typing square/curly brackets, at, tilde, etc.
  • fixed text prompt exception when typing characters not supported by the used font
  • added methods for the gamefont classes to determine if a character is supported
  • implemented option in the gfx engine to extend images centered or top left aligned
  • added convenience methods to easily extend images top left aligned or centered
  • implemented a graphics method to create an outlined image from any given image
  • readded outlined dongleware font style since we no longer need a seperate resource file
  • set the number of stored highscore entries to 10 since storing more distorts the list
  • removed obsolete „show all“ checkbox from the view highscore window
  • implemented enter and return keys removing pause status like in the original game
  • fixed tab key not removing pause status correctly
  • fixed two wrong pixels on a kleptomara sprite that is different in the SHL file
  • created and added 16 kleptomara colorized sprites to the resources
  • fixed aliens managing their own ticks variable
  • fixed ticks and precise ticks values not being visible to subclasses
  • fixed asteroids managing their own ticks variable
  • spawned small asteroids will start with a random animation sprite now
  • fixed blackholes managing their own ticks variable
  • fixed explosions and debris explosions managing their own ticks variable
  • fixed starlasers managing their own ticks variable
  • fixed stations managing their own ticks variable
  • fixed lots of game objects not calling the abstract gameobject update method
  • fixed updating the missiles vector twice in certain cases
  • implemented immovable object attribute for gameobjects and set it for stations
  • in enhanced mode asteroids will now be reflected from stations upon collision
  • fixed an old bug that made the starlaser animation go too fast
  • simplified bouncing code and reduced redundancies in multiple bounce methods
  • bouncing code now checks for any immovable objects and handles them appropriately
  • fixed playership managing its own ticks variable
  • removed ticks handling in all of the enemy classes and probably broke everything
  • fixed an old bug when trying to determine if an angle is aligned within tolerance
  • rewrote major parts of the maforian enemy ai to reflect my latest playerbot findings
  • the maforian now behaves much more like in the original game, but still not perfect
  • managed to slow down the maforians intercepting algorithm which was far too strong
  • made lots of progress analysing the dongleware PAC file format used in the original game
  • rewrote maforian turning logic, to try and make it more rough and less perfect
  • added math methods to truncate or round floating point numbers to a desired precision
  • maforian enemies now behave better when returning ware to the station
  • reintroduced older maforian ai for the wafer enemy for the moment to preserve it
  • fixed stars background not resetting when restarting the game engine
  • measured, confirmed and finalized sector width to be exactly 4096 pixels
  • i might have discovered that the original game actually has only 36 updates/sec and fps
  • measured, confirmed and finalized player acceleration to be exactly 0.22 ppf @ 36 fps
  • changed maforian enemies to only make them turn once every 16 frames
  • fixed missiles updating their vector twice per update when tailspinning
  • simplified existence checks for all sector objects
  • fixed not creating a missing powerup container for the start and target powerup
  • fixed not stopping the accelerating sound effect when the player loses a life
  • fixed replay recorder recording inputs from several games without resetting

v0.9.5 – August 2020 (10 Years Anniversary version)

  • changed versioning scheme of the game client to show the exact state of dev progress
  • fixed dozens of more occurrences of old gamemath random calls
  • finally got the game to compile again after fundamental changes regarding PRNG calls
  • fixed wrong filename in enum gfx lib that prevented the game from loading
  • fixed selection of explosion sprite set not being deterministically random
  • fixed some more asteroid code not being deterministically random
  • fixed some vector and alien code not being deterministically random
  • fixed some enemyship code not being deterministically random
  • moved remaining deprecated random enum method from gameutility to gamerandom class
  • fixed several more indeterministically random method calls in many classes
  • fixed string output of gameobject direction vector details
  • fixed not resetting the asteroids class when restarting the game
  • fixed selecting an invalid rotation sprite index for the alien sprite
  • fixed random value generation for debris objects which was terrible
  • ticks should only be increased when the game is actually running and not paused
  • added the display of the current tick number in the debug output
  • fixed level timer not being reset correctly
  • implemented a check to prevent player input from being recorded while game is paused
  • removed the ‚b‘ for build version from all the filenames since it is obvious
  • implemented storing and retrieving the seed used to create a gamerandom object
  • fixed a bug with cargo refill that prevented correct replay playback after gameover
  • implemented exiting the game when the replay playback is finished before the level is
  • removed checksum from equals and hashcode in the savegames
  • implemented convenience method to get replay length in milliseconds
  • implemented loading and saving replay files to the file system
  • fixed playerships alive status not being reset after gameover
  • finally the replays seem to work just perfectly, even action-packed games with gameover
  • simple updating of a vector now internally calls precise updating for 1 time unit
  • started rewriting parts of the collision logic to fix some older problems
  • changed versioning scheme in build filenames, build number is part of version number
  • implemented more collision methods to get the point of impact on game objects
  • implemented menu bar options for loading and saving replays
  • implemented starting playback of a replay in a separate game engine thread
  • fixed verifying integrity of savegame and replay files twice for custom file loading
  • fixed playback of replays in an endless loop
  • fixed not exiting the playback of replays after shutting down the game engine
  • playback of classic and enhanced replays now works flawlessly through the menu bar
  • added a big timer font image to the resources for the timer class
  • created and added 4 monochrome and 4 colored (rotating) sun enemy sprites
  • added the sun sprites to the ship selector window
  • improved utility method creating a timer string to make it dynamic and include days
  • fixed being able to shoot when left clicking while game is paused
  • fixed being able to reset accelerate status while game is paused
  • confirmed in the original game that players can fully interact in intro animation
  • created a separate font class for the big digit timer font
  • fixed a bug that prevented the timer from being stopped correctly when finishing a level
  • fixed a bug that prevented the player from becoming invisible when finishing a level
  • fixed a bug that prevented the level from exiting after force win level command
  • separated the way the game is updated in pause mode
  • changed the timer logic to make sure time is only calculated once during update
  • moved method for generating a timer string into the leveltimer class
  • added a small timer font image to the resources for the timer class
  • fixed 5 general menu icons which all had either wrong size or color depth
  • removed 1 icon in the resources that somehow was kept in the wrong folder
  • created and added 10 more 16×16 menu icons for the menubar items
  • set new menu icons for a lot of menu items in the menubar
  • created and added 1 more sprite to the sun enemy for each mono and colored
  • removed unused layout code from some gui classes
  • started implementing a replay preview window to view replay details before playback
  • added more utility methods to generate a date string for a specified calendar
  • added additional methods to generate localized strings for dates and times
  • cleaned up some non working code from several gui classes
  • fixed a bug that prevented the replay from playing in enhanced state correctly
  • fixed a bug with a visible system cursor showing after stopping a replay
  • finished replay playback dialog with lots of information about the recording
  • fixed a bug where big asteroids would be drawn as medium sized ones
  • rechecked all the sprites from the 6 previously processed SHL files
  • added SPI_DEFN shapelist file to the resources and created entries in the library
  • implemented returning shapes for the square debris explosion objects
  • measured lots of new gravitational pull values for the blackholes in the original game
  • confirmed speed warnings being triggered even by gravitational pull from black holes
  • wrote a test method to find a better formula for the blackhole gravitational pull
  • found a better formula that kind of fits my latest measurements
  • found an even better formula when i noticed a weak pull near centers with a small radius
  • added SPE_PART shapelist file to the resources and created entries in the library
  • renamed minedropper shot explosion particles and moved them to the debris sprites
  • implemented returning shapes for the minedropper debris explosion objects
  • implemented returning shapes for the triangle and spark debris explosion objects
  • decreased blackhole gravitational pull since it somehow felt too strong
  • changed the blackhole gravition factor once again after comparing side-by-side
  • fixed being pulled towards a powerup container while vortex animation ongoing
  • fixed wrong animation sprites for the hurricane shot
  • fixed rant station animation not being triggered correctly in the delayed event handler
  • fixed a bug where the turrets could fire an infinite number of bullets at the player
  • implemented detailed toString methods for savegames and replays
  • added more helpful debug output for savegame loading and saving details
  • fixed wrong text keys for loading savegame error windows
  • implemented savegame loading and saving using the menubar items
  • fixed redundantly adding uppercase file extensions for savegames and replays
  • fixed saving savegames and replays always using uppercase file extensions
  • fixed using sector width instead of sector height variable to calculate Y coordinates
  • added another convenience method to simply set x and y position of a vector
  • fixed a bug where the x and y position of a vector was set without wrapping coordinates
  • fixed problems when changing the client language during playback of a replay
  • changed a bit of the short description and demo scroller text
  • fixed exception when selecting a replay file and cancelling the dialog
  • implemented toggling infinite shield by pressing the shift key during the game
  • changed the english text value of the options menu from preferences to options
  • implemented methods to retrieve the elapsed number of seconds in the level timer
  • implemented method to get the average ticks per second in the running game
  • removed some ingame collection information from the debug output
  • added information about average ticks per seconds to the ingame debug output
  • improved calculation of the average ticks per second to make the value more stable
  • added more known nicknames to the special thanks section of the credits
  • implemented several verification checks for the black hole generator
  • the black holes can finally be considered close enough and fine for now
  • fixed showing the verification module when loading an enhanced mode savegame
  • fixed always resetting the players score after loading a savegame
  • fixed not setting enhanced state correctly by savegames
  • implemented allowing to omit the SP parameter from level configurations
  • implemented positioning the player at the target station if no SP parameter present
  • changed levels txt parser to allow level configurations without any blocks
  • fixed shifting start positions when the level config explicitly sets it to 0,0
  • fixed exception when setting empty first and/or second parameters for the start position
  • added several more modifier key constants for invader generation in the levels parser
  • implemented multi invader setups in the levels txt parser which appears in level 2
  • implemented fill probability modifier for multi invader setups
  • pulled canShoot method out of several enemies and put them into enemyship class
  • fixed a bug where the kleptomara could fire an infinite number of bullets at the player
  • fixed playing panel sound effect when kleptomaras get a double shot weapon powerup
  • changed dongleware url protocol from http to https in the game info
  • failed updating the project to ProGuard 7.0.0 but its developer forgot the ant plugin
  • updated the project from using ProGuard version 6.1.0 to version 6.2.2
  • finally confirmed all the 3 DGST parameters in the level script
  • confirmed the definition ranges and the defaults for the DGST parameters
  • implemented station setups in the levels txt parser which appears in level 2
  • implemented floodfill, fill outer and fill probability modifiers for station setups
  • fixed not resetting flags for different setups in the levels txt parser
  • fixed reading empty tokens for excess whitespace in the levels txt file
  • added empty (0) and invalid trap parameters to the station trapper class
  • confirmed definition ranges and defaults for the remaining parameters of DGST and DGB
  • added constants and implemented defaults for all the values of the DGST parameters
  • station setups parsing in the levels txt can now be considered at least close enough

v0.94 – July 2020

  • created a simple jukebox window class that lists all of the music tracks used in the game
  • created a menu item that opens the jukebox
  • implemented a basic jukebox option that allows playback of any music track
  • implemented some convenience methods in the music library code
  • tried fixing a bug that prevents the jukebox from stopping the music playback correctly
  • fixed concurrency problem when music playback is stopped in a separate thread
  • implemented blocking playback of music, if the music playback stop thread is still active
  • the game client will now start playing back a startup music track after initializing
  • the currently played back music is now correctly detected in the jukebox window
  • the game client now supports opening the jukebox and changing the music at all times
  • replaced lots of occurrences of PRNG and replaced it by preseeded deterministic PRNG
  • moved all random related math functions from gamemath into gamerandom class
  • renamed all methods in gamerandom class to remove redundant ‚random‘ name part
  • added some more static indeterministic random methods to the gamerandom class
  • created and added 6 more 16×16 menu icons for the menubar items
  • set more menu icons for several menubar items
  • changed the message, pause, search and clipboard menu icon
  • added a star menu icon for the menubar

v0.93 – June 2020

  • cleaned up some code in the level initialization in the solar selector
  • removed deprecated array of available levels from solar selector and from saved games

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
  • implemented a method to find the position on the level grid for a given level number
  • the replay tapes now contain the solar progress and the playback level number
  • wrote a method to finalize (close) the replay tape and store the savegame in it
  • enabled automatically preselecting a level in the solar selector for the replays
  • finally got the game to compile again after rewriting parts of the level initialization
  • fixed not resetting the game random after restoring the replay savegame
  • fixed not properly initializing the level grid when loading a savegame
  • implemented a counter for calls on the game random class to verify identical usage
  • fixed NPE caused by taped replay when stopping and restarting the game engine
  • finally got the level generator to work deterministic randomly for the replays
  • implemented using the solar system in the galaxy object to create unique level seeds
  • the seed in the galaxy object is negative when no solar system has yet been selected
  • the solar selector now uses a different seed to create the panel layout
  • changed the galaxy object to separately allow creating seeds for the selector and level
  • loading a savegame or replay now restores the seeds for the selector and the level

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

v0.89 – February 2020

  • added stub methods for mouse wheel handling and added listener to the GUI window
  • implemented basic mouse wheel logic to allow for later usage in the game
  • renamed class Controls to Spacontrols to adapt it to own naming conventions
  • renamed class Controllable to Spacontrollable to adapt it to own naming conventions
  • implemented mines dropped by the playership to be left a bit behind with a slower motion
  • implemented basic control stub and ingame methods for moving the mouse wheel up and down
  • the game now plays the ST bip sound effect as an indicator when the mouse wheel is turned
  • measured and configured the size of the station objects
  • started implementing a feature that enables player shots to bounce off of stations
  • implemented a mathematical method to calculate bouncing off of immovable objects
  • the player can now shoot stations and the bullets will bounce off in all directions
  • added hitpoints logic to the station game objects and allowed reducing them
  • by shooting the station the player can now actually destroy it after all
  • measured and configured the size of the blackhole objects
  • fixed player shots destroying pirate ships currently deployed instead of bouncing off
  • moved handling of ejecting aliens on playership destruction into separate method
  • measured and configured the size of the cargo objects
  • measured and configured the size of the powerup container objects
  • measured and configured the size of the debris objects
  • measured and configured the sizes of both mine objects
  • measured and configured the size of missile objects
  • measured and configured the size of oxyd rotor objects
  • measured and configured the size of micro shot objects
  • cleaned up constructors for several shot objects
  • measured and configured the sizes of minedropper shot and minedropper shot ball objects
  • measured and configured the size of starlaser objects
  • measured and configured the size of (currently nonexistant) bolorotor objects
  • measured and configured the size of (currently nonexistant) shockerrotor objects
  • measured and configured the sizes of cargoliner and cargoflyer objects
  • measured and configured the size of (currently nonexistant) defender objects
  • measured and configured the size of (currently nonexistant) flyex fly objects
  • measured and configured the size of (currently nonexistant) lightball objects
  • measured and configured the size of harakiri objects
  • measured and configured the size of kleptomara objects
  • measured and configured the size of (currently nonexistant) megaroidship objects
  • measured and configured the sizes of (currently nonexistant) megaroidufo objects
  • measured and configured the size of minedropper objects
  • measured and configured the size of mothermaforian objects
  • fixed mothermaforian using the wrong bonus score value
  • measured and configured the sizes of (currently nonexistant) retaliatorjet objects
  • measured and configured the size of rotorstar objects
  • fixed rotorstar using the wrong bonus score value
  • measured and configured the sizes of (currently nonexistant) spermbird objects
  • measured and configured the size of tornado objects
  • fixed tornado using the wrong bonus score value
  • measured and configured the sizes of (currently nonexistant) tricore objects
  • measured and configured the size of wafer objects
  • fixed wafer using the wrong bonus score value
  • fixed several other enemy types using the wrong bonus score value
  • set bonus score value for the oxydrotor enhanced enemy to 80 for now
  • changed notation for sector diff string in the debug output to use symbols
  • created 7 ST style fill patterns that were used in oxyd, esprit and stad
  • rewrote respawn logic for the playership, enemies will now target respawning players
  • removed obsolete visibility getters and setters in the playership class
  • added proper math modulo operations for increase/decrease and add/subtract
  • fixed player being able to shoot while respawning animation is still running
  • implemented changing weapons upwards and downwards using the mouse wheel
  • implemented updating the radar screen during the gameover animation like in the original
  • simplified code for updating in the game loop and during the gameover animation
  • fixed not updating the current sector during the gameover animation
  • found an additional status message used in the original game: Trouble…
  • added mono and colored version of the trouble status message to the resources
  • implemented displaying the trouble status message when activating the bomb event twice
  • changed the colored systems k.o. status message to also show some red letters
  • created 5 colored score sprites and added them to the resources and gfx library
  • created a colored rescue capsule sprite and added it to the resources
  • confirmed the trouble message always appearing when activating bomb event twice
  • created another grey ball artwork for the enhanced HUD and replaced the HUD frame
  • fixed resetting the player lives never after returning to the intro after a gameover
  • fixed showing the menu powerup in the main menu in some cases after a gameover event
  • confirmed the original game not checking for highscore when cancelling a solar system
  • confirmed the original game checking for highscore when cancelling the solar selector
  • fixed showing shield status messages during and after gameover animation
  • created a new HUD frame border image for Bolo (1995) and added it to the resources
  • the colored PC Bolo HUD frame border can now be selected in the menubar
  • added the 8 realistic cargo item sprites to the resources and the gfx library again
  • the game can now be configured to use the realistic cargo sprites in enhanced mode
  • added more variables to hold the state of controls for a small mouse controls rewrite
  • created input receiver interface that allows defining methods to receive control actions
  • started implementing a mouse input receiver that handles direct mouse input
  • created a new package for core controls and moved all control related classes into it
  • added commands for switching to previous and next weapon to the command manager
  • turning the mouse wheel up or down now only triggers commands in the command manager
  • rewrote some methods to directly handle mouse clicks to consume control actions now
  • started completely rewriting the whole game mouse and keyboard control logic class
  • removed surplus controls instantiation in the game window class
  • implemented default string output for controlaction class
  • created new control action executor class for retrieving and executing control actions
  • finally indirect game controls via control actions works
  • added mouse catching and simplified indirect mouse handling for control action code
  • implemented mouse handling methods depending on a supplied player ship object
  • implemented a control action executor class which allows registering input devices
  • implemented replays, a replay recorder and replay input receiver classes
  • finally the game actually supports recording and playing ingame replays perfectly
  • started modifying the random number generation to be more deterministic for a given seed
  • created a bot input receiver and programmed a very simple bot AI for the player
  • implemented the bot randomly accelerating and shooting whenever a target appears
  • created a remote input receiver stub for use in multiplayer games later
  • created an item in the menubar to enable and disable the bot AI
  • implemented methods to dynamically enable mouse input, bot input or replay input
  • made the system cursor show up when the bot AI is in control of the ship
  • allowed enabling and disabling the recording of mouse input
  • fixed recording inputs when a replay is already played back
  • fixed exception when the replay file is finished, the mouse input will take over now
  • added log output for replay playback initialization and when it is finished
  • added a new 2020 build splash image to the project
  • fixed bot input receiver to determine mouse button release events correctly
  • also fixed mouse input receiver to only fire mouse button release events once

v0.88 – September 2019

  • created 7 colored magic gimmick sprites and added them to the resources
  • created 6 megaroids big and small ufo sprites as a homage to the original atari st game
  • added the megaroids ufo sprites to the enum gfx lib and to the ship selector
  • implemented fireworks particle explosions and sound effects in the closing credits
  • implemented more enhanced explosion particles being ejected on mine destruction
  • created 9 colored minedropper shot sprites and added them to the resources
  • implemented minedropper shots spawning enhanced explosion particles on detonation
  • fixed wrong pixels in 4 colored station rant animation sprites
  • created 2 colored station cola animation sprites and added them to the resources
  • fixed log output class for several commands in the command manager
  • implemented destroying station objects for future game options
  • implemented station destruction command for the command manager
  • changed classic gfx engine to avoid rendering invisible game objects
  • fixed not drawing mine objects on the radar when they’re deployed by stations
  • fixed not drawing the player surfing animation even when the visible flag is not set
  • added playing fanfare/credit sound effect in the beginning of the closing credits
  • kinda confirmed enemy ship modifiers DCSù to enable shooting and DCSø to disable shooting
  • fixed 3 weapon menu icons which were exported using the wrong indexed palette
  • fixed 3 general menu icons which were exported using the wrong indexed palette
  • fixed 3 gem menu icons which were exported using the wrong indexed palette
  • fixed the gem mac font image which was exported using the wrong indexed palette
  • fixed the mono sd software image which was exported using the wrong indexed palette
  • added an opaque variant of most of the transparent menu icons as an alternative
  • replaced the transparent cargo menu icons with better opaque ones
  • replaced the transparent powerup menu icons with better opaque ones
  • replaced the transparent weapon menu icons with better opaque ones
  • replaced the transparent general menu icons with better opaque ones
  • replaced the transparent gem menu icons with better opaque ones
  • changed and replaced 4 more general menu icons with better opaque ones
  • changed and replaced 8 more gem menu icons with better opaque ones
  • removed older redundant cola, cherry and toiletpaper menu icons
  • for now decorated several menubar items with menu icons to see how it looks
  • changed and replaced 5 more general menu icons
  • fixed 2 more general menu icons

v0.87 – August 2019

  • fixed frozen object logic in the 2d vectors time based update method
  • confirmed in the official table that there are 83 flyex fly gimmick sprites
  • created and added all 83 flyex gimmick sprites to the resources and to the gfx lib
  • started implementing a generic time based update method for the game object class
  • added time based mileage and ticks calculation methods
  • implemented a generic method to create an animation sample from an Anims type sprite
  • implemented a ship decorator method to create an animation sample for the flyex fly
  • added the flyex fly to the ship selector object for testing purposes
  • implemented an overriding toString method for the abstract shot object for debugging
  • implemented a basic laser weapon class
  • modified Kleptomaras, Tornados and Wafers to allow using the laser weapon
  • the laser shot will now be more flexible to use in the laser weapon class
  • fixed error when updating the laser shot, the shot is now drawn correctly
  • implemented convenience methods to calculate an object vectors radians and degrees
  • the player can now finally shoot with the laser weapon
  • added weapon enum constants for the weapon factory
  • implemented a weapon switcher debug menu and corresponding commands
  • added common tostring method for the abstract weapon class
  • fixed a bug that prevented ships from firing micro shots
  • fixed a labelling problem for mines in the weapon switcher menu
  • implemented calculating the correct laser shot alignment when using smart aiming
  • implemented the pirate weapon class which can also be used by the players ship now
  • the pirate weapon can now also re-steal cargo from enemies and steal surplus aliens
  • fixed pirate shots not dissolving when hit an enemy that has no ware or surplus aliens
  • added the rocket object to the ship selector dialog grid
  • fixed pirate shots destroying asteroids
  • fixed pirate shots destroying various other types of game objects and not dissolving
  • confirmed and fixed animation phases for the solar selector clicked field
  • started implementing a generic minedropper weapon class
  • measured and implemented the size of the minedroppershot debris objects
  • made all the minedropper shot objects extend the abstract shot
  • replaced references to the playership in the minedropper shots with generic game objects
  • replaced instanceof in weapon factory with flexible enum types and switches
  • the minedropper will now also use the weapon interface classes
  • fixed a bug where the players weapon is initialized before the playerships own type
  • the player can now use the minedropper weapon and drop mines itself
  • added weapon enum types to all the weapon classes to determine their types
  • removed redundant code from force gameover command
  • fixed a bug that left the player dropped mines without motion
  • the playership object now also makes use of the alive attribute
  • the player now drops mines on destruction just as the minedropper enemies do
  • created and added 16 megaroids ship sprites to the resources and to the gfx lib
  • added the megaroids ship sprite to the ship selector as a homage to the atari st game
  • turned the weapon, cargo and border selection menus into radio button menus
  • reduced log level for restoring default parameters in the configuration file
  • fixed a menubar bug where the screen was resized twice on startup
  • fixed a new bug that made missiles unable to target the player properly
  • fixed a bug that made the player respawn animation not show
  • the gfx engine will no longer silently ignore inactive game objects
  • fixed an exception when explosions were drawn after they went inactive
  • fixed a very old unnoticed bug that made armed sector objects not disappear completely
  • fixed explosion and alien updating code to properly check on alive status AFTER updates
  • fixed surf animation not drawing after destruction of the players ship
  • fixed a bug that made the piraton unable to target when the player is not alive
  • fixed a bug that made the wrong station show animations triggered by events
  • implemented more checks to allow piratons to update even without a given target
  • confirmed that dgss(1) (station trap) is pixel perfect
  • changed the playerweapon long distance constant to 252 pixels (half game screen width)
  • measured the max distance for laser shots of starlasers, which seems to be 215 pixels
  • created 15 colored debris sprites and added them to the resources
  • created 62 colored explosion sprites and added them to the resources
  • measured and guessed the upper limit for debris spark particles ejection
  • guessed the debris spark particles ejection limit
  • fixed debris particles being ejected with too much force
  • confirmed number of debris particles in debris explosions for mine h3/8 objects
  • pulled some of the debris particles constants into the game config class
  • measured rectangular debris alive time to be at least 2.3 seconds (168 frames)
  • moved debris particles alive time constant into the game config class
  • fixed an old bug that made rectangular particles not dissolve correctly
  • fixed a bug that made starlaser shots go on infinitely
  • made the starlaser at least basically use a laser weapon object
  • fixed removing of inactive debris particles in the debris explosion class
  • fixed animation handling of debris spark particles which always happens synchronously
  • fixed random animation phase for debris spark particles
  • reduced debris particles max alive time to 2.5 seconds

v0.86 – July 2019

  • created 16 simple colored pirate turret sprites and added them to the resources
  • added a utility method to reverse the contents in a byte array
  • created a new macintosh style gem font (chicago) that was used in unknown TOS versions
  • created an info menu icon from the macintosh style gem font and added it to the resources
  • created and added a bob dobbs face menu icon from the original gem font
  • created and added a bell menu icon from the original gem font
  • grouped all gem related menu icons together into a common resource folder
  • implemented gem mac font as a subclass of the original gem font
  • the game font loader now instantiates a gem mac font and a colored gem mac font object
  • only the menu resource class creates image icons from the gfx library
  • made all other gui classes take their icons from the menu resource class
  • created 16 simple colored deadly turret sprites and added them to the resources
  • created 2 simple colored mine sprites and added them to the resources
  • created 2 simple colored starlaser sprites and added them to the resources
  • fixed framestopwatch to set the target framerate as the limit for frameskip
  • added implementational game object type sets predefined for their related object lists
  • wrote a method to determine which game object lists are affected by a given type set
  • fixed framestopwatch to reset the time deficit when it exceeds a second
  • fixed a bug that enabled the player to shoot objects with 1 shot per frame
  • rewrote getting game objects in view and getting the nearest objects in view
  • finally auto aiming only targets shootable object types and ignores indestructable ones
  • implemented an abstract shot class with basic functions common to all shot types
  • made the player shot class extend the abstract shot and removed redundancies
  • measured and predefined the player shot size in the config
  • rewrote major parts of the weapons and shot code to allow defining variable limits
  • implemented a pea cannon class that is used by peashooter enemies
  • player and enemy shots are now optionally vanishing when out of sight
  • fixed laser shots and pea shots not extending the abstract shot class
  • added vector2d methods to also conveniently subtract a specified motion vector
  • fixed reversing the aimed shot incorrectly for the reverse shooting powerup
  • fixed exception when illegally casting missile object to shot
  • fixed changing the target update rate during the game breaking frame calculations
  • implemented a game speed menu in the menubar that allows reducing the current game speed
  • renamed some constants for radar area and gamescreen view area vanishing distances
  • vanishing distances for weapons and shots will now be set and checked dynamically
  • pea shots of players will now only vanish when leaving the players field of view
  • setting the update rate in the frame stopwatch will now also limit the number of redraws
  • created 7 weapon menu icons for the menu bar to allow implementing a debug weapon menu
  • created 8 cargo menu icons for the debug menu options changing cargo ingame
  • added cargo menu icons for the cargo switcher debug menu
  • added a method to completely reset the framestopwatch
  • fixed choppy graphics after setting/resetting the update/redraw rate in the stopwatch
  • compiled and tested the game under AdoptOpenJDK 8 with Eclipse OpenJ9, works great
  • the game client will now also show the current java vendor (which is not always Oracle)
  • implemented a debug method that outputs all (known) system properties to the console
  • fixed output and refactored method for java version details text
  • added a much better method to fetch and print all available system properties
  • added a simple utility method to also detect macOS as running operating system
  • implemented a debug method to fetch and print all system environment variables
  • the game client now offers 5 different game speed settings between 72 fps to 3 fps
  • removed all versions of Oracle jdk and jre, will develop solely using AdoptOpenJDK

v0.85 – June 2019

  • created 16 colored laser shot sprites and added them to the resources
  • removed tick inheritance in a game object constructor, which seems unnecessary and false
  • commented some methods in the game object class
  • removed tick inheritance for debris objects
  • fixed starlaser using the wrong bonus score
  • removed tick enheritance for station objects
  • fixed differentiating between ware type and gameobject type
  • fixed differentiating between minedropper shot direction and gameobject type
  • refactored lots of code to reflect the changes with the new gameobject type enum
  • got the code to compile again after changes in about 50 classes
  • fixed radar drawing to check if the object should actually be visible on the radar
  • created a method to draw game objects onto the radar dynamically
  • added convenience method to get the sector number for a given game object
  • all the gameobject classes can draw themselves onto the radar screen
  • drawing on the radar is now handled by the gameobject classes
  • fixed using the gameobject type prefix in the label by calling a long label method
  • fixed drawing gameobject info text onto the game screen with wrong colors
  • fixed blackholes and powerup containers not drawing their bounding circles when enabled
  • turned the ship interface into an abstract class
  • the abstract enemy class is now called EnemyShip
  • pulled weapon and angle objects and getters/setters into the abstract ship class
  • added three aiming methods to the new aimhelper utility class
  • the player ship and turrets will now use the aimhelper class to aim when firing
  • pulled shipdecorator and accelerating flag into the ship class
  • rockets will now finally create acceleration particles when launched
  • added method to detect the nearest enemy ship for a certain reference object
  • fixed rockets unable to detect enemies in in its own detection radius
  • fixed a bug in the algorithm for finding the nearest enemy within a given proximity
  • improved the algorithm for finding the nearest enemy within a given proximity
  • rockets will now actively hunt down the nearest enemy again
  • enemy ships can now also use the rocket weapon and launch rockets at the players ship
  • cleaned up the structure of the update shot methods to make it more clear what happens
  • enemy rockets can now collide with asteroids
  • hostile and non-hostile rockets will now properly explode in any case of collision
  • enemy rockets will no longer vanish beyond the players sight, instead keep following
  • started creating a reference table for all the confirmed and unconfirmed names
  • started renaming rocket to missile, since it’s actually a weaponized rocket
  • created 16 colored missile sprites and added them to the resources
  • the player can now destroy enemy missiles by shooting at them
  • fixed a bug with frame by frame that didn’t enable the corresponding menu item
  • enemy missiles shot down will now add to the players score
  • created 4 colored pirate shot sprites and added them to the resources
  • fixed some entries in the launch4j version info configuration file
  • fixed rocket powerup weapon to use the wrong launch speed
  • rewrote secondary weapon mechanism to make it easier to handle
  • fixed automatic shooting for secondary weapon
  • implemented an experimental auto aiming for the playership
  • added more helpful methods to determine the closest gameobjects in range
  • added methods to determine which objects are directly in front of the player
  • auto aiming now also targets close asteroids
  • improved auto aiming by only targetting at objects which are in front of the player
  • fixed manual shooting occurring outside the game thread, it’s now all in the main loop
  • fixed exception with synchronous manual shooting per mouse click with auto aiming on
  • fixed a bug in calculating the radians difference in the auto aiming mechanics
  • drastically simplified code for manual and automatic shooting and removed redundancies
  • implemented auto aiming as a cheat/debug command to enable during the game
  • pulled common calculation of radians difference into the gamemath class
  • rewrote code to find the nearest object in view to make it more efficient
  • fixed a nasty math bug in the algorithm for circle intersections at high speeds
  • auto aiming seems to finally work correctly when the player is moving at high speed
  • fixed a bug where explosion objects were handled even when they’re not alive anymore
  • fixed an old bug that made big exploding asteroids suddenly become much slower
  • fixed auto aiming to simply refuse shooting when there’s no clear line of fire
  • removed duplicate method to add another motion to a vector
  • added more methods for adding positions, motions and whole vectors to another vector
  • added nine big meta groups of common game object types to the game object type enum
  • renamed both station menu icons to sector and sector2
  • refined the small successdenied software logo for the monochrome game titles
  • created a completely new and much sharper successdenied software color logo
  • created and added a changed game window background image
  • created a new spacola eclipse floppy label with a sharper sd software logo
  • created a better sd software 3d-ish logo and reworked the game window bg once more
  • created a new header image for the spacola page on the successdenied website

v0.84 – May 2019

  • unified some log output for the multiplayer server class
  • added determining and logging clients IP address for joining requests
  • unified more log output for the multiplayer client
  • updated the project from using ProGuard version 6.0.3 to version 6.1.0
  • created 16 piraton sprites with simple colorization as a placeholder for better sprites
  • added the new colored piraton sprites to the resources and enum gfx library
  • the previous/next page buttons in the instructions window will now be disabled/enabled
  • fixed some (assumed) missing pixels in the hairdryer screen cargo mono sprite
  • created 8 colored screen cargo sprites
  • added the colored screen cargo sprites to the enum gfx library
  • created 8 colored asteroids sprites with simple coloring
  • added the colored asteroids sprites to the enum gfx library
  • confirmed transparency for 6 out of 8 screen cargo sprites in the original designs
  • added all 8 screen cargo sprites to the sprite accuracy checklist
  • implemented micro weapon (for deadly turrets) which shoots micro shots
  • improved colored telephone and toilet paper screen cargo sprites slightly
  • pulled game object list out of the gameobject class into separate enum file
  • added 3 character prefixes to the gameobject types for label generator
  • added several gameobject types to the enum that were missing all the time
  • fixed a bug where the vector of a spawned gameobject was initialized wrong
  • improved gameobject constructors and simplified initialization code
  • added recording the origin gameobject that is considered the parent of a spawned object
  • created gameoject instances will now be counted internally and given to objects as ids
  • gameobject labels will now use the object type prefixes to allow identifying them
  • tidied up the gameobject fields and sorted them
  • added methods to determine time since object creation and alive time for any gameobject
  • several fields in the gameobject class will now be final and set only during init

v0.83 – April 2019

  • added more log output to starting of a multiplayer server
  • fixed relative location for display mode window
  • fixed log messages for the multiplayer server code
  • fixed game client shutting down when a multiplayer server wouldn’t start correctly

v0.82 – February 2019

  • improved letters C, K and O in the spacola small font for the hud text scroller

v0.81 – January 2019

  • fixed redundant whitespace at the end of duration string when there’s one time unit only
  • fixed shorten text utility methods to work for really short max char limits
  • added a new 2019 build splash image to the project
  • increased initial capacity for game object collections to improve performance
  • improved some digit characters in the spacola small font for the hud text scroller

v0.80 – December 2018

  • implemented an enemy factory class that contains all the enemy object instantiation logic
  • fixed showing ’null‘ as java version, shows a proper ‚unknown java‘ message
  • briefly tested running Spacola Eclipse on OpenJDK11, which works fine for now
  • started writing a small powerup scan util swing application for the atlas powerups
  • implemented pressing and releasing the control key modifier to allow key bindings for it
  • implemented drawing all the powerups directly over the level grid in the selector
  • fixed draw height for the grid powerup overlay
  • completed the powerup scan utility that helps in transcribing all powerups from the book
  • transcribed and verified the powerups on the first 3 pages of the book
  • transcribed and verified the powerups up to page 29
  • transcribed and verified more pages up to page 39
  • transcribed and verified more pages up to page 50
  • transcribed and verified more pages up to page 75
  • transcribed and verified more pages up to page 103
  • transcribed and verified more pages up to page 115
  • transcribed and verified more pages up to page 131
  • transcribed and verified more pages up to page 151
  • transcribed and verified all powerups on all pages of the space atlas
  • replaced the raw space atlas file with the one containing all the powerups
  • rewrote the raw space atlas parser accordingly to allow parsing powerups
  • codes and ids will now be stored as integer values to save lots of space
  • added methods to get the code as hex values or integer whenever needed
  • tabs will now be stored as integer values and can be returned as string or int
  • allowed retrieving tabs from the codebook using integers or string identfiers
  • implemented writing and reading the space atlas from a compressed binary file
  • added constants for the space atlas pages, tabs and rows/columns
  • implemented a method to numerically calculate the page number for a given code id
  • implemented calculating the precise book position for any given code id
  • implemented retrieving the exact code element and code string for a given code id
  • added methods to load and handle packed bytes from files
  • the game client will now load and uncompress the compressed 46 kbytes binary atlas
  • fixed wrong field alignment in the solar selector, which was inverted the whole time
  • fixed old and buggy code for retrieving the start powerup for a given level number
  • the solar selector now uses the exact same powerup layout as used in the space atlas
  • scrambling the solar selector grid randomly is now deprecated and won’t be used anymore
  • fixed wrong tab number to tab identifier conversion in code tab and code element classes
  • made the level grid layout generation dependent on the space atlas randomizer
  • fixed project not correctly being built using java 8 compiler compliance level
  • fixed using wrong upper bounds when calling the game random from the solar selector
  • created 16 maforian sprites with simple colorization as a placeholder for better sprites
  • added the new colored maforian sprites to the resources and enum gfx library
  • removed time measuring from the main client window class
  • rewrote time measurements for startup time and overall uptime
  • fixed generated uptime string being empty if less than 1 second
  • added milliseconds to the text resources and considered ms in the uptime string
  • fixed milliseconds text output for single vs. multiple milliseconds

v0.79 – November 2018

  • added an extra weapons package and started implementing a weapons interface
  • the ship interface now features the powerup manager and the engine positions
  • all enemy ships will now basically be able to retrieve powerups
  • started implementing the players standard weapon as an exchangeable class
  • introduced a new enemyship abstract class which is used to share common ship behavior
  • fixed all available enemy classes to correctly extend the enemyship class
  • now there are plain enemies (i.e. turrets), plain ships (Player, Rocket), and enemy ships
  • successfully implemented the player weapon as an exchangeable weapon
  • fixed german text grammar for the unfinished alpha instructions message
  • rewrote parts of the powerup managing class to allow generic usage in other ship classes
  • unified enemy and enemyship classes again, didn’t improve code readability
  • pulled turret aiming behaviour into the common enemy class to help generalizing shooting
  • implemented weapon cooldown for the player weapon
  • implemented turrets being able to use the player weapon
  • introduced turret motion cooldown in contrast to weapon cooldown, turrets having both
  • enemy turrets can now perfectly use the players weapon if configured to do so
  • fixed player weapon shots fired by enemies not dissolving properly
  • implemented generic direct and smart aiming methods in the enemy class
  • improved encapsulation for player weapon shot speed and shot distance calculation
  • fixed turret code that handles aiming at the player and triggering the weapon
  • fixed log output class id determination for player ship
  • implemented weapon factory class that contains the weapon configuration for all ships
  • implemented a rocket weapon that can be used for active game entities
  • implemented rocket weapons as addons for the player weapon and activating it via powerup
  • fixed rocket weapon not working as a primary weapon
  • weapon cooldowns are broken for the moment, tried fixing it, but it’s more complicated
  • fixed powerups not being shown in the hud status display anymore
  • implemented a vector method to easily reverse any given vector by a simple call
  • changed weapon interface and player weapon to enable manual and automatic shooting
  • implemented getting nearest enemy type object for a given reference object
  • implemented getting nearest sector object in a 3×3 sector range
  • split up methods between get nearest objects for player object and for reference objects
  • implemented method to calculate current sector for any game object
  • implemented methods to get a 3×3 sector range for any given reference game object
  • fixed get random from list method with correct type parameter to set the return type
  • changed specialized sector retrieving methods to reuse the more generic ones
  • changed sector object handling to use concrete classes and not generic game objects

v0.78 – September 2018

  • started implementing a host game window that allows the host to set multiplayer options

v0.77 – August 2018

  • implemented a method to reset individual properties in the config file
  • tested and verified that 1920×1200 (3x scaling) game window runs perfectly smooth
  • added real screen scaling options menu, user can choose 1x, 2x and 3x graphics scaling
  • fixed startup init order of properties and text resources before spacola splash
  • improved loading, automatic verifying and fixing of properties from the config file
  • properties will now be validated against a list of accepted properties
  • confirmed that there is a 2 frames station animation delay on bomb and win events
  • finished the delayed game event handler and added sub events for bomb and win events
  • removed station specific delay methods from the station class
  • delayed game events seem to work, but introduced other bugs
  • fixed cargo bay bomb animation throwing exception on the very last frame again
  • fixed bomb event being reset when revisiting a pirate station after rant animation
  • removed spacola splash dependency of properties and text resources
  • the spacola splash screen now shows waiting/loading dots animation instead of text
  • fixed byte array log handler losing its content when changing the debug level
  • started implementing an obfuscation class that handles encoding text like the ST game
  • tested and fixed ROL and ROR bitwise calculations and added convenience methods
  • marked ROL and ROR bitwise calculations as broken because they all create wrong results
  • implemented utility methods to convert Atari ST chars to unicode and vice versa
  • implemented more utility methods to convert between a series of hex numbers and text
  • finally implemented the complete assembler text obfuscation encoding and decoding
  • added degree and bullet sign characters to the Atari to Unicode char conversion
  • fixed debug menu win command not triggering the delayed game event handler
  • fixed a bug where the win animation state is set for the wrong station
  • added unknown/undocumented powerup ‚E‘ to the powerup map and class for accuracy reasons
  • added starlasers to the (deployable) game object map for accuracy reasons
  • implemented being able to deploy starlasers as ships via level script or by command
  • fixed old drawing method used in the solar system game class
  • started rewriting the multiplayer game class to make it work again after lots of changes
  • added multiplayer level rendering methods to the graphics engine class
  • fixed several parts that got in the way of enabling multiplayer games
  • finally got the multiplayer game to start again without any errors
  • removed redundancies from multiplayer level class by adding a common preparation method
  • fixed code occurrences where the legacy game panel is modified instead of the canvas
  • fixed multiplayer game initialized with the wrong hud view image
  • game clients will not be validated every single method call, but instead once per tick
  • started implementing sending game objects back to the server to allow seeing each other
  • fixed sound effects not stopping when a multiplayer game ends
  • tried rewriting the code that is responsible for controlling the player ship
  • pulled control related acceleration and shooting code out of the controls class
  • simplified player shooting code and split between manual and automatic shooting
  • tried fixing some occasional, mysterious slowdown issues with 72 updates/sec

v0.76 – July 2018

  • fixed some of the letters in the modified dongleware title with the original letters
  • replaced the dongleware title image with a correct one
  • fixed some of the letters in the success denied title with the original letters
  • replaced the success denied title image with a fixed one
  • fixed border errors with the dongleware switch sprite used in several title designs
  • replaced switched off dongleware title image in the resources
  • replaced game client title image with a fixed one with correct letters
  • replaced the build splash image with a new one which has a fixed digit ‚8‘
  • converted the project workspace for the new Eclipse Photon release
  • updated the project from using Launch4j version 3.11 to version 3.12
  • updated the project from using ProGuard version 5.3.3 to version 6.0.3
  • once again confirmed 6269 Hz as the correct sampling rate, appears next to the filenames
  • tried to measure sector size more precisely, but encountered too much variation
  • confirmed radar to main display ratio of 1:64 pixels once again, 62 is the highest number
  • kinda confirmed sector size by radar measurement, flythrough time, and flythrough frames
  • kinda confirmed that the original game only moves objects on frame redraws, not inbetween
  • recalculated some measurements for the sector size. Found results to come close to 4096
  • kinda confirmed that the original game accelerates the player 72 times per second
  • confirmed the acceleration calculation for the remake, 72 updates/sec are correct
  • created a new spacola dongleware font derived from the oxyd color dongleware font
  • added the new spacola dongleware font to the resources
  • changed release date in the certificate class to 2021
  • created and added new dongleware title and switch images with the new color scheme
  • fixed wrong log output class in some log output in the levels txt parser
  • added a way to load levels.txt raw file as a fallback on startup
  • fixed a problem with the wrong encoding when loading raw text files
  • created and added a new encrypted levels pac file
  • the levels txt parser now ignores all unknown level data at the end of the file
  • confirmed speed warning limits by measuring star speeds to be exactly 25 and 100
  • these values seem to strengthen the fact that the player speedup is 0.1 per frame
  • changed the cargo bay background back to dithered blue
  • created two colored instructions button images and added them to the resources
  • added math methods to add or subtract integer values using modulo
  • added a basic animation class for simple image sequences
  • tried to add key events for pressed keys, but it doesn’t work like intended in java
  • the fake tos module now always starts with the full 72 Hz redraw rate
  • at least managed to add key events for pressed and released shift keys
  • implemented own logic to prevent subsequent same key press events for shift keys
  • the level numbers in the solar selector can now be shown by pressing shift
  • added enter key handling in the solar selector which enables all levels at once
  • removed LZH decompression libraries, since they won’t be needed anymore
  • improved the animation class and added max animation count, pause frames
  • renamed animation class to simpleanimation for better distinction from library classes
  • fixed errors in the shapes of the four monochrome cargo bomb sprites
  • renamed minestar enemy to starlaser (SL), which may be the original name or similar
  • moved starlaser sprites into their own sprite folder
  • created 4 colored bomb sprites from Oxyd Magnum colored version bomb sprites
  • fixed bomb drawing code to allow drawing colored bombs with xor effect
  • fixed a bug where the bomb animation starts with an exploding bomb frame
  • fixed the order of the bomb sprites, which was wrong for both mono and colored sprites
  • confirmed length of bomb state (8 seconds) and animation phases (72) in the original game
  • confirmed pause status message blink frames to be 36 frames exactly
  • created a status screen class and pulled all status screen code out of the hud class
  • split the status screen and hud update and drawing code
  • implemented a 2 frame bomb animation delay in the player ships code
  • the bomb animation in the hud is now frame perfect and delayed by 2 frames
  • created a delayed game event handler class that handles frame delays for game events
  • fixed an encoding bug that prevented parsing the levels txt in the built jar/exe file
  • cut out all 3 fly-ex cursor sprites
  • cut out all 24 of the fly-ex fly „flying“ sprites
  • fixed the bolo border design where i somehow screwed up the left wall
  • fixed more transparent pixels in the bolo border design which i got wrong

v0.75 – June 2018

  • fixed bug in method to create pre-dithered images for any given phase
  • set dithering animation to 40 frames and pause to 20 frames (between 8 and 64 ST MHz)
  • the uncaught exception handler will now also be removed on exiting the game
  • added a utility method to unload all used jdbc drivers from the classloader
  • started analysing the LArc’s PFX 1.13P (PFXPak) header for the original Spacola PRG
  • tried fixing all the parts of the complete selfextracting Level-0 LZH header
  • wrote utility methods to convert int<>hex and also switch the byte order (endianness)
  • collected all three known different Spacola PRG files (TOS-Demo, Release and Patched)
  • copied all the original file sizes and checksums of the Spacola data files
  • tried extracting any of the modified -lz5-Archives using LHARC 2.01, none worked
  • confirmed that the supplied compressed archive size is correct
  • found out that most of the game data is not part of the compressed PRG file
  • added LZH uncompression libraries to the source code and tried debugging the uncompression
  • started debugging the disassembled original PRG file in the STeem Debugger
  • finally i managed to extract the compressed/embedded PRG file from the executable
  • extracted all three different embedded PRG files from the Spacola versions
  • found out that the text for the short instructions is obfuscated in the game PRG
  • added utility methods to rotate bit masks/hex values/strings left or right
  • re-implemented complete decoding of the short instructions text, and also the encoding
  • replaced the levels.txt file with a correctly sized one, which contains more data
  • found a complete data file listing with compressed/uncompressed sizes and offsets
  • discovered the headers for SHL (shapelist, DSDF) and Dongleware PAC files in the data
  • found breakpoints in the disassembly for the decompression and decoding of the data
  • extracted several PAC and SHL files, also the IMG file for the SMS music
  • the uncompressed game PRG file at least shows the splash screen using the title.pac file
  • also this enables me to display the various Dongleware PAC files by changing filenames
  • extracted the spritesets and transparency masks from Esprit and OXYD
  • extracted the BIC (boss is coming) image from Esprit and OXYD

v0.74 – May 2018

  • ingame music will only be playable in enhanced mode from now on
  • changed some frame constants for the title classes
  • confirmed framerate independency for fake tos and splash modules
  • pulled some constants out of fake tos module class
  • removed creation of new gem font instance in the fake tos module
  • pulled some constants out of splash module class
  • measured the duration of the original splash screen, which is not consistent
  • fixed magnetic container pull effect being too strong after changing to fixed updates
  • pulled some constants out of the smooth text scroller class
  • changed the way the scroller text in the text scroller is initialized
  • confirmed framerate independecy for smooth text scroller and credits module
  • confirmed framerate independency for text prompt class
  • fixed a few decryption log messages
  • changed name in the closing credits module

v0.73 – April 2018

  • fixed wrong pixel on the mono toilet paper cargo sprite
  • fixed subsequent wrong pixel on the colored toilet paper cargo sprite
  • added all drawn colored cargo bay and pricelist sprites to the resources
  • created a method to draw a shield defender spriteset
  • fixed defender and shield defender spritesets in the ship selector window
  • moved defender shield sprites to the shield resources folder
  • added piraton size constant by measuring the shape
  • restructured piraton AI code to make it easier to modify
  • added (maforian) attack pattern to the piraton enemies
  • successfully encapsulated and moved the code to return cargo to the station
  • fixed a problem with the distance growing parameter calculated in the wrong place
  • piraton enemies now work in an acceptable way
  • tried measuring the piraton pattern time durations
  • implemented enemy flight pattern logic and code that decides which pattern to use
  • renamed shot game object types to pirate, micro, and pea
  • peashooters and piratons will now use a generic enemy shoot behaviour method
  • pulled shooting check out of the shoot behaviour method, didn’t belong there
  • created a colored solar selector frame image and added it to the resources
  • fixed using monochrome image for the solar selector panel
  • fixed using monochrome image for the solar selector fields
  • created some colored solar selector buttons and added them to the resources
  • created all the remaining colored solar selector buttons and added them to the resources
  • created a colored spacola cursor for the menus and added it to the resources
  • added a convenience method to change colors in a monochrome image using color objects
  • removed inverted gem font code and implemented general fonts with any coloring
  • the solar selector will now use yellow gem font instead of white (inverted)
  • started rewriting the acceleration formula for intercepting enemies
  • encapsulated some code for ejecting the cargo from players ship
  • started implementing a way to manually open the cargo bay for testing
  • fixed a problem which caused the intercept speed calculation to be ignored
  • implemented a utility method to get a random object from an object list
  • enemies will now target free floating cargo and aliens more randomly
  • piratons rescueing comrades and intercepting cargo works like a charm now
  • colorized all 12 status sprites and added them to the resources
  • fixed colored peashooter sprites which had too dark shading in some angles
  • fixed two colored player ship sprites to improve the shading
  • updated the rocket cursor shape and fixed the colored rocket cursor sprite
  • tried fixing the base motion problem with bouncy enemies
  • finally fixed a stupid bug that made bouncy enemies go nuts on moving player ships
  • fixed a potential problem with updating enemies too often upon collision with player ship
  • implemented player shield destroying bouncy enemies until i can sort out the collapse bug
  • cut out a small bolo rotor spriteset and added it to the resources for later use
  • implemented the players shield launching bouncy enemies far away upon collision
  • replaced copyrighted placeholder ingame song with own composition „Depth Dweller“
  • implemented mouse click effect on animated buttons to visualize button presses
  • made ship deploying in the ship selector window more dynamical
  • refined the ship selector window to make it look more finished
  • fixed graphics glitches on mouse button presses in the ship selector window
  • started implementing cargo passing for enemies, but the vector is still horribly wrong
  • fixed a bug where the direction for the passed cargo was not calculated correctly
  • finally destroyed enemies can pass their cargo to other enemies in close range
  • restructured the old maforian ai code to adapt it to the new piraton code
  • fixed a bug where maforians couldn’t reach the station after stealing cargo
  • fixed a bug where redeployed enemies forgot their harmful/dangerous state
  • fixed a problem with 3 hq audio files that couldn’t be loaded in the exe version
  • fixed a problem when launching the jar file and no log level was set explicitly
  • removed some old code artifacts from the main entry class
  • started writing an extra level timer class that does all the ingame timer handling
  • updated the project from using Launch4j version 3.9 to version 3.11
  • from now on Java 8 will be required as minimum version to run with (i.e. for encryption)
  • the exe finally contains lots of meta information displayable in the windows explorer
  • changed the name of the default savegame folder to /sav/
  • created a new multi resolution windows icon file and added it to the build process
  • exe files look much better in windows explorer now, they have smooth icons for all sizes
  • fixed wrong type of transparency for several images being loaded
  • created and added two more application icon images for sizes 16×16 and 32×32
  • the game now utilizes different images for the title bar, task bar and about window
  • finally the game icon looks better in all different size aspects
  • moved flags and icons to separate folders in the resources under miscellaneous images
  • moved truetype fonts to separate font folder in the resources under miscellaneous images
  • created new perfect templates for the tilted spacola icon, confirmed angle to be 21,43°
  • changed some logging text for serialization of objects
  • completed writing a simple level timer class that is used for measuring the ingame time
  • implemented level timer subtracting pause time to allow only counting played time
  • tried measuring the gravitational pull of grade 1 and 2 black holes
  • rewrote the gravitational pull calculation code for black holes
  • added factors that may reflect the gravitational pull for the original black hole configs
  • fixed short classnames logging messages for Alien, LevelsTxtParser and LevelGenerator
  • found a formula for the black holes gravitation that comes at least close to the original
  • by accident found a huge bug in the framerate-independent player ship acceleration
  • improved the black holes gravitation code, and it seems to mostly fit the level configs
  • the game engine will be updated 72 times per second from now on for a steady pace
  • added methods to retrieve the actual update and redraw durations for a frame
  • rewrote the frame stopwatch to allow a better frameskip logic on time deficits
  • fixed microsecond delays at the end of every second, because pause was miscalculated
  • significantly improved measuring accuracy of the frame stopwatch
  • implemented real support for any chosen redraw rate in the frame stopwatch
  • the classic mode will now be capped to 36 fps for authentic ST vibes
  • eclipse mode will allow setting the framerate, with 72 as default
  • confirmed correct players acceleration and speed values for 72 fps
  • seems like i accidentally fixed a timing problem in the frame stopwatch
  • frame pause will now be reduced if the remaining time in a second is not enough
  • fixed another bug in the new frame stopwatch code where the pause was negative
  • fixed too high redraw time if the following second has already become shorter
  • i think i finally fixed the jerky animation bug in the frame stopwatch for lower fps
  • fixed the smooth hud text scroller being too fast and not framerate independent
  • removed theoretical fps limit from the debug overlay
  • readded the framerate limiter for artificially reduced framerates
  • fixed magic cursor gimmick not framerate independent
  • split up magic cursor updating and drawing
  • fixed magnetic item pull effect being too strong after changing to fixed updates

v0.72 – March 2018

  • renamed class SpacolaCodes to Spacodes to adapt it to own naming conventions
  • fixed several log output lines for several classes
  • added utility methods to find and test the system dependant path separator character
  • removed adding old debug text to save some performance
  • removed redundant visible property from playership class
  • all the game objects mileage will now be recorded in the game engine
  • fixed mileage recorder reset when starting the game
  • added a method to „calculate“ travelled space distance in „light years“
  • fixed F9 and F10 not working in the intro module
  • fixed debug text option active/inactive status unused throughout all the modules
  • created black hole shapes and reshaped the mono and colored blackhole sprites
  • created monochrome inactive blackhole sprite
  • added mono and colored inactive black hole sprite to the resources
  • it is now possible to enable and disable black holes in the level
  • added methods to remove all or single black holes
  • changed travelled space distance unit to au (astronomical units)
  • wrote toString method for sector class which shows their hex coordinate
  • added convenience methods to fill all or single sectors with black holes
  • enabled level modification through the level generator during actual gameplay
  • moved black hole removal methods into the level generator class
  • fixed maforians not drawing thrust particles when targetting the station
  • wrote ship decorator method to create shieldmaforian spriteset
  • the ship selector dialog now contains two full rows of ships to choose from
  • added timer digit font to the resources and created a timer digit class
  • the timer will now be drawn onto the game screen
  • the enum gfx library can now create colorized versions of monochrome images
  • created a colorized timer for the enhanced version
  • wrote ship decorator method to draw rocket drives and create rocket cycle spriteset
  • identified an unknown enemy code in the level script: SL = StarLaser
  • wrote ship decorator method to draw shield mother maforians and create its spriteset
  • added timer enabled/disabled option to the menu bar
  • the timer can now be enabled and disabled during the game
  • added menu bar options to allow selecting the border for the game window
  • 4 different borders can now be selected: Eclipse, Bolo, Oxyd, Oxyd Color
  • added a classic spacola border to allow setting monochrome border in enhanced mode
  • added several more enemies to the ship selector window
  • changed the way how animated buttons will appear and its hover effect
  • implemented some more ship decorator methods to generate spritesets for special enemies
  • added some more enemies to the ship selector window
  • created 8 tricore sprites from the original designs and the pricelists
  • added the tricore sprites to the resources and implemented them in the ship selector
  • fixed the dongleware copyright small number font digit 8 from an Esprit screenshot
  • added colored shield powerup container sprite
  • added colored double shot powerup container sprite
  • refined some icons in the colored hud for better emboss effect
  • created and added 16 colored peashooter sprites
  • created and added 10 more colored powerup container sprites for all powerups
  • created and added 5 shockerrotor sprites from the Hintzen & Verwohlt game „Shocker“
  • added the shockerrotor to the ship selector window and restructured the animated buttons
  • changed the colored shield powerup container sprite again
  • added some information to the levels txt parser class for the DCS modifier
  • added original german names for the powerups to the levels txt parser class
  • created a manually colored cigarette cargo bay sprite
  • created a manually colored toilet paper cargo bay sprite
  • created a manually colored candy cargo bay sprite
  • fixed wrong pixel on mono candy cargo sprite and changed all three resource files
  • fixed wrong pixel on colored candy cargo bay sprite
  • created manually colored scissors and hair dryer cargo bay sprite
  • fixed colored cola and toilet paper cargo sprites

v0.72 – March 2018

  • renamed class SpacolaCodes to Spacodes to adapt it to own naming conventions
  • fixed several log output lines for several classes
  • added utility methods to find and test the system dependant path separator character
  • removed adding old debug text to save some performance
  • removed redundant visible property from playership class
  • all the game objects mileage will now be recorded in the game engine
  • fixed mileage recorder reset when starting the game
  • added a method to „calculate“ travelled space distance in „light years“
  • fixed F9 and F10 not working in the intro module
  • fixed debug text option active/inactive status unused throughout all the modules
  • created blackhole shapes and reshaped the mono and colored blackhole sprites
  • created monochrome inactive blackhole sprite
  • added mono and colored inactive blackhole sprite to the resources
  • it is now possible to enable and disable black holes in the level
  • added methods to remove all or single black holes
  • changed travelled space distance unit to au (astronomical units)

v0.71 – February 2018

  • added new dongleware title with new original developer name
  • replaced the dongleware title in the application window background image
  • removed spacola classic title image from the resources since it was unused
  • added dongleware copyright small font to the resources
  • the copyright number will now be generated and drawn dynamically into the title image
  • added a new 2018 build splash image to the project
  • removed dithering fading for the closing credits module

v0.70 – November 2017

  • removed unused unfinished magic test class
  • turned sparkle particles into private inner class
  • improved 6 colored ship sprites
  • created a spacola small font from the status images and the radar text artwork
  • defined spacola small font constants
  • added graphics utility method to recolorize an image
  • added a utility method that removes german umlauts from any text
  • the smooth text scroller will now also use the spacola small font
  • added some more special characters to the spacola small font
  • created and added all digits to the spacola small font
  • changed the internationalized intro texts for the original game programmers
  • added Franko Elmaro to the special thanks block in the closing credits
  • fixed magic stars not reset after engine shutdown
  • moved add linebreaks method from log utilites to game utilities class
  • fixed too wide warning dialogs in the game by adding auto generated linebreaks
  • fixed error in add linebreaks method which didn’t respect preset linebreaks
  • created and added many more special characters to the spacola small font
  • started also adding ingame fonts to the fontloader class
  • renamed fontloader class to gamefontloader to avoid naming collisions
  • fixed text scroller classes to keep references to used fonts
  • simplified flap display initialization and removed keeping font references
  • removed keeping font references in the hud class
  • removed keeping font references in the solar selector class
  • removed keeping font references in the hud class
  • moved tos loading screen drawing into the fake tos module class
  • removed dependency on gem font in the enum gfx library class
  • removed all remaining kept font references in all remaining classes
  • fonts will now only be instantiated and updated in the gamefontloader class
  • fixed wrong and/or doubled sound effect being played when destroying mines
  • created new enhanced ’surf‘ sound effect from the beach boys song and added it
  • implemented playing enhanced surf sound effect in eclipse game mode
  • fixed the loudness of enhanced surf sound effect which was too low
  • added enhanced DADAPDAP and FALSCALL sound effects to the resources
  • implemented playing enhanced DADAPDAP and FALSCALL sound effects in the game
  • fixed black background in GEM texteditor module

v0.69 – October 2017

  • completed all 64 colored ship drive images and added them to the resources
  • improved 4 colored ship sprites
  • created string constants for developer and original developer urls
  • used the url constants in the closing credits module and about window
  • changed the text scroller text to show basic game credits and info
  • changed the test panel to allow drawing colors
  • the particles test module now draws colored particles exactly as seen in the game
  • fixed a bug in the particles class where particles would flicker after burning out
  • implemented switching between color and monochrome particles test
  • created two HQ sound effects from Dark Star for DADAPDAP and FALSCALL

v0.68 – September 2017

  • improved calculation of time durations to allow displaying months and years as well
  • refactored timer string and duration string utility methods to make clearer what they do
  • created a dithering method to create an image with a given dither phase
  • implemented dither-fading the credits in the closing credits module
  • fixed closing credits module using the wrong font in enhanced mode
  • fixed text prompt core element using the wrong font in enhanced mode
  • fixed billing tag height to allow drawing bigger sprites for enhanced mode
  • implemented methods to maximize, minimize and to remove all asteroids setups
  • implemented menu bar options to modify asteroids setups for the sectors
  • seems i got the billing screen pixel identical again. something got changed there
  • created a small image showing the atlas and original floppy to select as a button
  • the application name will be written in all upper case from now on
  • added a stylized application name using greek letters and numbers
  • added a method to stylize strings in the same way as the application name
  • recreated the manually colorized cola sprite that i seem to have deleted
  • added a simpler title artwork for the splash module and intro titles
  • added an application splash floppy image with a dark border
  • fixed short instructions windows content not being updated on language change
  • added a shorter menu and window text for the short instructions window
  • fixed instructions window not returning to page 1 when reopened
  • improved a few colored ship sprites
  • colorized the trademark and copyright symbols in the intro title artwork
  • fixed target sector being set in the enhanced version before game starts
  • the solar selector will reset the target sector in the enhanced version
  • the coordinate decoder will now only control the target sector flap display
  • added enhanced state to the solar progress savegame objects
  • fixed lower case game name in the text resources
  • added extreme asteroids debug options for the menu bar
  • fixed stylized letter A to make it look more like in the „RADAR“ hud text
  • fixed enhanced hud title artwork which was too narrow and used the wrong letter ‚E‘
  • fixed enhanced hud title artwork height positioning of the eclipse part
  • implemented a method to unload cargo and refill with another ware type
  • added german and english cargo identifiers to the text resources
  • fixed realistic bonbon cargo image width which was not correct
  • added menubar options and debug commands to select the ships cargo type
  • switching to another cargo type now considers the previous cargo bay load amount
  • implemented real cargo bay handling code which allows carrying different ware types
  • fixed wrong order for collected and lost cargo displayed in the cargo bay
  • fixed enemies carrying the wrong ware types after stealing from the player
  • measured and added billing sprite height offsets as variables
  • fixed billing for mixed cargo bay items and rewrote score calculations
  • fixed billing titles result width which was always too small
  • all billing titles sprite positioning is pixel perfect in respect to the original now
  • removed dithered background from enhanced cargo bay
  • fixed cantina flight enemy behaviour not respecting the player ship motion
  • readded enemies reducing the distance to the player automatically during cantina flight
  • fixed piraton enemies not showing acceleration during cantina flight
  • fixed calculation of nearest game objects now using reference object and max distance
  • fixed cantina flight not working for maforian and peashooter enemies
  • reimplemented pursuit and collecting of free floating aliens and cargo for piratons
  • implemented coloring of particles for the enhanced version of the game
  • improved coloring of particles to make them go from white to yellow to red to black
  • particles will now always live until they are burnt out
  • fixed direction markers to powerups to appear in the same colors as the glowing particles
  • started work on a ship selection window where all the different ships are displayed
  • rewrote piraton targetting code which allows better control over what objects to chase
  • fixed a bug in piraton intercepting speed calculation which made them go too fast
  • fixed a bug which made piratons intercept items instantly instead of waiting randomly
  • piraton item interception finally starts working really well
  • changed the application name in the build script
  • replaced shorten name utility function with two more generic shorten text functions
  • fixed message of piratons losing their target after they just collected it
  • reset speed warnings and pixel speed for the player when using full stop command
  • reset highscore message event flag if the players score has been reduced below top score
  • the invisible player ship won’t collide with asteroids anymore when the level is won
  • reduced the amount of particles emitted during acceleration thrust
  • made some particles burn out quicker
  • piratons will wait longer until they intercept aliens and ware

v0.67 – August 2017

  • added audio format aware conversion methods from frames to microseconds and vice-versa
  • loop points for sounds will be set based on microseconds from now on
  • fixed NPE for removing asteroids on sectors not being asteroided
  • asteroids now remember their sector of origin if they exceed its boundaries
  • calculated asteroids base speed in the original game by measuring various speed settings
  • implemented asteroids speed calculation based on original values
  • asteroid speeds seem to be really authentic now
  • fixed number of generated asteroids not based on the level configs value
  • fixed small objects not being ejected with a minimum speed
  • unified some small object ejection calculation methods
  • changed splitting asteroids so hit objects now influence split asteroid vectors
  • added methods to slow vectors down by a given percentage or randomly
  • implemented asteroid spawning frequency by using the fourth asteroid config parameter
  • implemented a way to convert level config asteroid spawning frequencies
  • fixed problem with Eclipse writing wrong characters in UTF-8 math class file
  • fixed removing asteroids from sector setup only if they have not already been split
  • confirmed that magnetic aliens stay magnetic after player destruction
  • added consequent magnetizing and demagnetizing of aliens and ware for the original mode
  • fixed small object magnetism code which is now closer to the original game again
  • even at higher speeds the small object magnetism code behaves correctly
  • improved the peashooter enemy to make it target the player wing points more randomly
  • implemented peashooters being left or right handed upon creation
  • weakened targetting of maforian enemies, which seemed to be too accurate
  • added min and max constants for asteroids creation in the random level generator
  • hugely improved peashooter enemy, which is now similar to the original finally
  • peashooter shooting is somewhat flawed but works ok at slow speeds
  • partly fixed the peashooter shot vector calculation, still misses at higher speeds
  • FINALLY got the peashooter shot vector calculations right
  • fixed player shot collisions not working correctly on high speeds
  • fixed a small possible bug in the turret aiming code using a false intersection
  • replaced distance calculation in aiming code with comparable square distances
  • added small code to make the peashooters miss the player with a certain probability
  • made peashooter navigation a little more random
  • created a new piraton enemy AI that is derived from the peashooter AI
  • added both invader can shoot modifiers to the levels text parser
  • fixed enemies deploying without alarm sound instantly playing
  • implemented playing zirp sound effect twice for each enemy (without spamming audio)
  • fixed particle effects not being enabled although set in the config file
  • the player will now bounce again upon destructive collision with an asteroid
  • fixed the ship accelerating sound effect not stopped on gameover event
  • the player can now collide with asteroids while the surfing animation is ongoing
  • fixed player ship not accelerating anymore if mouse button held during respawn
  • increased player orbiting distance for piraton enemies
  • piratons will now target the station when they carry ware
  • fixed piratons targetting the station without the correct ship alignment
  • fixed magnetic pull code to prevent objects from being ejected from the players ship
  • changed english text for new credit note to adapt it to the Megaroids text
  • fixed using colored spacola font variation only in enhanced mode and in the GUI
  • refined the spacolassic game mode image and improved the text art
  • fixed window title panels heights in the various GUI dialogs
  • fixed a background image centering bug in the image panel class
  • added a generic enemy method to shoot any game object with given shot speed
  • added a generic enemy method to shoot at the current angle with given shot speed
  • fixed possibly buggy comparison of current and target angles in the angle class
  • implemented an angle method to target a totally random direction
  • implemented a short instructions window accessible through the info menu
  • implemented functional page navigation for the short instructions window
  • removed mouse focusability for text panes in different dialogs
  • fixed default buttons for all dialog windows in the client
  • finally implemented the magic cursor TOS gimmick and integrated it into the gfx engine
  • readded a classic hud image and divided the game into classic and enhanced hud
  • modified the code responsible for drawing all the hud elements
  • added drawing of galaxy id and selected solar system into the classic hud
  • fixed a bug in alphanumeric flap display which could not deal with more than 2 digits
  • drawing of galaxy ids in classic mode now works perfectly well as flap display
  • enabled dithering class to create dithered backgrounds in color
  • created a separate fake tos image for enhanced mode which resembles a Low Res ST TOS
  • colored fake tos image now has its own „filename“, indicating it’s the enhanced game
  • cut out a few more Atari ST TOS icons for later use
  • also cut out two printer icons used in TOS
  • created two different sizes of 7 segment digit fonts used in TOS
  • created and added a colored radar image with black and green for enhanced mode
  • implemented a simple small text scroller to show below the radar in enhanced mode
  • also implemented a second text scroller with smooth (not character based) scrolling
  • the enhanced hud now features a text scroller which provides the player with info
  • fixed accelerating sound effect playing while player ship destroyed in enhanced mode
  • colorized the title artwork in the enhanced hud
  • fixed particle effects being shown in the classic game mode
  • started restructuring and modifying the original games manual
  • fixed errors with the letter A in the spacola font images
  • fixed several more errors with other letters in the spacola font images
  • colorized more essential parts of the enhanced hud
  • readded the arrows and added colorized ship to the enhanced hud
  • implemented flap displays also drawing colorized backgrounds in enhanced mode
  • reduced the palette of the colorized areas in the hud to make it look more retro
  • created a colored game mode image for the game mode selector
  • it’s finally possible to start the game either in classic or colored mode
  • fixed titles not starting colored when selecting enhanced mode
  • fixed radar screen drawn monochrome when the level starts in enhanced mode
  • changed sector boundaries in the enhanced radar to appear green and removed XOR effect
  • fixed text scroller to keep going in pause mode
  • added a method to remove cantina call effect from all the enemy ships
  • implemented shortening the length of all subsequent cantina calls to weaken the powerup
  • fixed deciphered coordinates and target coordinate scrambling not shown in enhanced mode
  • made deciphering the separate x and y coordinates a little more random
  • fixed deciphering showing the wrong coordinates
  • fixed a wrong pixel with the dollar sign in the spacola font
  • colorized some missing parts of the enhanced hud image
  • made smooth textscroller class to extend the standard text scroller
  • created very small spacola eclipse colored title images for ingame usage
  • added the colored spacola eclipse title image to the game resources
  • fixed missing transparency for several colored title images
  • fixed short instructions not accessible anymore after game has been cancelled
  • fixed wrong dongleware font variations used in the solar selector and the instructions
  • fixed player not being granted three lives when the intro titles start
  • added asteroid and mushroom menu icons to the resources
  • added lots of small rivets to the color hud and achieved an awesome metallic look
  • created another small spacola eclipse title image with a great embossed look
  • fixed several wrong pixels in the enhanced hud title artwork which i didn’t notice
  • fixed wrong pixel in both spacola font variations with the letter R
  • created a small embossed score text artwork for the enhanced hud
  • created another variant of the small text artwork for the enhanced hud
  • brightened text backgrounds in the enhanced hud to make text better readable
  • added monochrome and color dongleware switch sprites to the resources
  • added monochrome and color dongleware title (text only) images
  • implemented title centering methods that take an x and y offset
  • fixed dongleware title in the classic mode which had a delay between switch on and text
  • fixed dongleware title image shown in the closing credits module
  • created 4 new colored ship sprites for the enhanced version
  • completed 4 more colored ship sprites
  • fixed and colorized the galaxy icon in the enhanced hud title
  • created and added a colored spacola font for the enhanced hud
  • fixed colored spacola font not being used in the target sector display
  • completed another 7 colored ship sprites
  • finally completed all the colored ship sprites; still need to be improved
  • fixed wrapped elements not being updated in the intro vortex
  • fixed mouse cursor offset ignored in the particles test module
  • fixed catching the mouse cursor not working for non gamescreen draw modes
  • created a bolo style border overlay for the classic hud
  • also created an oxyd monochrome style border overlay for the classic hud
  • again darkened the spacola font and reduced the palette to 16 colors
  • fixed wrong class being referenced in log output for savegames
  • implemented storing a checksum in savegames and verifying them on load
  • created an oxyd color style border overlay for the classic hud
  • created bolo, oxyd and oxydcolor style border overlays for the enhanced hud
  • aliens, ware, rescue capsules and stations will also draw bounding circles
  • added all three custom borders to the colored resources
  • implemented drawing custom borders in the enhanced version of the game
  • fixed flap display fonts not being reset after game mode switch
  • fixed 3 colored ship sprites to improve their shading
  • created a colored cola ware sprite and added it to the game resources
  • level numbers and powerups in the selector will now only be shown in enhanced mode
  • created a more realistic cola ware sprite from using a photo
  • created realistic ware sprites for telephone and toilet paper by using photos as well
  • fixed using the wrong cherry ware sprite in the resources
  • colorized some remaining icons in the enhanced hud
  • fixed decryption error on load savegame not being handled correctly
  • pricelists sprite arrays will no longer be static objects
  • fixed pricelist sprite arrays not being updated after mode switch
  • fixed full 8 bit alpha transparency support for the enum gfx library
  • fixed less-than-half-transparent color sprites not drawing correctly
  • sharpened cola and toilet paper cargo sprites a little
  • created a realistic hairdryer cargo image from using a photo
  • fixed loading wrong image files for the screen cargo sprites
  • created a realistic scissors cargo image from using a photo
  • created a realistic cigarette cargo image from using a photo
  • created a realistic bonbon cargo image from using a photo
  • also created an alternative realistic cherry cargo image from using a photo
  • improved the realistic cola and telephone cargo images
  • improved (lengthened) the realistic cherry cargo image

v0.66 – July 2017

  • fixed wrong class being referenced in log output for spacola splash screen
  • fixed spacola default launch script not generating a spacola splash screen
  • converted the project workspace for the new Eclipse Oxygen release
  • added junit 4 library to the classpath of the project
  • started adding very first unit test stubs for the remake project

v0.65 – June 2017

  • added methods to allow saving images in JPEG, GIF and BMP formats as well
  • JPEG image saving allows setting the quality parameter
  • started implementing a more secure way of AES encryption/decryption
  • split up methods to write and test encrypted space atlas file
  • changed file encryption method from Blowfish to AES and reencrypted the packed resources
  • started recreating another original early dongleware logo in high res
  • tested saving JPG/GIF/BMP and PNG screenshots and using specified quality settings
  • added screenshot format and png default setting to the config file
  • added a more authentic dongleware high resolution logo to the atlas reconstruction
  • reconstructed a more authentic medium resolution spacola logo from the atlas
  • the game client will now remove all java cryptography restrictions at runtime
  • file encryption and decryption finally works with AES/CBC and full 256 bit key length
  • added a utility method to determine the java major version as integer value
  • moved raw atlas and levels config files into /raw/ subfolders and changed path values
  • implemented additional GZIP compression and decompression methods for resource packing
  • added a custom GZIP output stream class that allows setting the compression level
  • added zlib compression and decompression methods
  • implemented auto compression methods that determine which compression level works best
  • pulled all compression related methods into separate spacompression class
  • fixed a bug with GZIP compression where archives would not be finished
  • the game client now also parses packed text atlas files for compatibility
  • fixed problem where packed atlas object could not be loaded in proguarded client
  • fixed loading of corrupted highscores which won’t interrupt the startup process anymore
  • gzip compression resulted in smallest file sizes, will use that from now on
  • increased width of the audio device and display mode windows
  • added selected audio device and mixer description to the audio device window
  • fixed the utility method to determine the major java version since it causes problems
  • added number of packed resource files to the number of resources altogether
  • added thread names for singleplayer and multiplayer game threads
  • added three new asteroid sprites from the atari st game ‚Megaroids‘ as bonus content
  • implemented megaroids asteroid types into the enhanced version of the game
  • added more dynamical ways to generate asteroids of random type
  • added all four asteroid level configuration parameters to the sector class
  • created a special asteroids setup class for sectors to contain the asteroid attributes
  • huge asteroids will now spawn big and medium ones in enhanced mode
  • rewrote large parts of creation of asteroid objects
  • implemented checking and reducing the number of asteroids per sector
  • defined constant object sizes for all asteroid types
  • split asteroids motion vector fixed which was independent from the original one

v0.64 – May 2017

  • replaced the about image with a better one using smaller text and a proper background
  • fixed about image height in the about panel which was too low for the entire image
  • fixed log output when saving png image files
  • tried implementing the correct magnetic pull behaviour for collector powerups

v0.63 – April 2017

  • created and added three new surf sprites with correct black shading pixels (confirmed)
  • fixed centering of the colored grave sprite
  • added methods to save highscores as packed encrypted files
  • game saving and loading methods can now be used with any filename
  • moved all the project launch files into a separate /launches/ directory
  • implemented checking savegame filenames for the correct extension before saving
  • implemented loading and saving custom games with a file dialog
  • loading a saved game now actually works
  • added localized texts to the file dialogs
  • added error messages for when trying to load invalid savegame files
  • fixed problem when trying to load a properly encrypted file of the wrong type
  • added more human readable error messages for the spacryption class
  • added the filename to load game error dialog
  • added a splash screen class which shows a splash screen before the game client is loaded
  • some text is now also written dynamically into the splash screen
  • added log output to the splash screen class
  • implemented methods to allow pausing and resuming the ingame music
  • the ingame music will now pause playing while the player ship is respawning
  • added a delay where the music will only resume after surf sound effect has stopped
  • cleaned up and refactored some ogg music library code
  • returned to windows for development, since my linux doesn’t want to boot anymore
  • fixed workspace under windows not using utf-8 encoding by default
  • fixed not using system independent file separators for path variables
  • replaced mono sd software image with another one using the correct height spacing
  • renamed window „splash“ to window background image
  • added a new window background artwork which is more faithful to the original art
  • added new about image that fits to the new background artwork
  • created and added a special loading splash image (spacola eclipse floppy disk)
  • fixed startup message in the splash image not being localized
  • fixed swing link class referencing the wrong standard classes
  • fixed about image label in panel not wide enough to show the whole image
  • fixed wrong log levels for resource loader class
  • fixed build problems with ant once again
  • added fatal error log commands that also shut down the game client
  • had to fix lots of new problems due to using system independent file separators
  • added a default method to load the primary savegame file
  • added a menu option to resume the game
  • implemented checking if the resume file exists and setting the menu option accordingly
  • saving and resuming the game now really works perfectly as intended
  • the game will now optionally delete the savegame file on resume as the original game did
  • implemented starting the verification module after resuming a game
  • fixed a bug where the target hex code for the verification wasn’t set correctly
  • fixed a bug where the game returned to the saved game immediately after invalidating it
  • finally verifying a resumed game via space atlas works
  • added a pause after verification module to prevent the game from starting immediately
  • fixed radar screen not resetting after the game has been cancelled
  • fixed intro star motion delay only on the first run
  • fixed opening star motion delay on the first run for intro and solar selector
  • disabled star background in verification module only on successful verification
  • fixed a bug where the main menu always returned to the short instructions
  • fixed a bug where the instructions returned to the solar selector
  • fixed main menu module not appearing after leaving instructions module
  • fixed solar selector not appearing after starting a game after leaving instructions
  • fixed instructions button still being clickable during page transitions
  • the game will now check for highscore when a running game is cancelled in the selector
  • fixed solar selector being reset before the highscore entry has been saved
  • added a method to the solar system to determine if the base level has been set
  • enabled debug text overlay in the main menu module
  • updated the project from using ProGuard version 5.2.1 to version 5.3.3
  • updated the project from using Launch4j version 3.8 to version 3.9
  • implemented alien and ware collector powerups like they work in the original game
  • reimplemented uncollectable frames for ware after shooting them with pirate guns
  • fixed collecting of ware during uncollectable frames

v0.62 – March 2017

  • added two utility methods to allow simulating linux „tail“ on file access
  • now continuing development primarily under Linux Mint
  • set the swing gui to use cross platform L&F to avoid platform rendering differences
  • fixed problems with some source and text files not being converted to UTF-8
  • wrote a method to find the available L&Fs and set the preferred one
  • fixed window never resizing under Linux – code behaves differently under Windows
  • made sure the game window always tries to set the preferred L&F (Nimbus)
  • fixed dongleware fonts not showing special characters (yet another UTF-8 problem)
  • wasted half an hour saving all my source files manually as UTF-8 encoded files
  • wasted more time saving all source files once again as UTF-8 without BOM
  • added method to get any sound object directly from the sound library
  • tried fixing the loop problem on Linux for the accelerating sound effect
  • improved stopping accelerating sound effect earlier and more rapidly under Linux
  • fixed a bug where the accelerate sound effect is being stopped infinitely
  • rewrote the ship accelerate sound effect handling
  • fixed a bug where the accelerate status would not reset after ship destruction
  • fixed a bug where the wrong buffer is redrawn after window resize events
  • fixed linux related problem with the game window only showing a black screen sometimes
  • pulled the linux „tail“ methods into to the file access class
  • merged both „tail“ methods into one
  • fixed missing accelerate sound after respawning for enhanced mode
  • fixed the black menu bar problem under Linux by repainting
  • fixed a bug where the selected audio mixer is never used
  • implemented better control checks for audio device capabilities
  • worked out why there was no support for pan and balance for all audio devices
  • wrote a line sound test class to determine various parameters for supported audio devices
  • fixed client info panel dimensions in the about window
  • added and refined a jlabel link class to the gui elements package for hyperlink labels
  • also added a swinglink class that also enables using hyperlinks as labels
  • wrote a method to determine the perfect size of a hyperlink JLabel
  • finally added clickable links to the about window
  • the text in the about window is now created more dynamically
  • the about window now uses proper unicode copyright characters instead of (c)
  • fixed path problems for config and log file under linux, uses application directory now
  • added log output to show the number of decrypted bytes from packed resources
  • added log output for enum graphics library initialization and resource file usage
  • increased the height of the view highscore window to prevent scrollbars
  • fixed a possible bug with getting the top score from the highscores
  • the game can hold an infinite number of highscore entries, but only 10 are shown
  • highscores now have an internal limit for the number of highscore entries
  • added a checkbox in the view highscore window to allow viewing all existing entries
  • refined the output for the view highscore window
  • changed creation of randomized highscores
  • fixed changelog file where several characters got lost in the UTF-8 transition
  • fixed log output for spacola codes class
  • added a menu resource lib class that holds icons for the menu items and buttons
  • implemented close menu icons for the gui buttons
  • added a TOS check (accept) menu icon for the gui buttons
  • implemented TOS check/accept icon for the audio device and fullscreen mode windows
  • added TOS up/down, left/right icons for the gui
  • fixed too much constant text in the credits window
  • fixed language switch not working for the credits window
  • the credits window now replaces plain copyright sign with unicode character
  • improved text representation of current display mode for the system info panel
  • fixed two text fields not being shown in the system info panel
  • redesigned the about window panel and added a game icon and a short description
  • translated and outsourced the short description into the text resource files
  • created a new success denied software logo with the creators name in it
  • created a new spacola splash screen and added it to the resources
  • added the new success denied software logo to the mono resources
  • created and added a new about window image which is sharpened more
  • implemented and added a license panel to the about window tabs with the GPL license text
  • modified the splash screen once more and added more shadows to the components
  • fixed text output of current video mode in the client info
  • confirmed that the black menu bar bug (after changing the game resolution) is fixed
  • increased generated height for jlabel links to fix display problems under windows
  • fixed resizing window twice on startup due to a redundant method call
  • implemented a new way to calculate the target game window size and enforce it
  • fixed a bug in the solar selector with preselected level after cancelling a previous game
  • confirmed that adding a highscore entry consisting of 22 chars will distort the highscores
  • removed some redundant graphics canvas initialization code
  • rewrote small parts of the graphics initialization
  • fixed a problem where the enum gfx lib was initialized earlier than intended
  • finally fixed a nasty bug that resulted in black game screen in roughly 1/3 of startups
  • fixed stars no longer moving in the short instructions module
  • separated instructions updating and drawing code
  • separated billing updating and drawing code
  • separated highscores updating and drawing code
  • removed unnecessary redrawing of text in the highscores module
  • fixed allowing the player to enter name when not ranked in the top 10
  • it’s now allowed to enter empty player name only in non-enhanced mode
  • fixed a problem with decision whether a player score is highscore-worthy
  • separated closing credits updating and drawing code
  • fixed radar screen not resetting on billing module
  • fixed current sector flap display not delayed in the solar selector screen
  • rewrote delay code for flap displays, confirmed perfectly authentic now
  • separated certificate module updating and drawing code
  • separated verification module updating and drawing code
  • fixed separation of updating and drawing in the main menu module
  • fixed two methods not being static in the game utility class
  • added new fields instant and game completed to highscore entries
  • rewrote initialization methods and added a new table data output method
  • the view highscore window now features a real table to inspect the data
  • added a utility method that automatically defines table column widths
  • highscore table column widths are sized appropriately now
  • replaced huge calendar objects with much smaller timestamps in highscore entries
  • added game completed status to the enter highscore submodule
  • fixed playership not being pulled towards black holes when destroyed like in the original
  • fixed player being able to enter highscore with zero score
  • fixed powerup indicator disappearing only after highscore and mainmenu fadein
  • fixed highscore now showing only when the player has entered the highscore
  • confirmed turrets shooting the player when in target station or destroyed
  • fast radar refresh rate is now enabled for enhanced gameplay
  • changed fadeout method in the closing credits module
  • tried fixing fullscreen mode for linux mint which currently doesn’t work
  • added an atari st 8×16 system truetype font to the project resources
  • implemented a fontloader class that loads and registers truetype fonts
  • the fontloader class is now able to set the swing default font
  • the spacola eclipse gui now can be used with the atari st gem font as default
  • fixed overly high volume for sound effects under linux
  • tried fixing window sizing once again, since its either broken under windows or linux
  • fixed a problem with shutting down the game engine by pushing the coffee button
  • added a method to the fontloader to list all available fonts
  • fixed adding duplicate display modes to the list of available modes
  • fixed a bug where the intro titles were not reset properly when leaving the intro loop
  • fixed a bug where the dongleware button would flicker after the full intro loop reset
  • the default font will now also be used for the credits window
  • reduced the size of the font for the log messages window
  • implemented checks if a font character has already been defined
  • removed extra space after the last character in the gem font image
  • fixed a duplicate character in the gem font image and replaced it in the resources
  • added an apostrophe character to all the mono and color dongleware fonts
  • fixed using accent characters in the german text resources
  • rewrote getting and printing lists for fonts, display modes and mixer devices
  • the fontloader instance is now supplied by the gamewindow class and instantiated by it
  • fixed strange exceptions when trying to debug the game by removing breakpoints
  • readded filtering again which is now much faster on non-monochrome graphics
  • split up code for enforcing window content size and enforcing window size
  • figured out that the insets values for swing components change from init to pack to show
  • still trying to get a swing frame to have the same effing size on all the platforms
  • the canvas, contentpane and frame will now only be sized _after_ displaying it
  • started writing a debug overlay class that handles drawing debug info onto the screen
  • implemented overridden preferred/min/max size methods for the game canvas
  • added lots more checks to enforce the correct window and content pane size
  • the game client will now try to reset the window and content pane sizes several times
  • removed the default layoutmanager of the game window to prevent unwanted resizing attempts
  • started implementing a render screen again where everything is rendered on
  • added theoretical max fps to the debug overlay to indicate the actual render performance
  • fixed another nasty bug with a broken menubar that was caused by setresizable too often
  • fixed missing framestopwatch splitting calls in several modules
  • fixed missing checks if frames are supposed to be drawn in the solar system module
  • removed separate debug text handling code from several modules
  • reverted back to rendering everything to a single image before drawing to the buffer
  • post processing will now work much faster for higher resolutions
  • enabled debug text for faketos and splash modules
  • implemented utility methods to determine if a client is running windows or linux
  • added windows specific code that may help getting the correct frame size under windows
  • implemented a log method that adds suitable linebreaks to any error message for dialogs
  • implemented a log method that creates the current stack trace as string anytime
  • reduced the window sizing code to only the most basic stuff again to try a new approach
  • finally(!!!) found a way to get the frame to size correctly under windows and linux
  • fixed resizing problems once again that may have been caused by moving the window
  • fixed not resizing in the event dispatch thread in a running game
  • the frame can now be resized correctly under windows and linux without any glitches
  • fixed billing titles not being shown anymore after rendering method rewrite
  • added invert screen filter as an option to the menu
  • added a method to invert the render screen in any module on demand
  • created a new gfx filter package and moved all filter related classes there
  • implemented a filters class that handles enabling and disabling all the filters
  • corrected the real name of Peter „Petari“ Putnik in the closing credits module
  • added debug text method to controllable interface
  • rewrote debug text creation for the solar system module
  • fixed graphics rendering in pause after solar selector level selection
  • fixed adding and removing gfx filters which caused exceptions
  • fixed cursor being visible during game saving
  • confirmed that screen inverting only occurs in the hacked spacola version
  • fixed timings and animation for the game saving fadeout
  • rewrote loading and registering of atari st system truetype fonts
  • added 8px and 6px atari st system fonts
  • made the truetype fonts have their respective default size
  • fixed player winning a level without any cargo via debug command
  • changed highscore entries to reflect the game completion in percent
  • the game completion table column in view highscore window now has right alignment
  • changed log messages window font to atari st 6 px font
  • fixed about panel and system info panel spacings, margins and fonts
  • fixed text positions in the system info panel fields
  • shortened the short description in the about panel to fit the window height
  • checked and confirmed the filename for the savegame filename ’spacola.ply‘
  • confirmed the filename for the highscores file ‚hiscores.spa‘
  • implemented a less oxyd-like more spacola-y logo screen
  • added delay frames to the intro titles with empty frame and non moving stars
  • fixed preparation of intro titles which wouldn’t reset correctly before the loop
  • implemented a solar progress class which is able to load and save games
  • saving the game now basically works for the first time
  • added a method to save the game as packed and encrypted file to prevent manipulation
  • added a method to load a custom game that the user can select from the saves directory

v0.61 – January 2017

  • created a new eclipse title and build splash image with the year 2017 in it
  • renamed some uptime and elapsed time calculation utility methods
  • added a mathematical method to calculate intersections between a circle and a line
  • rewrote turret aiming once again and finally got it to look like in the original game
  • measured the pirate and deadly turrets sizes
  • all modules share one framestopwatch instance now which is declared in the gfx engine
  • implemented a manual frameskip setting in the framestopwatch
  • started creating a dongleware small font for the copyright year graphics
  • fixed frameskip being ignored in almost all other modules
  • pulled some game updating code out of the game loop into the update method
  • started readding frictionless magnetism/gravity code for the black hole objects
  • separated titles updating and drawing code and removed redundant parts
  • separated dithering fader updating and drawing code
  • fixed star background also updating in the drawing code of the gfxengine
  • fixed solar selector module dithering titles and star background updating
  • separated solar selector animation updating and drawing code
  • fixed dithering titles problems in solar selector after separating updates from drawing
  • fixed error in turrets code where shooting resulted in NPE
  • implemented a new black hole gravity formula which seems very authentic
  • fixed potential error in the new black hole gravity formula

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
  • fixed aiming for the turrets which is much better now
  • confirmed pirate turret shot speed again the for last time

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

v0.54 – March 2016

  • fixed splash screen centering x and y offsets which are -4 and 2 in the original game
  • increased speed of dithering transitions. Still not satisfied with the values being used
  • fixed redundant code for toggling bomb event
  • removed unnecessary repeated casting in station handling code
  • removed redundant variable for station state
  • station states/animations are no longer static and now independent from each other
  • measured, confirmed and implemented the highscore display short period
  • fixed the height alignment of the new main menu modules titles
  • added the main menu core module to the game loop which displays after the highscore screen
  • fixed the highscore modules line spacings
  • fixed a bug where the level was marked as solved although the player went gameover
  • added valid and invalid input for the main menu core module
  • implemented some of the functionality for the F-keys during intro and main menu
  • implemented cancelling the solar selector with the ESC key
  • added any key event to intercept any key event for core modules
  • added the intro loop from price lists up to the main menu with 3 iterations in total
  • measured and confirmed the intro highscore and long main menu periods
  • enabled right mouse clicks for the main menu and the intro to start the game
  • found out that i already implemented the intro loop in a different way
  • fixed a bug in the flap display class where undelayed displays still had a small delay
  • implemented the ability for the flap displays to flap non numeric text values
  • added non numeric flap displays for the current and target sector displays
  • implemented a set score cheat that allows (re)setting the players score instantly
  • fixed cursor being shown when exiting the solar selector screen
  • removed delay from sector flap display in the solar selector
  • fixed a bug where the solar selector has not been reset properly after cancelling
  • implemented unloading cargo if the game is cancelled by pressing ESC
  • added resetting the HUD displays only shortly after the solar selector is shown
  • fixed adding the first three lives only after the dongleware switch is shown in the intro
  • added presetting the cursor to the middle of the solar selector panel
  • fixed a charset width error for the spacola and spacola white font
  • added a whitespace character to both spacola fonts
  • added teleport to random command and menu item
  • rewrote vortex code to also draw animations for game objects and stars
  • fixed converting object coordinates to screen coordinates to consider object size
  • added powerup containers to the vortex
  • added mine type objects to the vortex
  • started writing a better maforian AI from using minedropper patterns
  • replaced some more blank graphics creating code with using pregenerated images
  • added empty default actions for arrow keys in the controllable class
  • measured, confirmed and set shield blinking frame intervals to be 6 frames in the original
  • removed faster shield blinking code, because this doesn’t appear in the original game
  • rewrote some logic for setting/adding score and lives and added more sanity checks
  • implemented complete cursor logic for the highscores enter name module
  • tried fixing the bitwise XOR composite, because it still doesn’t work correctly on alpha
  • added method to the screenshot saver to allow saving any renderer content at any time
  • finally fixed the bitwise XOR composite where alpha channel conversion didn’t work
  • now the highscore name entering works perfectly with XORing the cursor into the text
  • relocated image writing to file via the gfx engine
  • added insert and delete key events to the controls and controllable classes
  • implemented support for the delete key in the highscore name entering
  • pulled everything text prompt related out of highscore into a text prompt class
  • added the new text prompt with implemented cursor logic to the verification module
  • renamed the FakeTOS module to FakeTos to be more class naming compliant
  • added a new core elements package and put controls, controllable and text prompt into it
  • added some more debug output to the level generation codebook lookup
  • the menu player now gets a random position in the menu level
  • fixed an error with unset last and current sector in the level
  • added frozen mouse cursor function (i.e. for the solar selector panel)
  • the mouse cursor now works more accurately in the solar selector panel

v0.53 – February 2016

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

v0.52 – January 2016

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

v0.51 – December 2015

  • implemented square distance comparisons in mine h3/8 and alien classes
  • added more mathematical functions to calculate comparable square distances
  • implemented square distance comparisons to collision checks in game object class
  • fixed a bug where bouncing enemies stayed alive as ghosts after destruction
  • added a route guidance icon for the target sector
  • replaced unnecessary Math.pow calls by much faster multiplications in GameMath class
  • added a target icon for the route guidance / direction marker
  • rewrote retrieving certain sector objects from a sector
  • added optional direction markers for all the surrounding powerups
  • added a function to get powerup icons only from any sector container
  • removed some more square root function calls for attach and collision distances
  • cleaned up some code belonging to the new continuous collision detection
  • the graphics engine now also draws the proximity to automatic mines
  • added an option to the menu bar to enable/disable bounding circle drawing
  • added a way to patch the original level configuration from the source code
  • added an option to the menu bar to enable/disable sector boundaries drawing
  • the players shield will now dissolve debris explosion particles on collision
  • fixed a bug where the enemy ship deployment proximity has been calculated wrong
  • minedropper shot debris will now vanish on contact with the players ship
  • the minedropper shot debris will now release sparks when vanishing
  • fixed a bug with calculating the player ship acceleration particles deviation
  • fixed peashooter shots creating sparks on collision with the players shield
  • implemented particles emitting for minedropper enemies
  • implemented background resetting on level border wrapping
  • fixed a bug where x and y sector coordinates were exchanged when clearing a sector
  • fixed many redundant current sector calculations in each frame
  • wrote methods to shift the star background a few pixels in every direction
  • implemented star background shifting in the middle of the level like in the original game
  • confirmed star shifting values to be either 128, 256 or 512 pixels
  • rewrote the logic for star speeds and implemented methods to get their pixelspeed
  • fixed star shifting to use the original pixel values and not recalculated ones
  • allowed the game to always trace the last sector that a player has been
  • added debug output to show when the player surpasses the level center or the level edges

v0.50 – November 2015

  • updated Launch4j from version 3.5 to 3.8
  • pulled Launch4j binaries into the workspace to start using relative build paths only
  • removed obsolete eclipse_home property from the ant build script
  • added ProGuard 5.2.1 binaries to the workspace
  • added ProGuard tasks to the ant build script and wrote a simple configuration
  • added tasks for creating signed ProGuard binaries
  • will use absolute paths for logfile creation messages
  • added more precise output for text resource bundle error messages
  • finally got the obfuscated and shrunk ProGuard binaries working
  • added an ant property to control the verbosity of the jar signing task
  • fixed letter edges of the successdenied software logo in the titles
  • cut out two atari steem icons for the optional project graphics
  • the game client can now parse all the Spacola Space Atlas codes and use them
  • added package and wrote classes for Spacola Space Atlas code management
  • wrote a function to search for specific codes in the whole code book
  • added serialize to bytes function to the file access class
  • added game utility method to create output over a string array
  • added deserialize from bytes function to the file access class
  • fixed a bug in the encryption and decryption methods for byte arrays
  • the game client can now read, encrypt and decrypt the packed space atlas file
  • fixed a bug in the unzipping code of the resource loader
  • the space atlas data will now be compressed+encrypted and decompressed+decrypted
  • added the packed spacola atlas to the resources
  • moved all the third party programs for building into a separate directory
  • added a game utility method to remove an element from a string containing elements
  • added utility methods to turn a hex description of a sector into int coordinates
  • wrote toString methods for all the different Spacola Space Atlas classes
  • transcribed the powerups for the first galaxy from the Space Atlas
  • moved all the file compression and encryption methods to the resource loader class
  • fixed a linebreak bug in the text file reader code
  • the levels.txt file will now be encrypted to the resources
  • the LevelsTxtParser will now use the encrypted resource file instead
  • added a variable for the start powerup to the Space Atlas code classes
  • renamed the levels configuration file inside the encrypted archive
  • added some log output to the loading of encrypted files
  • transcribed the powerups for the second galaxy from the Space Atlas
  • added a custom file header for encrypted Spacola PAC files as in the original OXYD
  • fixed some more letter edges of the successdenied software logo
  • created some new splash image designs with the new successdenied software logo
  • transcribed the powerups for the third galaxy, thus completing the first page
  • fixed a bug with calculating base motion adaption factors in the vector2D class
  • fixed a division by zero error in the calculation of base motion adaption factors
  • added the latest game splash screen to the resources
  • implemented Minedropper basic motion logic
  • implemented special ship decoration for minedroppers
  • added minedropper shot game object type to the list
  • implemented simple minedropper shot game object
  • implemented minedropper shot debris game object
  • implemented minedropper destruction and shooting behaviour
  • added a position copying function for the vector 2d class
  • added sound effects to minedropper shots
  • measured and confirmed minedropper default flight speed
  • improved the minedropper behaviour to make them navigate more like in the original game
  • added vector methods to retrieve separate x and y combined motion values
  • implemented minedropper shot explosives and explosion code
  • fixed a bug with loading the encrypted Space Atlas codes
  • the game now really uses the codes from the Space Atlas as target sectors
  • fixed level generator not using the selected solar field
  • wrote a method to create a galaxy id as seen in the original game’s sidebar
  • fixed a bug where minedropper shot debris were not centered correctly
  • measured and confirmed minedropper shot debris ejection speed
  • increased the maximum distance that minedropper shot debris can go
  • added two missing minedropper sprites to the resources
  • counted and added the number of debris particles for minedropper shot explosives
  • implemented debris explosions to also allow debris particles to dissolve
  • measured and set the force for the minedropper shot explosive debris
  • minedropper shot debris will now stay alive until they leave the players sight
  • the graphics engine can now also draw sector boundaries to the game screen
  • reduced the „alive distance“ of minedropper shot debris
  • fixed sound effect for minedropper shot explosions
  • minedroppers will now drop mines exactly at the last point before swinging back
  • implemented minedroppers animation
  • enemy shots will now be drawn behind enemy ships
  • removed a sqrt calculation for finding the nearest object by comparing square distances
  • added functions to draw bounding circles and bounding boxes around game objects
  • added functions to check for AABB collision and AABB motion collision
  • fixed a bug where bouncing of two objects without mass causes division by zero
  • tried fixing the collision detection and prevention algorithm
  • added functions to calculate collision points for two game objects colliding
  • added a simpler bouncing code to the math functions
  • added a vector analysis function that calculates the time of impact for game objects
  • implemented a new ball physics engine
  • finally no more intersecting game objects when they should actually be colliding
  • removed simple bouncing code since it doesn’t really work
  • added a function to create a substitute bounding rectangle for circular objects
  • fixed a bug where oxyd rotor enemies were drawn to the wrong position during flight
  • finally fixed the bug where the penalty forced objects to bounce around too much

v0.49 – October 2015

  • made the instructions button go behind the star background like in the original game
  • measured/estimated the original games hyper speed and ridiculous speed values
  • fixed hyper speed warning not triggering when leaving ridiculous speed frame
  • fixed enabling max speed limit only in enhanced game mode
  • fixed calculation of speedup value not scaling correctly with target framerate
  • fixed formula for speedup value calculation, seems i finally found accurate values
  • fixed aliens and ware being repelled from the ship when approaching them
  • fixed NPE from uninitialized level when starting multiplayer session
  • finished and added all 16 colored alien sprites to the resources
  • cut out and added colored alien help sprite to the resources
  • finished and added 3 colored player surfing sprites to the resources
  • started creating the colored ship drive sprites
  • fixed the calculation of the level phases in the levels txt parser
  • fixed a bug where level 64 was always placed in the last position
  • enabled all 64 levels to be selectable initially in the solar selector
  • enabled the solar selector to show the selectable level numbers on the fields
  • created a method that allows creating all the remaining selectable fields at once
  • created a method that allows enabling and disabling level numbers in the solar selector
  • added some log output to the solar selector class
  • the level numbers are now drawn centered in the corresponding field
  • set the GEM font in the solar selector to inverted mode
  • started creating the colored ship sprites
  • again confirmed sector height by measuring the time the ship needs to fly through it
  • implemented a swing class for buttons with animated sprites
  • tried counting the actual number of stars in the original games‘ background
  • set the number of stars to 63
  • extracted some radar constants into separate variables
  • fixed big asteroid sprite shape by analysing dozens of screenshots
  • implemented oxyd rotors also bouncing from the players ship
  • fixed medium asteroid sprite shape by analysing dozens of screenshots
  • confirmed the number of small / big and blinking stars
  • fixed code for star background creation regarding correct amount of stars
  • fixed star background creation regarding layer total of small / big / blinking stars
  • fixed star blinking durations to be exactly like in the original star background
  • added a new class for big star animation phases sequence

v0.48 – September 2015

  • added utility methods for string reversing and multiple byte array concatenation
  • added a preliminary method to generate a secret key for data encryption
  • reduced number of voices for the audio engine from 32 to 8
  • confirmed original game had only 2 sound channels (voices) from Oxyd 2 and Spacola box
  • added default number of voices to the sound config
  • cut out tos icons for drive c, folder, file and executable program
  • implemented a log window updater thread which keeps adding incoming log messages
  • removed modality for the log window to allow keeping it open while playing
  • created a big oxyd title image from the original oxyd book cover
  • the log window will now autoscroll to the bottom of the log output
  • changed updating the log output only in the EDT
  • added thread name for the log output updater thread
  • added a new build script task that creates the latest source jar file
  • replaced source jar task with sourceonly zip task and sourcecomplete zip task
  • refined including files in the build source zip tasks
  • added the possibility to create an inverted (black) dongleware font object
  • added dongleware font written title to the log messages window
  • fixed an NPE with the log window updater thread
  • implemented hairdryer and telephone station animations
  • implemented scissors station animation, looks awful though
  • fixed oxyd rotors turning animation going too fast on deployment
  • added a window title background image
  • added a special image panel class which can hold a background image
  • created a window title header panel for the log messages window
  • created a windowmanager class that will handle all the subwindows
  • created a special window title panel class for all the subwindow headers
  • added log output to the log messages window and the windowmanager
  • fixed starting up log window updater thread twice
  • fixed log window updater thread not stopping when closing the window via the X button
  • moved audio device window to the window manager and added a window title panel to it
  • added a swing border to the window title panel
  • added monochrome oxyd dongleware font to the resources
  • introduced dongleware font style attribute
  • replaced „dongleware black“ with „dongleware oxyd style“ for the swing windows
  • added color oxyd dongleare font to the resources
  • added display mode window to the window manager
  • added window title panel to the display mode window
  • added border to the about window image
  • removed highscores title text from highscore toString method
  • moved all smaller (reusable) GUI elements into their own package
  • all other subwindows are now handled by the window manager class
  • fixed a design template for the HUD background image
  • fixed spacola eclipse 2015 title image and build splash image
  • created a better and wider window title background image
  • fixed drawing only the required clip bounds in the image panel
  • the image panel will now draw its image background centered in the panel
  • created a wide spacola eclipse title image
  • implemented drawing smaller images in a bigger image panel
  • implemented dongleware color and dongleware oxyd color style fonts
  • fixed spacola eclipse 2015 title image once more (letter S corrected, E’s widened)
  • fixed wide spacola eclipse title image too
  • created a better title artwork and added a new application splash screen
  • created a new about dialog image
  • created a new website header image
  • added oxklick1 oxyd sound effect for bouncing things
  • implemented enemies being able to bounce off of each other
  • implemented a way to reduce bounce noise when enemies are crowded in one place
  • added object intersection resolving when enemies collide
  • implemented a better way to resolve object intersections for collisions
  • created a new method for enemy collision checking
  • fixed object intersections not resolving on higher flight speeds
  • deprecated the old resolve collisions method
  • cut out and added 9 oxyd collision sprites to the resources
  • cut out black and white oxyd marble sprites from the original oxyd
  • cut out black marble sprites from the colored oxyd version
  • measured status message blinking durations in the original game
  • rewrote status message blinking logic which is now much more authentic
  • confirmed status pause message blinking duration to be half a second precisely
  • measured the radar update framerate in the original game being set to every 20th frame
  • fixed radar screen update rate at about every 14th frame
  • measured all frame durations for all the station animations in the original game
  • rewrote the complete station animation logic to allow more flexible frame timings
  • implemented all 10 station animations absolutely frame perfect
  • winning animation length is now depending on the type of animation being played
  • implemented delayed setting of station state as it is done in the original game
  • created an alternative ‚oxyd color‘ fun border design for the hud frame
  • the station state delay is now depending on the actual framerate
  • cut out a green killer marble from oxyd color
  • fixed reconstruction of the colored inactive blackhole sprite
  • changed some pixels of the colored blackhole shape 2 sprite
  • tried improving the collision resolving algorithm
  • added an undo and getNextPosition method to the vector 2d class
  • added willCollideWith and step forward methods to gameobject and vector 2d class
  • added step n times forward and back methods to the vector class
  • finally managed to improve the collision resolving algorithm, still more work to do
  • added more math methods to calculate two bounced motion vectors
  • added a new get motion vector method to the vector 2d class
  • added a new set motion vector method to the vector 2d class
  • merged both set motion vector methods
  • created all three variations of the shape 3 blackhole color sprite from oxyd color
  • replaced the colored blackhole shape 3 sprite in the resources with the simplest one
  • added the game cursor to the number of rendered objects
  • fixed a bug in the vector 2d class where the stop command would not reset the direction
  • added current base and target base motion logic to the vector 2d class
  • added more motion recalculation methods to the vector 2d class
  • added base motion consideration to the vector 2d copy constructors
  • fixed explosions being drawn far behind an object with base motion
  • fixed explosions being updated once more after enemy ships that exploded have been updated
  • fixed aliens and ware not being created properly from objects using base motion
  • set a name for the sound threads in order to identify them in java dumps
  • set a name for the spacola eclipse main thread
  • fixed calculation of travelled distance for game objects using base motion
  • added special collections for bouncing enemies
  • the collision resolving code will now only iterate through bouncing enemies
  • the collision resolving code will now apply penalty forces for persistent collisions
  • started writing a separate method that calculates all the collision forces in a crowd
  • fixed ware objects being drawn twice to the radar, making them invisible again
  • fixed aliens not vanishing at the edge of the radar
  • fixed aliens not being ejected after player destruction
  • fixed aliens being collected in the wrong frame (before update)
  • fixed vanished ware and aliens being processed after they have been removed
  • tried fixing the magnetic effect for ware and aliens
  • introduced tick checking to ensure that no object is updated twice per frame
  • measured and confirmed powerup container magnetism radius to be 50 pixels wide
  • finally found the perfect way to create a magnetism effect like in the original game
  • fixed an exception when moving the mouse on the solar selector after a gameover event
  • fixed billing animation titles loading the wrong sprites
  • fixed the player not setting the visited flag correctly when not enough cargo
  • changed the way how the magnetic effect pulls objects to the center
  • measured and confirmed the three different star speeds for the background
  • tried finding the correct speedup value for the player ship, looks better now
  • fixed stars still moving when the player has landed on a powerup container
  • changed the magnetic effect again, to add some kind of braking mechanism
  • improved the magnetism effect once more, this time it is absolutely authentic
  • fixed yet another problem with the magnetism effect

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
  • changed Eclipse SDK in the titles to Eclipse IDE
  • turned some more translation keys in the resource bundles to lowercase only
  • created a new header image for the spacola eclipse website
  • fixed size, center and transparency of all three surfing sprites as given by designs
  • fixed grave sprite size which needed a center fix to resemble the original accurately
  • finally all original designs have been evaluated and used as monochrome sprite templates
  • measured the dangerous enemy alert interval and set to about 4,86 seconds for now
  • rewrote most of the text for the spacola website
  • cut out TOS drive a and b desktop icons as well as the trashcan icon
  • confirmed the rocket speed in the original to be 4 pixels per frame @ 72 Hz
  • set the player rocket speed to 5,76 pixels per frame @ 50 fps
  • shot speeds and cooldowns are now calculated regarding the target framerate
  • player acceleration value now also changes with target framerate
  • confirmed the minestar shot speed in the original to be 5,5 pixels per frame @ 72 Hz
  • set the minestar shot speed to 7,92 pixels per frame @ 50 fps
  • confirmed the minestar shot cooldown in the original to be 5,09 frames @ 72 Hz
  • set the minestar shot cooldown to 3,53 frames @ 50 fps
  • changed how the game interprets frame logic for single parameter frames, i.e. (-1)(-1)
  • fixed trying to interpret the block identifier token which has already been parsed
  • wrote a function to retrieve the sectors for the FO (Fill Outer) range modifiers
  • created colored station rant and station wave animation sprites from the original designs
  • added 8 colored station animation sprites to the resources
  • added audio device, fullscreen mode and switch to fullscreen to the menu bar options
  • added default buttons to the audio device and display mode dialogs
  • rewrote maforian shield logic and added the shield to the ship decorator
  • increased the distance at which the ware items are drawn at the enemy ships
  • deprecated ShieldMaforian enemies since they are obsolete now
  • increased the mass of the maforians to make them bounce off with less force
  • fixed using the wrong rapid shooting cooldown value
  • fixed enemy shields sometimes not being drawn by the ship decorator
  • fixed exception in the ship decorator when the direction sprite index buffer is empty
  • implemented shielded mothermaforians dummy ai
  • the player can now trigger stations while surfing, bomb event will be reset though
  • implemented Oxyd rotor enemy
  • improved the magnetism effect code
  • cut out a smaller Atari logo from the TOS GEM about dialog
  • added a method to retrieve an audio mixer object for a given name
  • started adding audio capability detection to the audio device window
  • started adding parts for an encryption key to the config

v0.46 – July 2015

  • added two utility methods to convert Date into Calendar objects and vice versa
  • recreated original spacola crosshair cursor using the original design shape
  • created a colored spacola crosshair cursor using the original designs
  • replaced crosshair sprite with new crosshair cursor to the resources
  • improved the colored cherries sprite using some gradients to make it look more plastic
  • all monochrome cursors reported as perfect recreations now
  • fixed powerup container sprite, removed unnecessary black border making the sprite smaller
  • created colored powerup container and space station sprites
  • created colored gameover/grave sprite
  • fixed all 3 blackhole sprites again using the perfect shapes from original designs
  • cut out all 3 colored blackhole sprites from the colored OXYD version
  • introduced pixel doubling and interpolation menu items in the menubar
  • it is now possible to resize the window during a running game
  • gfx interpolation can now be enabled and disabled through the menubar
  • tried fixing exceptions that sometimes occur when resizing the game window
  • fixed exceptions by adding synchronization for drawing onto the game canvas
  • added log output for hyperspeed and ridiculous speed warning events
  • fixed wrong top border alignment for drawing simple images
  • added an empty sound effect used for silently initializing the audio subsystem
  • peashooters will now tailspin upon asteroid collision
  • fixed a bug in the controls where the cursor was being drawn at the wrong position
  • finally implemented rocket powerup objects and firing rockets
  • added log message for showing the available accelerated graphics memory
  • implemented mechanism to show the starting powerup for the next level in the HUD
  • implemented levels.txt parser class into the solar selector to determine actual levels
  • added force win level and infinite rockets cheats to the commandmanager and menubar
  • increased the station magnetism effect distance after winning a level
  • fixed not resetting displayed powerup in the solar selector if mouse leaves panel
  • implemented an optional setting that makes magnetism effect independent from distance
  • the force win level cheat now actually pulls the camera towards the target station
  • fixed stars not correctly being faded out on level winning animations
  • fixed keeping HUD pause event after engine restart
  • fixed radarscreen not being reset after engine restart
  • fixed splash and intro modules being cut off through language reset
  • removed initial setting of menubar captions which was redundant anyway
  • the game client is now able to persist application settings to a configuration file
  • added more logging to the text resources and client properties classes
  • text resources and client configuration will be loaded before the window turns visible
  • the game client will now persist and restore the chosen client language
  • added init methods for controlled initialization of static utility classes
  • fixed transparency and rotation for all 16 rocket sprites as given by original designs
  • fixed transparency and order of player shield sprites as given by original designs
  • created both colored player shield sprites
  • fixed transparency and rotation for all 16 deadly turret sprites as given by original designs
  • fixed transparency and rotation for all 16 pirate turret sprites as given by original designs
  • fixed transparency and rotation for all 16 harakiri sprites as given by original designs
  • fixed transparency and rotation for all 16 piraton sprites as given by original designs
  • fixed transparency for all 4 rotor star sprites as given by original designs
  • fixed transparency for all 4 cycle sprites as given by original designs
  • fixed billing module displaying float values using american „.“ instead of european „,“
  • started fixing the billing modules price tag drawing
  • fixed horizontal rule spacing in the billing module, which needs to be 5 pixels
  • readded all 8 title cargo images for the billing module only
  • fixed horizontal rule first spacing actually being a pixel less wide than the others
  • fixed horizontal rule drawing which handled spacings wrong
  • finally fixed billing module again with pixel perfect spacings (apart from the sprites)
  • fixed rotation for all 16 cargoliner sprites as given by original designs
  • fixed rotation for all 16 cargoflyer sprites as given by original designs
  • fixed transparency for all 16 cargoflyer sprites as given by original designs
  • fixed rotation for 4 alien sprites which were wrong, as given by original designs
  • fixed transparency and size of all 16 kleptomara sprites as given by original designs
  • fixed rotation for all 16 laser shot sprites as given by original designs
  • fixed order and size of all 16 rocket drive sprites as given by original designs
  • fixed a mothermaforian sprite that had a spare black pixel
  • confirmed perfect transparency for all 16 maforian sprites
  • again corrected rotation for 2 maforian sprites (11 and 15), confirmed all the others
  • confirmed perfect rotation for ship sprite as given by original designs
  • fixed transparency for all 32 ship sprites as given by original designs
  • fixed ship sprite size
  • fixed shield sprite size to compensate wrong alignment
  • fixed aliens and ware items not being updated in enhanced mode
  • the other players‘ ships in multiplayer mode will be updated between network updates
  • enabled the multiplayer game to display every players own cursor for everyone
  • added some message dialogs and log output when joining a game didn’t work
  • fixed strange audio static from playing empty sound by setting volume to near zero
  • confirmed player ship and shield being centered perfectly on the gamescreen
  • fixed transparency for 250 and 500 score sprites as given by original designs
  • added 3 new score sprites for 50, 100 and 1000 points as given by original designs
  • fixed transparency and size for mine h3/8 sprite as given by original designs
  • fixed transparency and size for all 8 square debris sprites as given by original designs
  • fixed transparency for screen cargo cola and cherry sprites as given by original designs
  • confirmed transparency for screen cargo bonbon, cigarette, telephone and toiletpaper
  • fixed transparency and size for minedropper sprite as given by original designs
  • cut out all 8 „internal“ spacola original design sprites, may be useful later
  • fixed player shot transparency and size as given by original color designs
  • created the colored player shot sprite from the original designs
  • confirmed shot dissolve sprite transparency
  • created 3 colored shot dissolve sprites from the original designs

v0.45 – June 2015

  • added some basic image scaling method to the gfx engine
  • added only private constructors and final modifiers to all utility classes
  • added a faster image inverting filter which sadly cannot be used with indexed graphics
  • the gfx engine will no longer output monochrome images, but pseudo monochrome RGB images
  • added some RGB screen clearing functions to the gfx engine
  • finally fast inverting works perfectly throughout the whole game
  • started working on a way to scale the graphics to a higher resolution
  • rewrote drawing of simple images to the backbuffer
  • scaling now works kind of, it’s just extremely and unplayably slow
  • scaling is now also possible using interpolation which makes it even slower
  • scaling uses the correct scale factor for the required output size
  • fixed exception handler not exiting the game properly as was expected
  • fixed playing sound effect when unpausing the game on spacebar
  • fixed player ship not turning towards the cursor when unpausing the game
  • first successful test for adding colored sprites to the enhanced gfx engine
  • finished adding all the setters for the game statistics class
  • added an audio device panel to allow selecting the mixer device later
  • added a utility function to easily set GUI components final size
  • created a levelstate class with serializable ingame variables that may be useful or not
  • declared many variables now transient in the solarsystem class
  • created a small title image for the about dialog
  • fixed some sub-windows now being aligned along the parent frame
  • redesigned the about dialog to include the new title image
  • finally managed to read parts of the original (b&w and colored) graphics files
  • fixed resolution in the macpaint? header and managed to extract some distorted graphics
  • designed a new splash title image and added it to the game
  • renamed AudioDevicePanel to AudioDeviceWindow to conform to own naming conventions
  • made all window classes align along their parent frame
  • added icon to all sub-windows
  • removed unnecessary reference to gfx engine in view highscore window
  • changed refresh rate for radar screen to reflect the original feeling more
  • simplified radar screen drawing code a little
  • fixed missing text translation keys after renaming some of them
  • finally implemented deploying motherharakiri dummy enemies
  • implemented rescue capsules logic, deployment, bouncing, shooting and opening
  • fixed a bug where shots dissolved by absolute and not relative travelled distance
  • added an error message if two people try to host a game at the same time
  • implemented some more multiplayer game logic, managed to start hosted games
  • finally the client can see the server player ingame
  • fixed duplicate score indicator object type
  • added appearance enum value that will replace unserializable ship animation
  • implemented client-side game joining error messages
  • implemented client-side game timeout handling
  • added error handling for trying to start a multiplayer server twice
  • allowed multiplayer games to end correctly
  • the server will shutdown a multiplayer game if all clients are gone
  • renamed ServerSolarSystem to MultiplayerSolarSystem
  • added ‚incorrect password‘ response to the multiplayer server
  • added all intro score values to the scoreconfig class
  • replaced all fixed texts in the titles with values from the score configuration class
  • added ware duplicator and rocket powerup items to the game
  • added powerup container logic for collecting rockets and activating the ware duplicator
  • confirmed rocket powerup lifetime and ware duplicator powerup cooldown
  • finally implemented the ware duplicator powerup
  • removed rescue capsule mass to prevent the players ship from bouncing off of them
  • replaced gamerandom reference in rescue capsule creation with true random method
  • implemented lots of video output handling code
  • finally the game client is able to switch to fullscreen exclusive mode and back via F8
  • fixed gamepanel clipping area outside of graphics buffer boundaries
  • fixed player ship suddenly being unable to collect any standard powerups
  • the gamepanel will now always create buffers that are compatible with the graphics device
  • changed the code to retrieve a list of all available audio mixers
  • implemented functions to set and unset the selected audio mixer device
  • implemented a selection dialog to allow choosing a fullscreen display mode
  • finally managed to read and convert the original Apple QuickDraw PICT template files
  • set black gamewindow background to fill the empty space in fullscreen modes
  • fixed rescue capsules not being drawn on the radar screen
  • fixed JAR manifest implementation attributes
  • added build time to the JAR manifest
  • added ALT+Enter shortcut for fullscreen mode
  • the game window now tries to regain focus after restoring from fullscreen
  • added a function to get the current screen size
  • the game window will now stop passive repainting while the game engine is running
  • implemented an experimental (seemingly much faster) active rendering engine
  • the gfx engine is no longer drawing to an intermediate buffer when active rendering is used
  • the gamescreen is now using a compatible (accelerated) image
  • active rendering now considers the frame insets correctly, at least in windowed mode
  • enabled the menubar to stay on top of the AWT canvas in active rendering
  • all subclassed Swing components will now correctly call their super constructor
  • fixed using wrong insets in fullscreen mode
  • prevented launching game engine multiple times when it is already running
  • tried fixing the problem where the game engine sometimes won’t shutdown
  • fixed missing immediate repaint after game engine has been stopped
  • fixed clearscreen function for active rendering
  • finally fixed engine shutdown problems by removing toolkit syncing
  • started adding functions to convert images in the gfx lib into compatible (managed) images
  • active rendering is finally fast enough to allow realtime scaling graphics output
  • implemented fully functional scaling for active rendering, even with interpolation
  • window resolution is now determined by game resolution times scale factor
  • the whole gfx library is now converted to managed images for performance reasons
  • added interpolation as an optional feature that may be activated through menu command
  • the game panel now also uses a completely black background
  • started reconstructing the back cover of the space atlas
  • confirmed all-systems-KO status message to have a 25% probability
  • implemented all-systems-KO status message
  • the players shield now neutralizes enemy shots on contact as in the original game
  • fixed asteroids playing shield bounce sound effect for any object that collides with them
  • rescue capsules will now also bounce off of asteroids
  • objects crashing into asteroids will now also bounce off while they explode
  • added log output to events in the command manager
  • fixed a timing issue on creating the graphics buffers
  • fixed playing sound effect in an infinite loop in the asteroids bouncing code
  • tried fixing menubar repaint graphical glitches during running game engine
  • added a dedicated canvas object to fix the menubar issue, no more drawing into the JFrame
  • finally the ugly menubar glitches are gone for good (i hope!)
  • readded the splash screen for the canvas, however still has repaint artifacts
  • implemented a gamemath function that tests for floating point equality
  • subclassed canvas and moved all new drawing functions into it
  • fixed splash image repaint glitches with a new splash drawing code
  • deprecated the old gamepanel class that used painting on Swing components
  • fixed NPE when enemies tried to target the player, which has not been set
  • added log output for when instant highscore command failed
  • tried taming an extremely buggy Eclipse Mars, while making the workspace ready
  • perfectly recreated the Spacola rocket cursor with transparency and shadows
  • replaced old Spacola rocket cursor sprite with the new one
  • fixed instructions module not catching the mouse correctly
  • fixed offset for mouse catching in the solar selector and the instructions module
  • fixed rocket menu icon to resemble the newest rocket cursor recreation

v0.44 – May 2015

  • replaced all 16 harakiri enemy sprites with newly rotated ones (more like maforians)
  • fixed score indicators now blinking perfectly like in the original game
  • added a utility method that converts target frame rate to frame time
  • the frame stopwatch class can handle differing update rates and frame rates
  • created a much better algorithm to distribute a reduced number of redraws among updates
  • made vortex updates independent from draw calls
  • fixed a recently introduced bug where tailspinning turrets would vanish by shooting at them
  • fixed precalculating 0 vortex coils for some stars, which looked awful
  • fixed a bug in the vortex class that ignored random coils if enhanced transitions were disabled
  • fixed a calculation bug in the methods that convert level coordinates to screen coordinates
  • fixed a bug in the vortex class that made objects be drawn off centered
  • finally implemented game objects being used in the vortex intro animation
  • fixed a newly introduced bug where the vortex would not be updated during gameover animation
  • finally implemented game objects in the vortex gameover animation too
  • fixed a bug in the vortex which made it unable to determine the distance of a vortex element
  • reinstated hiding elements that are very close to the vortex center
  • added origin attribute to game objects to allow calculating their distance in pixels
  • added method to game objects to get their distance from origin
  • confirmed and added the value how far player shots can go without LONG powerup
  • implemented incrementing travelled distance attribute for all game objects
  • changed the way how the game calculates when to dissolve player shots
  • added more log output to audio playback methods
  • changed all derived game objects to always update the base object instead of only their vector
  • renamed rotatingstar enemy to rotorstar
  • recompressed pension certificate
  • added pension certificate to the project
  • added motherharakiri rescue capsule sprite
  • implemented basic rescue capsule game object
  • pulled some utility and math methods out of SolarSystem into actual utility/math classes
  • renamed Capsule to RescueCapsule
  • added method and collections for rescue capsules to the games update cycles
  • tried to confirm 640 pixels as rescue capsules opening distance, not sure if correct
  • added motherharakiri dummy enemy AI
  • prevented most of the fields in the highscores class from being serialized to file
  • extracted easily serializable highscorelist class from the highscores module
  • added new log methods for trace and verbose logging (finer than debug)
  • added some more methods for the gamestatistics class and implemented handling host players
  • pulled gamestatistics and all three highscore classes into a new statistics package
  • removed obsolete stationary enemy interface and unified enemy updating
  • implemented real volume control for the audio subsystem
  • fixed rescue capsule lists not being initialized correctly
  • resolved dozens of previously unnoticed exceptions by fixing audio initialization
  • wrote utility method to print all available audio mixers for the system
  • resolved maybe hundreds of more unnoticed exceptions during gameplay by fixing pan controls
  • fixed java logging leaving many unused lock files. Forgot to close the filehandlers
  • game window is now also possible to exit the game client with error code
  • pulled actual client exiting out of the logging class and into their respective locations
  • all log methods will now accept throwable objects instead of exceptions only
  • added shutdown hook to allow changing the way how the game client will be exited
  • copied all relevant shutdown code into the shutdown hook thread
  • changed unspecific exception handling on initializing the graphics engine
  • added methods for the gfx engine to set or unset bitwise XOR mode

v0.43 – April 2015

  • created a Dongleware color font image from an online source
  • added four new characters to the Dongleware mono font ( \,[,],Command )
  • fixed # character height in the Dongleware color font
  • added ß character to the Dongleware color font
  • replaced äöüß characters from video with screenshot cutouts
  • added ÜÖ characters from screenshots
  • confirmed letter X cutout
  • redid the complete Dongleware color font from scratch using a colored OXYD version
  • recompressed the Dongleware font with indexed palette
  • removed faked square brackets from mono Dongleware fonts again
  • improved the english translation of the instructions using international OXYD version
  • recompressed all 746 PNG files again (w/o bg color) to save another 36 kbytes of useless data
  • added 3 defender sprites and included them in the gfx library
  • recreated 4 blackhole shapes from TOS-Gimmick, OXYD and OXYD Color graphics
  • redid all 3 blackhole sprites using the new shapes
  • pulled VortexElement and Star into their own dedicated class file
  • version of the JRE and the operating system will now be written into the logfile on startup
  • added utility methods to generate date and time strings
  • the text resources class will now keep a default resource bundle for logging etc.
  • the max number of characters allowed in the enter highscore screen confirmed/set to 22 chars
  • the fallback highscore name entry prompt also enforces max number of characters now
  • replaced the DOLLAR.SDD sound effect with OXGELD oxyd sound, which is identical
  • added OXKLICK6 and OXKEY oxyd sound effects to the audio library
  • BING sound will be played if you exceed the max number of characters in highscore prompt
  • OXKEY sound will be played when someone presses keys during the game
  • added sector shifting and extralife events for the CommandManager
  • rewrote events through keyboard input to be invoked only in the CommandManager
  • rewrote logging for keyboard input
  • rewrote CommandManager to allow setting multiple commands per frame
  • pulled player being destroyed by bomb event out of the HUD drawing code
  • created 3 wafer sprite shapes, but i doubt that i got it right
  • added all 16 wafer (WA/WAFF) sprites to the resources
  • implemented wafer as a dummy enemy to the station deployment
  • added all 4 „lightball“ (L) sprites used as an enemy in levels 59 and 60
  • added all 5 „retaliator-jet“ (RJ) sprites used as an enemy in level 58 only
  • recentered the mothermaforian sprites using the shield sprites; considered pixel perfect now
  • fixed first rocket drive shape which was missing a lot of shaded pixels
  • fixed 4 rocket drive sprites (axis aligned) which had wrong shading
  • added a lightball intro title image
  • fixed third rocket drive shape which seems to be actually two different shapes
  • fixed another 4 rocket drive sprites (diagonal aligned) which had wrong shading
  • finally figured out how the game draws the rocket drive sprites onto other sprites
  • created 3 (finally correct) rocket drive shapes
  • fixed all 16 rocket drive sprites with correct shadows below their shape
  • recentered and trimmed all 16 rocket drive sprites
  • again fixed 5 rocket drive sprites by comparing them to rocket gun sprites
  • added legacy intro title images for shieldmaforian and shieldmothermaforian
  • verified through the manual the first blackhole sprite to be pixel-perfect
  • added oxyd stone, cherries and telephone menu icon
  • fixed 7 (shape 2) rocket drive sprites for the last time. Def pixel-perfect now
  • fixed wrong score for kleptomaras in the intro titles
  • fixed larger sprites (big asteroid) being drawn correctly in the price lists
  • fixed some horizontal margins for the generated pricetags with sprites
  • reduced margin between dotline and the price to 9 pixels minimum (seems correct)
  • inserted all (but one) of the new enemy and bonus object sprites to the price lists
  • deprecated old method that draws a dotline, becauses it may use wrong margins
  • fixed two white pixels on the toiletpaper cargo bay sprite
  • created 40 pricelist images that will be used instead of actual ingame sprites
  • rewrote parts of the price list code that generates price list items
  • removed sprite centering in the price lists since all images are the same size
  • finally completed intro with all price lists, even all the margins are pixel-perfect now
  • fixed a bug where enemies could retrieve cargo from the player, even if he has none
  • added some navigation and acceleration methods to enemy class
  • all enemy AIs are now able to see the whole level
  • rewrote Piraton enemy AI to make them smarter
  • Piratons can finally collect free floating aliens/ware, and deliver ware to the station
  • fixed a bug where destroyed pirates were able to recollect their own pilot
  • allowed the pirates to go faster if they try to collect aliens or cargo
  • added last two ware type images to the ShipDecorator, Ware and Hud class
  • fixed a bug the ShipDecorator where the wrong cargo sprites would be used
  • pirates which collect fellow aliens will now also release more aliens on destruction
  • wrote some automatic braking logic for enemies which are refocusing
  • the enemies will no longer unnecessarily reset the target on each frame
  • wrote a method that determines if a pirate ship is perfectly on course
  • created 3 harakiri enemy sprite shapes
  • fixed 3 harakiri sprites with wrong pixels

v0.42 – March 2015

  • created 3 tornado shapes
  • added all 16 tornado sprites to the resources
  • implemented a new FlapDisplay class that will replace ScoreFlip and Hud methods
  • replaced the old way of saving and drawing score in the players class
  • reinstated charging the social security contribution in the billing module
  • fixed a bug where the level timer would not update anymore
  • fixed a bug where the final score in the billing animation was calculated wrong
  • deprecated the old ScoreFlip class for now
  • added some Javadoc to the FlapDisplay class
  • removed unnecessary updating in the FlapDisplay class
  • lives display in the hud now also uses FlapDisplay
  • fixed a bug where FlapDisplay backgrounds were saved statically and became too wide
  • allowed a way to make FlapDisplays ignore delays and always flap digits instantly
  • added a magic cursor gfx effect class stub and copied the Modula 2 source as comment
  • added dummy enemy AI for tornado and enabled it to shoot single laser shots
  • allowed the debug text to display throughout the winning animation
  • added dummy enemy AI for cargoflyer
  • wrote a method for the station trapper to create indexed traps as in the classic campaign
  • increased to and confirmed the inner most ring trap radius to be 50 pixels
  • added station sprite center offset to the trapper and confirmed it to be 3×1 pixels
  • added the first one out of 14 indexed traps: DGSS(1), which is 4 pirate turrets
  • switched from position downcasting to math.round which seems to be closer to the original
  • increased to and confirmed mine h3-8 proximity to be 220 pixels
  • set and confirmed the inner ring trap radius to be 80 pixels
  • added indexed traps DGSS(2) to (5)
  • fixed loop condition in the station trapper that was cut short if radians offset was specified
  • added indexed traps DGSS(6) and (7) (halfway done with this)
  • increased allowed elements per pixel circumference by using small mines as reference
  • fixed 4 player ship sprites that have been aligned wrong from the first day on
  • confirmed all other player ship sprites to be aligned pixel perfectly
  • added indexed traps DGSS(8) to (14); finally all classic campaign traps rewritten
  • increased maximum allowed trap radians offset from pi/2 to pi*2, which is a full circle
  • fixed mines popping up at the game screen edges
  • fixed many game objects missing object type and size values
  • added log warnings if game objects are not initialized correctly
  • the gfx engine now keeps track of the number of rendered game objects on screen
  • debug output shows the number of currently rendered game objects
  • fixed alien object size not set in all constructors
  • implemented dummy mine star and added it to the station trapper
  • the station trapper will now randomly create classic traps instead of experimental ones
  • implemented a „destroy all enemies“ cheat and added it to the menubar
  • fixed player shots being able to hit several mines per frame
  • fixed mines being placed twice on the same spot
  • the level generator will no longer put objects inbetween integer positions
  • fixed stations jerking around compared to mine movement on the gamescreen
  • confirmed all 11 powerup identifiers in the level configuration by hacking level 64
  • fixed black holes using the wrong value for size
  • the level generator now takes objects sizes into account when finding valid positions
  • deprecated old level generator methods that always used the station sprites size
  • added empty constructors for black holes, stations and powerup containers
  • the level generator now warns if it was unable to find a valid position for objects
  • implemented a way to enforce minimum distance restrictions for object placement in the level
  • measured and set object sizes for ship, maforian, peashooter, motherharakiri, cycle and alien
  • rewrote collision and attach distance calculations by using actual sizes instead of sprites
  • added a multiplayer game event class, that encapsulates game objects with a given action
  • wrote two methods for the gfxlib that creates a rotated spriteset for a given first sprite
  • fixed stations, containers and black holes missing attributes in the default constructors
  • added an enhanced flag for the game that removes limitations from the original game
  • wrote a method that checks and enforces maximum object distances from the players ship
  • aliens and ware will now vanish from the level as soon as they drift too far away
  • fixed debug position methods showing the players sector for any game object
  • added a doctype to the ant build script to remove a warning
  • fixed another warning by selecting Java 8 in the ant build script
  • added a utility method to get the currently running java version
  • simplified and improved performance on updating/checking ware and alien
  • fixed the gravestone flying out of the screen in the gameover animation
  • fixed highscore module background keeping the players movement after gameover
  • fixed ware magnetism still active in the gameover animation
  • removed a duplicate line of code in the tornado dummy class
  • fixed concurrent modifications on particles collections through menu commands
  • fixed another concurrent modification on enemy collections through menu commands
  • implemented mine star shooting behaviour and colliding/exploding
  • fixed mine stars keeping shooting after the player has been destroyed
  • renamed CheatManager to CommandManager
  • the CommandManager will now act as mediator between menubar and game engine
  • implemented all cheats from the menubar as commands for the game engine
  • added some log output to the powerup manager
  • added log output after the game initialization to show Java version and used memory
  • added some more log output to the solar system methods
  • removed a duplicate constant for the max number of cargo items allowed
  • it is now possible to quit the gameover highscores screen by clicking the left mouse button
  • created a new auxiliary source file package and moved some helper classes into it
  • wrote a method that converts mouse coordinates on the gamescreen to level coordinates
  • cleaned up some methods and getter names in the controls to make it clearer what they do
  • wrote a method that converts level coordinates to gamescreen pixel position
  • implemented a way to make the player ship unable to navigate, which will be used later
  • implemented freezer methods for Vector2D objects to freeze any object motion instantly
  • the shipdecorator class now uses actual object sizes for calculations
  • finally pulled bomb event logic out of the HUD into the PlayerShip class
  • added new utility methods for CSV to List conversions and vice versa
  • added a utility method to receive the name and version of the running operating system
  • added a game statistics class that keeps track of all possible events and numbers
  • rewrote the uptime utility method to allow returning localized text
  • added time unit names to the resource bundles
  • fixed atarimouse and tosbee cursors transparencies which have been always been wrong

v0.41 – February 2015

  • designed a few more title artworks
  • recompressed all 13 frame border graphics
  • recompressed all 5 mouse cursors
  • recompressed all 4 font images
  • recompressed both instruction button images
  • fixed missing transparency for music menu icon
  • recompressed all 23 menu icons
  • recompressed the build splash image
  • recompressed all 7 solar selector images
  • fixed alien sprite order to match them to ship sprite ordering
  • resized and recompressed all 16 alien sprites + help bubble
  • fixed a typo in the manual transcript
  • recompressed all 5 asteroid sprites
  • recompressed all 3 black hole sprites
  • recompressed all 20 cargo sprites
  • recompressed the container sprite
  • recompressed all 16 deadly turret sprites
  • recompressed all 16 pirate turret sprites
  • recompressed both HUD view images
  • fixed size of the year in the intro game title image
  • recompressed all 4 intro title images
  • fixed size of the year in the build splash image
  • added a few enemy acronym constants for the levels txt parser
  • recompressed all 12 hud status images
  • fixed the size of the station sprite
  • recompressed all 41 station sprites
  • recompressed all 128 engine thrust sprites
  • recompressed all 32 spermbird sprites
  • recompressed all 32 shot sprites
  • recompressed all 3 enemy shield sprites
  • recompressed both score sprites
  • recompressed all 4 rotating star sprites
  • recompressed all 16 rocket drive sprites
  • added a utility method to count occurrences in a text
  • added a utility filewatcher class that may be used some time later
  • recompressed all 16 rocket sprites
  • recompressed all 6 radar sprites
  • recompressed all 12 powerup sprites
  • recompressed all 16 piraton sprites
  • recompressed all 16 mothermaforian sprites
  • recompressed all 5 minedropper and mine sprites
  • recompressed all 7 magic sprites
  • recompressed all 16 kleptomara sprites
  • recompressed all 52 explosion sprites
  • recompressed all 3 dissolve sprites
  • recompressed all 6 decoy sprites
  • recompressed all 15 debris sprites
  • recompressed all 4 death sprites
  • recompressed all 16 cargoliner sprites; finally done recompressing – saved 62 kbytes
  • extracted 31 SDD sound files from Spacola byte-complete using a hex editor
  • extracted 2 more SDD sound files (laser2, toilet)
  • extracted 6 more SDD sound files (swon, swoff, dollar, laught, panel, dadapdap)
  • extracted 2 more SDD sound files (foehn and cherry)
  • implemented an audio library method to load original Spacola SDD audio files
  • fixed that i actually cut the cigar station delivery sound effect short last time
  • extracted 3 more SDD sound files (cigar, cutter, telefon)
  • extracted 3 more SDD sound files (bonbon, drop, zirpweep)
  • removed the sound effect falscall where i mistook junk data for the actual sample
  • somehow confirmed 6289 Hz to be the correct (closest) sample frequency
  • reconverted all SDD files to OGG sound files
  • recompressed 8 title cargo images and readded them to the project
  • fixed renaming peashot sprite wrong
  • modified LineSoundLib to allow loading and playing of unsigned 8 bit PCM sounds
  • the game client now successfully imports original Atari ST Spacola SDD sound files
  • added all SDD sound files to the project to be used instead of OGG
  • added a better utility method to count text occurrences
  • added alphanumeric ignorecase string ordering methods to the utilities
  • fixed loop points for shiprocketing sound
  • reduced buffer length for SDD file playback to fix loop for shiprocketing sound
  • added a spacola properties config handling class
  • added timer utility methods that take a specified end timestamp into account
  • added timer utility methods that take premeasured durations as parameter
  • the level timer will now stop as soon as the player reaches the target station
  • created 3 cargoflyer shapes
  • added all 16 cargoflyer sprites to the resources
  • fixed a bug where SDD sound files could not be found after JAR/EXE building

v0.40 – January 2015

  • figured out and defined all starting powerups for levels 9 to 16
  • replaced 2014 splash logo with a new 2015 one
  • fixed a very old bug that prevented the player from ejecting aliens on destruction
  • decreased the alien shout probability from 0.01 to 0.004
  • started implementing a method that detects if a game object is actually on the screen
  • defined some enemy and powerup constants for the levels.txt parser
  • added duplicator powerup sprite
  • added 4 rotating star (RS) enemy sprites
  • added minedropper ball shot sprite
  • fixed transparency of warecollector and credit powerup sprites
  • added all 16 rocket sprites
  • added the minedropper drop sound effect to the resources
  • implemented rocket loaded and last rocket status message events
  • added 3 hair dryer station animation sprites
  • added the rotator/star mine shot sound effect
  • renamed lots of sound effect files to consider the latest additions
  • added a TSA timestamp URL to the signing process in the build script
  • added the cherry station sound effect
  • figured out and defined all starting powerups for levels 17 to 24
  • added 3 cherry station animation sprites
  • added cherry ware hud sprite and gamescreen sprite
  • figured out and defined all starting powerups for levels 25 to 32
  • added cutter (scissors) station sound effect
  • added 2 scissors station animation sprites
  • added scissors ware hud sprite and gamescreen sprite
  • added all 16 enemy rocket drive sprites (for cycles, turrets and pigs/peashooters)
  • added 4 wheel (cycle) enemy sprites
  • added all 32 sprites for the spermbird „enemy“
  • fixed destroyed asteroids playing the wrong explosion sound effect
  • added cigarette ware hud sprite and gamescreen sprite
  • added the cigarette station sound effect
  • added 6 cigarette station animation sprites
  • replaced the buildsplash image with a new 2015 one
  • figured out and defined all starting powerups for levels 33 to 40
  • added all 16 cargoliner enemy sprites
  • restored all 3 original maforian shapes by rotating and mirroring the ship sprites
  • fixed transparency and shading for all 16 maforian sprites
  • renamed KleptomaraDecoy to Decoy only, since many other enemies will be using it
  • renamed PiratonShot to PirateShot
  • renamed PeashooterShot to PeaShot
  • renamed KleptomaraShot to LaserShot
  • renamed MaforianShot to MicroShot
  • created a new package for all the different shot types and moved the classes there
  • removed dependency of the framestopwatch of the controllable objects
  • the framestopwatch will now use a better timer to perfectly fit the target framerate
  • fixed framestopwatch to calculate the actual framerate instead of a theoretical value
  • fixed vanishing shield powerup playing the wrong sound effect
  • restored all 3 original mothermaforian shapes
  • fixed transparency and shading for 11 mothermaforian sprites
  • created 3 shapes for rocket drives, still not perfect though
  • started including my old particles test program with the core modules
  • fixed english translation in the billing screen being too long
  • added cherry, scissors and cigarette ware drawing code to the hud and the gamescreen
  • fixed the ShipDecorator drawing only cola bottles, disregarding the actual ware type
  • Controls class will now calculate both gamescreen and actual screen mouse coordinates
  • restored all 5 original player ship shapes
  • fixed all 32 player ship sprites transparency and shading using the shapes
  • renamed shot sprite files, moved all player shot and enemy shot sprites into folder
  • created a shot dissolve spriteset containing 3 sprites
  • removed integrated dissolve spritesets from player shot and decoy sprites
  • created a dissolve game object that will be created once certain shots start to dissolve
  • different sounds are played when the player gets ware stolen by flythrough or pirate shots
  • a dissolve object will be spawned whenever a pirate shot hits the player
  • changed how the acceleration sound is played, keeps up better with fast rightclicking
  • fixed playing the wrong sound effect on tailspinning enemies
  • fixed dissolves not being updated
  • reduced the dissolve distance to half the framerate = half a second
  • reduced the player shooting distance to account for having a dedicated dissolve object now
  • resolved a race condition when stopping music on game engine shutdown
  • created separate build targets for signedjar and signedexe since they need internet access
  • added cigarette station animation as a station script
  • added a method to copy a vector to another vector
  • implemented a Camera object which allows switching the camera perspective in the game
  • with the TAB key, the Camera can now be switched between player ship and space station
  • fixed station trapper so that it doesn’t directly add sector objects
  • fixed a bug where enemies were able to bounce off the player while he is still invisible
  • resolved usage of a lot of deprecated drawing methods in the gfx engine
  • fixed an NPE that was caused by resetting stars on repeated TAB press
  • the graphics engine now uses methods to determine if an object needs to be drawn
  • restored all 3 original peashooter shapes
  • fixed transparency and shading for all 16 peashooter sprites; considered pixel perfect now
  • fixed a new bug where game objects would not be drawn centered correctly anymore
  • implemented a level timer that might be useful for time trial modes or timed highscores
  • level timer can now display exact 3 digit milliseconds values or 1 digit values
  • wrote a simple SpacolaServer class that starts an RMI registry and a multiplayer server stub
  • added a multiplayer menu with host/join game menu items
  • wrote a simple client that attempts to join an existing „game“
  • restored all 3 original cargoliner shapes
  • fixed transparency and shading for 10 cargoliner sprites
  • implemented ping logic for the spacola multiplayer server to determine lags for clients
  • set the default port for multiplayer games to 1702
  • the spacola multiplayer server will now be properly shutdown on exit
  • the RMI registry will now be properly shutdown on exit
  • fixed 2 piraton sprites that have initially been mirrored the wrong way
  • recentered the maforian sprites using the shieldmaforian sprites; considered pixel perfect now
  • added 3 maforian shield sprites for the shieldmaforian enemies
  • implemented a basic timeout logic which throws unavailable players out of the game
  • implemented a multiplayer client version check which disallows differing client versions
  • created a score indicator object and pulled related code out of debris explosions
  • wrote methods to copy only position or direction portions from other vectors
  • score indicators will now follow the players movement, as in the original game
  • implemented cargoliner dummy enemy ai and made stations deploy them
  • fixed the wrong sound effect being played when bouncing off from other objects
  • fixed small explosions that actually have never even worked
  • implemented shield maforian dummy enemy ai and made stations deploy them
  • the player can now shoot the shield maforian which in turn will lose its shield
  • renamed wheel enemy to „cycle“, as it seems to be called in the original game
  • implemented cycle dummy enemy ai and made stations deploy them
  • implemented rotating star dummy enemy ai and made stations deploy them
  • wrote a utility function that generates random IDs
  • all game objects now have generated unique IDs to identify them in network games
  • implemented minedropper dummy enemy ai and made stations deploy them
  • restored all 3 original motherharakiri shapes
  • added all 16 motherharakiri sprites; need rotation axes fixed soon
  • figured out and defined all starting powerups for levels 41 to 48
  • added bonbon (candy) station delivery sound effect
  • added 3 bonbon (candy) station animation sprites
  • added bonbon cargo and gamescreen sprite
  • turned Controllable interface into an abstract class to enable default implementations
  • implemented new execution engine methods for Splash controllable
  • recentered all the motherharakiri sprites
  • improved centering of mothermaforian sprites for now
  • created a few designs for „WA“ (Level 51+) enemy ship shapes
  • added telephone station delivery sound effect
  • figured out and defined all starting powerups for levels 49 to 56
  • added telephone cargo and gamescreen sprite
  • successfully extracted the Rentenbescheid template image from an ST memory dump
  • also extracted a filled Rentenbescheid image
  • improved the edges of the big Spacola Eclipse artwork text
  • designed two alternative hud artworks
  • started recompressing the monochrome pngs as actual 1 bit (4 bit with alpha) png files
  • removed an unused new dongleware test image
  • renamed maforian shield to enemy shield, since it will be used by other ships also
  • moved player shield and enemy shields together into own shield sprite folder
  • resized all 32 players ship sprites so they have less unnecessary border area
  • resized both player ship sprites also
  • recompressed all 32 player sprites as indexed palette images which makes them smaller
  • figured out and defined all the remaining starting powerups for levels 57 to 64. done!
  • finally fixed edges of the Spacola Eclipse artwork text
  • added 4 telephone delivery station animation sprites
  • added a special alpha composite class for oldschool bitwise XOR drawing
  • modified the bitwise XOR composite to allow keeping alpha channels
  • added notes for the included third party classes about where to get those files
  • the bomb sprites in the cargo bay are now drawn using bitwise XOR. still not perfect
  • recompressed all previously recovered artworks from the manual as 1 bit PNGs
  • recompressed all 16 harakiri sprites
  • recompressed all 16 maforian sprites
  • wrote a function for the classic gfxlib to create background masks for any sprite
  • the gfxlib will now generate background masks for the bomb sprites XOR effect
  • added a TestPanel class which makes it easier to add small test routines to classes
  • created testing function for drawing any gfxlib sprite on an empty frame
  • rewrote HUD cargo bay drawing code to allow more flexible XOR drawing operations
  • finally perfectly recreated the original Spacola bomb XOR effect
  • resized and recompressed all 16 peashooter sprites
  • again recompressed the harakiri sprites, effectively making them even smaller
  • again recompressed the maforian sprites, effectively making them even smaller
  • recompressed all 16 motherharakiri sprites
  • resized and recompressed all 4 cycle enemy sprites

v0.39 – December 2014

  • rewrote some german text creation parts for intro and titles
  • translated and added intro, billing and title texts to the resource bundles
  • created a method for the game that redraws everything on changing the language
  • removed a lot of unnecessary object casting in the game class
  • unified the way how titles are instantiated and where to pass the dependency
  • fixed fallback highscore name prompt displaying wrong title
  • extracted all texts from highscores and short instructions into the resource bundles
  • short instructions texts are now constructed more dynamically
  • fixed a problem with billing and intro sharing a titles object
  • fixed a bug where ogg stream fading boundaries were calculated incorrectly
  • extracted and translated all swing gui element texts
  • menubar events are now distinguished on gui objects and not on captions
  • fixed a bug where titles wouldn’t be reset for the splash module
  • added a languages menu with 2 flag icons to the menubar to allow switching languages
  • the language on application start is now preselected in the menu
  • fixed handling events for language switch if the same language was already selected
  • fixed the GEM text editor to make it run inside the game engine
  • added a modules menu with the GEM text editor to allow running it inside the game engine
  • fixed a bug where the game engine would not shutdown during GEM text edit module
  • fixed a bug where the solar selector wouldn’t reset after the player lost a previous game
  • inserted a linebreak for the gem text editor warning on launch
  • created a new splash logo with the year 2015
  • started work on a more flexible module execution engine, which may be controlled much easier
  • translated all the short instructions cards into english
  • short instructions module now also allows switching languages
  • fixed tailspinning enemies‘ explosions being positioned one step behind
  • fixed NPE on unselecting music if the audio lib wasn’t initialized yet
  • the game window will only appear after all the initializations are done
  • fixed instant highscore cheat which added score instead of setting it to a calculated value
  • created a cheatmanager class that handles all the various cheats for the menu bar
  • pulled check for new highscore into a dedicated method
  • fixed restarting music on reenable after the game engine has been shutdown
  • the player will now reset score, lives etc. properly on gameover again
  • added alien overload status message sprite to the resources
  • implemented alien overload status to the HUD and the players ship
  • raised max number of aliens to 40, which is the value in the original game
  • lost aliens will now add 20$ to the players score, when they’re recollected
  • fixed a rare NPE by trying to stop the currently playing ogg stream twice
  • fixed player stats getting reset actually only for the wrong player object
  • all core modules now share the same solar system and player object
  • by pressing the + key in a game the player will receive an extra credit (for debugging)
  • powerup containers and alien/ware have a differing magnetic radius multiplier now
  • increased the magnetic radius multiplier for aliens and ware to 4
  • added the last rant sprite that i forgot in the animation
  • rewrote animation logic for the station sprites to allow much easier „scripting“
  • deprecated all old station animation code, will keep as fallback
  • corrected and fine tuned station waving, station rant and station cola animation
  • added toilet paper station animation
  • implemented ware type switches for hud, billing, game screen, sound playback and stations
  • it is finally possible to deliver toilet paper instead of just space cola
  • started writing a level generator class which handles the complete level creation process
  • it is no longer possible to have sector objects overlap each other
  • added several additional distance calculation methods for use of point classes
  • made use of the game random class in the level generator and the solar system
  • wrote more methods to determine random level and screen coordinates for the game random class
  • fixed switching X and Y values in the sectors matrix (results in strange gfx behaviour)
  • fixed random powerups using game random class now
  • game random can now also return random enum values
  • fixed a bug where the target sector was no longer determined correctly
  • fixed a bug where the target station was not provided to the solar system module
  • added more solar system methods to get current and target sector/station/game objects
  • fixed a bug in determining if the current sector is asteroided
  • alien and ware magnetism radius measured and set to be 100 pixels
  • fixed a bug where empty lines were left out when parsing short instructions texts

v0.38 – October 2014

  • replaced the surfin usa enhanced sample with a correctly pitched version
  • changed star speeds and player acceleration again
  • sector width/height is now confirmed to be 4096 (64×64 = 65536/16) pixels in the original game
  • default station trigger proximity confirmed to be 2048 pixels, so half the sector size
  • the player is now able to shoot as rapidly as the mouse is clicked
  • piraton shots will no longer steal the players cargo through activated shield
  • fixed the animation of dissolving player shots
  • introduced new enemy attribute ‚dangerous‘ which will trigger the alarm sound on deployment
  • Mother maforians will now destroy the players ship on collision
  • Kleptomaras can finally shoot the player
  • started storing initial sector powerups for every level
  • wrote a method for the level configuration parser that shifts starting positions
  • enforced a maximum number of particles that can be managed at once
  • replaced particles hashset with an arraylist
  • fixed alignment for all pirate turrets and deadly turrets sprites
  • increased the shot frequency for rapid shot
  • implemented tailspinning for turrets (and optionally for all enemies)
  • implemented interfaces for rotating objects, positioning objects and ships
  • increased tailspinning turn speed
  • decreased shot mass from 0.5 to 0.4 to reduce bouncing effect
  • created a tailspin enemy method that may be invoked using any enemy
  • kleptomara shots will now be removed if they hit the player
  • fixed a bug in the fading calculation for the fadeable ogg clip
  • it is no longer possible to have fadein and fadeout to accidentally overlap
  • ant build script will now also create a selfsigned jarfile
  • ant build script now only creates selfsigned jarfiles with a keystore validity of 10 years

v0.37 – September 2014

  • added „toggle shield“, „toggle bomb“ and „full stop“ cheats to the menu
  • added stop command to Vector2D class
  • pulled some AI constants into the config classes
  • increased player ship acceleration to resemble the original game more
  • star speeds differ a little more between layers now
  • wrote method to determine if an enemies targetting is aligned within a given tolerance
  • added a splash screen showing a text and an image to the ant build script
  • wrote new game object drawing code that works using generics
  • removed all direct modifications to explosion lists outside of the update method
  • turned the object list for explosions into a list of explosions
  • successfully resolved an instanceof occurrence with explosions
  • resolved a call to a deprecated collision method for explosion objects
  • wrote some log methods that will output messages with exceptions
  • wrote utility methods to copy text to and paste from system clipboard
  • started reworking the complete Spacola guide as an open document file
  • added original esprit method source for trough effect as a comment to the magnetism code
  • removed all direct modifications to the list of aliens outside of the update method
  • turned the object list for aliens into an actual list of aliens
  • created a cursorghost object which represents the visible mouse cursor of another player
  • fixed close, maximize and resize GEM menu icons which were missing transparency
  • added small white and grey oxyd ball menu icons to the project
  • finally fixed the shield bouncing code, works perfectly now!
  • added a mass dependent bouncing method for ricochet shots
  • implemented ricochet shots and tailspinning for Peashooter enemies
  • added the cantina powerup status message to the resources
  • tweaked star speed constants, debris explosion force and ricochet force values
  • fixed a bug in the OGG decoder which crashed on buffer sizes bigger than small samples
  • replaced 41 OGG audio files with MUCH smaller, correctly pitched, authentic 6289 Hz samples
  • replaced 3 spacola sounds (EXPL1, LAUGHT, DOLLAR) with perfect equal sounds from the OXYD demo
  • set the OGG decoder buffer size as low as 256 bytes
  • reset the acceleration sound loop points
  • added player color enum for multiplayer modes
  • fixed tailspinning enemies to have the pilots eject on first hit
  • added the hairdryer sound effect
  • added many new sprites for hairdryer cargo, minedropper shots and kleptomara decoys
  • added one more player shot sprite, since there seemed to be missing an animation phase
  • wrote a class for deterministic random position generation for procedural level creation
  • added a utility class for bidirectional maps (might be useful sometime)
  • fixed all 16 mother maforian sprites to have their rotation axis corrected
  • started cutting rocket sprites
  • added mothermaforian dummy enemy and made stations deploy enemies more rapidly for the moment
  • started writing a parser for the levels configuration file including the original LEVELS.TXT
  • the levels configuration parser will now parse defined blocks of sectors and starting positions
  • the parser will now also parse coordinate spans for sector blocks and starting positions
  • allowed the parser to parse configurations with different level order
  • added a constant base seed for the deterministic game random generator

v0.36 – August 2014

  • implemented usage of actual java resource bundles for ingame text translations
  • started work on english and german language ingame texts
  • scanned all the artworks from the manual for possible later reworks
  • created several 100% monochrome reworks for all the relevant pictures from the manual
  • the game client will now try to create the log directory if it doesn’t exist
  • restructured logging class and created a way to reset log directory during runtime
  • implemented an Angle2D class which handles targetting and ships alignment on screen
  • rewrote all enemy dummy AI classes and the player ship to finally use Angle2D
  • added more log output for some debug/cheat methods (teleporting, shifting etc.)
  • added a way to put log output into a GUI window for debug measures
  • added Javadoc documentation to some methods in certain classes
  • added field counter methods to easily calculate the number of solved/unsolved levels
  • wrote an OGG to PCM decoder that allows combining the benefits of JOrbis and LineSound
  • replaced all WAV sound effects with OGG files and got the sound library to decode them to PCM
  • added some more utility/convenience methods for sector calculations
  • moved all mathematical classes into a dedicated util.math-package
  • implemented some more calculation methods to find the nearest object of virtually any type
  • pulled the inner highscore entry class into its own class file
  • added some utility methods for first and last n lines removal on strings
  • fixed a bug where the current angle was used for target angle representations
  • fixed a bug where the player ships engine positions were not always updated
  • fixed a bug where enemies were unable to accurately target the player
  • fixed a bug where „null“ was added into the highscore by declining to enter a name
  • fixed a bug where the game screen is shown again after the gameover animation is finished
  • added the grave sprite and made it show in the gameover animation
  • the gameover animation will now show and animate lost ware
  • added a log output dialog and implemented a menu item that opens it
  • renamed some GUI window classes to better reflect that they are actual GUI windows
  • removed non-working key listener logic from the game window
  • started implementing key bindings to allow application wide typing (menubar/panel and game controls)
  • implemented an easy way to inject typed letters into any controllable (e.g. highscores)
  • fixed a bug where no position wrapping occurred when adding pixels to a Vector2D
  • fixed a bug where the sector coordinates would not be logged correctly on sector shifting
  • the player can now shift sectors using the cursor keys in a game
  • added all keys a-z and A-Z (with shift modifier) to the key bindings
  • keystrokes will now also make a BIP sound effect, which will later be optional
  • started implementing a FadeableOggClip class which enhances OggClip functionality
  • thus removed dependency from Easyogg 0.6 library
  • updated JOrbis/JOgg libraries from 0.0.15 to 0.0.17, which is said to have better performance
  • fixed a highscores initialization endless loop that was introduced in 0.34
  • finished fading for OggClips. Spacola intro music will now fade out just like the original
  • added an „instant highscore“ cheat to shorten debug cycles for highscore submodules
  • also allowed explosions to be visible during gameover animation
  • fixed a bug where the player was able to recollect cargo during gameover animation
  • finally implemented the highscore submodule which allows entering the players name
  • renamed SEFont class to GameFont
  • added a „force gameover“ cheat, to shorten debug cycles for highscore submodules
  • fixed a bug where the entered name in highscores module would not fade correctly
  • inserted a pause between gameover screen and entering highscore
  • started rewriting drawing lines of game fonts for highscores, deprecated old methods
  • a running game can now be quit by pressing the escape button
  • the solar selector now displays the currently selected solar system in the HUD
  • pressing buttons in the FakeTOS module plays the BIP sound effect now
  • pressing the ESC button during a running game now plays the Bolo gameover sound effect
  • added bomb animation and pirate rant animation sprites
  • fixed a bug in the selector where the displayed solar system could be changed during fadeout
  • implemented station rant event and animation, plus bomb logic for the HUD
  • fixed a bug in the selector where the displayed solar system could be changed during fadein
  • fixed the cursor in the highscore prompt being two pixels too far to the right
  • typing in the highscore prompt will now play the OXYD typing sound effect
  • implemented a „teleport to target“ and a „bomb event“ cheat in the menu bar
  • fixed the XOR mode for bomb animation drawing over cargo being white over black
  • rewrote the code for gradually unloading and refilling cargo events
  • added a refill cargo cheat to the menu bar
  • added most of the special characters for the enter name highscore submodule
  • fixed a bug where no spaces would be shown as leading characters while entering a name
  • added almost all numpad keys to the controls for the enter name highscore submodule
  • pulled the inner title entry class into its own class file
  • additionally implemented fade-in logic for FadeableOggClip
  • removed sprite constants for deadly turret shots, since it uses maforian shots
  • added all 16 kleptomara shot sprites
  • replaced all 128 dual engine drive sprites with 128 more dynamical single thrust animations
  • added 4 new icons for the menu bar
  • finished ShipDecorator which is now responsible for drawing shields, stolen cargo and thrust fx
  • enemies finally have single engine thrust effects, which is now calculated more dynamical
  • deprecated now obsolete EngineThrust class
  • fixed spacings in the ShipDecorator to move the thrust animation 3 pixels closer to the ship
  • moved center of the thrust animation 1 pixel to the right, and decreased engine distance
  • made the refill cargo cheat take away lost cargo from all enemies
  • added 7 magic (tos gimmick) star sprites, will be useful later
  • added 9 station toilet paper animation sprites for the second wave of levels
  • renamed all the station animation sprites
  • added an enhanced version of the ’surfin u.s.a.‘ sound effect
  • renamed MusicLib to OggMusicLib
  • introduced a music library interface to allow different types
  • introduced empty sound and music library to enable starting without audio processing overhead
  • fixed a bug where turrets were always destroyed twice
  • fixed a bug where destroying turrets would add the score to the players account immediately
  • fixed a bug where the controls were initialized twice
  • fixed a bug where enemies were able to remote steal cargo in high speed flight
  • fixed a bug where the player was unable to recover cargo during high speed flight
  • fixed a bug where explosions of enemies would be left behind during high speed flight
  • fixed a bug where the players shots would fly through enemies during high speed flight
  • fixed the peashooter not actually shooting anymore
  • fixed handling „friction“ on magnetism effect differently for containers/black holes/alien/ware
  • fixed a bug where adding score for collecting aliens wouldn’t fire events (extralife and highscore)
  • implemented a score flip display that changes digits one at a time
  • fixed the winning animation not working anymore after implementing escaping the game
  • added an unload cargo effect for the winning animation
  • removed the displaying of cargo again in the billing animation
  • black holes will no longer be shown on the radar, if the player is not in the same sector
  • black holes will no longer attract the player while a vortex animation is ongoing
  • implemented price tags powerup handling where each cargo item is billed with its value doubled
  • started writing a Kleptomara decoy that they will be used in some levels
  • added keys 0-9 on the main keyboard area for the controls
  • fixed 3 engine thrust sprites that had one false pixel with partial alpha each
  • implemented methods to directly set the degrees or direction vector in an Angle2D object
  • fixed forgetting to apply modulo in Angle2D
  • unified conversion for degrees to radians and other way round, no more using polar coordinates
  • prevented the player from visiting stations when the ship has just been destroyed
  • implemented the logic for visiting pirate stations more than once before the bomb detonates
  • asteroids will now destroy mines if they collide
  • fixed adding an explosion while iterating through explosions
  • the player will now get destroyed by colliding with mines and their debris
  • fixed player getting destroyed by debris from harakiri enemies
  • fixed pirate ships getting destroyed twice if they are hit twice at the same time
  • removed all breakpoints, debugging works at appropriate speed now again
  • implemented piraton shots and made pirate turrets steal cargo from the player
  • piratons will now shoot the player
  • fixed enemies shooting the player while still not visible
  • added some debug log output for different collision scenarios

v0.35 – July 2014

  • stored the eclipse project launch configurations as shared files inside the project
  • logfile output is now dumped into the /log/ project subdirectory
  • fixed log output when there is an exception while initializing the log handlers
  • created a /doc/ folder for game documentation (changelog, todo-list etc.)
  • reorganized and described ant build script targets and added eclipse ant favourites

v0.34 – June 2014

  • wrote a mathematical function for real (as in correct) modulo calculation
  • improved ship sprite index calculation to fix wrong ship turn animation thresholds
  • wrote functions to trap stations in a random layout for testing purposes
  • lowered the proximity distance for H3/8 mines
  • implemented the pirate turret and therefore introduced stationary enemies
  • fixed a bug where Peashooters and Pirate turrets were allowed to shoot without targetting the player
  • implemented the deadly turret, although other shots need to be implemented soon
  • implemented the maforian shot and added them as the default shot for deadly turrets
  • rewrote utilities to use blowfish as encryption algorithm and SHA-256 for hashing
  • added convenience game object position addition functions
  • rewrote some logic for game object updating and adding/removing game objects
  • added dozens of player ship centering, teleport and sector shift functions
  • implemented black holes and added them to the level creation process
  • rewrote magnetism effect since the old one didn’t work very good for the black holes
  • implemented a better formula for more accurate gravitational pull
  • fixed duplicator powerup being confused with the ware collector powerup
  • renamed magnet powerup to alien collector powerup
  • included sprites and constants for pricetags, cantina, rocket and alien collector powerups
  • unified the way how containers, player ships and black holes gravitational pull are calculated
  • implemented both the alien collector and ware collector powerups, working great so far!
  • wrote a powerup manager and drew all powerup related code out of the playership class
  • fixed a small bug where the enemies engine thrust particles were a little off centered
  • finally implemented winning a sector with magnetic station pull, cola animation and fadeout
  • started declaring constants for many magic numbers used throughout the functions
  • intro animation is now handled by the unfinished vortex class
  • intro animation will now be triggered whenever the players ship falls into a black hole
  • big stars in the star background are no longer blinking synchronously
  • implemented an optional smooth transition for intro animation to actual star background
  • fixed a rare NPE bug where the highscore and/or font was not initialized quick enough
  • implemented a mathematically correct way to enable smooth intro star transitions
  • gameover vortex animation is now included, players can finally lose the level
  • dedicated highscore controllable has been implemented, players can save their entries now
  • fixed a bug where the number of lives would drop below zero and show incorrectly in the hud
  • converted the project workspace for the new Eclipse Luna release

v0.33 – April 2014

  • readded gem sound effects after I accidentally deleted them from the project
  • the Spacola Eclipse workspace will now use Java 8 for further development
  • tried to reconstruct a perfect mapping for original filenames to game sounds
  • fixed a bug where the player was unable to recover its cargo
  • finished the debris explosions
  • on ship destruction the player will now lose its cargo items one after another
  • changed the current year to 2014 in the about box
  • implemented methods for rectangular mine field placement around space stations
  • implemented the first two standard mines (H2-4.3 and H3/8)
  • H3/8 mines are now equipped with their proximity sensor
  • fixed some bugs with rectangular mine placement in the station trapper
  • proximity sensors of mines will not trigger if the player is currently invisible
  • implemented a score bonus for destroyed mines
  • created a way to draw game contents more dynamically and slightly faster
  • now you can see whether the piraton carries stolen ware
  • restricted the radar screen to only detect mines in the current sector
  • fixed enemies and mines being destroyed by an already dissolving shot
  • fixed animation speed of explosions being too slow
  • implemented the blinking score bonus when destroying a mine
  • fixed flying debris in debris explosions to be emitted more powerful
  • fixed spark debris being emitted too powerful
  • fixed debug output to display both number of pixel particles and debris particles
  • replaced the name of developer T. Güdelhöfer with his current name T. Schuhmann
  • added dummy AI classes for the enemy ships Maforians, Harakiris and Kleptomaras
  • stations will now deploy all kinds of enemy ships with the exact same behaviour
  • substituted some more sprites for the bonus lists and enemy lists
  • enabled the new dummy enemies to either steal cargo or destroy the player
  • cut out and added sprites for both station turrets and black holes
  • added radar sprite for black hole and powerup sprites for rockets and price tags
  • started work on a ship sprite decorator class for ware and thrust effects
  • created a list for known bugs and a todo list with detailed implementation aspects
  • added sprites for mothermaforians and for rocket powerup statuses

v0.32 – March 2014

  • replaced the old application icon and exe icon with the corrected ones
  • made the classic graphics library dynamically construct the TOS bombs overlay from icon
  • removed now obsolete tos bombs overlay PNG image
  • combined the dongleware + SD software screens
  • started including the GEM text editor into the game window
  • designed a new presentation artwork for the website
  • fixed the atarimouse cursor by adding a white border
  • added 19 mine and mine debris related sprites to the image resources
  • replaced all the type and state constants with enums to allow more flexible code
  • rewrote sector logic and level creation, split free objects from sector-bound objects
  • unsuccessfully tried rewriting level object iteration to achieve a better performance
  • added a way to determine whether a game object is alive or visible on the radar
  • implemented a class for debris elements for the fireworks style explosion on mines
  • fixed a bug where sectors would not be created when there was no powerup container
  • the player ship sprite can now easily be replaced by any enemy ship sprite
  • several small performance improvements (e.g. redundant function calls, use of iterators)
  • renamed some packages and classes and moved them where they actually belonged
  • added a sprite for 250 score (standard mine)
  • wrote utility functions to randomly choose elements from any type enum class
  • wrote new generic functions to detect any game object collision
  • added new copy constructors for game objects to allow for easier vector initialization
  • started implementing a manager class for debris explosions which spawns debris
  • made the debris explosion class extend the standard explosion class
  • wrote new mathematical functions to generate shifted particle motion vectors
  • added lots of new sprites for score, mines, statuses, powerups, pirate shots and cargo
  • added the whole maforian spriteset. Finally another enemy sprite finished!
  • added the whole spriteset for the harakiris. That makes 5 complete ships
  • wrote a station trapper class for mine field placement
  • started adding some javadoc to classes and methods
  • renamed some classes (like PeaShooter -> Peashooter)
  • renamed audio path to /snd/ and pulled path constant into soundconfig class
  • readded all spacola samples in better quality, as well as some additional ones
  • started giving all audio files the same names as they had on the original disk
  • scanned and edited three different versions of the Spacola Rentenbescheid
  • changed filename of the highscore file to comply with the original game
  • added all sprites for the kleptomara enemy ship. 6 enemies so far
  • pulled some highscore constants into the scoreconfig class
  • added a new small explosion spriteset for enemy shield loss effects
  • implemented calculation for the monthly pension on the Rentenbescheid
  • figured out how the monthly interest is actually calculated and implemented it
  • prepared multilanguage support for the ingame texts

v0.31 – February 2014

  • Near-perfectly recreated the complete cover artwork of the Spacola space atlas
  • created a new (MUCH better!) text character artwork for Spacola Eclipse
  • starting to create a new cover artwork for Spacola Eclipse splash & website
  • replaced ingame SE 2013 title with a new 2014 one
  • removed unused old title image with crappy font
  • finally also transcribed the blurb of the Sternenatlas (manual)
  • created new spacola artwork fonts: slim (from floppy disk) and standard (used in the book)
  • cut out and added 13 border sprites for the extended border class
  • added Atari ST GEM font image and declared constants for using it
  • put each audio library implementation into its own package
  • finally got the game to compile again after rewriting the whole audio subsystem
  • shortened the intro title delays about a second each
  • tried to fix the accelerate sound effect loop points since they magically turned wrong somehow
  • added german characters as an enhanced Atari ST GEM font image to the resources
  • wrote a simple GEM font class and a small test program
  • shortened the fading time to better fit the music to some of the titles
  • wrote a typewriter GEM font test class using the font
  • added GEM sound effects for pressing a key and the system bell
  • implemented GEM sound effects for the text editor
  • fixed the GEM typewriter test class to create a window with the correct size
  • implemented a better way to specify only the size of the the drawing area of the game window
  • fixed an NPE in the music library when stopping a song
  • implemented a security check to make sure Java created a correctly sized window
  • now using the GEMTextEditor as a core class
  • fixed the accelerate sound loop points and put it in an extra class for sound constants
  • fixed the hotspot of the crosshair windows cursor
  • implemented some missing drawing functions for the GEM font class
  • introduced text alignments with the GEM font
  • put all font drawing related classes into their own package
  • made the classic graphics library dynamically construct the TOS loading screen
  • removed the obsolete TOS loading screen image file
  • prepared a graphics filter class for realtime inverting, scaling etc.
  • introduced inverted text drawing for the GEM font
  • ingame debug text can now optionally be drawn in GEM font for authenticity
  • replaced the SD Software logo with another design

v0.30 – December 2013

  • added utility function to safely delete a folder
  • added several utility functions for memory usage
  • fixed a problem with the pause functions where an exception was rethrown unnecessarily
  • simplified pause functions, deprecated old code
  • simplified code to generate solar system Hex coordinates, deprecated old code
  • added unfinished dongleware sprite definition format loader to the project source
  • implemented a spritesheet loader which creates a spriteset from a specified spritesheet image
  • readded old vortex code as a comment for backup purposes
  • readded all three old (deprecated) audio libraries as fallback implementations

v0.29 – August 2013

  • fixed exceptions caused by pausing the game for changing the menu bar
  • added launch4j configuration to the project
  • added windows exe icon to the project
  • wrote a fully working ant build script for compiling, jar and exe file creation
  • added eclipse jar-in-jar classloader to the libraries for the ant script
  • changed minimum java version to 1.7 in the ant script and launch4j config
  • introduced build numbering with the ant script
  • added more information to the jar manifest file
  • moved particles into the level class because they’re placed in the level
  • started implementing a special vortex effects class for level intro and gameover
  • ant build script now changes the version number in source files
  • changed the way the stars in the background are drawn
  • changed the version number format displayed in the game client

0.28 – July 2013

  • fixed an issue with short instructions margins and line heights
  • fixed a final issue with button controls on the short instructions module
  • renamed the title bar to „SPACOLA Eclipse“ rather than lowercase Spacola
  • added new menu to the menubar for all original main menu commands
  • added six little icons from the game’s original art to the menubar
  • added six more icons for the menubar
  • created ant build file with eclipse
  • added auxiliary name prompt to the highscore class
  • implemented safer way to add and remove highscore entries
  • fixed too early log output of solar selector module execution
  • implemented highscore functions for safely extracting entries
  • implemented auxiliary dialog for entering new highscore
  • started implementing Controllable functions for entering and showing highscore
  • added four new icons (GEM window icons and a music icon)
  • added the Atari ST GEM hand as icon and added hand and mouse pointer as cursor images
  • added all five Atari ST cursor images as real OS usable cursors (e.g. for dialog boxes)
  • fixed an NPE where I missed to comment out a single line
  • implemented basic top level logging, so in the future no uncaught exceptions remain unlogged
  • added GEM hand icon to the menu bar

v0.27 – June 2013

  • added 128 sprites for oldschool player ship engine thrust animation
  • renamed „Halt Engine“ menu item to „Suspend Engine“
  • now playing sound effects when activating cheats
  • implemented a class for oldschool engine thrust effects
  • implemented a direction index buffer as a delay for engine thrust animation
  • fixed small rotating asteroids being animated during pause
  • added WindowListener implementation to the game window to allow for my own quit handling
  • added log entry with uptime when the window is closed
  • added yet another hud frame image with wider arrows and another star sprite
  • readded old audio library with simple audio clip format as a fallback solution
  • wrote toString method for highscores, which will be used in the JMenu later
  • added menu items for viewing and saving highscores
  • implemented a dialog window which displays the current highscores
  • wrote vector addition functions to the vector class to simplify combining two vectors
  • added calculation functions for opposite direction vectors
  • started implementing better enemy ship navigation and targetting functions
  • started implementing drawing of short instructions module
  • started writing a new and more flexible AI class for Piratons
  • wrote a function for absolute positioning of content on the game screen
  • fixed a bug with game client uptime calculation
  • fixed uptime log output for singular/plural differentiation
  • wrote a function for stars drawing code on transparent backgrounds
  • fixed an ugly bug in the dongleware font class. Margin for the first line was mostly wrong.
  • fixed a bug where the score field would get drawn over the lives field
  • fixed music still playing after engine shutdown
  • fixed a problem where stopping the title music would make the game engine drop frames
  • implemented short instructions and added F9 shortcut and menu item to the menubar
  • increased alien and ware scattering speed

v0.26 – June 2013

  • rewrote station animation code, completed waving and cola delivery animation
  • station sound effects now only occur in the station class and not outside
  • fixed a bug with crashing on station drawing
  • once again tried to fix the bouncing code. Might as well rewrite this thing.
  • added 17 alien sprites
  • added shouting alien sound effect
  • implemented „helpless alien“ class
  • added more debug output for deployed enemy ships, enemy shots and aliens
  • added radar sprite for flying ware
  • added debug output for ware and shortened the text a little
  • changed the directory structure of some sprite collections
  • added onscreen sprite for flying cola bottle
  • implemented ware object
  • pirates which stole ware disperse it in case of destruction
  • pirates now also disperse any number of aliens when destroyed
  • added drawing ware on screen and on radar
  • fixed a bug where objects on the radar in sector rows or columns D are not drawn
  • added size attribute to all game objects to make some calculations easier
  • adjusted the magnetic effect for powerup containers a little
  • added magnetic code for all game objects, but especially player ships (to drag aliens and ware)
  • added collect alien sound effect
  • the player can now collect aliens and ware
  • the player is now invisible after dying
  • an invisible player can no longer collide with asteroids or ships, nor does he attract aliens/ware
  • the shield gets reset only after being visible again
  • the player now disperses his cargo and all aliens when destroyed
  • the player now loses all his powerups when destroyed
  • added a ScoreConfig class that holds all the score for every game object
  • the player now gets score for destroyed pirates only after collecting the alien
  • added correct ware score calculation
  • fixed the billing animation to actually show the real score
  • added some more log output for collecting flying stuff
  • fixed a bug where selector click sound effects would still be played with closed game engine
  • fixed the player ship still turning while invisible
  • fixed acceleration sound effect still being able to play after dying
  • added all systems ok status event after receiving a new player ship
  • implemented player receiving new ship animation after getting destroyed
  • fixed the player getting killed again or his cargo stolen while invisible
  • readded dying from colliding with asteroids
  • added the player getting destroyed from colliding with PeaShooters
  • added some checks so that a max of 99 lives and 9999999 score is guaranteed
  • shortened the duration of billing items to show before the next is displayed
  • added 3 surfing sprites
  • implemented the surfing animation after player ship destruction
  • fixed a bug where player ship would not get destroyed properly after asteroid collision
  • switched to asteroid style explosion effect after player ship destruction
  • prevented the player from getting destroyed or stolen from instantly when visiting a deploying station
  • the player gets 1 cargo back only after he regains his ship
  • fixed a bug where player ship would not get destroyed properly after enemy shot collision
  • fixed a bug where the player would stay invisible after completing a level
  • aliens now rotate randomly in a different animation phase
  • added 10 new sprites for original style enemy ship explosions
  • implemented enemy ship explosions as a substitution for particle effects explosions
  • fixed a bug where explosions would be updated one tick too early making them jump ahead
  • fixed a bug where explosions would be drawn over the station sprite which should be topmost
  • added another status screen sprite for bomb greetings event
  • reshaped menu a little and added menu items for ingame music and particle effects
  • rewrote audio library to allow looping and toggling of ingame music
  • decreased volume of ingame music
  • ingame music will now automatically restart if re-enabled through menu during a game
  • created an abstract Gfx library class with several useful methods for loading sprites/spritesets
  • started implementing a real game pause mode (as opposed to completely halting the engine)
  • implemented animation for pause status in HUD status screen
  • fixed aliens shouting calculation code being handled in draw method
  • fixed particles blinking probability code being handled in draw method
  • fixed cursor being movable/seen during pause mode
  • fixed player being able to shoot/accelerate during pause mode
  • fixed aliens rotating endlessly in some cases during pause mode
  • fixed stars blinking code being handled in draw method
  • fixed pause menu item still clickable after engine shutdown
  • made particle effects optional through the menu now
  • shortened the interval for pause status blinking in HUD to 0.5 seconds
  • improved the station wave animation to get it closer to the original
  • implemented a small cheat menu for max lives/shield/all powerups and self destruction
  • fixed halt game engine menu item not working properly
  • fixed cursor sprite not drawn in pause mode
  • changed the way how engine halt is visualized: tos bombs are drawn over the screen

v0.25 – June 2013

  • made ingame music optional from the configuration classes
  • got the game to finally compile again, still needs a lot of bugfixing
  • added a few more ingame debug messages for enemy ship deployment and station delivery
  • fixed displaying the wrong cola cargo sprite in the price lists
  • removed tons of unnecessary code that only caused the IDE to throw warnings
  • successfully implemented complete highscore loading and saving (to disk) through serialization
  • started implementing the billing animation, needs some more adjusting
  • fixed a bug with wrong drawing/updating time duration calculation
  • completed billing animation and made it launch after every solved solar system
  • fixed a bug regarding wrong shot speed
  • fixed solar selector and billing module always forgetting the player stats
  • added a 2 second delay before the billing animation starts
  • allowed the billing module to remove cargo and add score to the player (hardcoded for now)
  • made HUD status events display during billing animation as well (highscore!)
  • created an „animation“ for slowly loading the cargo into the ship before each level
  • fixed a bug where the Piraton ship gets deployed at the wrong location
  • fixed deployment log message displaying not the actual position of the deployed ship
  • pirate ships now also throw sparks (particles) as soon as they accelerate
  • fixed pirate ship location being updated before particles are created
  • added a much better ingame soundtrack which almost fits the general game pace
  • implemented enemy ship collision logic, player can now bounce or die from enemies
  • Piratons are now able to steal cargo from the player on contact
  • prevented the player from visiting the friendly station if all cargo is lost
  • fixed the player having one life less than actually displayed in the sidebar
  • the player now receives some more cargo if he has lost everything and loses an extralife
  • added a single maforian sprite for the price lists
  • substituted placeholder cargo sprites with some enemy sprites in the price lists
  • fixed a bug where the accelerating state keeps set after level has been completed
  • added sprite and class for PeaShooter cannon shots
  • merged two functions for enemy collision detection
  • fixed enemy ships from jerking around the players ship on flythrough
  • implemented PeaShooter shooting and player dying from getting hit
  • changed and unified the way collisions are resolved before bouncing occurs
  • fixed the PeaShooter ship already shooting while still in the station

v0.24 – May 2013

  • implemented utility class for text encryption and decryption
  • implemented utility class for file access and object serialization to file
  • made the highscore class serializable
  • made the solar system class serializable
  • completely rewrote vector arithmetics and stuffed everything in a separate class
  • everything broken for now, started fixing about 20 classes which also need to be rewritten now
  • created a new abstract class for enemy ships
  • removed obsolete overridden methods for updating/moving
  • removed unnecessary and slow multiple function calls in looped calculations
  • added empty class for billing controllable (after the player solved a solar system)

v0.23 – April 2013

  • added support for ingame music (during gameplay)
  • added first dummy gameplay music for testing purposes
  • added volume handling for sound effects
  • tweaked the volume values for sound effects and music
  • added hud events for all the other status messages
  • fixed displaying „systems ok“ message in case of new highscore
  • added game events for hyper speed and ridiculous speed
  • created new mathematical function for calculating actual pixel speeds
  • implemented a ship speed limiter
  • added all the sprites for the peashooter enemy type
  • implemented dummy peashooter enemy ai for the game
  • drew collision detection method out of piraton enemy class into gameobject class
  • made the ingame music play in a loop instead of simple playback

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 separate 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

v0.20 – November 2012

  • wrote new functions for sector coordinate handling and string representations of coordinates
  • implemented debug text help for coordinate difference towards winning sector
  • removed asteroid bouncing if shield is down
  • implemented handling code for lives, cargo and player score (including earning extra lives)
  • it is now possible to get your ship destroyed and lose the game
  • implemented stubs for all kinds of collisions and win or lose situations in a solar system
  • added four new sounds: surfin usa, game over, oh oh and collect ware
  • implemented a stub for a future funny fatal error message
  • drew acceleration code from solar system class into player ship class
  • implemented different blinking speed for the shield and changed the interval
  • made it possible for the player to control the ship during the level intro animation
  • implemented the players ship to regain shield for a few seconds if the ship gets destroyed
  • fixed a bug with calculating the sector coordinate differences
  • fixed a bug where the solar selector progress and the player object would not be reset after game over
  • created new player, shield and shot sprites without the black border, making it more transparent
  • added a missing player shot sprite and fine tuned the dissolve distances
  • added a new sound for bouncing from objects with activated shield powerup
  • added a new sound for winning a solar system (fanfare)
  • implemented the first enemy: the piraton
  • implemented the piraton behaviour, it is very close to the original
  • implemented the piraton sprites
  • improved the piraton behaviour by adding player vector with piraton vector
  • implemented a filter for inverting monochrome graphics, doesn’t quite work
  • added menu item for inverted graphics
  • identified and removed duplicate code in the graphics engine
  • started removing a soon obsolete pause drawing method from the graphics engine
  • made the radar screen update far less often to create a more oldschool graphics look
  • tried to improve the piraton behaviour and the performance a little by removing unnecessary calculations
  • implemented proper acceleration for the piraton ship to make its flying look more natural
  • implemented basic enemy ship deployment by stations on a given distance
  • added „alert“ sound on enemy ship deployment
  • fixed accelerate sound getting stuck and playing even if a level is finished
  • enemies can now be shot and destroyed and they can collide with asteroids
  • finished inverted graphics mode, but it takes a lot of CPU power, so it is not recommended
  • fixed rapid shoot cooldown
  • limited asteroids to certain sectors only now
  • reduced framerate of radar screen even more to make it more authentic
  • made sure that no new asteroids are generated if the players hits a certain speed
  • fixed a problem with player shots being updated before the ship has been updated
  • created a slightly modified project image for the website
  • created a slightly modified splash screen for the game (better sprites)
  • created another modified splash screen with smaller sprites
  • added proper text credits to about screen with scrollable text area

v0.19 – November 2012

  • implemented asteroids code and sprites
  • collision detection implemented for shots, ship and asteroids
  • it is now possible to shoot and destroy asteroids, bounding box seems a little too big
  • bouncing off from asteroids almost works, just not exactly as it should
  • made player shots turn harmless as soon as they start to dissolve
  • tweaked shot animation distances / dissolve distances
  • increased shooting cooldown
  • reduced bounding box sizes of asteroids
  • introduced four more powerups: distance shots, backwards shooting, item duplicator and extra life.
  • rewrote shooting code to reflect forwards/backwards single/double rapid/distance shooting
  • wrote logic for either objects bouncing off with shield or getting destroyed
  • tried tweaking the loop points for acceleration sound, to make it more authentic
  • started implementing winning sector coordinates and successfully completing (or losing) a solar system
  • added explosion sound effect on hitting asteroids
  • added ranting sound effect for docking at the wrong station and receiving a bomb
  • rewrote game maths bouncy code on collisioning objects. Should work as intended now.
  • rewrote math functions for random vectors (asteroids, particles etc.)
  • added sound effect and code for shield low warning
  • pulled shield handling code from draw() into update(), duh!
  • implemented random speed for asteroids movements
  • changed the value for initial shield length (5 seconds) and thus making it dependent on framerate
  • the game now returns to the modified solar selector after succeeding and to the intro after losing
  • modified debug output to display target sector and remove unnecessary information
  • changed spawning of a random number (between 1 and 3) smaller asteroids
  • changed solar system creation so that powerup containers are placed only with a certain chance
  • removed spawning chance calculation of big asteroids, just spawn them all at once
  • added all missing price lists to the intro titles using dummy prices and dummy sprites
  • also added all the correct prices according to the original game
  • wrote new function for calculating the right distance for station docking
  • implemented a way to resolve collisions so that the weird bouncing behaviour might disappear
  • changed shield low warning timer to 3 seconds
  • finally found and fixed the reason for concurrentmodificationexceptions on the player shots
  • fixed a bug with generating small asteroid velocity
  • fixed bounce code for now, makes it look a little better, but still not good enough
  • fixed a bug that generated -1 as a winning sector coordinate

v0.18 – October 2012

  • added better splash screen
  • removed non-working code for station identification
  • created interface for alternate graphics engines
  • further implementing new audio code with better performance, still silent atm due to errors
  • rewrote game object drawing and radar code to fix a performance issue with iterating over all objects
  • substituted concrete implementations (Controllable, GfxEngine) with interfaces where possible
  • transcribed all the chapters from the Spacola Sternenatlas (manual) for Spacola Eclipse
  • added another HUD frame with better title („magic“ star included)
  • partly getting sound again now, loops still don’t work
  • finally fixed the problem with broken loop points. Game audio works like a charm now!
  • implemented code that prevents powerup containers to be placed directly beneath space stations
  • tweaked the sector border that prohibits placement of stations and powerups too close to borders
  • reintroduced dual sample playback during double shots again, works perfectly now

v0.17 – July 2012

  • implemented radar screen with sector boundaries as dashed lines
  • fixed a NullPointerException with the secondary sound channel
  • added a math function for orthogonal vectors (double shooting and acceleration particles)
  • implemented the third powerup: double shots
  • had to remove dual sample playback during double shots, sounds awful and works too slow
  • fixed a bug where the double shots had different directions each
  • reduced the number of blink cycles in the solar system selector screen
  • started integrating code for a better audio system which works much better than JavaSound’s awful „Clip“
  • improved coordinate wrapping by writing a more generic mathematical function for x/y delta values
  • wrote two other functions for distance calculation even beyond level boundaries
  • added most of the radar sprites to the resource folder
  • implemented drawing of stations and containers on the radar screen
  • coordinate wrapping also added for powerup containers, even though we won’t need it
  • a little code cleanup for the solar system class
  • rewrote price list creation and drawing, should be much closer to the original now
  • added all eight cargo sprites to the resource folder and the price lists
  • made the sector boundaries in the radar screen move along with the players ship
  • fixed the max width of the price lists
  • fixed a bug in the dithering that made the background go blank for a moment
  • added random starting position generation for the players ship
  • wrote almost new controls logic and slow ship turning (like intended)
  • fixed some bugs with the new controls
  • finally fixed a bug that caused the players position to turn NaN, which caused the game to crash
  • added a slightly modified splash screen featuring a station, space-cola, toilet paper and a hair dryer
  • added the shield down sound and implemented the effect on shields down

v0.16 – July 2012

  • fixed the game title of the HUD frame, moved it more to the center of the surrounding box
  • rewrote pixel particles logic, so that it can be integrated into solar system level architecture
  • rewrote particles drawing with correct wrapping algorithm
  • implemented a particles acceleration effect that (temporarily) replaces the acceleration sprites
  • stations and powerup containers are now prevented from being generated near sector boundaries
  • implemented the magnetic/gravitational pull effect of powerup containers
  • fixed game objects (shots) not being drawn centered properly on screen
  • implemented functions to include sprites in titles, needed for price and bonus lists
  • implemented first proper price and bonus lists that fade in, show line by line, and then fade out
  • changed blinking delays in the solar system selector once more to make it true to the original
  • fixed yet another bug with the wrapping algorithm, should be perfect now
  • fixed a bug in the solar selector that prevented the blinking delay to occur
  • changed the loop points for the acceleration sound, seems better now
  • fixed spacola cursor disappearing in the solar selector in the wrong moment
  • implemented the very first powerup: shield generator
  • added a cooldown time for shooting, the player mustn’t be able to shoot more frequently than rapid firing powerup
  • rewrote particles logic for acceleration, so that both rocket engines emit particles while accelerating
  • added rapid shooting powerup
  • tried to implement a simulation of two audio channels to compensate for poor JavaSound performance
  • fixed a bug with wrong positioning of player shots (once again)
  • yet again shortened the click delay for the solar system selector
  • shortened the lifespan of acceleration particles
  • fixed a bug where the player uses rapid shooting without collecting the powerup
  • shortened the cooldown for non rapid shooting, compensates for „unheard“ mouse clicks
  • changed the title image a little, added some lines as a matter of aesthetics

v0.15 – July 2012

  • added neat splash screen to the window if game engine is not running
  • solar system selector now behaves almost perfectly like the original thing
  • enabled/disabled start and stop engine menu items depending on engine status
  • fixed a bug with pause menu item staying enabled when the engine went offline while game running
  • fixed solar selector margins and heights, now looks exactly like the original
  • fixed a bug in the solar system selector with clicked field index 0/0
  • the coffee button now shuts down the game engine, will later save the game & shutdown
  • added dummy highscore screen with standard entries
  • added menu item for disabling and enabling audio with F5 key
  • created better eclipse title image featuring the ship model
  • new icon for the game, looks much better in the task bar, still not so good in the window
  • fixed a bug in the selector where the player could still click on other fields after selecting a level
  • delayed the solar system selection sound a little more
  • wrote new and more generic drawing function for stations, containers etc.
  • this also fixes all the coordinate wrapping problems with level borders
  • fixed a bug where the player could still shoot while in pause mode
  • pause mode is now achieved through both F4 and space bar keys (as written in the main menu)
  • fixed exception with player shots due to concurrent access from EDT while iterating over it
  • rewrote major level/sector code, few optimizations, improved readability
  • pulled coordinate wrapping into abstract class, since this works the same for all game objects
  • implemented simple hexadecimal sector number calculation for the HUD

v0.14 – June 2012

  • made the game engine launchable from the window menu
  • made it possible to shut down & restart the game engine whenever we want to
  • wrote a small dirty fix for a JavaSound bug with looping of an audio clip for the first time
  • centering windows on the desktop now finally works (needed to set the location AFTER we set the size)
  • made the game pauseable, added menu items for it
  • rewrote major game and controls OOP structure, much easier to understand and extend now
  • added first key binding for the menu items, revealed problems with focused GUI elements
  • fixed IllegalThreadStateException when restarting engine thread
  • improved calculation of star speed, to fix stars moving too slowly
  • added „PAUSE“ text when in pause mode
  • disabled pause menu entry while level is not running
  • fixed resetting pause mode after engine shutdown and restart
  • decided to focus menu bar, fixed key bindings to disable Windows behaviour for F10 and override it
  • fixed restoring of system mouse cursor when in pause mode
  • added several new ingame debug/verbose lines
  • added spacebar key binding for game pause mode
  • added all game assets to the pause screen (only ship and cursor stay invisible)
  • finally split star background drawing from updating
  • cleaned up some code in the gfx engine

v0.13 – June 2012

  • fixed mouse clicking for the solar selector
  • made the coffee button clickable, but it does nothing for now
  • started reimplementing the turning logic of the player ship
  • added player ship sprites, to make the ship visible again
  • fixed problems with the controls, works MUCH better now
  • fixed a bug where the player already moved after level start
  • reimplemented old method of star randomization, might be able to choose later
  • reimplemented auxiliary sprite rotation method for testing
  • implemented player shields and timing
  • made the player ship visible during level intro animation
  • added several mathematical functions for vector arithmetics
  • replaced my bad angle calculation algorithm with a proper trigonometrical formula
  • added basic acceleration code and right click logic to the controls
  • acceleration slowly starts working again
  • added acceleration sample with looping points, but it doesn’t work properly
  • rewrote click handling for the solar system selector to make it more authentic
  • added a short pause before sample playback after selecting a solar system (more authentic)
  • tried fixing the acceleration sound loop bug, will have to continue some time later
  • split the drawing functions for the solar system selector to allow for flexible redrawing
  • rewrote accelerating in order to narrow down the code, also much easier to read now
  • started reimplementing the drawing of player shot sprites
  • started reimplementing the drawing of stations and containers, seems a little buggy though

v0.12 – June 2012

  • using invokeLater with all AWT/Swing classes now, at least where i think it is necessary
  • quit button in the menu bar ends the program now
  • pulled the intro code into its own class
  • wrote a method that creates a „grey“ background for the HUD fields
  • added KeyListener to handle keys in the main menu
  • added context logic to the mouse / key controls class
  • added almost empty dummy title screens for the bonus and wanted enemies lists and the highscores
  • added betatesters and a few other titles to the intro
  • started reimplementing level intro animation
  • rewrote the audio lib to make it use Javax.sound
  • wrote additional functions for monochrome image creation
  • made use of monochrome image class for the stars background
  • started reimplementing level architecture again, slowly we’re getting there again
  • redesigned the hud frame, book code info removed and created eclipse title
  • rewrote mouse listener and key listener related stuff, F10 works now
  • tidied up the graphics engine, significantly narrowing down some parts
  • fixed unnecessarily complicated parts of the game cursor controls
  • implemented methods for drawing content vertically fixed (highscore, level selector, bonus lists)
  • lots of code cleanup for certain classes
  • started very early preparations for possible multiplayer mode
  • rewrote animation code of the solar level selector
  • added samples for level intro and solar selector
  • created threads for music playback and stopping

v0.11 – June 2012

  • a few tweaks to the intro (star speed, spacings, fade-in-only)
  • improved dongleware style dithering fade, looks better now
  • implemented double click handling
  • finally done implementing pixel identical dongleware fading
  • made it possible to use the framestopwatch without using split times for update and drawing
  • changed the graphics engine so that the cursor is not drawn if it has not moved yet
  • changed the line spacings for the titles to make them identical to the original
  • changed the timings for the titles to make them as close as possible to the original
  • now uses sample player for WAV instead of OGG audio, since it is much faster and easier to handle
  • included the dongleware switch ‚click‘ and a few other samples
  • started implementing the level selector screen
  • added ‚ß‘ character to the dongleware font, since I forgot it in the first place
  • fixed a bug with the framestopwatch introduced earlier with the optional split times
  • bug fixes for the level selector, added sprites for it
  • fixed a very small part in the hud frame graphics for ease of use
  • implemented an interface for runnable core components like splash, intro, level etc
  • created required action listener and a dummy about dialog to fill it with information later
  • improved the stars Gfx class to let it create differently sized images and fit enough stars in it
  • created extra classes to outsource splash screen and intro stuff
  • new method for the Gfx engine to also draw chosen images remotely in a HUD frame
  • added oxyd sound as a gag for the spacola splash
  • added dithering for the splash
  • dummy class for rolling credits, maybe will use them for the about dialog
  • started porting the parser for dongleware sprite definition format from php to java

v0.10 – May 2012

  • embedded my own small pixel particles library with Spacola Eclipse for simple explosion effects or so
  • added a few methods to the GameMath class for directional and coordinate calculation
  • FrameStopwatch now works using nanoseconds, not milliseconds, to make it more precise
  • added a blinking feature to the particles
  • implemented the use of a primary and a back buffer for drawing instructions
  • implemented a special class MonochromeImage for monochrome graphics and effects
  • improved performance of my graphics library
  • better code for transparency that avoids too much CPU usage if not necessary
  • renamed a lot of classes again and put them in their packages
  • resumed writing some code for double buffering my monochrome gfx engine
  • implemented the complete code for the Spacola font and wrote functions for creating titles with it
  • Dongleware style dithering fade is finished and works after a lot of corrections
  • first sample for playback included and tested during titles, works great
  • included classic titles and new titles, looks almost perfectly like the original game

v0.09 – May 2012

  • fixed a problem with redrawing of the game canvas region
  • inserted a menu bar with dummy entries for the most usual functions
  • fixed a problem with redrawing concerning the menu bar height
  • fixed a problem that occurred with mouse cursor coordinates which also concerned menu bar height
  • added alert boxes in case of a fatal error (file not found etc.) to notify the user something went wrong
  • changed the look and feel to system default, because Java-LaF looks so crappy
  • made the system mouse cursor visible in the menu bar
  • preparations for implementing a very basic controlled double buffering

v0.08 – May 2012

  • implemented a completely new (small) 2D graphics engine with more efficient repainting
  • reduced target framerate from 72 to 40. This should still be enough for everyone, but it reduces CPU load
  • no longer drawing images directly onto a JFrame (duh!), instead I added a special JPanel for painting
  • added java logging to write debug/error verbose output to the console (and later into a logfile)
  • paintComponent method for special JPanel to allow the OS to draw only regions that need redrawing
  • added title images for the developer company, for „Spacola Eclipse“ and the classic one
  • the Spacola window now uses a special icon image instead of the ugly java cup. Looks nice in the taskbar
  • started implementing the main menu with a special player configuration
  • implemented a fake TOS loading screen with the TOS bee as a gimmick

v0.07 – May 2012

  • started rewriting the whole game again (since the code was a nightmare object-orientation-wise)
  • first preparations towards development for Android platforms
  • started implementing a simple sprite library
  • new basic class for spacola font processing
  • new classes for configuration values (keeping magic numbers together)
  • separated the graphics engine from the actual view window
  • implemented a special stopwatch class for framerate limiter + automatic framedrop on low fps
  • made the stopwatch class optional and more resistant to errors
  • implemented proper repaint functions for the actual window (so it can redraw its contents if the OS asks for it)
  • made debug output optional as commmandline flag
  • fixed a bug with repaint functions (better framerate), still a lot of work to do
  • improved stopwatch class, displays current fps on debug output
  • renamed a lot of classes to make them describe their tasks more accurately

v0.06 – August 2011

  • started renaming some functions to fit java naming conventions
  • created an abstract superclass for enemy AI, removed old static AI class
  • added stubs for maforians, peashooters and piratons AI classes
  • started adding some abstract methods for enemy AI
  • fixed title screen not showing up sometimes
  • shooting now works kind of, still buggy though
  • shooting algorithm improved, direction is now almost correct
  • better algorithm for shooting, still some bugs to fix
  • implemented space stations and empty containers in every sector
  • fixed a bug where a single mouse click resulted in firing two shots
  • flight speed now more like the original game
  • star movement slowed down, was looking stupid as stationary game elements were introduced
  • fixed a bug where the crosshair cursor coordinates could get behind the HUD
  • started implementing classic dongleware style dithering fade

v0.05 – September 2010

  • changed cursor sprite to make less pixels transparent
  • implemented sector logic for levels
  • stars now reset themselves when leaving a sector

v0.04 – August 2010

  • cleaned up some code, need to do a little structural rewriting
  • star speed fixed again
  • improved performance by removing some unneeded paint() calls
  • started working on blinking stars
  • started working on the level design
  • fixed a bug where accelerating stopped on left mouse click
  • rewrote some code to achieve some kind of framerate limit
  • implemented blinking stars
  • implemented medium sized blinking stars
  • increased number of stars to 70 (looks more like in original Spacola)
  • started writing a wormhole algorithm for the level beginning sequence
  • wormhole algorithm works but doesn’t quite look like the original
  • wormhole algorithm improved, looks better now
  • fixed a directional bug that caused rotations to be applied backwards
  • started implementing slower turning like in original spacola
  • slower turning works now
  • implemented some debug output lines

v0.03 – August 2010

  • acceleration thread is used for speeding up
  • increased game speed a little to make animation more fluent
  • fixed stars popping up right on the edge of gamescreen during high speed flight
  • spacola mouse cursor implemented, windows cursor hidden
  • accelerate animation for player ship works a little
  • acceleration animation now includes one frame and works great for now
  • stars are no longer visible through the ship
  • started working on firing

v0.02 – August 2010

  • started rewriting some structural code
  • added stub for sound engine, level engine and AI
  • finally got image loading to work again
  • image drawing works better now, still alot of work to do
  • removed gui thread again because of timing issues
  • switching images now works
  • started implementing star behaviour
  • started working on issues with jar export
  • stars, speed and direction implemented
  • fixed jar export issue (path problem)
  • ship rotation implemented
  • started implementing mouse control
  • mouse control works great
  • started working on mouse clicks for shooting and acceleration
  • changing direction works now

v0.01 – August 2010

  • started working on the graphics engine
  • added serial version UID
  • Spacola main window implemented
  • able to load spacola frame into window
  • removed empty space above spacola frame
  • game window not resizable anymore
  • default close operation for window added
  • started working on filling the frame
  • game screen added
  • added serial version uid for game screen class
  • radar screen added
  • added spacola 2010 title screen with a 3 second delay
  • added thread usage for gui
  • fixed repaint in paintcomponent loop (recursive repainting)