Game Technology
Spring 2012

Tu/Th 2:00pm-3:30pm
GAR 1.126


The Legend of Zelda

Instructor: Don Fussell
  • E-mail: fussell 'at'
  • Office: ACES 2.120
  • Office hours: TTh 3:30pm-4:30pm in ACES 2.120

TA: Sarah Abraham

  • Office hours: TBD

NFL 2007

!!! Important !!!

Information contained here is subject to evolution through the semester. Please make sure you check back frequently.

Course description: 

This course focuses on the technological aspects of game development. We will be covering various algorithms ranging from graphics to artificial intelligence/networking and sound. We will primarily explore the technical aspects of game development. As such, the course will involve many computer science topics, not just computer graphics. Note, this is not a course on game design even though we will have a game as a final project (see below). Such courses are offered elsewhere in the university for those who are looking for that. We will emphasize tools and algorithmic techniques that are critical components of games. Good game programmers today are primarily problem solvers, who know how to acquire a mental model of a complex software environment and to solve technical problems in order to achieve a timely goal. A game due at the end of the semester is a good, timely goal. But what we want you to learn in this class is how to get a toolchain in place and make it do what you need it to do to get the game done. We'll be grading you primarily on how well you do that, not on whether you're a good game designer.


  • C/C++ programming skills
  • Computer algorithms & data structures
  • Computer graphics (CS354 or CS384G)
  • C++ Programming experience
    Other language experience desirable
  • Talk to me if you're in doubt


  • Initial project - 50%
    This will be split into a number of short term milestone assignments within the project
  • Final project - 50%
    This will also be split into a number of short term milestone assignments within the project


Super Mario 64

Late policy:

Unless you have prior instructor permission or a valid nonacademic reason as determined by the instructor, you will lose 5 pts off your overall course grade for each day an assignment is late. For example, your grade in this class is evaluated over 100. If you turn in your deliverable one day late, then your maximum grade in the class will be 95, two days late - 90, etc.

Your responsibilities in this class

Every student must read and agree with the CS student's code of conduct. You must also follow the Dean of Students' requirements for academic integrity. You must report any piece of written material (text or software) that comes from someone other than yourself. Note that you are not allowed to use any software that overlaps with the objectives of homework and projects except those tools assigned as part of the project. There will be a discussion of policies related to group projects and homework in the class and this web page will be updated accordingly. If you have any questions about what you can and cannot do on any assignment, ask the instructor, do not guess or make assumptions, because if you are wrong, you will be held accountable.


Relevant topics. Some have been covered in previous courses and will only be reviewed this semester.
  • Interactive systems
  • Graphics
    • Texture / Environment / Shadow mapping
    • Shading models
      • Light maps
      • Bump maps
      • Multitexturing
    • Multi-pass rendering
    • Occlusion culling
    • Graphics hardware / vertex / pixel shaders
    • 2D Games / billboards
    • Meshes
    • Terrain generation
    • Level of detail
    • Octrees, Kd-trees, BSP trees
    • Visibility
  • Animation
    • Keyframing, motion capture
    • Character rigging
    • Inverse kinematics
    • Physics, simulation
    • Particle systems
    • Collision detection / response
  • Artificial intelligence
    • Finite state machines
    • Decision trees
    • Rule based systems
    • Fuzzy logic
    • Neural nets
    • Path planning
  • Networking
    • Dealing with lag / network failures
  • Sound

Gran Turismo

Warcraft 2



The initial project in the class will be to create a three dimensional ball game. You may use the Bullet physics library or implement your own physics since the interactions involve more or less ridid body collisions. You have the freedom and encouragement to design your own variant of the basic game, but it should involve balls being lauched into a scoring region involving intricate physical interactions and some degree of user control involving paddles and perhaps other controls of your own design. You will be graded on your implementation and ambition within this constrained design environment and not primarily on game design prowess since this is not a course on game design.

The second project involves the creation of a game of your own design. This should be an extension of the capabilities you developed in your first project. It should involve new capabilities as well and can be more involved.

You will build your game on the course game engine and associated tools. Your primary implementation language will be C++, although other languages may be used for scripting. Note that we are not giving you a complete working toolchain at the start of the course as we would for a game design class. Part of your task will be to undertand and augment components of the toolchain as needed to make your game work.

Similar to professional game development, you will have hard deadlines scattered throughout the semester. Each of these deadlines (or milestones) will measure your progress towards meeting your requirements and finishing your game. Expect a steady workload for the entire semester. This is not a class where you can implement your project one week before the end of the semester.

Each team will demo your final game during the final exam period of the class, which is on Saturday, May 12, from 2-5 pm. We expect to have several representatives from local game related compananies present at these demos. You must have completed and installed the game on the lab machines (and turned it in to us) no later than 11:59pm May 11. Rather than the classroom that is scheduled for the final (WEL 2.308), we will be having the demos in the kol64 Linux lab, in ENS 31NR. As anyone in the class already knows, to get there you take the elevator to the lower basement of ENS, take a right out of the elevator, walk all the way down the hall (through some double-doors) until you pass a hallway on your left. It's right after that.

Note that when you turn in your project on Friday, you should turn in the same things that you did for previous assignments, namely a project report, a readme with instructions, and a build tree. You will also turn in your evaluation of each team member separately, as before.

Some previous class projects:

Duel - Kyle Beck
Gravity Control - Steven Klein




Lecture notes


  1. Game Project 1
  2. Game Project 2

Last modified: 05/10/12 by Don Fussell