EECS 494: Assignment 3

Program a 3D Game

Assigned: October 3, 2011

 

Design Document Due: 3:10pm October 17, 2012 in class

Final Program Due: 11:59pm October 24, 2012 via cTools


For assignment 3, you get to take your first crack at programming a 3D game. We will provide you with a framework 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/OpenGL). You have to design a 3D game, support 3D physics, render the scene and program the inner workings of your game. You have three weeks to create a working 3D game, so design and engineer carefully to make sure you are done on time. We expect a game on the order of a 3D variant of Pong or Breakout (or more!). Originality is important, but more important is that the game really is a 3D game and not just a 3D projection of a 2D game.

 

Your game must run under Windows on the CAEN computers in the CSE computer labs.

Grading Criteria

Your grade on assignment 3 will be based on 5 factors:

 

Is the game fully functional?

While good design is the most important factor, it will be almost impossible for the game to have good gameplay if it does not work. Therefore, we are looking for a working game. It should include scoring (almost always 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. Do not 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 original?

The more original the better. The game should not be a clone of an existing game. Less important than the 3D aspects of the game.

 

Is the game really 3D (and of course, non-trivial)? This is very important for this game!

You will not get a good grade if your final game is a 2D game with 3D graphics.

1.       Make a game that could not have been made in 2D - 3D actually matters.

2.       The 3D camera is dynamic - the perspective changes during the game either automatically or from player actions.

3.       Interactions in the game take advantage of the 3rd dimension

4.       Good clean 3D graphics. It does not have to be complex, but it should not be pixilated or ragged. Simple geometric shapes that look good (look 3D, maybe some lighting effects, etc.) are fine.

5.       Good/realistic interactions and/or collisions

6.       Other ways to make the game more complex are height-mapped terrain, complex player-environment interaction, some objects that behave independent of the player (AI!), ... Thus for this project, a significant proportion of  your grade is how much work you put into to (that we can see when we play it).

 

Is the game well designed and fun to play? Still important, but a bit less important than the 3D aspects.

We talked about designing a game and what make a game fun. 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, and must have different levels of difficulty, either through starting menu selection, multiple levels with increasing difficulty, or dynamic adjustment of difficulty during game play. Additionally, for this assignment, it is important that the game try to use 3D effectively. Sometimes beginning game developers get caught up in the low-level programming and do not step back to see the whole picture until it is too late - when developing your game, remember that the final product must be enjoyable with good gameplay! The longer the game is fun to play, the better. Have friends play test early and often.

 

Is the game well documented?

You must have a good design document that describes what the concept of the game is and how you implemented it. You should not turn in code, but you need to hand in a design document and a manual (so we can play it). 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.

 

In order to make it easier to grade, we would appreciate some mode that makes it possible to play through the game (and see all the great stuff you did) without becoming an expert at the game.

Tools

To do this assignment you will need to use Zenilib, a paint program (such as Adobe Photoshop, Macromedia Fireworks, the Windows Paint program available on CAEN machines, the GIMP, etc.), and a modeling program that can export to .3DS (such as 3ds Max or Blender).

 

Paint Program

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. The Paint program in windows, the shareware program Paint Shop Pro, Macromedia Fireworks, Adobe Photoshop and the GIMP are all appropriate choices.

Modeling Program

You will have an easier time creating art assets for your game if you use a modeling program that can export .3DS files. 3ds Max in Windows and the Free and open source program Blender are both appropriate choices.

 

You must test your program on the Windows machines in the CSE computer labs to make sure that it runs correctly. If you are doing your development elsewhere, you should test your game periodically on the CSE machines to avoid an unpleasant surprise on the day that your game is due!

What you hand in

1.      On October 17, you must hand in a design document for your game.

  1. On October 24, you must submit the final version of your program:

You will submit the following items via cTools. 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 laird.zip.

Your game executable - which must run on a CSE lab computer running Windows.

A manual for your game if the instructions for running the game are not embedded in the game.

A document that points out how your program meets (and possibly exceeds) the grading criteria mentioned above.

We will then begin the grueling task of playing all your games.