Changelog

v0.60 – December 2016

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

v0.59 – September 2016

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

v0.58 – August 2016

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

v0.57 – July 2016

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

v0.56 – June 2016

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

v0.55 – April 2016

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

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 class 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 that 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 enemys 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

0.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

0.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

0.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

0.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

0.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

0.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 seperate 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 seperate class
  • fixed player ship facing the wrong direction on beginning of the next level
  • fixed asteroid probability, to make them appear less often
  • shortened some durations for the intro titles
  • added a new eclipse logo for the titles
  • added a new success denied logo for the titles
  • started writing a new LogUtility class which is there to handle simple JUL logging
  • implemented log output to a logfile
  • removed standard global (root) console handler for logging
  • implemented a new log output format
  • renamed resources folder to /rsc/
  • rewrote initializing of audio lib and graphics lib, logging the number of loaded files
  • prevented audio library from initializing more than once
  • rewrote part of the logging for libraries
  • keeping loggers in memory if they have already been used once

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 bug free
  • 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 stupid workaround 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
  • 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 seperate 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 about 50. This should still be enough for everyone, but it reduces CPU load.
  • 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 region only 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 OOP-wise)
  • first few 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 commandline 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

  • 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
  • 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
  • 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 more structural rewriting
  • star speed fixed again
  • improved performance by removing some unneeded paint() calls
  • 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
  • fixed a directional bug that caused rotations to be applied backwards
  • started implementing slower turning like in original spacola
  • implemented some debug output lines
  • started working on the level design

v0.03 – August 2010

  • acceleration thread is used for speeding up
  • increased game speed a little to make animation more fluent
  • spacola mouse cursor implemented, windows cursor hidden
  • accelerate animation for player ship
  • acceleration animation now includes two frames
  • 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
  • image drawing works better now, still alot of work to do
  • switching images works now
  • started implementing star behaviour
  • stars, speed and direction implemented
  • ship rotation implemented
  • started implementing mouse control
  • started working on mouse clicks for shooting and acceleration
  • changing direction works now

v0.01 – August 2010

  • started working on the graphics engine
  • Spacola main window added
  • able to load spacola frame into window
  • removed empty space above spacola frame
  • game window not resizable anymore
  • game screen added
  • radar screen added
  • added spacola 2010 title screen with a 3 second delay
  • fixed repaint in paintcomponent loop (recursive repainting)
nach oben