Untitled document
Upon completion of the course, students will be able to:
1. Discuss the history of computer programming languages, in particular the trend of managed
code as a safer alternative to native code.
2. Practice the rudiments of Linear Algebra, using vectors and matrices to solve numerous
analytical/scientific problems.
3. Create 2D arcade-style game simulations such as Space Invaders or Pac-Man.
4. Identify best practices for memory-constrained devices such as gaming consoles and discuss
the particular issues of developing software for a console as opposed to a personal computer.
Untitled document
I. JavaScript Language Fundamentals
A. Introduction to JavaScript and HTML5
1. History
2. Interpreted vs. Native code
3. Important JavaScript frameworks
B. Project design and organization
1. Creating project file and directory tree
2. Implementing a simple JavaScript application
3. Running and debugging in Firefox and Firebug
4. Statements
C. Programming language fundamentals
1. Data types
2. Variables
3. Operators
4. Functions
5. Garbage collection
6. Strong vs. weak typing
D. Object-oriented programming (review)
1. Class definitions
2. Object instantiation
3. Inheritance
4. Encapsulation
5. Polymorphism
E. Containers
1. Arrays and lists
2. Loops and iterating
F. Exceptions
G. Delegates and Events
H. String manipulation
II. Mathematics
A. Cartesian Coordinate Systems
B. World space, object space, camera space
C. Vectors
1. Addition and subtraction
2. Dot and cross product
3. Normalization
4. Distance formula
D. Matrices
1. Matrix dimension and notation
2. Transposition
3. Scalar and matrix multiplication
4. Row vs. column matrices
5. Linear transformation
a. Rotation
b. Translation
c. Scale
d. Orthographic projection
E. Physics simulation
1. Numerical representation and inaccuracy
2. Fixed vs. variable time step
3. Performance considerations
III. Game Design and Development
A. Cultural and function definition of games
1. Serious game development
2. Game vs. puzzles vs. play
B. Rudiments of game design
1. History
2. Player feedback
3. Risk vs. Reward
4. Game vs. Simulation
C. Development processes
1. Scrumm
a. User stories
b. Tasks
c. Prioritization
2. Iterative design of game mechanics
D. Documentation
1. Concept document
2. Game design document
3. Technical design document
IV. Game Development Technical Aspects
A. User input
1. Gamepad
2. Keyboard
3. Mouse
4. Filtering and other forms of signal processing
B. Graphics
1. Digital image representation
2. Sprites and movement
C. Audio
1. Digital audio representation
2. Streaming audio
3. Audio event prioritization
D. Game Engine Architecture
1. The game loop
a. Fixed
b. Variable time step
2. Separation of simulation and presentation
E. Collision Detection
1. What is collision detection
2. Responding to collision detection
F. Publication
1. PC publication
2. Publication on consoles
G. Lessons from the Underground: DIY/Indie techniques
1. Agile methodologies for content generation
2. Intellectual property and copyright issues
3. Free resources
H. XNA Content Pipeline
1. What are assets
2. Importing assets into applications
Untitled document
1. Read approximately 25-30 pages a week
2. Prepare three written documents that closely mirror the documentation process used in the
games industry: a concept document, game design document, and technical design
document. (3-7 pages each)
3. Weekly programming assignments that solve particular technical challenges
4. Midterm
5. Final Project: a working 2D arcade game simulation that demonstrates the use of the
techniques developed in this class
Untitled document
Hall, Joseph. XNA Game Studio Express: Developing Games for Windows and the Xbox 360. Course Technology PTR, 2007. (classic)
Lobao, Alexandra Santos. Beginning XNA 3.0 Game Programming: From Novice to Professional. Apress, 2009.
Nitschke, Benjamin. Professional XNA Game Programming. Wrox, 2008. (classic)
Reed, Aaron. Learning XNA 3.0: XNA 3.0 Game Development for the PC, Xbox 360, and Zune. O'Reilly Media, 2008. (classic)
Instructor prepared materials