Semester(s) Offered: Spring
Credits: 4
Course Call Number: GAMES-GT 304
Prerequisite(s): None
Taught By: Jack Schlesinger

Advanced Game Programming is intended is to teach advanced topics in gameplay programming required to take a prototype all the way to release. It’s aimed at intermediate and advanced programmers – either from completing the Code Lab track, or students who joined the Game Center with programming knowledge. This class covers:
1) System design and software architecture concepts needed to design robust and flexible systems that thrive in a playtesting focused development environment.
2) Expressive programming, collaborative programming, and tool development to support the development of a game over it’s entire lifecycle.
3) Complexity, data structures, and algorithms to support programming decisions that reduce tech
debt and lead to efficient use of computational resources.
4) Optimization techniques to meet platform requirements and get a game ready for release.

Over the course of the class, students will develop or enhance simple prototypes with a design need –
which will include creating supplemental design tools, benchmarking, or feature requests. They will
learn to diagnose root causes of common gameplay bugs and issues, how to design and implement
robust and flexible systems (including inventory, network, save, and interaction systems), and how to
support a larger design team as a primary programmer. The class will be taught as a seminar, with code
reviews, best practices, and discussion touching current projects students are working on. Upon completion of this course, the student should possess:
1) The ability to supplement prototype designs with other necessary systems.
2) A technical understanding of computer resources to develop fast and stable games.
3) System design tools to create systems and to identify and diagnose issues with those systems
4) A working knowledge to take game code from prototype to a shippable state.