Schedule

Duke University TIP Summer Studies Program 2010

Programming for Video Games
Duke University West Campus
Instructor: Yue-Ling Wong, Ph.D.
TA: Brent Driskill

Schedule:

WEEK ONE

Monday: Overview of Programming for Games and Getting to Know Flash
See the completed files of today's lab »

  • Introductions
  • Review of curriculum, evaluation methods, and expectations
  • Establishment of class community guidelines
  • Discussion: Common elements in computer games
  • Film duing break: TV episode: Icons -- Donkey Kong
  • Topic: Flash workspace
  • Topic: Flash drawing tools
  • Lab: Draw items that will be used in the games to be programmed in this class
  • Topic: Symbols and shapes
  • Topic: Animation basics
  • Lab: Create animated items that will be used in the games to be programmed in this class

Tuesday: Mask and Programming Fundamentals
See the completed files of todays lab »

  • Topic: Mask
  • Topic: Symbols and instances
  • Topic: Variables, data types, operators, functions, if statements
  • Lab: Identify programming constructs (download the Flash file needed »)
  • Topic: trace() statement
  • Lab: Get started to write ActionScript
  • Topic: Properties of movieclip instances
  • Lab: Modify an existing game code using different properties of movieclip instances

Wednesday: Making Game Sprites Move, Controlling Game Sprites with Mouse, Generating Randomness, Detecting Collision, and Keeping Scores
See the completed files of today's lab »

  • Film during break: TV episode: Icons -- Nolan Bushnell (Pong game)
  • Discussion: What made Pong game so popular?
  • Topic: Parameters
  • Topic: Mouse event and frame event listener
  • Topic: 2D collision detection method 1
  • Topic: Generate randomness
  • Topic: Keeping scores
  • Topic: Displaying text and scores
  • Lab: Start a Pong game

Thursday: Controlling Game Sprites with Key Presses, Change Game Sprite Appearance, Modeling Gravity, and More on Collision Detection
See the completed files of today's lab »

  • Topic: Keyboard event listener
  • Lab: Finish up the Pong game (add keyboard interaction, use of functions to organize code)
  • Topic: Change game sprite appearance using multiple frames
  • Lab: Program hairstyle customization
  • Topic: 2D collision detection method 2
  • Topic: Modeling gravity
  • Lab: Start a side-scrolling platform game

Friday: Side-Scrolling Platform Game
See the completed files of today's lab »

  • Review: Modeling gravity, hitTestPoint(), and event listener code
  • Self-test: Modeling gravity, hitTestPoint(), and event listener code
  • Lab: Add gravity and hit test to the platform game
  • Topic: Wrapping and reuse of collectible items in the platform game
  • Lab: Finish up the game play part of coding for the side-scrolling platform game

Saturday: Finish up Platform Game
See the completed files of today's lab »

  • Film: TV episode: Icons -- Mario
  • Topic: Review of parameters
  • Topic: Implementing keyboard interaction that allows simultaneous key presses
  • Lab: Modify the platform game code to implement keyboard interaction that allows simultaneous key presses
  • Lab: Documentation of code, organization of code with functions, replacement of hard-coded values with variables for the side-scrolling platform game

WEEK TWO

Monday : Intro to OOP
See the completed files of today's lab »

  • Review of the evaulation of last week's platform game file
  • Topic: Documentation of code
  • Topic: Controlling motion of an animated character
  • Lab: Add a second ball to the Pong game without OOP
  • Topic: Classes and objects
  • Lab: Convert the previous Pong game into 3-ball Pong game with OOP (without score keeping)

Tuesday: Arrays and Loops, Linear Perspective in 3D Games
See the completed files of today's lab »

  • Review: OOP
  • Topic: static
  • Lab : Add score keeping to the 3-ball Pong game
  • Topic: Arrays
  • Topic: for loops
  • Lab: Add array and for loops in multi-ball Pong game
  • Lab: Pre-lab for tomorrow's 3d fly-through lab
  • Topic: How to reduce code duplication with loops
  • Lab: Start programming a 3D fly-through game
  • About group research and presentation of new technology relevant to game programming

Wednesday: Linear Perspective in 3D Games, Human Perception of Depth, and 3D Fly-through Game
See the completed files of today's lab »

  • Film: TV episode: Icons -- Final Fantasy
  • Review: Use of array and for loops to handle multiple objects
  • Review: The basic ideas and setup of our 3D fly-through game
  • Topic: Linear perspective
  • Topic: Human perception of depth
  • Topic: 3D fly-through lab follow-up
  • Lab: Finish up programming the 3D fly-through game
  • Group research project of new technology relevant to game programming (motion tracking, online multiplayer games, 3D API, and augmented reality)

Thursday: Working with Sound, and Inheritance
See the completed files of today's lab »

  • Discussion: Different usages of sound in computer games. Examples of good and bad use of sound in games.
  • Field Trip: Visit Physics class's roller coasters student projects
  • Topic: Inheritance
  • Lab: Add varieties to the 3D fly-through game by applying inheritance
  • Topic: Adding sound
  • Lab: Add sound to previous labs
  • Continue on group research project of new technology relevant to game programming and preparation for presentation

Friday: Research Project Presentation

  • Presentation: group research project presentation (Groups 1-3)
  • Individual meetings to review inheritance worksheet questions
  • Topic: The keyword super
  • Lab: Add a racer to the 3d fly-through lab using inheritance (no polymorphism yet)
  • Guest lecture: Attend physics class's lecture on projectile motion (The physics class attends the programming for video games lecture.)

Saturday: Polymorphism, Timer, and Generate Random Timing
See the completed files of today's lab »

  • Presentation: group research project presentation (Group 4)
  • Topic: Polymorphism
  • Lab: Revise the racer code in the 3d fly-through lab to using polymorphism
  • Topic: Timer and Timer events
  • Topic: Generate random timing with timer

WEEK THREE

Monday: Platform Game Revisited
See the completed files of today's lab »

  • Review: Timer and Timer events
  • Topic: Math class in ActionScript
  • Lab: Get ready for the programming activity with the physics class--program shooting a ball in straight line (without physics) given a speed and an angle
  • Lab: Convert the platform game using OOP, create classes for coin and box in the platform game
  • Lab: Add extra features to the 3d fly-through game using inheritance and polymorphism
  • Individual meetings: Term project idea discussion
  • Lab: Pair up with students from the physics class to program a projectile game (afternoon sesssion)

Tuesday: Working with Color and Filters

  • Individual meetings: Term project idea discussion
  • Topic: Access specifiers
  • Topic: Hexadecimal notation
  • Topic: Color representation on computer
  • Topic: Glow and Blur Filters
  • Lab: Add filters to a previous lab
  • Topic: Controlling color with ActionScript
  • Lab: Interactive hair coloring
  • Lab: Start final project

Wednesday: Toggling, Snapping, and Dragging
See the completed files of today's lab »

  • Topic: Game programming examples using other programming languages: Java, C++, and Objective C/iPhone SDK
  • Topic: Toggle
  • Lab: Add toggle to a previous lab, or create a simple file to show toggling a flashlight on and off
  • Topic: Dragging
  • Lab: Add snapping to a grid in a previous lab, or create a simple file to show dragging and snapping a battleship to a grid
  • Topic: Mask
  • Lab: Add draggable mask to a previous lab, or create a simple file to show draggable x-ray effect with mask
  • Lab: Continue working on final project

Thursday: Debugging, switch Statements, Scope of Variables, and Additional Topics by Demands

  • Topic: switch statement
  • Topic: Troubleshooting strategies and debugger
  • Topic: Scope of variables
  • Topic: Topics arising from student project needs. Possible topics may include 2D arrays, nested loops, tiling, shuffling, adding mouse and keyboard event handling in classes.
  • Lab: Continue working on final project

Friday: Project Presentations

  • Lab: Finishing up final project
  • Student presentation and demonstration of their final projects

Saturday: Parent Conferences and Departure