Programming assignment #3 - 3D Video Game

CS 248 - Introduction to Computer Graphics
Autumn Quarter, 2000
Marc Levoy
Handout #8


Game proposals due Tuesday, November 14 by 5:00pm
First demos on Monday, November 20
Final demos on Wednesday, December 6
Writeups due on Friday, December 8 by 5:00pm


Your assignment is to write a 3D video game using OpenGL. You are free to design and implement any sort of game you like, as long as it incorporates the required functionality described below. For purposes of this project, we consider a 3D video game to be an interactive 3D computer graphics application that has a challenging goal, is fun to play, and incorporates some concept of scoring or winning and losing. It is not required that your game idea be original, but originality will be rewarded with extra credit. If you have any questions about whether your idea meets the criteria for a 3D video game, please ask the course professor or a TA. Your game proposal (due November 14), and our feedback to you afterwards, should help you in developing your game concept.

You are permitted (and encouraged) to form teams of 2-3 people and partition the work among the team members. The work expected from each team will be proportional to the size of the team. You can use the class newsgroup su.class.cs248 to find prospective team members. Each team should submit a single game proposal, jointly authored by all team members. You may change the composition of your team at any time prior to November 29 (one week before final demos). However, changes after the first demos (on November 21) are strongly discouraged.

Required functionality

Within the overall framework of your video game, you are required to include the following functionality:

In addition to these basic requirements, your game should incorporate some of the more advanced computer graphics techniques listed below, depending on the size of your project team. In particular, you are required to implement at least 2*N of these additional techniques, where N is the number of people on your team (i.e. groups of three people need to implement six techniques, individuals working alone are required to implement only two, etc.). Of course, you are encouraged to implement as many of these techniques as you can, depending on the requirements of your particular game engine, as well as using any other ideas you read about or invent on your own. Extra effort will be rewarded with extra credit.

A few hints

Video game submission requirements

The game proposal. Your first milestone is a proposal, due by 5:00pm on Tuesday, November 14. Your proposal can be brief - 1 page is plenty. Be sure to list all team members. The proposal should clearly state the premise of your game, describe the 3D world you plan to build for it, outline the gameplay, and enumerate the 2*N techniques you plan to implement. If you envision facing any special technical challenges (like predicting collisions between a basketball and a hoop), list them. If you envision implementing any special bells and whistles (like the ability to play against 5,000 networked opponents simultaneously), list those too.

Submit your proposal by emailing it to [email protected]. Submitting a proposal is required, and late submissions will be penalized, but your proposal will not be graded. Neither will you be held to either the list of advanced graphics techniques you enumerate or to the composition of your team. The purpose of this proposal is to motivate you to begin working on the project, and to give us a chance to guide you. We will read and respond (by email) to every proposal. Hopefully, most of these responses will be of the form, "Cool game idea! Full speed ahead!". However, if we see you headed towards the shoals, we'll let you know.

First demos. On Monday, November 20 you will demonstrate your partially complete video game to a member of the CS248 course staff. To show reasonable progress, your 3D world should be largely in place, although perhaps lacking in detail or performance, your "gameplay" should be basically working, and at least some of the required graphics functionality (3D viewing, user input, lighting, and texture mapping) should be implemented. The 2*N "advanced" techniques need not be in place, except that depending on your game, you might need to have already implemented some of them in order to demonstrate your gameplay. At the demo, we will give you feedback on your game, and we will discuss with you your plans for finishing it.

Signups for these demos will be handled electronically, as in project #1. You can demo on any platform you like, even a laptop. However, all demos must be given in one of the two Sweet Hall basement graphics labs. There is no need to freeze your code before the demos. All team members must be present at the demo. Late demos will be permitted, but will be penalized in the usual way. No writeup or submission of source code or other files is required following these demos. In addition to giving you verbal feedback at the demo, we will also grade you. Since you are not submitting code, these grades will based only on what we see during the demo. However, these grades will be simple: "check", "check-minus", "check-plus", depending on the quality of your progress.

Final demos and writeups. Your complete video game will be demonstrated on Wednesday, December 6. Signups will be handled electronically, as usual. No code freezing is required. All team members must be present at the demo. During the demo, make sure you tell us what features you have implemented. Functionality you don't show us or that doesn't work will not be given credit.

Final writeups and code and content submission is due on Friday, December 8 at 5:00pm. To submit your video game files, simply change the current directory to your project #3 directory and run the submit script, as you did for the first two assignments. Only one submission per team is necessary. Your submission should include your entire game - source, executable, makefiles, models, textures, etc. It should also include a README file which lists your team members, describes how to build and run your video game, and explains the 2*N (or more!) advanced computer graphics techniques you implemented. Also, your README file should include references to any external sources you referred to for inspiration, and it should indicate how your 3D models and other game content were obtained. Remember - no late demonstrations or writeup submissions will be accepted.

Separately from your joint team submission, and privately, each team member should send an email message to [email protected] by 5:00pm on December 8 specifying who worked on which features of your game, and what percentage of the total work each team member did.

The video game competition. After the demos are finished, probably around 4:00pm (on December 6), a jury of computer graphics experts from industry and academia will join the CS 248 teaching staff to to evaluate your programs as part of a video game competition. Any team may participate in the competition; however, participation is not required. There will be one grand prize - an all-expenses-paid trip to Siggraph 2001 in Los Angeles next summer, one second-place prize - dinner for two at Il Fornaio in Palo Alto and a choice of any PC video game offered by Electronic Arts, and some number of runner-up prizes - probably PC video games offered by Electronic Arts. If the grand prize is won by a team, it must be split among the team members. All other prizes will be duplicated as necessary to cover the team. The competition will be accompanied by an amazing party.

Good luck, and have fun!


[email protected]
Copyright © 2000 Marc Levoy
Last update: November 7, 2000 04:30:57 AM