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)