CS248 Project 3

CS 248 - Introduction to Computer Graphics
Autumn Quarter, 2007
Kurt Akeley


Proposals due Monday, November 5 by 5:00pm
First demos on Wednesday, November 14
Final demos on Wednesday, December 5
Writeups due on Friday, December 7 by 5:00pm


Your assignment is to write an interactive 3D program using OpenGL. You are free to design and implement any sort of program you like, as long as it incorporates the required functionality described below. The most common type of program that will meet these requirements is a video game, but you are not constrained to writing a game. If you write a game, it is not required that your game idea be original, but originality may be rewarded with extra credit. It is also not required that the game be intrinsically three-dimensional; you can take a 2D game and render its components three-dimensionally, converting game pieces to solid models, lighting them, etc. (Of course, games that are intrinsically three-dimensional probably have a greater chance of winning a spot in the competition.) If you have any questions about whether your idea meets the criteria, please ask the course professor or a TA. Your proposal (due November 6), and our feedback to you afterwards, should help you in developing your 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 28 (one week before final demos). However, changes after the first demos (on November 14) are strongly discouraged.

You are not required to work on any particular platform. You are welcome to use the myth machines in Gates B08, but you are also welcome to use a laptop (any operating system), or even the Cray supercomputer in your dorm room. If you choose to use a mobile platform, such as a cell phone, then we will not expect the same performance or model complexity in your game that one can achieve on a faster platform or a larger screen. However, the fundamental requirements for the project are the same.

Required functionality

Within the overall framework of your program, 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

Submission requirements

The proposal. Your first milestone is a proposal, due by 5:00pm on Monday, November 6. 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 program, describe the 3D world you plan to build for it, outline the gameplay and interaction, and enumerate the 2*N advanced 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'd like "advanced feature" credit for something you'll be spending a lot of time on, but which is not listed above (like the ability to play against 5,000 networked opponents simultaneously), list those too. If you envision needing any special tools to achieve your goals, like a laser scanner or a motion capture system, tell us how you'll get access to these tools.

Finally, you must include at least one image in your proposal - a sample screenshot of the program in action. We don't care how you produce this image: a scanned pencil sketch will do, or something you whip up in Photoshop, Illustrator, KidPix, or your favorite computer art program. Carefully label the principal components in your image. Sample labels might be: "waterfall [here] will use real dynamics", or "[these] missiles will emit particle system smoke". The purpose of this requirement is to help us understand your proposal, and to help you think about how hard or easy it might be to implement what you propose.

Only one member of a group is required to submit for the team. The submitter should use the following form to submit the proposal. Be sure to clearly list the name and sunet ids of all team members.

There used to be a form here to submit your proposals.

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 idea! Full speed ahead!". However, if we see you headed towards the shoals, we'll let you know.

First demos. On Wednesday, November 14 you will demonstrate your partially complete project 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 program, you might need to have already implemented some of them in order to demonstrate your interaction. At the demo, we will give you feedback on your program, and we will discuss with you your plans for finishing it.

Signup for your demo here. You can demo on any platform you like, even a laptop or cell phone as noted earlier. However, all demos must be given in Gates B08. 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: minus, check-minus, check, check-plus, plus, depending on the quality of your progress.

Final demos and writeups. Your complete project will be demonstrated on Wednesday, December 5. Signups for your demo here. 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 7 at 5:00pm. To submit your project files, use the form below. If your project is too large to submit this way, discuss with a TA how best to submit it. Only one submission per team is necessary. Your submission should include your entire program - 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 program, 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 content were obtained. Remember - no late demonstrations or writeup submissions will be accepted.

Writeup submissions are now closed

Separately from your joint team submission, and privately, each team member should prepare an individual writeup by 5:00pm on December 8 specifying who worked on which features of your project, and what percentage of the total work each team member did. Submit this using the form below. These submissions will be held in the strictest confidence by the course staff.

Name
Email Address
Comments
Submission txt file

The competition. After the demos are finished, probably around 4:00pm (on December 5), a jury of computer graphics experts from industry and academia will join the CS 248 teaching staff to evaluate your programs as part of a competition. Any team may enter the competition; however, participation is not required. The first step will be the selection of roughly 8 finalists. This selection will be performed by the teaching staff immediately following the completion of demos. The second step is the selection of prizewinners, which will be performed by the jury. The composition of the jury will be announced shortly.

Competition prizes are yet to be decided, but they will be significant.

As a prerequisite to entering the competition, each team must create a web page for their project. The page should have a title, a paragraph describing the project, and links to one or more screen-shots. The links to the full-size screen shots should be by clicking on downsized versions of these images, each 128 pixels tall. After the competition, entrants will be asked to provide compressed "tar balls" or zip files for distribution of their project, along with an indication of the target platform. The distribution should include an executable for at least one platform. Any team that does not wish to enter the competition but would like their program distributed is also encouraged to create such a web page. Teams who do not enter the competition do not need to create one.

Good luck, and have fun!


cs248-aut0708-staff@lists.stanford.edu
Copyright © 2006 Marc Levoy
Modified for 2007 by Andrew Adams
Last update: December 8, 2006 09:34:40 AM