CS 4204: Computer Graphics


Announcements & syllabus


Programming assignments




Programming Assignment 4: 3D Game version 2.0


You will update your program from programming assignment 2 to make it a more fully featured and playable game, with a focus on animation.

Due Date

The assignment is due on Wednesday April 30 at 11:59 PM. The standard late policy for programs is in effect.

Required Features

  • The program should be written in C or C++ using openGL/GLUT. You may use any openGL/GLUT functions for this assignment.
  • Use your solution to programming assignment 2 as a starting point.
  • Update this program to make it into a simple, but playable game – one that you would be willing to spend time playing.
  • The basic premise of the game must remain the same – control 3D cannonballs fired from a cannon in order to try to hit targets.
  • Other than the requirement above, you are free to add any features, controls, graphical effects, etc. that you want. HOWEVER, your game must be in good taste – stay away from excessive violence, inappropriate or offensive images/sounds, and foul language. Do not make the game about killing human characters.
  • One focus of your updated features must be animation. Besides the flight of the cannonballs, you need to add at least two interesting animations to the game (e.g., animated targets, animated explosions, etc.).


You will earn points for the additional features you include. More impressive and more complex features will earn more points. Here are some ideas (but many other things are possible – be creative!). The number in parentheses is a rough estimate of the number of points you might earn for implementing these ideas well.

  • Graphics: use texture maps to make the world more realistic or beautiful (15)
  • Graphics: use sophisticated lighting to make the world more realistic or beautiful (15)
  • Animation: animate an explosion when a cannonball hits a target (20)
  • Animation: animate the camera smoothly to the area where the cannonball hit (15)
  • Animation: animate the targets along curved paths (20)
  • Animation: use targets with multiple parts that animate together and separately (25)
  • Interface: allow the user to change the pitch/yaw and position of the cannon (15)
  • Interface: develop complex but usable controls for the game using the mouse and keyboard (15)
  • Interface: provide aesthetically pleasing status and/or score displays (15)
  • Interface: provide a main menu that allows users to start a new game, choose a level, set options, see high scores, see instructions, etc. etc. (20)
  • Gameplay: create various levels that increase in difficulty (20)
  • Gameplay: provide a way for the user to “win” the game by beating the hardest level (15)
  • Gameplay: make it possible for the user to lose if they do not perform well (15)
  • Documentation: provide a nice set of instructions for your game in a separate PDF file or as part of the game itself (20)


Turn in your program via email to the TA. You may either submit a single source file or a ZIP archive of several source/header files. You must also include a plain text README file or a PDF version of game documentation. This documentation should include a list of the extra features you implemented.