This week we are going to add some serious cool factor to our game, and also fill out the missing branches of our finite state machine. We’re getting closer to making a complete game!
ITEM 1: Customize Your Aliens (3 types) – [REQUIRED]
Create three unique versions of the alien attackers, based upon the block animation method that we cover in this week’s lesson. Each alien type should be comprised of blocks, should have at least two “frames” or states to cycle between. Each type should look different enough so that the player can distinguish one from another. Use all three types in your submission for this week.
ITEM 2: Convert to the Sound Manager – [REQUIRED]
Use the singleton-based Sound Manager from this week’s lesson to make your games sounds, where sensible. (Bullets and bombs can emit their own sounds, as we did in the exercise). Convert the sounds you have created to be under the control of the manager, including the starting and stopping of ambient noise or background music, and stopping of all other sounds when our player explodes.
ITEM 3: Keep Score – [REQUIRED]
Each alien type should have a “score” value associated with it. When the player destroys an alien, that score is added to their total. A player’s score is preserved throughout a single playthrough, meaning that their score will continue to accumulate across rounds, and that dying will not reduce or reset their score so long as they have an additional life left. Upon the loss of all lives, the player will be presented with their final score. I recommend using the Game Manager to track your score, and allowing the enemies to call a function on the game manager to add to that score when they are hit.
ITEM 4: Implement Basic UI – [REQUIRED]
Your game should have three key pieces of information displayed for the player – the number of lives left, the current score, and the multipurpose message overlay to inform the player of the current state of the game (such as “Get Ready!!!” or “Game Over”). These should update accordingly (scoring should always be current and accurate). Use a font for these elements that is NOT Arial or Helvetica. Reference Figure 1 below to see how this should be implemented.
ITEM 5: Complete the Missing Parts – [REQUIRED]
Some aspects of our game flow are not yet complete, such as the enemy touching the ground, or the player object respawning. Design and implement your solutions to these. See Figure 2 below for details on the missing components of the game flow.
a) Player Object Destruction and Respawn
b) Detect and handle “all enemies destroyed” (recommend testing after each enemy kill)
c) Detect and handle “enemies reach ground” scenario
d) Game Over (win and lose states)
e) Bombs destroy when contacting “ground”
ITEM 6: Power-Up — Extra Life – [OPTIONAL]
Have the occasional 1-up object appear and let the player gather it. Method of interaction is up to you – you can shoot it, or catch it as it falls, or have it fall an remain on the ground for a moment. When the player collects it, their lives remaining should increase by 1. Play a happy sound so that the user knows this has happened.
ITEM 7: Advanced Shields – [OPTIONAL]
Make your shields out of individual smaller blocks that individually destroy when they are touched by a Bullet or Bomb. Use this to create the classic “shoot through the shield” strategy of Space Invaders. Destroying a shield block also should destroy the bullet or bomb.
ITEM 8: Include the UFO – [OPTIONAL]
The arcade classic included a special “high value” target in the form of a UFO / flying saucer that would glide across the top of the screen, above the enemy attackers. Hitting and destroying this object would award the player with a large number of bonus points. The UFO should make a special “UFO” noise as it glides across the screen so as to alert the player to it’s presence.
Grading for this project will be done as follows:
All Required Items (Steps 1-5): B
All Required Items (and everything runs perfectly): B+
All Required + 1 Optional: A-
All Required + 2 Optional: A
All Required + All Optional: A+
The project is due by Friday (9/30) at 1:00pm. Create a compressed (zipped) folder of your project directory, and submit that in a folder labeled “Assignment 4” that you will create inside your individual assignment folder.