Games From My Game Development Course

by Ming Chow

I will close 2006 with a summary of my game development course I taught at Tufts University earlier in the year. You may be wondering why I taught the course considering my background is primarily in computer security and privacy. As I wrote in the beginning of the year, students in my previous computer security, privacy, and politics course expressed interest in more technical content including programming. Moreover, the Tufts Experimental College asked students what courses they would like to see in the future, and many said a course on game development. What better way to expose students to computer programming and the different facets of Computer Science than game development.

I taught the class using Java. I had a little over twenty students in my class. A number of students had strong computer programming background, while others never did any programming before. I lectured on a number of standard game development topics including user interfaces, 2D graphics, game testing, texture mapping, animation, sound, and 3D graphics. Teaching the course in Java had its strengths and drawbacks. In short:

Strengths:

  • Rich 2D graphics and UI widgets (e.g. Swing) all part of the standard development kit

  • The "write once, run everywhere" paradigm worked well



Weaknesses:

  • The bugs in Java 3D and Java sound

  • Extremely deep library with obsolete and deprecated classes



Students and I didn't observe any glaring performance issues in Java, contrary to popular belief. I also didn't find the notion that Java "is too high-level" to be necessarily true, considering depth of the Java Sound API and support for input devices including joysticks.

The most important aspect of my course was creating games, and did that. I created five teams, each creating a different 2D game. Each team had technical and non-technical students. It would not be right if there was a team of all programmers and another team of students with no programming experience. I asked each team to submit a proposal for a game, and once approved, a design document for the game. For your pleasure, several of the games are available for download:

BattleBlocks - An arcade style game somewhere between breakout and space invaders. Available for download on SourceForge.net (JAR file).

BattleBlocks screenshot

Flauncy Space Cows - Presented by Maniacally Obese Penguins, a nifty Asteroids clone. Design document for the game is also available. Build and run the game from source.

Flauncy Space Cows screenshot

Startrain Chronicles - Based on, and extensive modifications, to Professor Andrew Davison's "JumpingJack" (a sidescroller), presented in his book Killer Game Programming in Java. Build and run the game from source.

Startrain Chronicles screenshot

The production of games was a major accomplishment in my class. The accomplishment was reflected on my course evaluations: students were pleased that they had the opportunity to implement a 2D game, and the skills that they learned (the design, programming, and teamwork skills) were valuable. Some students wished that there was more programming involved in the course, while others wished that there was less programming in the course. In addition, several students wished that there were more discussions on the gaming business and on game engines. I enjoyed teaching the course, but it was no walk-in-the-park. Is Java relevant for game development? I think it is a great language for implementing 2D games. Several students even told me to just focus on 2D games if I do teach this course again in Java. Students and I struggled with Java 3D. For 3D games and using game engines, I feel that C++ is by far more suitable.

I cannot thank and commend my students enough for their incredible work, and for a tremendous course. So I close 2006. Back to teaching computer security and privacy in 2007.