Game Development Reference
time, the approach taken to developing their engine will have a vast impact on
everyone involved in developing and using it. This means that any such engine
is unlikely to be developed by a dedicated team with months of time to plan and
execute; instead, it will have to be written rapidly with the immediate needs of
projects in mind.
An aspect-based engine architecture reduces this burden of management by
creating a simple interface and set of rules to which all aspects must be written.
Once the core and its interface to the aspects are defined, work on the aspects
themselves can be carried out by individuals or teams with a considerable amount
of autonomy. Interactions between the aspects and thus their authors remain
informal, being implemented entirely through manipulating the core of the engine
via the aspect interface.
As such, this architecture is well suited to small or distributed teams who
cannot afford to establish a dedicated structure to design and manage all the
elements of their engine but would still like to take advantage of the benefits that
developing their own technology provides. The highly modular nature also allows
for changes in development direction or the accommodation of multiple projects
with widely varying requirements.
Next, we describe details of the architecture of the engine that can be sum-
marized by the engine's core, the aspects, and their interactions.
The core is the most important element of the engine; all the aspects can be
replaced or altered at any time but each one is highly dependent on the interface
and functionality provided by the core, making it vital that the core remains
stable throughout development. The function of the engine core is to store the
structure and state of the game or simulation upon which the aspects will act.
As the name suggests, the core is the very center and foundation upon which the
One component at the core of the engine design is a representation of the game's
simulated environment, the actual logical representation of objects and concepts
that interact to create everything within the game. This representation is stored
as a scene graph of sorts, a tree structure where each node represents a point of
interest within the simulation. However, its function is not as strictly defined as
the term scene graph might suggest. This tree does not necessarily represent a
single physical space; one branch, or subgraph, might store the information for a
3D scene while another might store a 2D GUI and another purely abstract data
( Figure 1.2) .