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.
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
Henry Lam - lamh657@newschool.edu
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.
- 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.
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.
- 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
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