Late policy: The homework will be graded out of 100 points. We will accept late submissions up to Monday, Oct. 6 at 23:59:59; however, for every day that is it is overdue, we will subtract 20 points from the total. We understand thst sometimes multiple assignments hit at once, or other life events intervene, and hence you have to make some tough choices. We'd rather let you turn something in late, with some points off, than have a "no late assignments accepted at all" policy, since the former encourages you to still do the assignment and learn something from it, while the latter just grinds down your soul. The somewhat aggressive late penalty is not intended to be harsh - it's intended to encourage you to get things in relatively on time (or just punt if you have to and not leave it hanging over you all semester) so that you can move on to assignments for your other classes.
Download the content and source files for Prof. Lee's 2D game that he showed in lecture. You can find the gzipped tar files for these on the main webpage. Start a new XNA project in Visual Studio, load in the source code and content to the appropriate places, and make sure you can compile and run the game. (This part is intended to make sure you are comfortable with loading files into an XNA game via the content pipeline.) Do this early to make sure you have it out of the way.
Once you are sure you have it running OK, make the following two changes:
1) Add some minor innovation to the gameplay that involves an additional possibility for user input, such as a hyperspace command (which teleports the player to a random place on the screen), a smart bomb command (which destroys all enemies on the screen, but you have a limited number of smart bombs), a shield that the player can toggle on and off (which makes the player invulnerable, but can only be used for a limited time before it needs recharged), or a time warping feature that slows down the enemies (again, you would want to limit this somehow so the player couldn't use it all the time). Feel free to be creative. Do something interesting but relatively simple to implement. (This part is intended to make you play with the game input code.)
2) Some modern games employ 2D gameplay conventions but render the scene elements as 3D assets. Examples include Super Smash Brothers Brawl, Street Figher IV, and the Spacewar starter kit that comes with XNA. Replace the pictures of Prof. Lee, Prof. Lee's dog, and the missile with 3D objects that you render in 3D using BasicEffect. Note that we will keep the game mechanics (motion of the enemies and the ship, etc.) entirely 2D - gameplay is still taking place on a plane. Essentially you will set your camera to look down onto this plane. To make things interesting, make the enemies spin in 3D. However you want to set up the lighting is up to you. In terms of what 3D objects to use, you may want to use some of the assets in the Spacewar starter kit or one of the other starter kits, some objects from some other XNA games you find on the web, and/or .x or .fbx files from Turbo Squid, like the fish Prof. Lanterman showed in lecture. Note you will very likely need to scale your models to get them to be a reasonable size in your game. As far as collision detection goes, try to come up with something that plays reasonably, but we will not be picky about this. We recommend using BoundingSphere structures. Do not try to implement any complex collision detection routines.
Philosophy: Have fun!
Deliverables: Package everything needed to compile and run your upgraded game and upload it to T-square as a zip file (basically zip up your whole folder, including whatever executables you create.) Include "HW3" and as much as possible of your full name in the filename, e.g., HW3_Aaron_Lanterman.zip. (The upload procedure should be reasonably self explanatory once you log in to T-square.) Be sure to finish sufficiently in advance of the deadline that you will be able to work around any troubles T-square gives you to successfully submit before the deadline. If you have trouble getting T-square to work, please e-mail your compressed file to lanterma@ece.gatech.edu, with "MPG HW #3" and your full name in the subject line; please only use this e-mail submission as a last resort if T-square isn't working.
The midnight due date is intended to discourage people from pulling all-nighters, which are not healthy.
Ground rules: You are welcome to discuss high-level implementation issues with your fellow students - in particular, feel free to point one another to appropriate examples online - but you should avoid actually looking at one another student's code as whole, and under no circumstances should you be copying any portion of another student's code. However, asking another student to focus on a few lines of your code discuss why a you running into trouble is reasonable. Basically, these "ground rules" are intended to prevent a student from "freeloading" off another student, even accidentally, since they won't get the full yummy nutritional educational goodness out of the assignment if they do.