CS 446: Real-Time Rendering
Synopsis: Write a simple but complete multiplayer game using the Game Gardens Java toolkit.
Due: Feb 9, 2006. Remember that assignments are due at the beginning of class, but you get a free extension till midnight if you show up to class.
Details: The goal of this assignment is to practice implementing something complete yet interesting and fun. Probably the easiest way to make a game interesting is to play against another person—no artificial intelligence needed—and the Game Gardens open source toolkit is perhaps the easiest way to make a multiplayer game. A secondary goal of this assignment is to practice the initiative and time management necessary to learn a completely new tool, from source code and occasionally patchy documentation, well enough to build a complete system—in a week. The emphasis of this assignment is on completeness and playability. I have intentionally stripped out any fancy graphics from the assignment to let you focus on the game concept and on building a complete and working game.
This is an individual assignment.
Resources: The T.A. has put together a short page of advice for getting started with Game Gardens at http://www.cs.virginia.edu/~rs5ea. This page includes links to a few tutorials and sample games set up by the Game Gardens folks themselves.
You should make heavy use of the course forum to ask questions and share advice about Game Gardens, programming in Java, or working on the lab computers. Be aware that the Game Gardens folks run a forum which will probably be the best place to post more advanced questions. Don't hesitate to ask questions (you don't have the time to be shy about getting help).
Lab: We are using Olsson 002a this semester. Most of you will need to get a key from Ginny Hilton at the CS front desk. There are only 13 machines and over 30 students in this class..so be courteous and don't assume you will always get a computer exactly when you were planning to work. The machines in 002a have great processors, lots of memory, and low-end (ATI X600) programmable graphics cards; I will be installing a few NVIDIA GeForce 7-class cards soon. If you would rather work on a personal machine, that's fine too -- in fact it will take the pressure off the lab machines. Let me know any issues you encounter -- this is a new use of this lab and there will undoubtedly be software, hardware, and availability issues to work out.
As of this writing, the Java tool ANT (required by the Game Gardens stuff) has not yet been installed on the 002a machines, so you will need to download it yourself and install it to your home directory. You don't have access to the Windows environment variables on these machines so you will need to type the full path (e.g. J:\Ant\apache-ant-1.6.5\bin\ant) every time. I will make sure that Ant is installed "for real" as soon as possible.
Honor code: Regarding the application of the honor code to this course, remember the basic principles:
In general you are encouraged to discuss game concepts with others or on the course forum. You are encouraged to ask for and dispense help on the course forum, but not to provide whole swaths of code (either in your questions or answers). Sharing short code snippets (e.g., "Texture blending seems not to be doing anything...the parts of my texture that are supposed to be transparent are black instead?" "Make sure blending is enabled; you make the following six GL calls to enable blending and set blending modes.") and pseudocode are fine. Providing or letting somebody else see major chunks of your code is not fine. If you have questions that require somebody to sit down and look over your code in detail, ask the TA.
Obviously, these guidelines are for the individual assignment and will be modified somewhat for members of your own group once groups are formed. If you have questions about how the honor code applies, ask the instructor.
Turning in the assignment: Put all your code and anything else (image files, etc) in a folder, along with a detailed README.txt file that describes how to play your game. Zip up the folder and e-mail the .zip file (not just a link) to me and the TA. Be sure to include everything we need to compile your code; aside from Java, Ant, and the Game Gardens stuff the folder should be completely self-contained.
Advice: If learning a new toolkit and writing a complete multiplayer game sounds like a lot for a ten-day assignment, that's because it is a lot. An awful lot. Start early, work hard, keep backups. Get something up and running as soon as possible, even if it's just tic-tac-toe, and improve it incrementally so that you always have something ready to turn in.