Computer Games (Graduate level), Fall 2008
719 Broadway, Rm 1221
Mondays at 5pm-6:50pm

Office hours: Tuesday, 4-5pm

Text: Class notes (so make sure you come to class!), will be posted on-line after each lecture.


Nadim Awad. His email address is: na712 AT nyu DOT edu
His web page with your assignments is: http://homepages.nyu.edu/~na712/games/games.html




Monday October 27:

The link that will get you started with XNA is here:


Be sure to read it carefully! There are some slight changes from what Charles said in class.

Remember, your assignment is to implement a simple game in XNA. It doesn't need to be fancy, but it does need to be a working game. Post your project file on-line. We will collectively look at these games in class next Monday.



For Monday Sept 29, I would like you to analyze the game that you implemented for the second class, using the same ideas that we have been discussing in class the last two weeks. What are the game genre, aesthetic design components, game mechanic, game narrative, intrinsic rewards, extrinsic rewards?

Describe the player's learning process. In other words: what is it, exactly, that the user is progressively mastering as the game progresses?

Make a chart showing the gradual progression of mastery that your game requires of the player. In your chart, describe what skills/tasks are required of the player at each progressive level of game play, from the beginning (introductory) level onward. Because you implemented a very simple game, your chart might have as few as two levels (eg: (i) shoot at things that are going slowly, (ii) shoot at things that are going quickly), which is fine.

As you do this, keep in mind Mihály Csíkszentmihályi's concepts of Flow: as the player becomes proficient at a set of tasks, a good game design continually shifts the frontier of difficulty at a modulated rate, so that the player is neither frustrated (because this frontier advances too quickly) or bored (because the frontier advances too slowly).

Feel free to do more programming to further develop your game, if you feel that you can improve it in a way that makes it a better game, given what you've learned about game structure in the last two weeks.

If you'd like, feel free to throw out what you did the first time and start fresh with a different game.

The important point here is that you go through the process of developing a game and also understanding how to clearly describe and analyze the game you've created.

On September 29 I showed how to load an image into your applet. The source code to do that is here.

Course Overview:

The study of computer games offers a unique opportunity to bring together many complementary computer science sub-fields and techniques, and to observe how those sub-fields and techniques work together. Among the very large number of computer science topics involved in the creation of computer games are: accelarated graphical rendering of simulated natural phenomena, concurrent programming, digital audio synthesis, distributed systems, forward and inverse dynamics, multi-level object representations, network token passing and synchronization, real time animation, real time modeling, scientific visualization, scripting interfaces, software multiagent systems, and user interfaces. Unfortunately a single course in computer games can not hope to touch on all these areas. After all, we only have one semester. :-)

While this is a computer science course, you will also be exposed to some complementary elements essential to the experience of designing and implementing games. For this reason, certain basic elements of the visual, storytelling, and sound design elements of games are woven into the fabric of the course.

Course structure:

Chronologically the course will be divided into three successive modules:

  1. In the first class, you will immediately jump in and implement a simple game, just so you can see what that's like. After that, in the next several weeks of the class, you will be given an overview of the evolution of computer games. This evolution will be linked the parallel developments of related fields in computer science, such as computer graphics, scripting interfaces, user interfaces, and so forth. We will cover the different technical requirements for different genres of computer game, including casual games, first person 3D games, asynchronous multiplayer games, and massively multiplayer on-line game worlds.

    We will also be trying out games in class, interleaving our history discussions with participatory trying out of games, and students will be invited to lead discussion on games in which they are expert. :-)

  2. In the second module, which will consitute the next several weeks of the class, you will each build rapid software prototypes of simple 2D games, one per week. A web-based 2D graphics software substrate will be provided so that these games can run on the Web. In this part of the course you will gain hands-on experience of the principles of game design.

  3. In roughly the last half of the class, you will use a 3D game engine, working in teams to create a series of group projects. Each project will consist of three parts: design, implementation, and evaluation. Within each team, each student will take on, in turn, a different complementary role in the design, production and evaluation for each of the successive projects. In this way, everybody will get hands-on experience in each of key areas of game creation.

There will be no formal written final exam, as this will be a hands-on class. You will be graded on your projects work.

At the end of each semester, in lieu of a formal final exam, there will be a group show, to which the public will be invited, in which you will have an opportunity to demonstrate your best work.



This is very much a learn-by-doing class, and I assume that you are a strong progammer. In the first class you will get a chance to implement a game for yourself - to get your feet wet.

In the lecture we will go over what are the basic elements of a game, and specifically a computer game, and I will give you some basic tools to work with to program your own game. You can get the latest version of the java development kit on-line. It's the first download (Java SE) at java.sun.com.

Here is the example we created in class:

Software you can use to make a simple game

Your assignment is to make your own game, by next Monday (Sept 15) and post it on the web. Make sure your game is very different from the one we developed in class.

Remember to email to the grader the URL that you will be using for assignments!!


After looking at the cool first games you all implemented, in this class we will go over the history and philosophy of computer games, and of games in general.

Here is an interesting link to video about the history of games

We will also discuss what our favorite games are. Students will talk about their own choices for best game. Then we will work together to describe the different overlapping game genres, including sports games, first person shooters, puzzle games, massively multiplayer on-line role playing games (MMORPGs), side scrollers, arcade games, simulation games, construction games, physically immersive games, music games, cooperative games.

Your asignment for this class will be to look at various games, especially games we have discussed in class, and try to describe them in terms of such categories. It's ok for a game to be in more than one category - in general a game will indeed be located in more than one category (eg: first person shooter sports construction game - not that I can think of any of those).

You should also try to articulate what is the game mechanic for particular games - eg: eating for PacMan, shooting for Doom, picking up things for Katamari Damasi. Also, try to identify the nature of the "Magic Circle" that surrounds any game. Ie: what is the particular real-world, possibly deadly serious, conflict for which playing this game provides a safe metaphor?

At the next class you will begin implementing games for yourselves. The things you build will be influenced by your understanding of these categories and of how they work.


In class, we will develop the beginnings of three computer games The web page for that, together with links to the source code, is here:

Some examples of techniques for developing simple games

We will go back to implementing simple games, but now your implementations will be informed by what you learned in the last few weeks.

Some other interesting links:

Prof. Jean-Marc Gauthier's class at ITP
Games that teach math


We will go over your game implementations, and collectively critique them, working out the strengths and weaknesses of each, the game mechanics used, and suggestions for how they could work better, be more appropriate in their initial level, how the interface could be more discoverable, and how you could maintain a bigher level of fun engagement, without making things either too easy or too difficult for the player at any point.

Your homework for will be in two parts:

  1. Iterate on the game that you've already implemented, applying the principles we learned in class to make an improved version of it. If possible, put the improved version of this game under a separate link, so that the before/after can both be played on-line and compared with each other.

  2. Using the principles that you're learning, create a new game, using the same basic graphics and interaction tools as before. But this time the game has an additional design constraint: The player must learn something about math while playing it.

    You can choose from a wide variety of math topics - ideally you should choose from a topic that you yourself find to be fun and interesting. See if you can transmit to a player of your game that sense of fun and interest that you yourself feel.


Introduction to the XNA development environment.

XNA information

SIX You will spend the class time working to refine your group project. A designated representative from your group will send me a link to a URL where I can see the work-in-progress of your game, and so I can give feedback on your progress.

You will be focusing this week on game design and visuals, and any implementation you do during this stage should only be for working out and refining ideas of game-play.


Detailed about using XNA and modeling software.

XNA Install Notes
SoftImage/XSI ModTool (for making 3D models)
Students will present their first individual experiments in the use of XNA as a platform.
Students will present their first week of working in groups of three to develop XNA-based games.
Students will present their second week of working in groups of three to develop XNA-based games.

ELEVEN - final projects show-case

You will show your work at the Fall 2008 showcase, on the 13th floor of WWH.

There will be one "station" per student project. Our game class will have one per game project. Each station will provide an easel, an outlet, and table space for a laptop. Your group should bring a poster and a laptop containing your project software, and any game controllers. If you need network access, the department recommends you use the NYU wireless network, and that you test your wireless connectivity before the day of the show.

Each group will get a time slot at a particular station to talk about their project.

On your 24" wide by 36" high poster, in addition to a cool sexy picture that will get everyone excited and wanting to play your game, you should be sure to put the following info:

  • the title of your game
  • a very brief description
  • the names of the students contributing to the game

There will be light refreshments provided during the showcase.

You are responsible for your own poster. Oak tag (poster cardboard) 24" X 36" is available at the bookstore for 75 cents per sheet.