Game Aesthetics class, MFADT/AMT, Spring 2016
Switch branches/tags
Nothing to show
Clone or download


Academic Entrance 63 Fifth Ave, Room 503

Thursdays 7:00-9:40 PM, Spring 2016

Bryan Ma

Office hours by appointment

In this studio we take a step away from the most popular game design tools and focus on the underlying structures of digital games. Students will investigate the ties between game design and procedurality, and the relationship of the structure of representation to the creative forms that can emerge, using game programming as a means of discovery and self expression.

First and foremost a hands-on creative programming class, the curriculum will lead students through case studies of game frameworks and game programming patterns, experimenting with techniques for AI in games, procedural generation, collision, and rendering. We will use with accessible libraries like Paolo Pedercini’s P5Play, sophisticated modern languages like Haxe, and even terminal output to experiment with game mechanics in their barest forms, and develop a greatly extendable set of programming skills.

There are no formal prerequisites to this course but it is strongly suggested to have taken a class using object-oriented programming in Processing, Open Frameworks, or other environment or language. A class on game design or Unity will also help. Lectures will consist of programming workshops and lectures on historical and contemporary topics. Assignments will consist of code prototypes turned in via github and a polished midterm and final demonstrating an understanding of the techniques used in the class with a unique voice.

Learning Outcomes:

Students will:

  • develop a critical understanding of game frameworks and their relationship to creative output
  • develop experiments with classic approaches to rendering, AI, and procedural generation
  • gain an introductory look at a number of different game programming frameworks
  • build experimental game prototypes focused around systems aesthetics

Teaching Assistant:

Henry Lam -

The TA for the course will be attending classes, providing help where needed, and is the first option for students to seek extra help outside of class time. He’ll maintain a few hours office hours to supplement my own, maintaining a sign-up sheet for extra assistance.

Assessment Criteria:

  • Class participation/research: 20%
  • Prototypes/homework: 50%
  • Final project: 30%


Students are expected to show up to class on time, turn in assignments, be respectful to one another and put in their best effort in pursuing the class material. More than three unexcused absences is grounds for at least a letter-grade deduction.


Prototypes are small responses to challenges to be turned in via github with links posted on the class wiki. They usually will involve either hacking provided code, adapting provided code to a new framework, or a creative/conceptual/aesthetic challenge. Homework will often differ based on the skill level of the student.

Final Project:

The final project is a game project that explores in depth at least one technical area of the course (AI, procedural generation, etc.) and one conceptual (rendering aesthetics, procedural rhetoric). It should be built in one of the tools used in the class or one approved by me.

Class Values:

  • Understand our tools better
  • Limitations -> Creativity
  • Don’t take the easy way out
  • Don’t resort to cliche
  • Find the aesthetic possibilities in a myriad of formal constraints

Weekly Schedule:

Week 1- 1/28: Class intro, C++ and iostream, basic OOP, terminal interface

Week 2- 2/4: Text adventures, interactive fiction, twine, text parsers, input-driven game loops

Week 3- 2/11: Code vs. data, file I/O, hacky tile editor, grid mechanics

Week 4- 2/18: Text-based user interfaces, converting the grid, Rogue

Week 5- 2/25: Procedural generation, cellular automata, agents, binary space partition trees

Week 6- 3/3: Sprites, sprite sheets, sprite batching, Atari 2600, NES limitations, ofxSpriteSheetRenderer

Week 7- 3/10: AI, ad hoc lists, state machines, decision trees, A* pathfinding, Pac-Man AI

Week 8- 3/17: P5, P5Play, Haxe intro

Week 9- 3/31: Raycast rendering

Week 10- 4/7: Isometric rendering

Week 11- 4/14: Dynamic sound

Week 12- 4/21: State machines

Week 13- 4/28: Juiciness

Week 14- 5/5: Final work

Week 15- 5/12: Final due