This course will explore the algorithms, data structures, and tricks used
to program computer video games. We will be programming in Java and
focussing on arcade-style video games (new and "classic") rather than
text-based adventures or strategy games such as chess.
Here is a list of topics for
the final exam (which is on Thursday, May 9, 10:30AM). I'll
be available in my office on Wed (May 8) from 11:00AM to 2:00PM.
A few students have mentioned that the arrow keys don't
always work in Grab. After a bit of experimentation, it appears
that appletviewer is not handling the left and up arrow keys
correctly. I have no idea why not. They seem to work OK in
Netscape. So, if you've encountered this problem, I would replace
the arrow keys with something else for movement or just use
Netscape to display the client applets rather than appletviewer.
This is a link to a directory of class demos stored by date.
They are not intended to be self-explanatory (although they might
sometimes be), but rather are created as visual aids to the lectures.
I'm making them available here so you can play with them and study
the examples further after class. In other words, I can't imagine how
you would take intelligent notes on some of this stuff, so here are
my "animated notes".
This page contains links to various interesting web sites related
to Computer Game programming.
FIRST EXAM
Here is a list of topics for
the first exam (which was on Friday, Feb 22).
SECOND EXAM (On-line exam)
The second exam will be on the computer, in class, on
Friday, April 5. Here's
a list of topics,
but you can work out your own - anything we've
studied so far this semester is fair game.
If you want a rough idea of what such an exam is like, here's
the exam
from a couple of years ago. We studied different topics that
year, so some of these questions might not seem familiar.
Here's the documentation for the basic classes and interfaces
of Java 3D. NOTE: I changed this link on April 26 to include API's
for the support packages (such as com.sun.j3d.utils...).
There's a tutorial available in PDF (not HTML) at
the Java 3D
Collateral page.
This seems to be a very nice tutorial on Ray-Casting. In fact, this
is just a piece of a large site
about Game Programming run by F. Permadi.
Graphics options
My favorite program for creating simple GIF images on studsys is
Icon Editor.
You can create fancier GIF images by using GIMP
or with Raytracing, but these are each
more complicated to learn.
Simulated Physics
For an explanation of how to simulate falling under gravity and bouncing, see the pages on
Movement and Bouncing and
Gravity. My Triangle Applet
also demonstrates some fancier bouncing calculations.
Drawing Commands
We've discussed how to draw rectangles (drawRect) and lines (drawLine)
in class. There are a variety of draw and fill commands in the
Graphics class of the awt package. The fill version of each command
fills in the shape. The draw version just draws an outline. Beside
the two mentioned above, you'll probably use drawOval (to draw ovals
and circles) the most. You can read about all of these (and others
like drawArc and drawString) at the Java API in the Graphics class
(in the java.awt package).
The Java API (Application Programmer Interface) specifies all of the
methods of all of the classes built-in to Java. The
API Help
might be a good place to start if you find
this too confusing.