Current grades and Final Averages (Updated Dec 20th)

Final Exam, Dec 15th

The final exam will be on Thursday, December 15th from 2:45pm to 5:00pm. The final exam will be held in the same room the class has been in, MacQuarrie Hall Room 225.

JGame Framework

JGame exists to get rid of all that ugly and confusing Swing code and let you focus on actually doing the homework assigned. (Don't confuse this with other projects named JGame.) It is designed to be highly responsive and simple to use for game-style code. You should not need to edit any code outside of JGame.java when doing your homework.

JGame has the following primary functions: gameInit(), gameShutdown(), gameUpdate(), and gameDraw(). You can find out about the keyboard with the variables keyState and prevKeyState; and you can find out about the mouse with the variables mousePos, mouseButtonState, and prevMouseButtonState.

I am not super familiar with Java, so if you have a way to make this faster or simpler, please tell me. This was the best way I could figure out in two hours of experimentation.

Class 26, Dec 6

Bonus Lecture 1. Here I covered some basic strategies for creating AI for games. AI in games gets broken down into three parts: Reading senses, updating the model, and decision making.

Class 25, Dec 1

Final game playing class! Here we will play a collection of games that are praised for their art style. Also, one of the games (Rez) is unique because it showed the debug console with event logs as part of the game. This was possible because the game's motif was "inside a computer".

Class 24, Nov 29

We will do a trial-run for the final here. It's ungraded, so don't worry! My goal is to help everyone taking the class know what they need to study

Class 23, Nov 22nd

This class will go over some suggestions about getting into the game industry. It will also talk about the Game Developer's Salary Survey.

Class 22, Nov 17th

This class will go into more detail about game scheduling.

HW 6 -- Due December 2nd

For this homework you should think of three specific things in your game that you pitched that you would test using a continuous integration tester. They should not be any of the examples that I listed in class. In addition, list any infrastructure you would need to test these features.

For example, to test holes in the polygonal mesh, I would need to have two pieces of infrastructure. I would need to have a way for the continuous integration tester to play a camera path and I would need a way for the graphics engine to detect an un-drawn polygon.

Class 21, Nov 15th

This class will cover the remaining jobs that are on all game teams -- Producers and QA. Production and QA are both facilitating jobs -- they are not part of the "core" team, but they are extremely important in getting a game completed. There will be some brief talk about game scheduling too.

Class 20, Nov 10th

This class will go into more detail about the specific skills and techniques used by professional game artists when making games. It will cover the basics of texture mapping and UV-unwrapping, and some simple concepts behind lighting. Dealing with lighting and texture mapping makes up a significant amount of a game artist's time.

Class 19, Nov 8th

I've talked about Programmers and Designers. Now it's time to talk about Artists. I will cover the different types of artists in the Game Industry, as well as some basic artistic principles. Having a good visual style in a game has a huge effect on if a game does well or not; a good style can compensate for sub-standard tech. The art techniques used in game art is very similar to techniques used in 3D movie animation, though there is a much higher emphasis on performance.

IMPORTANT

I will be in Japan from October 29th to November 5th for a good friend's wedding. This means that classes will not be held on October 1st or October 3rd.

Class 18, October 25th

Game pitch presentation time! All the groups will give their game pitch presentation.

Class 17, October 20th

This class will touch on the history of serious games, and what designs have made successful games. Serious games are not a new concept, Where in the World is Carmen Sandiego? and Oregon Trail are both over 20 years old! The games of this style are still games and the design principles for successful games are similar.

Class 16, October 18th

This class will cover some of the terms and design principles behind "social" games, and some of the monitization practices that factor into these designs. Social games, Free to Play, and Downloadable content has gotten really popular very quickly, so it is likely that if you get a job in the games industry, you will be working on these types of games.

Class 15, October 13th

Designers have their own set of documents, similar to the Technical Design Document we covered earlier. Here, we cover the Game Pitch document (which will also become your presentation for the homework) and the Game Design Document. We will talk about what in particular is useful and not useful in each of these documents.

HW5 -- On October 25

Everyone will be giving a presentation on a game pitch in front of the rest of the class! You should form teams of two to four people for the presentation. Presentations should be 5 - 10 minutes each.

Class 14, October 11th

This class covers a few different ways to analyze the big question of game design, "What makes a game fun?". There is no one answer thing I know of that makes games fun, so this class will instead cover a two different classifications of game mechanics.

Class 13, October 6th

This class covers the idea of having conditions and events in a script. Conditions (also sometimes called "triggers" or "booleans") end up being the primary way game scripts can query about the games state. Events (combined with an "event count" condition) end up being a very powerful way to create many different FSMs using the same based logic.

HW 4 -- Due October 13th

Choose a boss from a recent game and create an FSM for all his behavior. List the events that the game would need to expose, along with properties of that event, to support this FSM.

Class 12, October 4th

This class will cover scripting from the point of view of designers. Now this isn't necesarrily using scripting languages like Python or Lua, this is more about scripts for the different actors in the game. In particular, this will cover the idea of time-based scripts and state-based scripts (aka FSMs).

Class 11, September 29th

This class will start our transition over to how designers look at games. We will cover an overview of how a game designer views a game and compare and contrast this with how a programmer views a game.

HW 3 -- Due October 6th

Modify HW2 to have scrolling. The camera should scroll to keep one of the balls on the screen, with a "dead zone". If you press "TAB" (or some other key), the ball being focused on should change. Make sure the camera blends between balls correctly.

Class 10, September 27th

Game playing time! We will play a bunch of different indie and student games and analyze the different programming issues that they had to solve.

Class 9, September 22nd

This class will cover game development up until current times. As 3D programming requires a lot more knowledge than I could cover in a single class, this class will only breifly mention one part -- shades.

Finally, we will end our tour of consoles with a look at how Moore's Law has acted with respect to console hardware development. By looking at the past, we can guess where tablets and mobile devices will be in a few years.

Class 8, September 20th

This class will cover the JGame framework I created and how you should use it to do updating, drawing, and processing. It will cover detecting keyboard and mouse state and edge events, as well as how to do basic drawing of rectangles, circles, text, and images

Class 7, September 15th

This class covers the basic game loop in abstract terms, and how a game engine structures the different parts of updating and rendering a game.

Class 6, September 13th

This class will cover some basic concept about camera control, in both 2D and 3D. It also covers blending techniques such as linear blending, exponential blending, and ease-in / ease-out blending.

Class 5, September 8th

This class will cover the beginning of 3D acceleration, starting with the original PlayStation console. It will talk about how performance is measured when dealing with rendering in 3D and cover the basics of Fixed Point math.

HW 2 -- Due September 15th

Modify your existing collision detection demo to be in fixed point. Allow zooming in and zooming out in at least increments of .25. The zooming should also be in fixed point. I suggest you also add animation, though it is not necessary for this assignment.

Choose two programming jobs you may be interested in. Create a simple game design to complete as a summer project to train you in skills helpful for that job. The design should be at least three paragraphs long. I will be giving feedback on your design to add extra pointers and guidance, so make it as detailed as you want.

Class 4, September 6th

This class starts with a review of NES's sprite rendering using the NO$NES emulator and debugger. If you are interested in developing NES, Game Boy, GBA, or DS games for fun, I suggest using the No Cash series of emulators, as they are all excellent debuggers.

The rest of the class covered the different programming jobs available in the game industry and talked about pathfinding concepts.

Class 3, September 1st

The next major console to note is the Nintendo Entertainment System. This class will cover how games were written on it, as well as how to compensate for the lack of collision detection in hardware.

HW1 -- Due September 8th

  1. Choose a game released recently, for example Portal 2, and show how you would make it work on an Atari 2600. In particular, show how it will fit in 128 bytes of RAM as well as how you will use the five sprites to draw it. If you are using any special tricks, mention those.
  2. For the same game, describe how you will make it work on the NES. In particular, show how you are going to use the eight palettes, and how you will use the 64 sprites.
  3. In a programming language of your choice, implement at least Point / Circle, Point / AABB, Circle / Circle, AABB / AABB collision detection. For Extra Credit, also implement Pixel Perfect AABB / AABB for at least 8x8 sized boxes.

The document you are writing is called a Technical Design Document -- it outlines how you are going to solve the tough problems for your desired game design. Some companies (mainly console developers) require writing such a document before development is started on a game.

Class 2, August 30th

This class is about the Atari 2600's hardware and how games were written for it. The Atari's hardware was designed with Pong games in mind, and so making other games with it was difficult.

Class 1, August 25th

This class covers the intent of the class and talked about the game industry. I outline the grading and homework strategy.