  Game engines support video game development by providing functionalities such
as graphics rendering or input/output device management. However, their
architectures are often overlooked, which hinders their integration and
extension. In this paper, we use an approach for architecture recovery to
create architectural models for 10 open-source game engines. We use these
models to answer the following questions: Which subsystems more often couple
with one another? Do game engines share subsystem coupling patterns? We observe
that the Low-Level Renderer, Platform Independence Layer and Resource Manager
are frequently coupled to the game engine Core. By identifying the most
frequent coupling patterns, we describe an emergent game engine architecture
and discuss how it can be used by practitioners to improve system understanding
and maintainability.
