Skip to content

Overview

The course spans 12 sessions, each building a classic game. Every session has one main topic, supported by a few related ones. The course project runs alongside, in your own time.

Session Game Main topic Patterns Also
01 Pong The game loop Game Loop, Update Method delta time, input, drawing, AABB collision
02 Flappy Bird Structuring the code State (game states), Singleton a core library (GARCore), textures & parallax, procedural generation, keyboard & mouse input
03 Snake Assets as data — texture atlases, sprites & animation, fixed-tick movement, input as actions & buffering
04 Sokoban Undo and replay Command levels as text files, rules apart from drawing, unit tests
05 Pac-Man Changing behaviour State, Strategy State vs. Strategy, a second strategy for routes, testing each ghost
06 Super Mario Bros The game world Strategy (level makers), State (the player) platformer physics & tile collision, debug drawing
07 The Legend of Zelda Events Observer C# events and lambdas, an event queue, hitboxes, tweening, composition vs. inheritance
08 Angry Birds Using a physics library Adapter, Facade, Prototype physics world vs. game world, contact events, destroying safely
09 Plants vs. Zombies Components Component, Type Object game types as data, picking, testing a component
10 Pokemon Scenes and UI State (a stack), Service Locator UI widgets, separating UI from game data, save/load
11 Geometry Wars Components and systems Object Pool, Flyweight components vs. systems, dependency injection & testing with fakes
12 Vampire Survivors Performance Spatial Partition, Data Locality profiling, data-oriented design, course recap

Every session page has the same parts. Prepare lists chapters and tutorials to read beforehand. The main part builds the game, with exercises in between. Pong and Flappy Bird start from an empty project; from Snake on, you start from a working codebase, explore it and extend it. The Whole Game shows the finished game in one class diagram, and Summary lists what the session was about, with its answer to each concern in a line. Apply It to Your Project takes the session’s patterns into your own course project, and Check Yourself has short questions, linked to the exam questions they prepare you for.

Reusable code moves from the individual games into GARCore, a shared class library that starts in Flappy Bird and grows into a small game framework, with screen scaling, input, sprites, animation, tilemaps, state machines and more. Deciding what belongs in the core and what belongs in the game is an architectural decision in itself, and it comes up again in every session.