For assignment 2 you get to take your first crack at actually programming a game. We will provide you with code that handles most of the low-level messy stuff (such as selecting the video mode, setting up a back buffer and page flipping, interacting with DirectX). You have to design a 2D arcade game, draw the graphics and program the inner workings of your game. You have three weeks to create a working arcade game, so design and engineer carefully to make sure you are done on time. We expect a game on the order of Centipede (or more!). The more original the game is the better. You should not do a copy/clone of an existing game. Be sure to attend the classes September 13 & 15, these sessions will help you get to know the DXFramework and the requirements of the assignment.
Your program must run under Windows XP.
Your grade on assignment 2 will be based on 4 factors:
Is the game fully functional?
The most important thing that we're looking for is a working game. It should include scoring (if appropriate), multiple lives for the player, and the ability to play multiple games. If the game is almost but not quite finished or still contains bugs your grade will suffer much more than if it is a working game with fewer features. When you design your game make sure you can finish the project within the three-week time frame. Create a schedule and stick to it. The best plan is not to try to write the whole thing before getting anything to run. Do incremental development -- get something running and then add more features.
Is the game nontrivial?
You won't get a good grade if your final game is just pong or breakout with different colors and a bigger paddle. Your game should be something you are proud to hand in. More specifically, we will be looking at how many objects can be in the game at once, how they interact - how good/realistic are any physics and/or collision detection, sound, whether it can be played by two people (not required, but sort of extra credit that makes up for other weaknesses), originality, artwork, ... Other ways to make the game more complex are having terrain, a playing area larger than the screen with scrolling, some objects that behave independent of the player (AI!), ....
Is the game well designed?
We talked about designing a game and what makes a game fun. Make sure you demonstrate to us that you were paying attention in class and learned something. This also includes things like how fun it is to play, whether it looks good (has good graphics), has good "feel" in controlling the objects, ... The game should not be too easy or too hard (maybe it can have different levels of difficulty!).
Is the game well documented?
You must have a good design document that describes in detail what the concept of the game is and how you implemented it. You must turn in your code and a design document. If necessary, you may turn in a manual so we can play your game. Better than a manual is having all of the instructions embedded in the game. Finally, turn in a half page description of what you think makes your program good according to the grading criteria listed above.
To do this assignment you will need to use Microsoft Visual Studio .NET 2005, the DXFramework (see below), and a paint program (such as Adobe Photoshop, the GIMP, or other paint program available on CAEN machines, etc.).
You need Microsoft Visual Studio .NET 2005.
This code has been written specifically for this assignment. It handles all of the low level stuff that is such a pain in game programming so you can concentrate more on creating the game. You can find the dxframework package at http://dxframework.org/. Follow the download link and grab the newest version's source zip file, which will contain a project workspace where you will replace existing code with your game. Notes on the DXFramework:
You will have to create graphics for each of your game objects. You can use any paint program that creates BMP and/or PNG files. Adobe Photoshop, the GIMP, etc. are all appropriate choices.
You should test out your program on the machines in the CAEN labs in the CSE building to make sure they run correctly.
You will submit the following items on a CDROM. A single zip file would be best. Please name the .zip file with your last name. If I was handing in the assignment, it would be jamin.zip.
1. Your game executable -- runnable on PC in the CAEN labs in the CSE building.
2. A design document for you game.
3. A folder containing the source code of you game and the Visual Studio .NET project file.
4. A manual for your game if the instructions for running the game are not embedded in the game.
5. A document that points out how your program meets the grading criteria mentioned above.
I will then begin the grueling task of playing all your games.