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). 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.
Your grade on assignment 3
will be based on 4 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 doesn’t
work. Therefore, we’re 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. Don’t
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 really 3D (and
of course, non-trivial)? This is very important for this game!
You won't get a good grade if your final game is a 2D game with
3D graphics.
1.
Make a game that couldn't 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 doesn’t have to be complex, but it
shouldn’t 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. 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, 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 don’t step
back to see the whole picture until it’s 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 in detail 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.
To do this assignment you
will need to use Microsoft Visual Studio 2005 or 2008, the Zenipex
Library (see below), 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).
C/C++ Compiler
You
need Microsoft Visual Studio 2005 or 2008. Visual C++ 2008 Express is
a free download.
The Zenipex Library or "Zenilib"
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 information and
downloads for the Zenipex Library at http://zenipex.com/zenilib/. Follow the
instructions and get the latest version of the zenilib
and its supporting files. Provided that include and lib paths for DirectX and OpenAL are set up correctly, extracting both the zenilib and its supporting files to the same location will
give you a functional blank slate for your game in the directory zenilib/.
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 assests 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!
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.