CS 446: Real-Time Rendering
Synopsis: Again, you will pick a component to add to your game engine from one of the categories below. Since the result of this project is the group's final game, the entire group will get the same grade as in project 1. This is to encourage you to work together on bringing your individual contributions and the entire game into a coherent, playable whole. The group will present their game to the class and other invited spectators during our final exam slot.
Due: This assignment is due 9 AM May 5 (our final exam slot), when you will demonstrate your game to the class. By Tue Apr 27 (sooner if possible) you should mail me and Ben a description of what project you plan to do and how it will fit into your game. This is important!
Details: The final assignment will follow the same pattern as the last two, with a couple of caveats. Each student must pick one project from the following categories, with the constraint that no student can pick more than one project from any category (but note that some projects fit multiple categories), and with the additional constraints noted below.
There are a few additional constraints. Across the remaining four assignments:
As before, I explicitly do not want four individual assignments that don't work together; your project must be fully integrated with the group's game engine. This is especially important for this assignment! It is thus vital that you work together with your teammates to pull your contributions and your game together. The group will turn in only a single final project, and will all get the same grade with no exceptions and no negotiating. If you aren't able to complete your contribution, or to work with your teammates to integrate your contribution, the entire group's grade will suffer.
Resources: See the previous projects. Also, I have a spare copy of the new book GPU Gems which I am going to place in the lab. You may find this a very useful book for ideas and example code! Check it out.
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, and you are strongly encouraged to use the in-house software tools that Ben has posted. 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: The group should bring to our final exam two copies of a CD containing the game code, along with a compiled executable and all the data files, .DLL files, etc. necessary to run the game. The idea is that I put your CD into my computer and it just works. If you absolutely must have some library etc. installed on my computer, let me know ahead of time. Each group will give a 20 minute presentation of their game, describing the various features members have added and demonstrating them in the game. As before, include 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 this project in particular, 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.luebke.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.
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. To encourage you to work together as a group, the entire group will get the same grade for the final project.