Assignment 4: a simple video game

Assignment 4

Putting it all together 
Due: by class time December 6 at this link.


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

Our suggested game is a 3D version of Tempest. If you are not familiar with the game, you can play it online here, view some historic play in video 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 my approval before you start. To obtain that approval, send me an email with a short description of your proposed game (remember to include “562” in the subject line). I will respond with a proposed grading scale.

Basic grading:

The components of this assignment will be graded as follows:
  • 10% Properly turned in assignment
  • 25% Create the field. Each playing field in Tempest is a simple 2D primitive polyline or polygon extruded in depth. You may start with a line. Make sure to divide the field into segments for each 2D edge, and to render in 3D perspective.
  • 25% Create the player’s ship. A simple triangle will do. Make sure it can move back and forth along the top of the field using keyboard or other input.
  • 25% Create an enemy. Any shape or color different from the player will do. The enemy should appear at a random segment, then slowly move up the segment toward the player. When the enemy reaches the top of the segment, it disappears and is replaced by a new randomly located enemy.
  • 15% Enable player shooting. When a key or other input is pressed, bullets issue from the ship and destroy the enemy, if it is in the same segment. When the enemy is destroyed, a new random enemy appears.
  • 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:

Group projects are allowed, but groups of n people will be expected to implement almost n times as much work! Since this will necessarily involve a different game than the simple one described here, you must again obtain approval for any such group project via email.

Since variation here is encouraged, please make sure to include a readme file.

Extra credit grading:

Extra credit opportunities include the following, with others possible with instructor approval:
  • 5% Add different enemies (up to 10%). Add different enemies, with different appearances and behaviors (e.g. shooting back, moving between segments, moving around at the top of segments, leaving spikes behind).
  • 5% Multiple enemies at once.
  • 5% Scoring. Including both keeping track of score, and displaying it.
  • 5% Sound. On certain game events, e.g. game start, ship movement, shooting, enemy arrival, etc.
  • 5% Explosions. When the ship or an enemy is destroyed, there is a cool animation.
  • 5% Animated movement. When the ship or an enemy moves, it changes shape.
  • 10% Levels with multiple lives. When enough enemies are destroyed, a new field with a different shape is created, with a harder task, e.g. more or stronger enemies.
  • 10% Level transitions. Between levels, there is a cool animated transition to the new level.