Pedagogy

Goals

Skills

  • Object-oriented programming - classes - inheritance

  • Tick-based time system

  • Introductory algorithms - terrain/maze generation - NPC behavior

  • Using logging for evaluation

Practices

  • Collaboration (students will work in groups to create a game)

  • Planning (especially considering alternative possible implementations)

  • Reading documentation

  • Reading source code; navigating multiple-file projects

  • Subclassing to change behavior of exisiting system

Possible Activities

  • Have students trace inheritance chain of classes, list method instances.

  • Have students trace call execution through class methods

  • Have students implement subclasses using method hooks

  • Observe default behavior of existing framework and tracing the codebase to find where

  • Make trivial changes via subclassing. Each can be achieved by adding a single property. - change the player sprite filename - scale the player sprite to be larger or smaller. - change the player speed

  • Make small changes by overriding methods (with low task complexity) - change the input keys - add a “run” mode: the character goes faster while spacebar is pressed - load a different map (eg load a Maze map but change the number of stars)

  • Plan possible implementation strategies - Give students a list of possible game mechanics (eg an enemy chases you; add an inventory; moving between maps; a way to win the game; a key unlocks a door) and have them write a plan of what could be overridden/extended to make it happen.

  • As groups start developing games, brainstorm needed features as a class, and collaborate on implementing them. (This will reward good design, as we want an inventory system or an enemy behavior system that can work for everyone.)