Nova Flux

Nova Flux was the result of a class project where we had to design a 2D game with some specific features, namely, we had to be able to locate an invisible, moving enemy with some projectiles, and if the enemy caught us, our character had to change color for a set time before losing a life. From this, I decided on a space-themed game, where the enemy is a black hole (which somehow can only harm you, the player, but not the environment).

The object of the game was to collect “star crystals” which serve as fuel for your ship. You have a limited amount of time for each level, and each level gets progressively more difficult as you venture deeper into space. See the screenshots below!

This was the first game I made using the “Game State Management” template… SplashScreen, LoadingScreen, GameplayScreen, etc. The font is Pirulen (looking back, it was a little hard to read for anything besides the title screen…). While the game takes place in space, the ship is somehow affected by friction / wind resistance and will slow down if you let up on the thrusters. Black holes will ‘bounce’ off the edge of the screen. In short, the physics doesn’t make sense… but the game is still fun to play! There’s also a high score system implemented (saves to a text file in the local directory). The green arrows in the third screenshot are the “tracers” which can detect the black holes – they turn red as they approach the black hole, alerting you to its presence.

Level descriptions are also loaded from a text file which defines the center of the star clusters and their initial velocities (they move in elliptical paths), as well as the introductory text for that level (serving as a tutorial at first). Power Ups are also defined here, with an initial position, a delay time before becoming visible, the time it should be displayed for, and the type of power up (some improve shields, some increase fuel capacity, others increase thruster power). Finally, black holes are defined by their initial position, their velocity, the distance from center to event horizon and the mass of the black hole. The latter two parameters were not implemented in the game due to time constraints….instead the black hole just destroys you if you come in contact with the event horizon.

An example descriptor for the first level:

$LEVEL_1
#To gather a star crystal, simply move your 
#ship over a star. Your ship's robot will 
#automatically capture the crystal and store it!
STAR:100,100,7,5
STAR:300,300,2,7

It’s all loaded dynamically at startup, so new levels can be added easily, then played by relaunching the game.