Program 3 (final): bringing it all together — due December 15

Due by final exam time: Dec 15


In this assignment you will apply what you've learned of basic OpenGL and GLSL to build a simple game.

Our suggested game is a 3D version of Space Invaders. If you are not familiar with the game, you can play it online here, view some historic gameplay here, and find more information about the game at its Wikipedia entry here. There are also many other sources online.

If you would rather implement a different game, you may do so, providing you obtain instructor's approval before you start. To obtain that approval, send an email with a short description of your proposed game.

Small teams are also acceptable, assuming the scope of the project increases to match. Again, obtain approval from your instructor.


The components of this assignment will be graded as follows:

  • 5% Properly turned in assignment.
  • 25% Create the field. This mean both the aliens you shoot at, and the barriers you hide behind. The aliens should move downward in attack, left to right, down, right to left, down... note that aliens do not move to next row until they reach its end, so that if there are fewer aliens, they remain longer on each row. Aliens also move faster as they descend. The objects should be 3D, and the view should be perspective. We suggest making the aliens move down along an inclined plane, like a hillside. No need to animate the aliens at this point, as in the game.
  • 25% Create the player's cannon. A couple simple 3D boxes will do, though more interesting is better! Make sure the cannon can move back and forth between the display edges using keyboard or other input. You need to create only one life at this point.
  • 15% Enable alien shooting. Something quite simple is fine, but make it look different from the cannon's shots. This will require simple collision detection with the cannon and barriers. Testing to see if the shot is in a cannon or barrier bounding box is good enough.
  • 15% Enable cannon shooting. Something quite simple is fine, but make it look different from the aliens' shots. This will require simple collision detection with the aliens. Testing to see if the shot is in an alien bounding box is good enough.
  • 15% End the game when all aliens are gone, or they reach ground. No need for multiple levels at this point.
  • Participation credit: You can receive participation credit (outside of this assignment) for posting your resulting imagery and video, good or bad, on the class forum!

General notes:

Since variation here is encouraged, please make sure to include a readme file. You will demo your results in class during the final period as part of turn in. We will have a small voluntary contest, in which you demo your game in front of class. The top three will receive retro (i.e. old) games as prizes.


Extra credit opportunities include the following, with others possible with instructor approval:

  • 5% Monsters explode. When shot.
  • 5% Cannon explodes. When shot or aliens reach ground.
  • 5% Animate aliens. When aliens change position, they move their limbs.
  • 10% Barriers deteriorate. As they are shot multiple times.
  • 5% First person Invaders. As Pac Man moves, follow his movement using camera.
  • 5% Multiple lives. More than one life for your cannon. Show the number of remaining lives.
  • 5% Event Sound. On certain game events, e.g. game start, alien movement, cannon shooting, etc.
  • 5% UFOs move across the top periodically and shoot. Cannons can shoot them.
  • 5% Multiple levels. When all aliens are shot, a different field is presented to the player. Show the number of the current level.
  • 5% Level transitions. Between levels, there is a cool animated transition to the new level.
  • 5% Enable Scoring. You can choose any scoring scale you want. Display the score.
  • 5% Use GLSL for rendernig and shading.