CS 460: Interactive Graphics and Games
Project #3

Synopsis: Game prototype and feature addition.

Due: This assignment is due April 27By Monday April 18 (sooner if possible) you should mail me a description of what project you plan to do and how it will fit into your game.  This is important! (If you feel that you need to make more progress on the prototype before deciding on your specific feature, let me know that).

Details: On April 25, you will give a demo of your game prototype to the class. This should encourage your group to put in some collaborative time and make your engine adapt to the needs of your particular game. Please inform me in advance what computer platform you need. You can bring a machine, we can go to the CS lab or the graphics lab, etc. You should have the basic game environment created, and significant bits of the user interface and game to demonstrate. It will obviously not be as rich as the final game, which you have two more weeks to create. As part of putting the demo together, you should also each add a new feature to your game engine. You may want to choose features that are not too complex for this assignment so you have enough time for the prototype demo itself (which should not fail to show off the features from this and the previous assignment).

For your convenience, here is the list of suggested features to consider. The list is not exhaustive, so just ask me if you want to do a specific feature I have not considered.

  1. Lighting effects: add some interesting lighting effects to your system:
  2. Texture effects: add texture-related effects to your system:
  3. Shaders: use Cg or OpenGL Shader Language to implement interesting surface shaders in your engine
  4. Performance: Speed up your engine using acceleration techniques or just careful tuning.
  5. Other stuff: a catch-all final assignment for some of the many other things that go into a good game.

Remember that by the end of the semester (one more assignment after this):

  1. Every group must implement a shadow algorithm
  2. Every group must implement at least two acceleration or tuning projects from the "Performance" category.
  3. Every group must employ multitexturing at some point
  4. Two group members may not do the same project (though some projects allow for sufficient variation that they would not really be the same project. Just use common sense)

Your project must be fully integrated with the group's game engine.  If your project doesn't work with the rest of the group's work, it will be considered late until it does. The group only turns in one codebase! 

Also, don't forget about the optional texts for the course  -- they are all on reserve if you have not purchased them.

Policy on code reuse: Same policy: In general you are welcome to use code that you find elsewhere.  For example, you are welcome to use the lib3ds library mentioned above.  However, you will not get credit for what you didn't write.  Therefore, it is critically important that you describe in detail what code you wrote yourself and what code you imported or adapted from elsewhere.  Furthermore, if you find a particularly helpful library, tutorial, loader, etc., you should post it on the forum.  Obviously if you reuse a significant amount of code, that raises the bar for the assignment: you will be expected to do something beyond the basics mentioned above.  If you have any questions about code reuse or attribution, please ask me.

Turning in the assignment: Again, the group should turn in a single working program that demonstrates the various features added by individuals.  Put all your code and models in a folder, along with a detailed README.txt file that describes what your group did, who in the group did what, and any code or features added that aren't specifically part of an individual assignment (I expect that during every project, there will be some effort on the general game engine that is not reflected in an individual assignment.  You will get credit for these efforts as a group, and yes, general work on the game outside of the individual assignments will benefit the group's grade as a whole.  Each student in the group should include a separate document, e.g. README.cohen.txt, that describes in detail what you did, how you did it, what code you used from elsewhere, and how to demo your contribution in the game engine.  Zip up the folder and e-mail the .zip file (or a link) to me.  Be sure to include workspace and project files, along with any libraries/include files/etc, so that I can compile your code.  I will read (and grade you on) your source code, so follow good programming practices.

Grading: You will be graded on the difficulty as well as the success rate of your projects.  Not every project has to be a killer, but I expect every student to take on at least one substantially difficult project, and no more than one comparatively easy project.  Part of the reason you need to mail me a description of what you plan to do is to so that I can give feedback, if necessary, on how difficult I judge a project to be.