CSS 490: Introduction To Game Programming

Spring 2009

Room UW1-060 New Room: CC1-011, T/TR 5:45pm-7:50pm
Computing and Software Systems

University of Washington Bothell

 

 

Name

Email

Kelvin Sung

ksung@u.washington.edu

Office Hours:

T 3:00-4:30 pm

Or by appointment

Phone

 

(425)-352-5420

(phone for appointments only please)

Office:

UW1-339

We will be learning:

This class examines the fundamental issues in designing and developing computer video games. We begin with examining technical issues in developing a game including: software architecture, interaction model, mathematic concepts, real-time approximation for Newtonian physics, elementary special effects, and algorithms relevant to supporting in-game logic. After the technical knowledge, in the second half of the quarter we examine the elements in games design including: world setting, game play, and interface; and the procedure of designing games including: conceptualization, prototyping, and playtesting.

 

The first half of the class is programming intensive where students practice and implement the technical knowledge learned by developing games individually. After the mid-term exam, students will work in groups designing and implementing their own games. The second half of the class involves group work, presentations, and active class participations in games evaluation.

 

Prerequisites: 2.0 in CSS 342 or equivalent.

Grading:

Programming Assignments (4)

40-50%

Weekly short quizzes

10-15%

Mid-Term Exam

15%

Final Game

In class participation

30%

~5%

               

Books

 

Required Textbook: 

  • None. Reference materials will be provided.

 

Reference Textbooks: (Link to Library e-reserve)

  • Introduction to game development, S. Rabin (Ed.), Boston, MA, Charles River Media, 2005.
    • A1: Bakie, R. T. (2005). A brief history of video games. In S. Rabin (Ed.), Introduction to game development (pp. 1-36). Boston, MA: Charles River Media.
    • A2: Bakie, R. T. (2005). Games and society. In S. Rabin (Ed.), Introduction to game development (pp. 37-50). Boston, MA: Charles River Media.
    • A3: Jarvinen, A. & Holopainen, J. (2005). Ludology for game developers: An academic perspective. In S. Rabin (Ed.), Introduction to game development (pp. 51-68). Boston, MA: Charles River Media.
    • A4: Falstein, N. (2005). Understanding fun: The theory of natural funativity. In S. Rabin (Ed.), Introduction to game development (pp. 69-97). Boston, MA: Charles River Media.
    • A5: Barry, I. (2005). Game design. In S. Rabin (Ed.), Introduction to game development (pp. 99-160). Boston, MA: Charles River Media.
  • Fundamentals of Computer Graphics, P. Shirley, Wellesley, MA, A. K. Peters, 2005.
    • B1: Sung, K. (2005). Building interactive graphics applications. In P. Shirley (Ed.), Fundamentals of computer graphics (pp. 401-449). Wellesley, MA: A K Peters, Ltd.
  • Programming game AI by example, M, Buckland, Plano TX, Woodward Publishing Inc, 2004.
    • C1: Buckland, M. (2004). A math and physics primer. In Programming game AI by example (pp. 1-41). Plano, TX: Woodward Publishing, Inc.
    • C2: Buckland, M. (2004). State-driven agent design. In Programming game AI by example (pp. 43-83). Plano, TX: Woodward Publishing, Inc.
  • Tricks of the Windows game programming guru, Indianapolis, IN, Sams Publishing, 2002.
    • D1: LaMothe, A. (2002). Playing God: Basic physics modeling. In Tricks of the Windows game programming gurus (pp. 803-878). Indianaplis, IN: Sams Publishings.
  • Game Design Workshop a play centric approach to creating innovative games, Tracy Fullerton, Burlington, MA, Morgan Kaufmann, 2008.
    • E1: Chapter 7: Prototyping
    • E2: Chapter 9: Playtesting
    • E3: Pages 349-362
    • E4: Page 394-402
  • Game Design and Development, E. Adams and A. Rollings, Berkeley, Upper Saddle River, NJ, Pearson Prentice Hall, 2007.
    • F1: Chapter 4: Game world
    • F2: Chapter 8: Creating the User Experience
    • F3: Chapter 9: Game play

 

 

Schedule:

 

Week

Topics

Reading

Date

Note:

1

Intro + Real Time Systems

A1 – A3

B1

Mar 31

Apr 2

Assign: MP #1

2

Math in Games

C1

Apr 7, 9

Due: MP #1

Assign: MP #2

3

Physics in Games

D1

Apr 14, 16

Due: MP #2

Assign: MP#3

4

Game Design: Conceptualization + Prototyping

Final Project Groups: based on MP1 – MP3

F1

E3, E4, E1

Apr 21, 23

Due: MP #2

Assign: MP #3

5

Kelvin will be at FDG Conference

Tuesday guest lecture: Wanda Gregory

Thursday: Mid-Term (Open Book)

Week 1-3

Apr 28, 30

Due: MP #3

6

Elements in Games: Game Play

Pitch your games

A4 – A5, F3

May 5, 7

Design document (hand-in class) + Presentation + Rank

7

Elements in Games: User Experience

Game Logic: Finite State Machine

Game Concept Demo: layout only, no arts, no logic

F2, C2

May 12, 14

Due: Concept Demo (at 3pm!)

Eval + Rank

8

Game Design: Playtesting

Game Prototype Demo: digital prototype

E2

May 19, 21

Due: Prototype Demo (at 3pm!)

Eval + Rank

9

Game Demo: playtest

Game Programming: Effects with particle system

May 26, 28

Due: Alpha Demo (at 3pm!)

Play + Eval + Rank

10

Guest Lecturer: Jason Bay (Griptonite Games)

Catch-up

 

Jun 2, 4

11

Final’s Week: Project Demo & Presentation

 

Jun 9

Due: Final Project in class

 

 

Submitting Programming Assignments (MPs):

Submitting Source Code: You will submit your source code of each programming assignment (or machine problem, or mp) and I will run/test your submissions. We will be using the same catalyst facility as CSS490 (refer to the course web-site for submission link). There is a folder with the corresponding mp number on the submission site (e.g. mp1, mp2, etc.). Before the due time of the assignment, you should:

 

Create a folder containing:

·       all the relevant source files of your mp,

·       an EXE folder containing only the required files executable and resource files to run your mp,

·       and no more.

Having extra useless/irrelevant files in that folder will results in lost credits. Please clean up both bin and obj folders before you copy your files over. These folders can be huge and will take up unnecessary time/space. WARNING: a significant percentage of each mp’s grade will be deducted if your submission includes the contents of bin or obj folders, or any useless files (e.g., .suo, .ncb, etc.) Use your first and last name and mp# as the name of your folder. Please do not include blank space as part of the name for this folder (i.e. do use “KelvinSungMp1” as folder name, and do not use “Kelvin Sung MP1” with blank spaces.). Please zip up our folder into one zip file.  Go to our course submission area and “turn in” you .zip file.

 

***  Send yourself a digital receipt just in case something should go wrong. ***

 

Submit as many times as you wish, I will only look at the last one received before the deadline. Please do not submit hard copies of your program. Let’s safe some trees, I will look at your source code electronically.

 

There is a “Test Turn-in” assignment for you to try things out. Please do try it before the first MP due date! If I do not see a test submission and you have trouble submitting your first assignment at the last minute, I will not help you. I can only help those who tried.

 

In addition, and very importantly, you should always download your submission, un-zip/compile/run to ensure your submission is correct. Remember, the grader (and/or I) will download your submission, unzip, double-click on the .sln file to compile and run. You will lose credits if anything in your submission should prevent us from automating this process.

 

You are responsible to ensure that the files you submitted are correct. On the due date of the mp, the corresponding directory will be close at precisely the due time. After which, you will not be able to submit your work! I will not accept submissions via emails. You are responsible to ensure that the files you submitted are correct. Minor submission mistakes (e.g. missed a small .h file) will result in 10% deduction from the assignment. Major submission mistakes (e.g. forgot to include a major .cpp file) will be treated as in-complete assignment and you will get 0% for the assignment. On a case-by-case basis, I will decide if a submission mistake is minor or major. There will be no exceptions!

 

If there is an emergency and/or personal difficulty, please talk to me in person. Remember to document your code, and practice the good programming skills you learned in CSS 342.

 

General Policies:

Assignment Deadlines: There will be no late assignments accepted. Let me put this in another way, there will be no late assignments accepted. These apply to both homework assignments and machine problems. Pay attention to the deadline on the assignments (including the time), there will be no late assignments accepted. Let me explain this again, there will be no late assignments accepted. I am actually a reasonable person, come talk to me about exceptional circumstances. You know the deadlines now please plan ahead.

 

Lateness to classes: It does not bother me, just don’t disturb anyone. On the days the homework assignments are due, the due time will be 10 minutes after class time. So you may wish to make sure you are not more than 10 minutes late for those classes. If you want to leave early, it would be very nice if you could give me advance warning. If that’s too much trouble, or if you forgot, don’t worry, just don’t disturb anyone and leave quietly.

 

Commitments and such: I am usually very easy going. I like relaxed classrooms for learning and will try my best to create such an environment. Please do not confuse relax environment with relax requirements. I work very hard, and expect students to work as hard. On average, each percentage of your assignments should represent one-two hours of outside-of-class time. For example, if an MP worth 8%, then on average, you will probably need about 10-15 hours to finish this assignment. Please use this as a reference and let me know if you are spending too much time on the assignments. If most of you are experiencing the same problem, then we will have to adjust the amount of work. Please seriously consider if you have the time this quarter for this class. If you do have the time, please stay in this class, I will work very hard and try my best to make this class a worthwhile learning experience for you.

Group Assignments: The final game is a group assignment. You must form groups of 3 or 4 persons to work on the final project. No groups can be less than three members.

Policy for forming groups: Depending on your scores from the first four programming assignments and your weekly quiz scores, I will divide all students in class into 2 or 3 sets. You can form groups only with students from the same set. For example, if you are in Set-A and your best friend is in Set-B, then the two of you cannot be in the same group!

 Problems

If you have any problem with this course, please talk to me as soon as possible.  I would like to help in any way I could, but I have to know there is a problem. If you fall behind in this class, it will be difficult to catch up.

 

Special Needs

If you believe that you have a disability and would like academic accommodations, please contact Disability Support Services at 425.352.5307 or at rlundborg@uwb.edu. In most cases, you will need to provide documentation of your disability as part of the review process. I will coordinate with the University to ensure that the appropriate accommodations are made in this class.