Queen's School of Computing

CISC-326/3.0 Game Architecture

Original Author: Nick Graham
Last Revised: February 23, 2011

Calendar Description

An introduction to software architectural design through the application domain of game development. Topics will include notations for expressing static and dynamic aspects of software architecture, design patterns, interface design, and application of these techniques to 3D games, mobile games and web-based games.

Prerequisites: CISC-220/3.0 and CISC-235/3.0. CISC-226/3.0 is recommended.
Exclusion: CISC-322/3.0.

Objectives

This course will teach students the fundamentals of software architectural design for computer games. The software architectural techniques will be applicable to other forms of software.

Computer games have become a rich application domain for the study of software architecture. Games range from small-footprint applications running on handheld devices through complex distributed systems with enterprise-class servers. Reference architectures for different classes of games have emerged, such as for "AAA" console games, mobile handheld games and web-based games. As complex systems developed by large, multi-disciplinary teams, a strongly defined architecture is core to allowing parallel work of the development team, and for creating the tools necessary to allow efficient work.

The core of the course will be devoted to the architectural design of games. To provide a breadth of architectural styles, specific game types will be considered, specifically 3D console/PC games, games on mobile handsets, and web-based games. This will expose students to the component-level organization of commercial console games, architectures for games developed under the constraints of mobile platforms, and web architectures such as Ajax and Comet.

The architectural techniques examined will be broadly applicable. Students will be exposed to classical design patterns, component decomposition, interface specification and techniques for architectural evaluation. The technological platforms considered (e.g., mobile devices and the web) are of broad interest outside the gaming domain.

Students will perform design and implementation exercises to reinforce the material conveyed in lectures. These exercises will expose the students to the practicalities of the different architectural styles presented in the course.


Topics

  • Fundamentals: UML class diagrams, sequence diagrams, state machine diagrams, with gaming applications.
  • Component-based design: Decomposition of system into components. Component interface design and specification.
  • Design patterns. Classical design patterns, with gaming applications.
  • 3D game architecture: Reference architecture for 3D games. Frame-loop architecture. Scene graphs. Client-server decomposition for games.
  • Web game architecture. Web-based client-server decomposition of games. Document-Object Model. HTML 5. Web frameworks for game development.
  • Mobile game architecture: Notification-based architectures. Designing with constraints (battery life, memory, network bandwidth).

References
  • D. Pilone and N. Pitman, UML 2.0 in a Nutshell, O'Reilly, 2005.

  • E. Gamma, R. Helm, R. Johnson and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley Professional, 1994.

  • J. Bishop. C# 3.0 Design Patterns. O'Reilly Media, 2007.

  • L. Bass, P. Clements and R. Kazman. Software Architecture in Practice, Second Edition. Addison-Wesley Professional, 2003.

  • M. McShaffry. Game Coding Complete, Third Edition. Course Technology PTR, 2009

  • S. Rabin. Introduction to Game Development, Second Edition. Course Technology PTR, 2009.

  • P. Bahkhirev. Beginning iPhone Games Development. Apress, 2010.

  • V. Silva. Pro Android Games. Apress, 2009.

  • D. Nickull. Web 2.0 Architectures. O'Reilly, 2009.