CSCI 475

3D Game Programming and Computer Animation

Coordinator: Roger Webster

Credits: 4.0

Description

This course will provide students with the skills necessary to design, develop, and deploy: 3D games and related entertainment technology applications. The intent of the course is to provide the student with a solid technical foundation for developing, animating and controlling articulated systems used in interactive computer games, virtual reality simulations and high-end animation applications. Topics include: 3D game programming, 3D graphics, programming video game controllers, collision detection, force and motion calculations, networking multiplayer games, manipulating sound objects, physical modeling, projectiles, particle systems, physical constraints, deformation of virtual 3D objects, surface deformation, and computer animation.

Prerequisites

C- or higher in CSCI 362.

Sample Textbooks

Course Outcomes

Major Topics Covered

  1. Introduction
    1. course organization
    2. background
    3. motivation for course
    4. basic concepts
    5. terminology
    6. demos
  2. History of Computer Games
    1. successes
    2. failures
    3. game design principles
  3. Game Genre
    1. role-playing
    2. real-time strategy
    3. sports
    4. adventure
    5. action
    6. simulations
    7. real-time versus turn-based games
  4. Game Play Elements:
    1. what is game play
    2. storytelling
    3. challenge
    4. conflict
    5. interactivity
    6. relationships
    7. supporting learning with consistent challenges and appropriate feedback
    8. communicating with the player regarding challenges
    9. actions and abilities within the game world
  5. Review of 3D Graphics:
    1. Linear algebra review
    2. 3D coordinate systems
    3. Vector spaces
    4. coordinate transformations
    5. texture mapping
    6. 3D models
  6. Using a Game Engine:
    1. API programming
    2. OPENGL and XNA programming
    3. simulation techniques and modeling
    4. camera models
    5. mouse programming
  7. 3D objects in the scene
    1. 3D models geometry
    2. texture mapped objects
    3. movement
    4. human animation
  8. Collision Detection
    1. bounding boxes collision detection
    2. ray - plane collision,
    3. spherical collision detection
    4. visibility and occlusion
    5. quad trees
    6. BSP trees
  9. First Person Shooter Games
    1. camera manipulation
    2. explosions
    3. projectiles
    4. bullets
  10. Sounds:
    1. Loading sound files
    2. playing sound files
    3. manipulating sound objects
    4. 3D sound
  11. Basic Physics
    1. Newton's Laws of Motion
    2. angular velocity
    3. Inertia
  12. Computer Animation
    1. Keyframe animation
    2. Motion capture animation
    3. Procedural animation
    4. Forward Kinematics
    5. Inverse Kinematics
    6. Interpolation,
      1. Bezier curves,
      2. Catmull-Rom Splines
    7. Introduction to Behaviorial Animation
      1. Boids
      2. Flocking,
      3. Fleeing,
      4. Avoid,
      5. Swarm,
      6. Wander
  13. Networking for multiplayer computer games massive multi-player online games
    1. client-server software
    2. UDP vs TCP/IP
    3. socket programming
    4. network packet or message sending
  14. Game Design Process
    1. player motivation
    2. teasing the user
    3. hidden secrets
    4. longevity
    5. perceptive boundaries
    6. reward structures
    7. reward growth, and stories
    8. creating the right balance of obstacles/aids/penalties/rewards
  15. User Interface Design:
    1. rules and boundaries,
    2. specific hardware constraints
    3. controllers (force feedback)
    4. keyboards,
    5. joysticks
    6. headsets
  16. Simple Artificial Intelligence (AI) techniques
    1. finite state machines in games
    2. min-max trees
    3. path finding
  17. Dynamic Effects
    1. surface deformation
    2. deformation of virtual objects
    3. physical modeling
    4. mass-springs-damper physics
    5. particle systems
    6. special effects: smoke, fog, fire

Sample Laboratory Projects