A Software Architecture for Games

This paper describes a general architecture for real-time game software. The architecture is designed to maximize reusability in both single player and networked multiplayer modes. The architecture separates generic components from game-specific components by positioning the object system to minimize coupling. As a result, the architecture is easily adapted to a clientserver configuration for multiplayer modes. In addition to presenting the general architecture, that architecture is used as a framework in which to discuss several design options and the tradeoffs between them. In particular, we will discuss how the choice between an object-centric and a component-centric object system affects the design of other components of the game software. In addition, issues related to the synchronization of object systems for networked multiplayer modes are discussed.