Tue-Wed Apr 23-24
Chapters 12-13 from Pechtel posted.

Mon-Thu Apr 15-18
Chapter 11 from Pechtel posted.

Sat Apr 13
Chapter 10 from Pechtel posted.

Thu Apr 11
Chapter 9 from Pechtel posted.

Chapter 8 from Pechtel posted.

Three important presentations from this year's JavaOne conference added to the web site:

Sun first participated in the GDC last year (2001).

Here's a link provided by Andy and Wes from their visit to GDC this year (2002):

This is from a white paper entitled "Java technology for Creating Games Content".

Mon Apr 8
Chapter 7 from Petchel posted.

Sat Apr 6
Chapters 5 and 6 from Petchel posted.

Thu Apr 4
Lecture notes for today survey chapters 1-3, and 4 from Petchel, posted.

Thu Mar 28
Lecture notes for today, first two chapters of an exhaustive review have been posted.

Thu Mar 21
Lecture notes for today posted.

Thu Mar 7
/l/www/classes/a348/t540/lectures/five

Today we will install a binary version of Tomcat 4.0 and look at servlets. We will also develop another web chat, that distributes its client-side automatically and starts its server-side component on-demand (it's a servlet). Networking will be done in a special way, using HTTP (as opposed to RMI, or SOAP/XML, that is, RPC)

Here's code from cmApplet.java for the game that was posted last time.

protected void keyboardEvent (int k, boolean pressed) {
  switch(k) {
    case 'h': key[cmEventSteeringCommand.TURN_LEFT]=pressed;break;			
      case 'k': key[cmEventSteeringCommand.TURN_RIGHT]=pressed;break;			
      case 't': key[cmEventSteeringCommand.INCREASE_VELOCITY]=pressed;break;			
      case 'g': key[cmEventSteeringCommand.BRAKE]=pressed;break;			
      case 'y': key[cmEventSteeringCommand.CLIMB]=pressed;break;
      case 'i': key[cmEventSteeringCommand.DECENT]=pressed;break;
      case 'u': key[cmEventSteeringCommand.PITCH_DOWN]=pressed;break;
      case 'j': key[cmEventSteeringCommand.PITCH_UP]=pressed;break;
      case 'a': key[cmEventWeaponCommand.FIRE]=pressed;break;			
      case '1': key[cmEventWeaponCommand.MINICANNON]=pressed;break;			
      case '2': key[cmEventWeaponCommand.MISSILE]=pressed;break;			
      case '3': key[cmEventWeaponCommand.BOMB]=pressed;break;			
  }
}

This tells you how you can play the game. But I am sure you have figured this out already.

Thu Feb 28
Today I will have a handout. On-line notes will be posted here.

Mon Feb 25
Two new books that will end up in the syllabus in March.

Dear friends, this class will eventually exceed your expectations!

Thu Feb 21
The applet for today.

(All classes can be found in /l/www/classes/a348/t540/lectures/ten/bbx)

Lecture notes for today are here.

Here's a game like the one Jason wants to implement. Here are a number of books that I purchased recently, and that I plan to summarize during the next month for the class:

This in addition to the books we are already using:

(which mostly provide the code and case studies,) and

(which give a more theoretical, broad overview of the field.)

For now we need to keep working at establishing the basics. Today we complete the hockey game and continue to learn to use App3DCore. Here's the applet we implemented last time, as discussed it has some flaws, but that's because we are working with a gimped version of the package, to keep things small. This new example uses the full package and does not have any of the flaws of the simple program studied last time.

Thu Feb 14
Here are the lecture notes for today.

I also want us to look at this:

  1. a set of classes as a .jar
  2. one file for the world, box, and overall play
  3. one file for the double-buffering
  4. here's the applet

Thu Feb 07
Here are the lecture notes for today.

Thu Jan 31
Here are the lecture notes for today.

Wed Jan 30
Tomorrow in class I would like to discuss:

  1. the Java 3D API
  2. RMI vs. Sockets
  3. project proposal received so far

Tue Jan 22
Don't forget the list of servers is here.

For all things Apache check A348 web pages.

Mon Jan 21
Format of web site lecture notes changes (see BitmapLoops). The goal for this week is to implement as much as we can from the Alien Landing game. When we are done we should compare this to Iceblox (here's the source and the artwork).

Thu Jan 17
Here are the notes for today. We cover Java I/O and simple networking and install, and play with, a networked version of Othello. We also briefly present a chat application, on which the networked version of Othello is based.

Wed Jan 16
E-mail distribution list created.

Thu Jan 10
Today in class I would like to:

  1. open up burrowww accounts
  2. install a web server (Apache 1.3.22)
  3. overview of the class (some sort of syllabus)

We'll start with a presentation of the class/syllabus.

Here's a tentative plan. This is from a letter to myself. I have a split personality.

I hope the new year finds you in good health and good spirits. I have
worked on one aspect of the course mostly in the last two weeks and I
think I have it figured out now: chapters 11 and 12 in the Black Art,
develop a 3D engine and a 3D game. I have them both working, and plan
to present them in class. The outline of the class now is:

a) We start with a review of several basic Java concepts: inheritance,
abstract classes, interfaces, threads, basic GUIs, and event handling.
Presentation is at the level of mid-A202 or a bit higher.

b) Based on this we develop the Aliens Landing Game. This takes two or
three steps, as we refine it gradually. When done the game is nice, it
works as an applet, so software distribution/installation is free, but
there's not much networking, and no multiplayer component.

c) We take a look at network programming in two stages: first we add a
high score server so different players communicate (at least,) through
the standings (top ten scores). Second stage, we implement a real-time
communication framework, by building a chat room.

d) Now we move into a multiplayer environment with two case studies: a
version of Othello (two players play, described in the book,) followed
by a version of Worm (that's described in the book, to which we'll add
the networked component).

e) Next step is to look into more advanced techniques. So we summarize
(it's about midterm time) and perhaps give an exam etc. then we tackle
what may turn out to be the most exciting part: what a 3D engine looks
like. This should be done in 2-3 stages too, as there's math inside. I
show the complete working programs first, and that should provide an 
interested reader with enough motivation and incentive to study.

f) We see that developing a 3D game (which we will do) is neat, and in
some of the complexities, extremely attractive. Inevitably one needs a
language to describe a scene that has to be rendered, or a sequence of
actions that need to happen. More powerful 3D engines exist, so we now
turn to the ones available for Java.

g) At this point we write standalone programs not applets. We end with
a project that looks at the bigger picture (as in the Rouse book). And
I follow a second book that develops a bigger, scalable framework. The
framework is described and developed step by step and we ask ourselves
and provide some answers to questions about what makes a good game and
how (much) Java 3D and Swing APIs can be used in the design. We assess
both advantages and (potential) drawbacks. We also can use other types
of networking (peer-to-peer) and technologies (RMI, secure sockets, as
well as plain HTTP and others).

So I am writing to let you know that this is going to be the best most
exciting semester ever. The proof, as always, is by construction. 

Mon Jan 7
Spring semester starts, T540 meets Thursday at 7:15pm in LH115.


Updated by Adrian German for T540 NGD